aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/debugger
diff options
context:
space:
mode:
authorGravatar reed <reed@google.com>2016-06-28 18:54:19 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-06-28 18:54:19 -0700
commit97660ccbd10d83a2bb1fa88c672d17132649efef (patch)
tree9d3d1fa5fa01bcc2f25b7d1032ed2a120d76173f /tools/debugger
parent26726d1ca7ed541e63114cd1f3bd2b88a1e2a4a4 (diff)
add annotations to debugger
Diffstat (limited to 'tools/debugger')
-rw-r--r--tools/debugger/SkDebugCanvas.cpp4
-rw-r--r--tools/debugger/SkDebugCanvas.h1
-rw-r--r--tools/debugger/SkDrawCommand.cpp37
-rw-r--r--tools/debugger/SkDrawCommand.h16
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,