diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/core/SkBitmap.h | 7 | ||||
-rw-r--r-- | include/core/SkFlattenableBuffers.h | 2 | ||||
-rw-r--r-- | include/core/SkOrderedReadBuffer.h | 14 | ||||
-rw-r--r-- | include/core/SkOrderedWriteBuffer.h | 12 |
4 files changed, 18 insertions, 17 deletions
diff --git a/include/core/SkBitmap.h b/include/core/SkBitmap.h index b4f86eaee7..eba3e0b087 100644 --- a/include/core/SkBitmap.h +++ b/include/core/SkBitmap.h @@ -548,6 +548,13 @@ public: bool extractAlpha(SkBitmap* dst, const SkPaint* paint, Allocator* allocator, SkIPoint* offset) const; + /** The following two functions provide the means to both flatten and + unflatten the bitmap AND its pixels into the provided buffer. + It is recommended that you do not call these functions directly, + but instead call the write/readBitmap functions on the respective + buffers as they can optimize the recording process and avoid recording + duplicate bitmaps and pixelRefs. + */ void flatten(SkFlattenableWriteBuffer&) const; void unflatten(SkFlattenableReadBuffer&); diff --git a/include/core/SkFlattenableBuffers.h b/include/core/SkFlattenableBuffers.h index d87539ec8e..6137724333 100644 --- a/include/core/SkFlattenableBuffers.h +++ b/include/core/SkFlattenableBuffers.h @@ -87,7 +87,6 @@ public: // helper functions virtual void* readFunctionPtr(); virtual void readPaint(SkPaint* paint); - virtual SkRefCnt* readRefCntPtr(); virtual void readBitmap(SkBitmap* bitmap) = 0; virtual SkTypeface* readTypeface() = 0; @@ -147,7 +146,6 @@ public: // helper functions virtual void writeFunctionPtr(void* ptr); virtual void writePaint(const SkPaint& paint); - virtual void writeRefCntPtr(SkRefCnt* refCnt); virtual void writeBitmap(const SkBitmap& bitmap) = 0; virtual void writeTypeface(SkTypeface* typeface) = 0; diff --git a/include/core/SkOrderedReadBuffer.h b/include/core/SkOrderedReadBuffer.h index 5651e7c1e7..8462b7f89d 100644 --- a/include/core/SkOrderedReadBuffer.h +++ b/include/core/SkOrderedReadBuffer.h @@ -11,13 +11,14 @@ #include "SkRefCnt.h" #include "SkBitmap.h" +#include "SkBitmapHeap.h" #include "SkFlattenableBuffers.h" #include "SkReader32.h" #include "SkPath.h" class SkOrderedReadBuffer : public SkFlattenableReadBuffer { public: - SkOrderedReadBuffer() : INHERITED() {} + SkOrderedReadBuffer(); SkOrderedReadBuffer(const void* data, size_t size); SkOrderedReadBuffer(SkStream* stream); virtual ~SkOrderedReadBuffer(); @@ -63,14 +64,11 @@ public: // helpers to get info about arrays and binary data virtual uint32_t getArrayCount() SK_OVERRIDE; - virtual SkRefCnt* readRefCntPtr() SK_OVERRIDE; - virtual void readBitmap(SkBitmap* bitmap) SK_OVERRIDE; virtual SkTypeface* readTypeface() SK_OVERRIDE; - void setRefCntArray(SkRefCnt* array[], int count) { - fRCArray = array; - fRCCount = count; + void setBitmapStorage(SkBitmapHeapReader* bitmapStorage) { + SkRefCnt_SafeAssign(fBitmapStorage, bitmapStorage); } void setTypefaceArray(SkTypeface* array[], int count) { @@ -103,9 +101,7 @@ private: SkReader32 fReader; void* fMemoryPtr; - SkRefCnt** fRCArray; - int fRCCount; - + SkBitmapHeapReader* fBitmapStorage; SkTypeface** fTFArray; int fTFCount; diff --git a/include/core/SkOrderedWriteBuffer.h b/include/core/SkOrderedWriteBuffer.h index 8cd2d810f1..7be2a90bc3 100644 --- a/include/core/SkOrderedWriteBuffer.h +++ b/include/core/SkOrderedWriteBuffer.h @@ -13,6 +13,7 @@ #include "SkRefCnt.h" #include "SkBitmap.h" +#include "SkBitmapHeap.h" #include "SkPath.h" #include "SkWriter32.h" @@ -59,8 +60,6 @@ public: virtual void writePath(const SkPath& path) SK_OVERRIDE; virtual size_t writeStream(SkStream* stream, size_t length) SK_OVERRIDE; - virtual void writeRefCntPtr(SkRefCnt* refCnt) SK_OVERRIDE; - virtual void writeBitmap(const SkBitmap& bitmap) SK_OVERRIDE; virtual void writeTypeface(SkTypeface* typeface) SK_OVERRIDE; @@ -72,16 +71,17 @@ public: SkRefCntSet* getTypefaceRecorder() const { return fTFSet; } SkRefCntSet* setTypefaceRecorder(SkRefCntSet*); - SkRefCntSet* getRefCntRecorder() const { return fRCSet; } - SkRefCntSet* setRefCntRecorder(SkRefCntSet*); + void setBitmapHeap(SkBitmapHeap* bitmapHeap) { + SkRefCnt_SafeAssign(fBitmapHeap, bitmapHeap); + } private: SkFactorySet* fFactorySet; SkNamedFactorySet* fNamedFactorySet; SkWriter32 fWriter; - SkRefCntSet* fRCSet; - SkRefCntSet* fTFSet; + SkBitmapHeap* fBitmapHeap; + SkRefCntSet* fTFSet; typedef SkFlattenableWriteBuffer INHERITED; }; |