aboutsummaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/core/SkBitmap.h7
-rw-r--r--include/core/SkFlattenableBuffers.h2
-rw-r--r--include/core/SkOrderedReadBuffer.h14
-rw-r--r--include/core/SkOrderedWriteBuffer.h12
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;
};