aboutsummaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
authorGravatar djsollen@google.com <djsollen@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-08-07 19:49:41 +0000
committerGravatar djsollen@google.com <djsollen@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-08-07 19:49:41 +0000
commit21830d90096d2dccc4168d99a427e78035ce942a (patch)
tree4dd555cade377ea06a9f4f826755ff6384b71699 /include
parent44b67b2ed16ecb6fe001b785498e20b13fa42d0c (diff)
Refactor Bitmap Storage for SkPicture using SkPipe's design.
Refactor Picture and Pipe bitmap storage into common data structure Update SkFlattenable buffers to be more modular. This CL is an effort to stage the conversion to named parameters for all SkFlattenable commands. This particular stage only does the following two things... 1. Move flattenable buffers from SkFlattenable.h into their own header. 2. Update and Add new read write methods for better clarity and convenience. BUG= Review URL: https://codereview.appspot.com/6445079 git-svn-id: http://skia.googlecode.com/svn/trunk@4994 2bbb7eff-a529-9590-31e7-b0007b416f81
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;
};