diff options
author | 2016-06-28 18:54:19 -0700 | |
---|---|---|
committer | 2016-06-28 18:54:19 -0700 | |
commit | 97660ccbd10d83a2bb1fa88c672d17132649efef (patch) | |
tree | 9d3d1fa5fa01bcc2f25b7d1032ed2a120d76173f /tools/debugger | |
parent | 26726d1ca7ed541e63114cd1f3bd2b88a1e2a4a4 (diff) |
add annotations to debugger
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2105113002
Review-Url: https://codereview.chromium.org/2105113002
Diffstat (limited to 'tools/debugger')
-rw-r--r-- | tools/debugger/SkDebugCanvas.cpp | 4 | ||||
-rw-r--r-- | tools/debugger/SkDebugCanvas.h | 1 | ||||
-rw-r--r-- | tools/debugger/SkDrawCommand.cpp | 37 | ||||
-rw-r--r-- | tools/debugger/SkDrawCommand.h | 16 |
4 files changed, 58 insertions, 0 deletions
diff --git a/tools/debugger/SkDebugCanvas.cpp b/tools/debugger/SkDebugCanvas.cpp index 5ee22eba3f..ceea782193 100644 --- a/tools/debugger/SkDebugCanvas.cpp +++ b/tools/debugger/SkDebugCanvas.cpp @@ -552,6 +552,10 @@ void SkDebugCanvas::didConcat(const SkMatrix& matrix) { this->INHERITED::didConcat(matrix); } +void SkDebugCanvas::onDrawAnnotation(const SkRect& rect, const char key[], SkData* value) { + this->addDrawCommand(new SkDrawAnnotationCommand(rect, key, sk_ref_sp(value))); +} + void SkDebugCanvas::onDrawBitmap(const SkBitmap& bitmap, SkScalar left, SkScalar top, const SkPaint* paint) { this->addDrawCommand(new SkDrawBitmapCommand(bitmap, left, top, paint)); diff --git a/tools/debugger/SkDebugCanvas.h b/tools/debugger/SkDebugCanvas.h index 47aaf75572..d0cdf82a36 100644 --- a/tools/debugger/SkDebugCanvas.h +++ b/tools/debugger/SkDebugCanvas.h @@ -194,6 +194,7 @@ protected: void didConcat(const SkMatrix&) override; void didSetMatrix(const SkMatrix&) override; + void onDrawAnnotation(const SkRect&, const char[], SkData*) override; void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&) override; void onDrawText(const void* text, size_t byteLength, SkScalar x, SkScalar y, const SkPaint&) override; diff --git a/tools/debugger/SkDrawCommand.cpp b/tools/debugger/SkDrawCommand.cpp index b95a9b89d1..1ef5e0b86c 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) { diff --git a/tools/debugger/SkDrawCommand.h b/tools/debugger/SkDrawCommand.h index 9b81adad3f..0d1ece0055 100644 --- a/tools/debugger/SkDrawCommand.h +++ b/tools/debugger/SkDrawCommand.h @@ -28,6 +28,7 @@ public: kClipRect_OpType, kClipRRect_OpType, kConcat_OpType, + kDrawAnnotation_OpType, kDrawBitmap_OpType, kDrawBitmapNine_OpType, kDrawBitmapRect_OpType, @@ -247,6 +248,21 @@ private: typedef SkDrawCommand INHERITED; }; +class SkDrawAnnotationCommand : public SkDrawCommand { +public: + SkDrawAnnotationCommand(const SkRect&, const char key[], sk_sp<SkData> value); + void execute(SkCanvas* canvas) const override; + Json::Value toJSON(UrlDataManager& urlDataManager) const override; + static SkDrawAnnotationCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager); + +private: + SkRect fRect; + SkString fKey; + sk_sp<SkData> fValue; + + typedef SkDrawCommand INHERITED; +}; + class SkDrawBitmapCommand : public SkDrawCommand { public: SkDrawBitmapCommand(const SkBitmap& bitmap, SkScalar left, SkScalar top, |