Add canvas ops 3

Added the following
--DrawPoint
--DrawPath
--DrawRegion
--DrawDoubleRoundRect
--DrawLine
--DrawVertices

Test: Added tests to CanvasOpTests
Change-Id: I5844c61bc8d2dacf74e504f7bac7946398174ed2
diff --git a/libs/hwui/canvas/CanvasOps.h b/libs/hwui/canvas/CanvasOps.h
index afd88c0..6a76539 100644
--- a/libs/hwui/canvas/CanvasOps.h
+++ b/libs/hwui/canvas/CanvasOps.h
@@ -19,6 +19,8 @@
 #include <SkAndroidFrameworkUtils.h>
 #include <SkCanvas.h>
 #include <SkPath.h>
+#include <SkRegion.h>
+#include <SkVertices.h>
 #include <log/log.h>
 #include "CanvasProperty.h"
 
@@ -150,6 +152,15 @@
 };
 
 template <>
+struct CanvasOp<CanvasOpType::DrawPoint> {
+    float x;
+    float y;
+    SkPaint paint;
+    void draw(SkCanvas* canvas) const { canvas->drawPoint(x, y, paint); }
+    ASSERT_DRAWABLE()
+};
+
+template <>
 struct CanvasOp<CanvasOpType::DrawRect> {
     SkRect rect;
     SkPaint paint;
@@ -157,6 +168,14 @@
     ASSERT_DRAWABLE()
 };
 
+template <>
+struct CanvasOp<CanvasOpType::DrawRegion> {
+    SkRegion region;
+    SkPaint paint;
+    void draw(SkCanvas* canvas) const { canvas->drawRegion(region, paint); }
+    ASSERT_DRAWABLE()
+};
+
 template<>
 struct CanvasOp<CanvasOpType::DrawRoundRect> {
     SkRect rect;
@@ -170,6 +189,17 @@
 };
 
 template<>
+struct CanvasOp<CanvasOpType::DrawDoubleRoundRect> {
+    SkRRect outer;
+    SkRRect inner;
+    SkPaint paint;
+    void draw(SkCanvas* canvas) const {
+        canvas->drawDRRect(outer, inner, paint);
+    }
+    ASSERT_DRAWABLE()
+};
+
+template<>
 struct CanvasOp<CanvasOpType::DrawCircle> {
     SkScalar cx;
     SkScalar cy;
@@ -205,7 +235,41 @@
     ASSERT_DRAWABLE()
 };
 
+template<>
+struct CanvasOp<CanvasOpType::DrawPath> {
+    SkPath path;
+    SkPaint paint;
+
+    void draw(SkCanvas* canvas) const { canvas->drawPath(path, paint); }
+    ASSERT_DRAWABLE()
+};
+
+template<>
+struct CanvasOp<CanvasOpType::DrawLine> {
+    float startX;
+    float startY;
+    float endX;
+    float endY;
+    SkPaint paint;
+
+    void draw(SkCanvas* canvas) const {
+        canvas->drawLine(startX, startY, endX, endY, paint);
+    }
+    ASSERT_DRAWABLE()
+};
+
+template<>
+struct CanvasOp<CanvasOpType::DrawVertices> {
+    sk_sp<SkVertices> vertices;
+    SkBlendMode mode;
+    SkPaint paint;
+    void draw(SkCanvas* canvas) const {
+        canvas->drawVertices(vertices, mode, paint);
+    }
+    ASSERT_DRAWABLE()
+};
+
 // cleanup our macros
 #undef ASSERT_DRAWABLE
 
-}  // namespace android::uirenderer
\ No newline at end of file
+}  // namespace android::uirenderer