From 91217d0b0cdf80a1f18ca24d49e4a925d4629f1f Mon Sep 17 00:00:00 2001 From: "robertphillips@google.com" Date: Sun, 17 Mar 2013 18:33:46 +0000 Subject: Making SkDrawCommand more robust https://codereview.appspot.com/7486052/ git-svn-id: http://skia.googlecode.com/svn/trunk@8181 2bbb7eff-a529-9590-31e7-b0007b416f81 --- debugger/SkDrawCommand.h | 40 ++++++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 14 deletions(-) (limited to 'debugger/SkDrawCommand.h') diff --git a/debugger/SkDrawCommand.h b/debugger/SkDrawCommand.h index d06e7fe2b8..3ede8ff908 100644 --- a/debugger/SkDrawCommand.h +++ b/debugger/SkDrawCommand.h @@ -73,10 +73,12 @@ public: virtual void execute(SkCanvas* canvas) SK_OVERRIDE; virtual const SkBitmap* getBitmap() const SK_OVERRIDE; private: - const SkPath* fPath; + SkPath fPath; SkRegion::Op fOp; bool fDoAA; SkBitmap fBitmap; + + typedef SkDrawCommand INHERITED; }; class ClipRegion : public SkDrawCommand { @@ -170,7 +172,8 @@ private: class DrawBitmapRect : public SkDrawCommand { public: DrawBitmapRect(const SkBitmap& bitmap, const SkRect* src, - const SkRect& dst, const SkPaint* paint, SkBitmap& resizedBitmap); + const SkRect& dst, const SkPaint* paint, + SkBitmap& resizedBitmap); virtual void execute(SkCanvas* canvas) SK_OVERRIDE; virtual const SkBitmap* getBitmap() const SK_OVERRIDE; @@ -183,15 +186,18 @@ public: void setPaint(const SkPaint& paint) { fPaint = paint; fPaintPtr = &fPaint; } - const SkRect& dstRect() { return *fDst; } + const SkRect* srcRect() const { return fSrc.isEmpty() ? NULL : &fSrc; } + const SkRect& dstRect() const { return fDst; } private: - const SkRect* fSrc; + SkRect fSrc; SkPaint fPaint; SkPaint* fPaintPtr; - const SkBitmap* fBitmap; - const SkRect* fDst; + SkBitmap fBitmap; + SkRect fDst; SkBitmap fResizedBitmap; + + typedef SkDrawCommand INHERITED; }; class DrawData : public SkDrawCommand { @@ -227,9 +233,11 @@ public: virtual const SkBitmap* getBitmap() const SK_OVERRIDE; private: - const SkPath* fPath; - const SkPaint* fPaint; + SkPath fPath; + SkPaint fPaint; SkBitmap fBitmap; + + typedef SkDrawCommand INHERITED; }; class DrawPicture : public SkDrawCommand { @@ -296,14 +304,16 @@ private: class DrawPosTextH : public SkDrawCommand { public: DrawPosTextH(const void* text, size_t byteLength, const SkScalar xpos[], - SkScalar constY, const SkPaint& paint); + SkScalar constY, const SkPaint& paint); virtual void execute(SkCanvas* canvas) SK_OVERRIDE; private: const SkScalar* fXpos; const void* fText; size_t fByteLength; SkScalar fConstY; - const SkPaint* fPaint; + SkPaint fPaint; + + typedef SkDrawCommand INHERITED; }; class DrawRectC : public SkDrawCommand { @@ -311,11 +321,13 @@ public: DrawRectC(const SkRect& rect, const SkPaint& paint); virtual void execute(SkCanvas* canvas) SK_OVERRIDE; - const SkRect& rect() const { return *fRect; } - const SkPaint* paint() const { return fPaint; } + const SkRect& rect() const { return fRect; } + const SkPaint& paint() const { return fPaint; } private: - const SkRect* fRect; - const SkPaint* fPaint; + SkRect fRect; + SkPaint fPaint; + + typedef SkDrawCommand INHERITED; }; class DrawRRect : public SkDrawCommand { -- cgit v1.2.3