Index: tools/debugger/SkDrawCommand.cpp |
diff --git a/tools/debugger/SkDrawCommand.cpp b/tools/debugger/SkDrawCommand.cpp |
index b95a9b89d1753c785db85a0296535669e1501301..1ef5e0b86c03047a230128c16afe172189289de0 100644 |
--- a/tools/debugger/SkDrawCommand.cpp |
+++ b/tools/debugger/SkDrawCommand.cpp |
@@ -177,6 +177,7 @@ const char* SkDrawCommand::GetCommandString(OpType type) { |
case kClipRect_OpType: return "ClipRect"; |
case kClipRRect_OpType: return "ClipRRect"; |
case kConcat_OpType: return "Concat"; |
+ case kDrawAnnotation_OpType: return "drawAnnotation"; |
case kDrawBitmap_OpType: return "DrawBitmap"; |
case kDrawBitmapNine_OpType: return "DrawBitmapNine"; |
case kDrawBitmapRect_OpType: return "DrawBitmapRect"; |
@@ -235,6 +236,7 @@ SkDrawCommand* SkDrawCommand::fromJSON(Json::Value& command, UrlDataManager& url |
INSTALL_FACTORY(ClipRect); |
INSTALL_FACTORY(ClipRRect); |
INSTALL_FACTORY(Concat); |
+ INSTALL_FACTORY(DrawAnnotation); |
INSTALL_FACTORY(DrawBitmap); |
INSTALL_FACTORY(DrawBitmapRect); |
INSTALL_FACTORY(DrawBitmapNine); |
@@ -1712,6 +1714,41 @@ SkConcatCommand* SkConcatCommand::fromJSON(Json::Value& command, UrlDataManager& |
return new SkConcatCommand(matrix); |
} |
+//// |
+ |
+SkDrawAnnotationCommand::SkDrawAnnotationCommand(const SkRect& rect, const char key[], |
+ sk_sp<SkData> value) |
+ : INHERITED(kDrawAnnotation_OpType) |
+ , fRect(rect) |
+ , fKey(key) |
+ , fValue(std::move(value)) |
+{} |
+ |
+void SkDrawAnnotationCommand::execute(SkCanvas* canvas) const { |
+ canvas->drawAnnotation(fRect, fKey.c_str(), fValue); |
+} |
+ |
+Json::Value SkDrawAnnotationCommand::toJSON(UrlDataManager& urlDataManager) const { |
+ Json::Value result = INHERITED::toJSON(urlDataManager); |
+ |
+ result[SKDEBUGCANVAS_ATTRIBUTE_COORDS] = MakeJsonRect(fRect); |
+ result["key"] = Json::Value(fKey.c_str()); |
+ if (fValue.get()) { |
+ // TODO: dump out the "value" |
+ } |
+ return result; |
+} |
+ |
+SkDrawAnnotationCommand* SkDrawAnnotationCommand::fromJSON(Json::Value& command, |
+ UrlDataManager& urlDataManager) { |
+ SkRect rect; |
+ extract_json_rect(command[SKDEBUGCANVAS_ATTRIBUTE_COORDS], &rect); |
+ sk_sp<SkData> data(nullptr); // TODO: extract "value" from the Json |
+ return new SkDrawAnnotationCommand(rect, command["key"].asCString(), data); |
+} |
+ |
+//// |
+ |
SkDrawBitmapCommand::SkDrawBitmapCommand(const SkBitmap& bitmap, SkScalar left, SkScalar top, |
const SkPaint* paint) |
: INHERITED(kDrawBitmap_OpType) { |