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 {