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 <robertphillips@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
diff --git a/samplecode/SampleAndroidShadows.cpp b/samplecode/SampleAndroidShadows.cpp
index a23cac4..0b9358a 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 @@
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 @@
this->drawSpotShadow(canvas, path, zValue, lightPos, lightWidth, spotAlpha);
}
}
+#endif
+
if (fShowObject) {
canvas->drawPath(path, paint);
} else {