diff options
Diffstat (limited to 'src/core/SkPictureRecord.h')
-rw-r--r-- | src/core/SkPictureRecord.h | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/src/core/SkPictureRecord.h b/src/core/SkPictureRecord.h index d6cdf05f28..b4920e37bb 100644 --- a/src/core/SkPictureRecord.h +++ b/src/core/SkPictureRecord.h @@ -15,6 +15,7 @@ #endif #include "SkPathHeap.h" #include "SkPicture.h" +#include "SkPicturePlayback.h" #include "SkPictureFlat.h" #include "SkTemplates.h" #include "SkWriter32.h" @@ -33,7 +34,7 @@ class SkPictureStateTree; class SkPictureRecord : public SkCanvas { public: - SkPictureRecord(SkPicture* picture, const SkISize& dimensions, uint32_t recordFlags); + SkPictureRecord(const SkISize& dimensions, uint32_t recordFlags); virtual ~SkPictureRecord(); virtual void clear(SkColor) SK_OVERRIDE; @@ -73,6 +74,28 @@ public: return fPictureRefs; } + SkData* opData(bool deepCopy) const { + this->validate(fWriter.bytesWritten(), 0); + + if (fWriter.bytesWritten() == 0) { + return SkData::NewEmpty(); + } + + if (deepCopy) { + return SkData::NewWithCopy(fWriter.contiguousArray(), fWriter.bytesWritten()); + } + + return fWriter.snapshotAsData(); + } + + SkPathHeap* pathHeap() { + return fPathHeap; + } + + const SkPictureContentInfo& contentInfo() const { + return fContentInfo; + } + void setFlags(uint32_t recordFlags) { fRecordFlags = recordFlags; } @@ -283,12 +306,12 @@ protected: SkBitmapHeap* fBitmapHeap; private: - // The owning SkPicture - SkPicture* fPicture; - friend class MatrixClipState; // for access to *Impl methods friend class SkMatrixClipStateMgr; // for access to *Impl methods + SkPictureContentInfo fContentInfo; + SkAutoTUnref<SkPathHeap> fPathHeap; + SkChunkFlatController fFlattenableHeap; SkPaintDictionary fPaints; |