aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/debugger
diff options
context:
space:
mode:
authorGravatar Brian Osman <brianosman@google.com>2018-05-29 14:55:50 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-05-29 20:50:07 +0000
commitc7611088f09340b94de2dd7f60f6dd9293d947d7 (patch)
treed2e89ab81ef69427b9d09f46d9d29f33d76ea414 /tools/debugger
parent65197ff1ac66555436d6d8b8d6f8d7c6d3aa0d59 (diff)
Implement onDrawDrawable in SkDebugCanvas
It now implements all canvas virtuals, so enable the enforcer. Change-Id: Ic7e97e29ec143f72cd0ea6c6504345133b8f543e Reviewed-on: https://skia-review.googlesource.com/130560 Commit-Queue: Brian Osman <brianosman@google.com> Reviewed-by: Mike Klein <mtklein@google.com>
Diffstat (limited to 'tools/debugger')
-rw-r--r--tools/debugger/SkDebugCanvas.cpp4
-rw-r--r--tools/debugger/SkDebugCanvas.h8
-rw-r--r--tools/debugger/SkDrawCommand.cpp15
-rw-r--r--tools/debugger/SkDrawCommand.h14
4 files changed, 34 insertions, 7 deletions
diff --git a/tools/debugger/SkDebugCanvas.cpp b/tools/debugger/SkDebugCanvas.cpp
index 93163c9579..d9e9871942 100644
--- a/tools/debugger/SkDebugCanvas.cpp
+++ b/tools/debugger/SkDebugCanvas.cpp
@@ -484,6 +484,10 @@ void SkDebugCanvas::onDrawShadowRec(const SkPath& path, const SkDrawShadowRec& r
this->addDrawCommand(new SkDrawShadowCommand(path, rec));
}
+void SkDebugCanvas::onDrawDrawable(SkDrawable* drawable, const SkMatrix* matrix) {
+ this->addDrawCommand(new SkDrawDrawableCommand(drawable, matrix));
+}
+
void SkDebugCanvas::willRestore() {
this->addDrawCommand(new SkRestoreCommand());
this->INHERITED::willRestore();
diff --git a/tools/debugger/SkDebugCanvas.h b/tools/debugger/SkDebugCanvas.h
index 63c3f0b8dc..c4a61e7887 100644
--- a/tools/debugger/SkDebugCanvas.h
+++ b/tools/debugger/SkDebugCanvas.h
@@ -23,12 +23,7 @@ class GrAuditTrail;
class SkNWayCanvas;
class SkPicture;
-// TODO: Continue filling in missing functionality so this can be switched on
-#if 0
class SkDebugCanvas : public SkCanvasVirtualEnforcer<SkCanvas> {
-#else
-class SkDebugCanvas : public SkCanvas {
-#endif
public:
SkDebugCanvas(int width, int height);
@@ -176,6 +171,7 @@ protected:
void onClipRegion(const SkRegion& region, SkClipOp) override;
void onDrawShadowRec(const SkPath&, const SkDrawShadowRec&) override;
+ void onDrawDrawable(SkDrawable*, const SkMatrix*) override;
void onDrawPicture(const SkPicture*, const SkMatrix*, const SkPaint*) override;
private:
@@ -198,7 +194,7 @@ private:
void drawAndCollectOps(int n, SkCanvas*);
void cleanupAuditTrail(SkCanvas*);
- typedef SkCanvas INHERITED;
+ typedef SkCanvasVirtualEnforcer<SkCanvas> INHERITED;
};
#endif
diff --git a/tools/debugger/SkDrawCommand.cpp b/tools/debugger/SkDrawCommand.cpp
index 215328603f..743a8d7920 100644
--- a/tools/debugger/SkDrawCommand.cpp
+++ b/tools/debugger/SkDrawCommand.cpp
@@ -12,6 +12,7 @@
#include "SkAutoMalloc.h"
#include "SkColorFilter.h"
#include "SkDashPathEffect.h"
+#include "SkDrawable.h"
#include "SkImageFilter.h"
#include "SkJsonWriteBuffer.h"
#include "SkMaskFilterBase.h"
@@ -247,6 +248,7 @@ const char* SkDrawCommand::GetCommandString(OpType type) {
case kDrawTextRSXform_OpType: return "DrawTextRSXform";
case kDrawVertices_OpType: return "DrawVertices";
case kDrawAtlas_OpType: return "DrawAtlas";
+ case kDrawDrawable_OpType: return "DrawDrawable";
case kEndDrawPicture_OpType: return "EndDrawPicture";
case kRestore_OpType: return "Restore";
case kSave_OpType: return "Save";
@@ -2140,6 +2142,19 @@ Json::Value SkDrawShadowCommand::toJSON(UrlDataManager& urlDataManager) const {
return result;
}
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+SkDrawDrawableCommand::SkDrawDrawableCommand(SkDrawable* drawable, const SkMatrix* matrix)
+ : INHERITED(kDrawDrawable_OpType)
+ , fDrawable(SkRef(drawable))
+ , fMatrix(matrix) {}
+
+void SkDrawDrawableCommand::execute(SkCanvas* canvas) const {
+ canvas->drawDrawable(fDrawable.get(), fMatrix.getMaybeNull());
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
SkDrawTextCommand::SkDrawTextCommand(const void* text, size_t byteLength, SkScalar x, SkScalar y,
const SkPaint& paint)
: INHERITED(kDrawText_OpType)
diff --git a/tools/debugger/SkDrawCommand.h b/tools/debugger/SkDrawCommand.h
index fa12dd45d3..a7a3015335 100644
--- a/tools/debugger/SkDrawCommand.h
+++ b/tools/debugger/SkDrawCommand.h
@@ -61,6 +61,7 @@ public:
kDrawTextRSXform_OpType,
kDrawVertices_OpType,
kDrawAtlas_OpType,
+ kDrawDrawable_OpType,
kEndDrawPicture_OpType,
kRestore_OpType,
kSave_OpType,
@@ -724,5 +725,16 @@ private:
typedef SkDrawCommand INHERITED;
};
-#endif
+class SkDrawDrawableCommand : public SkDrawCommand {
+public:
+ SkDrawDrawableCommand(SkDrawable*, const SkMatrix*);
+ void execute(SkCanvas* canvas) const override;
+
+private:
+ sk_sp<SkDrawable> fDrawable;
+ SkTLazy<SkMatrix> fMatrix;
+
+ typedef SkDrawCommand INHERITED;
+};
+#endif