From 50a8dd0a00538840e55233146cb202e256cc6c34 Mon Sep 17 00:00:00 2001 From: ethannicholas Date: Wed, 10 Feb 2016 05:40:46 -0800 Subject: Moved Canvas->JSON and JSON->Canvas functionality into SkDebugCanvas. SkJSONCanvas and SkJSONRenderer will be deleted once the debug server has been updated. GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1681643002 Committed: https://skia.googlesource.com/skia/+/32fff1ba0c759d97ab78320b7ae46dd7696a4e6e Committed: https://skia.googlesource.com/skia/+/46cb6d6b82b0ab71033aef91419e8beae25bb8a4 Review URL: https://codereview.chromium.org/1681643002 --- tools/debugger/SkDrawCommand.h | 89 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 85 insertions(+), 4 deletions(-) (limited to 'tools/debugger/SkDrawCommand.h') diff --git a/tools/debugger/SkDrawCommand.h b/tools/debugger/SkDrawCommand.h index f67df92de7..a93461ab26 100644 --- a/tools/debugger/SkDrawCommand.h +++ b/tools/debugger/SkDrawCommand.h @@ -15,6 +15,7 @@ #include "SkRRect.h" #include "SkString.h" #include "SkTDArray.h" +#include "SkJSONCPP.h" class SK_API SkDrawCommand { public: @@ -99,6 +100,14 @@ public: virtual bool render(SkCanvas* canvas) const { return false; } + virtual Json::Value toJSON() const; + + /* Converts a JSON representation of a command into a newly-allocated SkDrawCommand object. It + * is the caller's responsibility to delete this object. This method may return null if an error + * occurs. + */ + static SkDrawCommand* fromJSON(Json::Value& command); + static const char* GetCommandString(OpType type); protected: @@ -114,6 +123,7 @@ public: SkRestoreCommand(); void execute(SkCanvas* canvas) const override; Action action() const override { return kPopLayer_Action; } + static SkRestoreCommand* fromJSON(Json::Value& command); private: typedef SkDrawCommand INHERITED; @@ -123,6 +133,9 @@ class SkClearCommand : public SkDrawCommand { public: SkClearCommand(SkColor color); void execute(SkCanvas* canvas) const override; + Json::Value toJSON() const override; + static SkClearCommand* fromJSON(Json::Value& command); + private: SkColor fColor; @@ -134,6 +147,9 @@ public: SkClipPathCommand(const SkPath& path, SkRegion::Op op, bool doAA); void execute(SkCanvas* canvas) const override; bool render(SkCanvas* canvas) const override; + Json::Value toJSON() const override; + static SkClipPathCommand* fromJSON(Json::Value& command); + private: SkPath fPath; SkRegion::Op fOp; @@ -146,6 +162,9 @@ class SkClipRegionCommand : public SkDrawCommand { public: SkClipRegionCommand(const SkRegion& region, SkRegion::Op op); void execute(SkCanvas* canvas) const override; + Json::Value toJSON() const override; + static SkClipRegionCommand* fromJSON(Json::Value& command); + private: SkRegion fRegion; SkRegion::Op fOp; @@ -157,6 +176,8 @@ class SkClipRectCommand : public SkDrawCommand { public: SkClipRectCommand(const SkRect& rect, SkRegion::Op op, bool doAA); void execute(SkCanvas* canvas) const override; + Json::Value toJSON() const override; + static SkClipRectCommand* fromJSON(Json::Value& command); const SkRect& rect() const { return fRect; } SkRegion::Op op() const { return fOp; } @@ -175,6 +196,8 @@ public: SkClipRRectCommand(const SkRRect& rrect, SkRegion::Op op, bool doAA); void execute(SkCanvas* canvas) const override; bool render(SkCanvas* canvas) const override; + Json::Value toJSON() const override; + static SkClipRRectCommand* fromJSON(Json::Value& command); const SkRRect& rrect() const { return fRRect; } SkRegion::Op op() const { return fOp; } @@ -192,6 +215,9 @@ class SkConcatCommand : public SkDrawCommand { public: SkConcatCommand(const SkMatrix& matrix); void execute(SkCanvas* canvas) const override; + Json::Value toJSON() const override; + static SkConcatCommand* fromJSON(Json::Value& command); + private: SkMatrix fMatrix; @@ -204,6 +230,9 @@ public: const SkPaint* paint); void execute(SkCanvas* canvas) const override; bool render(SkCanvas* canvas) const override; + Json::Value toJSON() const override; + static SkDrawBitmapCommand* fromJSON(Json::Value& command); + private: SkBitmap fBitmap; SkScalar fLeft; @@ -220,6 +249,9 @@ public: const SkRect& dst, const SkPaint* paint); void execute(SkCanvas* canvas) const override; bool render(SkCanvas* canvas) const override; + Json::Value toJSON() const override; + static SkDrawBitmapNineCommand* fromJSON(Json::Value& command); + private: SkBitmap fBitmap; SkIRect fCenter; @@ -237,6 +269,8 @@ public: SkCanvas::SrcRectConstraint); void execute(SkCanvas* canvas) const override; bool render(SkCanvas* canvas) const override; + Json::Value toJSON() const override; + static SkDrawBitmapRectCommand* fromJSON(Json::Value& command); const SkBitmap& bitmap() const { return fBitmap; } @@ -274,6 +308,9 @@ public: SkDrawImageCommand(const SkImage* image, SkScalar left, SkScalar top, const SkPaint* paint); void execute(SkCanvas* canvas) const override; bool render(SkCanvas* canvas) const override; + Json::Value toJSON() const override; + static SkDrawImageCommand* fromJSON(Json::Value& command); + private: SkAutoTUnref fImage; SkScalar fLeft; @@ -289,6 +326,9 @@ public: const SkPaint* paint, SkCanvas::SrcRectConstraint constraint); void execute(SkCanvas* canvas) const override; bool render(SkCanvas* canvas) const override; + Json::Value toJSON() const override; + static SkDrawImageRectCommand* fromJSON(Json::Value& command); + private: SkAutoTUnref fImage; SkTLazy fSrc; @@ -304,6 +344,9 @@ public: SkDrawOvalCommand(const SkRect& oval, const SkPaint& paint); void execute(SkCanvas* canvas) const override; bool render(SkCanvas* canvas) const override; + Json::Value toJSON() const override; + static SkDrawOvalCommand* fromJSON(Json::Value& command); + private: SkRect fOval; SkPaint fPaint; @@ -316,6 +359,9 @@ public: SkDrawPaintCommand(const SkPaint& paint); void execute(SkCanvas* canvas) const override; bool render(SkCanvas* canvas) const override; + Json::Value toJSON() const override; + static SkDrawPaintCommand* fromJSON(Json::Value& command); + private: SkPaint fPaint; @@ -327,6 +373,8 @@ public: SkDrawPathCommand(const SkPath& path, const SkPaint& paint); void execute(SkCanvas* canvas) const override; bool render(SkCanvas* canvas) const override; + Json::Value toJSON() const override; + static SkDrawPathCommand* fromJSON(Json::Value& command); private: SkPath fPath; @@ -371,6 +419,9 @@ public: virtual ~SkDrawPointsCommand() { delete [] fPts; } void execute(SkCanvas* canvas) const override; bool render(SkCanvas* canvas) const override; + Json::Value toJSON() const override; + static SkDrawPointsCommand* fromJSON(Json::Value& command); + private: SkCanvas::PointMode fMode; size_t fCount; @@ -386,6 +437,9 @@ public: const SkPaint& paint); virtual ~SkDrawTextCommand() { delete [] fText; } void execute(SkCanvas* canvas) const override; + Json::Value toJSON() const override; + static SkDrawTextCommand* fromJSON(Json::Value& command); + private: char* fText; size_t fByteLength; @@ -402,6 +456,9 @@ public: const SkPaint& paint); virtual ~SkDrawPosTextCommand() { delete [] fPos; delete [] fText; } void execute(SkCanvas* canvas) const override; + Json::Value toJSON() const override; + static SkDrawPosTextCommand* fromJSON(Json::Value& command); + private: char* fText; size_t fByteLength; @@ -417,6 +474,9 @@ public: const SkMatrix* matrix, const SkPaint& paint); virtual ~SkDrawTextOnPathCommand() { delete [] fText; } void execute(SkCanvas* canvas) const override; + Json::Value toJSON() const override; + static SkDrawTextOnPathCommand* fromJSON(Json::Value& command); + private: char* fText; size_t fByteLength; @@ -433,6 +493,7 @@ public: SkScalar constY, const SkPaint& paint); virtual ~SkDrawPosTextHCommand() { delete [] fXpos; delete [] fText; } void execute(SkCanvas* canvas) const override; + private: SkScalar* fXpos; char* fText; @@ -449,6 +510,8 @@ public: void execute(SkCanvas* canvas) const override; bool render(SkCanvas* canvas) const override; + Json::Value toJSON() const override; + static SkDrawTextBlobCommand* fromJSON(Json::Value& command); private: SkAutoTUnref fBlob; @@ -481,6 +544,8 @@ class SkDrawRectCommand : public SkDrawCommand { public: SkDrawRectCommand(const SkRect& rect, const SkPaint& paint); void execute(SkCanvas* canvas) const override; + Json::Value toJSON() const override; + static SkDrawRectCommand* fromJSON(Json::Value& command); const SkRect& rect() const { return fRect; } const SkPaint& paint() const { return fPaint; } @@ -496,6 +561,9 @@ public: SkDrawRRectCommand(const SkRRect& rrect, const SkPaint& paint); void execute(SkCanvas* canvas) const override; bool render(SkCanvas* canvas) const override; + Json::Value toJSON() const override; + static SkDrawRRectCommand* fromJSON(Json::Value& command); + private: SkRRect fRRect; SkPaint fPaint; @@ -509,6 +577,9 @@ public: const SkPaint& paint); void execute(SkCanvas* canvas) const override; bool render(SkCanvas* canvas) const override; + Json::Value toJSON() const override; + static SkDrawDRRectCommand* fromJSON(Json::Value& command); + private: SkRRect fOuter; SkRRect fInner; @@ -526,6 +597,7 @@ public: const SkPaint& paint); virtual ~SkDrawVerticesCommand(); void execute(SkCanvas* canvas) const override; + private: SkCanvas::VertexMode fVmode; int fVertexCount; @@ -545,6 +617,8 @@ public: SkSaveCommand(); void execute(SkCanvas* canvas) const override; Action action() const override { return kPushLayer_Action; } + static SkSaveCommand* fromJSON(Json::Value& command); + private: typedef SkDrawCommand INHERITED; }; @@ -552,7 +626,10 @@ private: class SkSaveLayerCommand : public SkDrawCommand { public: SkSaveLayerCommand(const SkCanvas::SaveLayerRec&); + virtual ~SkSaveLayerCommand(); void execute(SkCanvas* canvas) const override; + Json::Value toJSON() const override; + static SkSaveLayerCommand* fromJSON(Json::Value& command); void vizExecute(SkCanvas* canvas) const override; Action action() const override{ return kPushLayer_Action; } void setActive(bool active) override { fActive = active; } @@ -561,10 +638,11 @@ public: const SkPaint* paint() const { return fPaintPtr; } private: - SkRect fBounds; - SkPaint fPaint; - SkPaint* fPaintPtr; - uint32_t fSaveLayerFlags; + SkRect fBounds; + SkPaint fPaint; + SkPaint* fPaintPtr; + const SkImageFilter* fBackdrop; + uint32_t fSaveLayerFlags; bool fActive; @@ -576,6 +654,9 @@ public: SkSetMatrixCommand(const SkMatrix& matrix); void setUserMatrix(const SkMatrix&) override; void execute(SkCanvas* canvas) const override; + Json::Value toJSON() const override; + static SkSetMatrixCommand* fromJSON(Json::Value& command); + private: SkMatrix fUserMatrix; SkMatrix fMatrix; -- cgit v1.2.3