Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(525)

Unified Diff: tools/debugger/SkDrawCommand.cpp

Issue 2257023003: Plumb drawArc to SkDevice (Closed) Base URL: https://chromium.googlesource.com/skia.git@distance
Patch Set: Address comments Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/debugger/SkDrawCommand.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/debugger/SkDrawCommand.cpp
diff --git a/tools/debugger/SkDrawCommand.cpp b/tools/debugger/SkDrawCommand.cpp
index 362325085c4c628aa5f41b4ca7e0a3d56f399ca6..65de258ed2cbc9cbd5f9e4238510f90b2554332d 100644
--- a/tools/debugger/SkDrawCommand.cpp
+++ b/tools/debugger/SkDrawCommand.cpp
@@ -92,7 +92,9 @@
#define SKDEBUGCANVAS_ATTRIBUTE_COLORS "colors"
#define SKDEBUGCANVAS_ATTRIBUTE_TEXTURECOORDS "textureCoords"
#define SKDEBUGCANVAS_ATTRIBUTE_FILTERQUALITY "filterQuality"
-
+#define SKDEBUGCANVAS_ATTRIBUTE_STARTANGLE "startAngle"
+#define SKDEBUGCANVAS_ATTRIBUTE_SWEEPANGLE "sweepAngle"
+#define SKDEBUGCANVAS_ATTRIBUTE_USECENTER "useCenter"
#define SKDEBUGCANVAS_ATTRIBUTE_SHORTDESC "shortDesc"
#define SKDEBUGCANVAS_VERB_MOVE "move"
@@ -2260,6 +2262,64 @@ SkDrawOvalCommand* SkDrawOvalCommand::fromJSON(Json::Value& command,
return new SkDrawOvalCommand(coords, paint);
}
+SkDrawArcCommand::SkDrawArcCommand(const SkRect& oval, SkScalar startAngle, SkScalar sweepAngle,
+ bool useCenter, const SkPaint& paint)
+ : INHERITED(kDrawOval_OpType) {
+ fOval = oval;
+ fStartAngle = startAngle;
+ fSweepAngle = sweepAngle;
+ fUseCenter = useCenter;
+ fPaint = paint;
+
+ fInfo.push(SkObjectParser::RectToString(oval));
+ fInfo.push(SkObjectParser::ScalarToString(startAngle, "StartAngle: "));
+ fInfo.push(SkObjectParser::ScalarToString(sweepAngle, "SweepAngle: "));
+ fInfo.push(SkObjectParser::BoolToString(useCenter));
+ fInfo.push(SkObjectParser::PaintToString(paint));
+}
+
+void SkDrawArcCommand::execute(SkCanvas* canvas) const {
+ canvas->drawArc(fOval, fStartAngle, fSweepAngle, fUseCenter, fPaint);
+}
+
+bool SkDrawArcCommand::render(SkCanvas* canvas) const {
+ canvas->clear(0xFFFFFFFF);
+ canvas->save();
+
+ xlate_and_scale_to_bounds(canvas, fOval);
+
+ SkPaint p;
+ p.setColor(SK_ColorBLACK);
+ p.setStyle(SkPaint::kStroke_Style);
+
+ canvas->drawArc(fOval, fStartAngle, fSweepAngle, fUseCenter, p);
+ canvas->restore();
+
+ return true;
+}
+
+Json::Value SkDrawArcCommand::toJSON(UrlDataManager& urlDataManager) const {
+ Json::Value result = INHERITED::toJSON(urlDataManager);
+ result[SKDEBUGCANVAS_ATTRIBUTE_COORDS] = MakeJsonRect(fOval);
+ result[SKDEBUGCANVAS_ATTRIBUTE_STARTANGLE] = MakeJsonScalar(fStartAngle);
+ result[SKDEBUGCANVAS_ATTRIBUTE_SWEEPANGLE] = MakeJsonScalar(fSweepAngle);
+ result[SKDEBUGCANVAS_ATTRIBUTE_USECENTER] = fUseCenter;
+ result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = MakeJsonPaint(fPaint, urlDataManager);
+ return result;
+}
+
+SkDrawArcCommand* SkDrawArcCommand::fromJSON(Json::Value& command,
+ UrlDataManager& urlDataManager) {
+ SkRect coords;
+ extract_json_rect(command[SKDEBUGCANVAS_ATTRIBUTE_COORDS], &coords);
+ SkScalar startAngle = command[SKDEBUGCANVAS_ATTRIBUTE_STARTANGLE].asFloat();
+ SkScalar sweepAngle = command[SKDEBUGCANVAS_ATTRIBUTE_SWEEPANGLE].asFloat();
+ bool useCenter = command[SKDEBUGCANVAS_ATTRIBUTE_USECENTER].asBool();
+ SkPaint paint;
+ extract_json_paint(command[SKDEBUGCANVAS_ATTRIBUTE_PAINT], urlDataManager, &paint);
+ return new SkDrawArcCommand(coords, startAngle, sweepAngle, useCenter, paint);
+}
+
SkDrawPaintCommand::SkDrawPaintCommand(const SkPaint& paint)
: INHERITED(kDrawPaint_OpType) {
fPaint = paint;
« no previous file with comments | « tools/debugger/SkDrawCommand.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698