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