Added more CanvasOps for various drawing commands
Added the following:
--DrawPaint
--DrawRoundRect
--DrawCircle
--DrawOval
--DrawArc
Test: Added tests to CanvasOpTest
Change-Id: I784db16c7c1d7d886d93e77f6bfb36d3070304bc
diff --git a/libs/hwui/canvas/CanvasOps.h b/libs/hwui/canvas/CanvasOps.h
index a31a91c..27eca21 100644
--- a/libs/hwui/canvas/CanvasOps.h
+++ b/libs/hwui/canvas/CanvasOps.h
@@ -112,6 +112,13 @@
};
template <>
+struct CanvasOp<CanvasOpType::DrawPaint> {
+ SkPaint paint;
+ void draw(SkCanvas* canvas) const { canvas->drawPaint(paint); }
+ ASSERT_DRAWABLE()
+};
+
+template <>
struct CanvasOp<CanvasOpType::DrawRect> {
SkRect rect;
SkPaint paint;
@@ -119,6 +126,53 @@
ASSERT_DRAWABLE()
};
+template<>
+struct CanvasOp<CanvasOpType::DrawRoundRect> {
+ SkRect rect;
+ SkScalar rx;
+ SkScalar ry;
+ SkPaint paint;
+ void draw(SkCanvas* canvas) const {
+ canvas->drawRoundRect(rect, rx, ry, paint);
+ }
+ ASSERT_DRAWABLE()
+};
+
+template<>
+struct CanvasOp<CanvasOpType::DrawCircle> {
+ SkScalar cx;
+ SkScalar cy;
+ SkScalar radius;
+ SkPaint paint;
+ void draw(SkCanvas* canvas) const {
+ canvas->drawCircle(cx, cy, radius, paint);
+ }
+ ASSERT_DRAWABLE()
+};
+
+template<>
+struct CanvasOp<CanvasOpType::DrawOval> {
+ SkRect oval;
+ SkPaint paint;
+ void draw(SkCanvas* canvas) const {
+ canvas->drawOval(oval, paint);
+ }
+ ASSERT_DRAWABLE()
+};
+
+template<>
+struct CanvasOp<CanvasOpType::DrawArc> {
+ SkRect oval;
+ SkScalar startAngle;
+ SkScalar sweepAngle;
+ bool useCenter;
+ SkPaint paint;
+
+ void draw(SkCanvas* canvas) const {
+ canvas->drawArc(oval, startAngle, sweepAngle, useCenter, paint);
+ }
+ ASSERT_DRAWABLE()
+};
// cleanup our macros
#undef ASSERT_DRAWABLE