From 3c1b7db2432d136df0fc50c2e3ee0b3792b01dd6 Mon Sep 17 00:00:00 2001 From: Jim Van Verth Date: Mon, 31 Oct 2016 16:06:51 -0400 Subject: Add SkShadowMaskFilter BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3824 Change-Id: Idde7f7d6a61583a8be26df7a7c4b293c4710bccf Reviewed-on: https://skia-review.googlesource.com/3824 Reviewed-by: Robert Phillips Commit-Queue: Jim Van Verth --- samplecode/SampleAndroidShadows.cpp | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'samplecode/SampleAndroidShadows.cpp') diff --git a/samplecode/SampleAndroidShadows.cpp b/samplecode/SampleAndroidShadows.cpp index a23cac423d..0b9358aec5 100644 --- a/samplecode/SampleAndroidShadows.cpp +++ b/samplecode/SampleAndroidShadows.cpp @@ -12,6 +12,7 @@ #include "SkGaussianEdgeShader.h" #include "SkPath.h" #include "SkPoint3.h" +#include "SkShadowMaskFilter.h" #include "SkUtils.h" #include "SkView.h" #include "sk_tool_utils.h" @@ -366,6 +367,30 @@ protected: void drawShadowedPath(SkCanvas* canvas, const SkPath& path, SkScalar zValue, const SkPaint& paint, SkScalar ambientAlpha, const SkPoint3& lightPos, SkScalar lightWidth, SkScalar spotAlpha) { +#ifdef USE_MASK_FILTER + if (fUseAlt) { + if (fShowAmbient) { + this->drawAmbientShadowAlt(canvas, path, zValue, ambientAlpha); + } + if (fShowSpot) { + this->drawSpotShadowAlt(canvas, path, zValue, lightPos, lightWidth, spotAlpha); + } + } else { + SkPaint newPaint; + newPaint.setColor(SK_ColorBLACK); + if (!fShowAmbient) { + ambientAlpha = 0; + } + if (!fShowSpot) { + spotAlpha = 0; + } + + newPaint.setMaskFilter(SkShadowMaskFilter::Make(zValue, lightPos, lightWidth, + ambientAlpha, spotAlpha)); + + canvas->drawPath(path, newPaint); + } +#else if (fShowAmbient) { if (fUseAlt) { this->drawAmbientShadowAlt(canvas, path, zValue, ambientAlpha); @@ -380,6 +405,8 @@ protected: this->drawSpotShadow(canvas, path, zValue, lightPos, lightWidth, spotAlpha); } } +#endif + if (fShowObject) { canvas->drawPath(path, paint); } else { -- cgit v1.2.3