diff options
Diffstat (limited to 'tools/debugger/SkDrawCommand.h')
-rw-r--r-- | tools/debugger/SkDrawCommand.h | 137 |
1 files changed, 26 insertions, 111 deletions
diff --git a/tools/debugger/SkDrawCommand.h b/tools/debugger/SkDrawCommand.h index 5a14c4fbff..7bac9e4858 100644 --- a/tools/debugger/SkDrawCommand.h +++ b/tools/debugger/SkDrawCommand.h @@ -93,12 +93,6 @@ public: virtual Json::Value toJSON(UrlDataManager& urlDataManager) 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, UrlDataManager& urlDataManager); - static const char* GetCommandString(OpType type); // Helper methods for converting things to JSON @@ -132,7 +126,6 @@ class SkRestoreCommand : public SkDrawCommand { public: SkRestoreCommand(); void execute(SkCanvas* canvas) const override; - static SkRestoreCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager); private: typedef SkDrawCommand INHERITED; @@ -143,7 +136,6 @@ public: SkClearCommand(SkColor color); void execute(SkCanvas* canvas) const override; Json::Value toJSON(UrlDataManager& urlDataManager) const override; - static SkClearCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager); private: SkColor fColor; @@ -157,7 +149,6 @@ public: void execute(SkCanvas* canvas) const override; bool render(SkCanvas* canvas) const override; Json::Value toJSON(UrlDataManager& urlDataManager) const override; - static SkClipPathCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager); private: SkPath fPath; @@ -172,7 +163,6 @@ public: SkClipRegionCommand(const SkRegion& region, SkClipOp op); void execute(SkCanvas* canvas) const override; Json::Value toJSON(UrlDataManager& urlDataManager) const override; - static SkClipRegionCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager); private: SkRegion fRegion; @@ -186,11 +176,6 @@ public: SkClipRectCommand(const SkRect& rect, SkClipOp op, bool doAA); void execute(SkCanvas* canvas) const override; Json::Value toJSON(UrlDataManager& urlDataManager) const override; - static SkClipRectCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager); - - const SkRect& rect() const { return fRect; } - SkClipOp op() const { return fOp; } - bool doAA() const { return fDoAA; } private: SkRect fRect; @@ -206,11 +191,6 @@ public: void execute(SkCanvas* canvas) const override; bool render(SkCanvas* canvas) const override; Json::Value toJSON(UrlDataManager& urlDataManager) const override; - static SkClipRRectCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager); - - const SkRRect& rrect() const { return fRRect; } - SkClipOp op() const { return fOp; } - bool doAA() const { return fDoAA; } private: SkRRect fRRect; @@ -225,7 +205,6 @@ public: SkConcatCommand(const SkMatrix& matrix); void execute(SkCanvas* canvas) const override; Json::Value toJSON(UrlDataManager& urlDataManager) const override; - static SkConcatCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager); private: SkMatrix fMatrix; @@ -238,7 +217,6 @@ 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; @@ -255,14 +233,12 @@ public: void execute(SkCanvas* canvas) const override; bool render(SkCanvas* canvas) const override; Json::Value toJSON(UrlDataManager& urlDataManager) const override; - static SkDrawBitmapCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager); private: - SkBitmap fBitmap; - SkScalar fLeft; - SkScalar fTop; - SkPaint fPaint; - SkPaint* fPaintPtr; + SkBitmap fBitmap; + SkScalar fLeft; + SkScalar fTop; + SkTLazy<SkPaint> fPaint; typedef SkDrawCommand INHERITED; }; @@ -274,8 +250,6 @@ public: void execute(SkCanvas* canvas) const override; bool render(SkCanvas* canvas) const override; Json::Value toJSON(UrlDataManager& urlDataManager) const override; - static SkDrawBitmapLatticeCommand* fromJSON(Json::Value& command, - UrlDataManager& urlDataManager); private: SkBitmap fBitmap; @@ -293,14 +267,12 @@ public: void execute(SkCanvas* canvas) const override; bool render(SkCanvas* canvas) const override; Json::Value toJSON(UrlDataManager& urlDataManager) const override; - static SkDrawBitmapNineCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager); private: - SkBitmap fBitmap; - SkIRect fCenter; - SkRect fDst; - SkPaint fPaint; - SkPaint* fPaintPtr; + SkBitmap fBitmap; + SkIRect fCenter; + SkRect fDst; + SkTLazy<SkPaint> fPaint; typedef SkDrawCommand INHERITED; }; @@ -313,34 +285,12 @@ public: void execute(SkCanvas* canvas) const override; bool render(SkCanvas* canvas) const override; Json::Value toJSON(UrlDataManager& urlDataManager) const override; - static SkDrawBitmapRectCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager); - - const SkBitmap& bitmap() const { return fBitmap; } - - // The non-const 'paint' method allows modification of this object's - // SkPaint. For this reason the ctor and setPaint method make a local copy. - // The 'fPaintPtr' member acts a signal that the local SkPaint is valid - // (since only an SkPaint* is passed into the ctor). - const SkPaint* paint() const { return fPaintPtr; } - SkPaint* paint() { return fPaintPtr; } - - void setPaint(const SkPaint& paint) { fPaint = paint; fPaintPtr = &fPaint; } - - const SkRect* srcRect() const { return fSrc.isEmpty() ? nullptr : &fSrc; } - void setSrcRect(const SkRect& src) { fSrc = src; } - - const SkRect& dstRect() const { return fDst; } - void setDstRect(const SkRect& dst) { fDst = dst; } - - SkCanvas::SrcRectConstraint constraint() const { return fConstraint; } - void setConstraint(SkCanvas::SrcRectConstraint constraint) { fConstraint = constraint; } private: SkBitmap fBitmap; - SkRect fSrc; + SkTLazy<SkRect> fSrc; SkRect fDst; - SkPaint fPaint; - SkPaint* fPaintPtr; + SkTLazy<SkPaint> fPaint; SkCanvas::SrcRectConstraint fConstraint; typedef SkDrawCommand INHERITED; @@ -352,7 +302,6 @@ public: void execute(SkCanvas* canvas) const override; bool render(SkCanvas* canvas) const override; Json::Value toJSON(UrlDataManager& urlDataManager) const override; - static SkDrawImageCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager); private: sk_sp<const SkImage> fImage; @@ -370,8 +319,6 @@ public: void execute(SkCanvas* canvas) const override; bool render(SkCanvas* canvas) const override; Json::Value toJSON(UrlDataManager& urlDataManager) const override; - static SkDrawImageLatticeCommand* fromJSON(Json::Value& command, - UrlDataManager& urlDataManager); private: sk_sp<const SkImage> fImage; @@ -389,14 +336,12 @@ public: void execute(SkCanvas* canvas) const override; bool render(SkCanvas* canvas) const override; Json::Value toJSON(UrlDataManager& urlDataManager) const override; - static SkDrawImageNineCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager); private: sk_sp<const SkImage> fImage; SkIRect fCenter; SkRect fDst; - SkPaint fPaint; - SkPaint* fPaintPtr; + SkTLazy<SkPaint> fPaint; typedef SkDrawCommand INHERITED; }; @@ -408,7 +353,6 @@ public: void execute(SkCanvas* canvas) const override; bool render(SkCanvas* canvas) const override; Json::Value toJSON(UrlDataManager& urlDataManager) const override; - static SkDrawImageRectCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager); private: sk_sp<const SkImage> fImage; @@ -426,7 +370,6 @@ public: void execute(SkCanvas* canvas) const override; bool render(SkCanvas* canvas) const override; Json::Value toJSON(UrlDataManager& urlDataManager) const override; - static SkDrawOvalCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager); private: SkRect fOval; @@ -442,7 +385,6 @@ public: void execute(SkCanvas* canvas) const override; bool render(SkCanvas* canvas) const override; Json::Value toJSON(UrlDataManager& urlDataManager) const override; - static SkDrawArcCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager); private: SkRect fOval; @@ -460,7 +402,6 @@ public: void execute(SkCanvas* canvas) const override; bool render(SkCanvas* canvas) const override; Json::Value toJSON(UrlDataManager& urlDataManager) const override; - static SkDrawPaintCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager); private: SkPaint fPaint; @@ -474,7 +415,6 @@ public: void execute(SkCanvas* canvas) const override; bool render(SkCanvas* canvas) const override; Json::Value toJSON(UrlDataManager& urlDataManager) const override; - static SkDrawPathCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager); private: SkPath fPath; @@ -516,16 +456,13 @@ class SkDrawPointsCommand : public SkDrawCommand { public: SkDrawPointsCommand(SkCanvas::PointMode mode, size_t count, const SkPoint pts[], const SkPaint& paint); - ~SkDrawPointsCommand() override { delete [] fPts; } void execute(SkCanvas* canvas) const override; bool render(SkCanvas* canvas) const override; Json::Value toJSON(UrlDataManager& urlDataManager) const override; - static SkDrawPointsCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager); private: SkCanvas::PointMode fMode; - size_t fCount; - SkPoint* fPts; + SkTDArray<SkPoint> fPts; SkPaint fPaint; typedef SkDrawCommand INHERITED; @@ -537,7 +474,6 @@ public: void execute(SkCanvas* canvas) const override; bool render(SkCanvas* canvas) const override; Json::Value toJSON(UrlDataManager& urlDataManager) const override; - static SkDrawRegionCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager); private: SkRegion fRegion; @@ -553,7 +489,6 @@ public: ~SkDrawTextCommand() override { delete [] fText; } void execute(SkCanvas* canvas) const override; Json::Value toJSON(UrlDataManager& urlDataManager) const override; - static SkDrawTextCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager); private: char* fText; @@ -572,7 +507,6 @@ public: ~SkDrawPosTextCommand() override { delete [] fPos; delete [] fText; } void execute(SkCanvas* canvas) const override; Json::Value toJSON(UrlDataManager& urlDataManager) const override; - static SkDrawPosTextCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager); private: char* fText; @@ -590,14 +524,13 @@ public: ~SkDrawTextOnPathCommand() override { delete [] fText; } void execute(SkCanvas* canvas) const override; Json::Value toJSON(UrlDataManager& urlDataManager) const override; - static SkDrawTextOnPathCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager); private: - char* fText; - size_t fByteLength; - SkPath fPath; - SkMatrix fMatrix; - SkPaint fPaint; + char* fText; + size_t fByteLength; + SkPath fPath; + SkTLazy<SkMatrix> fMatrix; + SkPaint fPaint; typedef SkDrawCommand INHERITED; }; @@ -609,15 +542,13 @@ public: ~SkDrawTextRSXformCommand() override { delete[] fText; delete[] fXform; } void execute(SkCanvas* canvas) const override; Json::Value toJSON(UrlDataManager& urlDataManager) const override; - static SkDrawTextRSXformCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager); private: - char* fText; - size_t fByteLength; - SkRSXform* fXform; - SkRect* fCull; - SkRect fCullStorage; - SkPaint fPaint; + char* fText; + size_t fByteLength; + SkRSXform* fXform; + SkTLazy<SkRect> fCull; + SkPaint fPaint; typedef SkDrawCommand INHERITED; }; @@ -629,7 +560,6 @@ public: ~SkDrawPosTextHCommand() override { delete [] fXpos; delete [] fText; } void execute(SkCanvas* canvas) const override; Json::Value toJSON(UrlDataManager& urlDataManager) const override; - static SkDrawPosTextHCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager); private: SkScalar* fXpos; @@ -648,7 +578,6 @@ public: void execute(SkCanvas* canvas) const override; bool render(SkCanvas* canvas) const override; Json::Value toJSON(UrlDataManager& urlDataManager) const override; - static SkDrawTextBlobCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager); private: sk_sp<SkTextBlob> fBlob; @@ -666,7 +595,6 @@ public: const SkPaint& paint); void execute(SkCanvas* canvas) const override; Json::Value toJSON(UrlDataManager& urlDataManager) const override; - static SkDrawPatchCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager); private: SkPoint fCubics[12]; @@ -686,10 +614,7 @@ public: SkDrawRectCommand(const SkRect& rect, const SkPaint& paint); void execute(SkCanvas* canvas) const override; Json::Value toJSON(UrlDataManager& urlDataManager) const override; - static SkDrawRectCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager); - const SkRect& rect() const { return fRect; } - const SkPaint& paint() const { return fPaint; } private: SkRect fRect; SkPaint fPaint; @@ -703,7 +628,6 @@ public: void execute(SkCanvas* canvas) const override; bool render(SkCanvas* canvas) const override; Json::Value toJSON(UrlDataManager& urlDataManager) const override; - static SkDrawRRectCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager); private: SkRRect fRRect; @@ -719,7 +643,6 @@ public: void execute(SkCanvas* canvas) const override; bool render(SkCanvas* canvas) const override; Json::Value toJSON(UrlDataManager& urlDataManager) const override; - static SkDrawDRRectCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager); private: SkRRect fOuter; @@ -766,7 +689,6 @@ class SkSaveCommand : public SkDrawCommand { public: SkSaveCommand(); void execute(SkCanvas* canvas) const override; - static SkSaveCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager); private: typedef SkDrawCommand INHERITED; @@ -775,19 +697,14 @@ private: class SkSaveLayerCommand : public SkDrawCommand { public: SkSaveLayerCommand(const SkCanvas::SaveLayerRec&); - ~SkSaveLayerCommand() override; void execute(SkCanvas* canvas) const override; Json::Value toJSON(UrlDataManager& urlDataManager) const override; - static SkSaveLayerCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager); - - const SkPaint* paint() const { return fPaintPtr; } private: - SkRect fBounds; - SkPaint fPaint; - SkPaint* fPaintPtr; - const SkImageFilter* fBackdrop; - uint32_t fSaveLayerFlags; + SkTLazy<SkRect> fBounds; + SkTLazy<SkPaint> fPaint; + sk_sp<const SkImageFilter> fBackdrop; + uint32_t fSaveLayerFlags; typedef SkDrawCommand INHERITED; }; @@ -797,7 +714,6 @@ public: SkSetMatrixCommand(const SkMatrix& matrix); void execute(SkCanvas* canvas) const override; Json::Value toJSON(UrlDataManager& urlDataManager) const override; - static SkSetMatrixCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager); private: SkMatrix fMatrix; @@ -811,7 +727,6 @@ public: void execute(SkCanvas* canvas) const override; bool render(SkCanvas* canvas) const override; Json::Value toJSON(UrlDataManager& urlDataManager) const override; - static SkDrawShadowCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager); private: SkPath fPath; |