aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkOrderedReadBuffer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/SkOrderedReadBuffer.cpp')
-rw-r--r--src/core/SkOrderedReadBuffer.cpp40
1 files changed, 27 insertions, 13 deletions
diff --git a/src/core/SkOrderedReadBuffer.cpp b/src/core/SkOrderedReadBuffer.cpp
index a502c5d99a..5835c34aef 100644
--- a/src/core/SkOrderedReadBuffer.cpp
+++ b/src/core/SkOrderedReadBuffer.cpp
@@ -10,14 +10,23 @@
#include "SkStream.h"
#include "SkTypeface.h"
+SkOrderedReadBuffer::SkOrderedReadBuffer() : INHERITED() {
+ fMemoryPtr = NULL;
+
+ fBitmapStorage = NULL;
+ fTFArray = NULL;
+ fTFCount = 0;
-SkOrderedReadBuffer::SkOrderedReadBuffer(const void* data, size_t size) {
+ fFactoryTDArray = NULL;
+ fFactoryArray = NULL;
+ fFactoryCount = 0;
+}
+
+SkOrderedReadBuffer::SkOrderedReadBuffer(const void* data, size_t size) : INHERITED() {
fReader.setMemory(data, size);
fMemoryPtr = NULL;
- fRCArray = NULL;
- fRCCount = 0;
-
+ fBitmapStorage = NULL;
fTFArray = NULL;
fTFCount = 0;
@@ -31,10 +40,19 @@ SkOrderedReadBuffer::SkOrderedReadBuffer(SkStream* stream) {
fMemoryPtr = sk_malloc_throw(length);
stream->read(fMemoryPtr, length);
fReader.setMemory(fMemoryPtr, length);
+
+ fBitmapStorage = NULL;
+ fTFArray = NULL;
+ fTFCount = 0;
+
+ fFactoryTDArray = NULL;
+ fFactoryArray = NULL;
+ fFactoryCount = 0;
}
SkOrderedReadBuffer::~SkOrderedReadBuffer() {
sk_free(fMemoryPtr);
+ SkSafeUnref(fBitmapStorage);
}
bool SkOrderedReadBuffer::readBool() {
@@ -145,20 +163,16 @@ uint32_t SkOrderedReadBuffer::getArrayCount() {
return *(uint32_t*)fReader.peek();
}
-SkRefCnt* SkOrderedReadBuffer::readRefCntPtr() {
- if (fRCArray) {
+void SkOrderedReadBuffer::readBitmap(SkBitmap* bitmap) {
+ if (fBitmapStorage) {
const uint32_t index = fReader.readU32();
- SkASSERT(index <= (unsigned)fRCCount);
- return fRCArray[index - 1];
+ *bitmap = *fBitmapStorage->getBitmap(index);
+ fBitmapStorage->releaseRef(index);
} else {
- return INHERITED::readRefCntPtr();
+ bitmap->unflatten(*this);
}
}
-void SkOrderedReadBuffer::readBitmap(SkBitmap* bitmap) {
- bitmap->unflatten(*this);
-}
-
SkTypeface* SkOrderedReadBuffer::readTypeface() {
uint32_t index = fReader.readU32();