From c7611088f09340b94de2dd7f60f6dd9293d947d7 Mon Sep 17 00:00:00 2001 From: Brian Osman Date: Tue, 29 May 2018 14:55:50 -0400 Subject: 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 Reviewed-by: Mike Klein --- tools/debugger/SkDebugCanvas.cpp | 4 ++++ tools/debugger/SkDebugCanvas.h | 8 ++------ tools/debugger/SkDrawCommand.cpp | 15 +++++++++++++++ tools/debugger/SkDrawCommand.h | 14 +++++++++++++- 4 files changed, 34 insertions(+), 7 deletions(-) (limited to 'tools/debugger') 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 { -#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 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 fDrawable; + SkTLazy fMatrix; + + typedef SkDrawCommand INHERITED; +}; +#endif -- cgit v1.2.3