Store filterbitmap on Paint

Update Paint and SkiaCanvas now that SkFilterQuality is no longer
part of Skia's API.

1. Store mFilterBitmap:bool directly in Paint (matching java side)

2. Change Looper construct to operate on Paint rather than SkPaint
... so it can access mFilterBitmap.

3. Update PaintFilter to take Paint instead of SkPaint

As before, when we do have to call SkCanvas, we convert Paint's
mFilterBitmap into SkSamplingOptions as needed.

Test: make

Bug: 178700363
Change-Id: I7fccf17657d4e255f2453b4bfc513215503597b2
diff --git a/libs/hwui/SkiaCanvas.h b/libs/hwui/SkiaCanvas.h
index 438a40c..fd6bbdc 100644
--- a/libs/hwui/SkiaCanvas.h
+++ b/libs/hwui/SkiaCanvas.h
@@ -23,6 +23,7 @@
 #include "VectorDrawable.h"
 #include "hwui/Canvas.h"
 #include "hwui/Paint.h"
+#include "hwui/BlurDrawLooper.h"
 
 #include <SkCanvas.h>
 #include "pipeline/skia/AnimatedDrawables.h"
@@ -73,7 +74,7 @@
     virtual int save(SaveFlags::Flags flags) override;
     virtual void restore() override;
     virtual void restoreToCount(int saveCount) override;
-    virtual void restoreUnclippedLayer(int saveCount, const SkPaint& paint) override;
+    virtual void restoreUnclippedLayer(int saveCount, const Paint& paint) override;
 
     virtual int saveLayer(float left, float top, float right, float bottom, const SkPaint* paint) override;
     virtual int saveLayerAlpha(float left, float top, float right, float bottom, int alpha) override;
@@ -99,7 +100,7 @@
     virtual SkCanvasState* captureCanvasState() const override;
 
     virtual void drawColor(int color, SkBlendMode mode) override;
-    virtual void drawPaint(const SkPaint& paint) override;
+    virtual void drawPaint(const Paint& paint) override;
 
     virtual void drawPoint(float x, float y, const Paint& paint) override;
     virtual void drawPoints(const float* points, int count, const Paint& paint) override;
@@ -167,10 +168,10 @@
                                   const Paint& paint, const SkPath& path, size_t start,
                                   size_t end) override;
 
-    void onFilterPaint(SkPaint& paint);
+    void onFilterPaint(Paint& paint);
 
-    SkPaint filterPaint(const SkPaint& src) {
-        SkPaint dst(src);
+    Paint filterPaint(const Paint& src) {
+        Paint dst(src);
         this->onFilterPaint(dst);
         return dst;
     }
@@ -179,21 +180,20 @@
     template <typename Proc>
     void applyLooper(const Paint* paint, Proc proc, void (*preFilter)(SkPaint&) = nullptr) {
         BlurDrawLooper* looper = paint ? paint->getLooper() : nullptr;
-        const SkPaint* skpPtr = paint;
-        SkPaint skp = skpPtr ? *skpPtr : SkPaint();
+        Paint pnt = paint ? *paint : Paint();
         if (preFilter) {
-            preFilter(skp);
+            preFilter(pnt);
         }
-        this->onFilterPaint(skp);
+        this->onFilterPaint(pnt);
         if (looper) {
-            looper->apply(skp, [&](SkPoint offset, const SkPaint& modifiedPaint) {
+            looper->apply(pnt, [&](SkPoint offset, const Paint& modifiedPaint) {
                 mCanvas->save();
                 mCanvas->translate(offset.fX, offset.fY);
                 proc(modifiedPaint);
                 mCanvas->restore();
             });
         } else {
-            proc(skp);
+            proc(pnt);
         }
     }