| Index: src/core/SkWriteBuffer.cpp
|
| diff --git a/src/core/SkWriteBuffer.cpp b/src/core/SkWriteBuffer.cpp
|
| index 33ac03b49de66e51d82fc1a0bb1a1a1c4c4c05b9..8572170ac3a8c9dbb5833d43bfe7d142a5ce1328 100644
|
| --- a/src/core/SkWriteBuffer.cpp
|
| +++ b/src/core/SkWriteBuffer.cpp
|
| @@ -8,11 +8,30 @@
|
| #include "SkWriteBuffer.h"
|
| #include "SkBitmap.h"
|
| #include "SkData.h"
|
| +#include "SkDeduper.h"
|
| #include "SkPixelRef.h"
|
| #include "SkPtrRecorder.h"
|
| #include "SkStream.h"
|
| #include "SkTypeface.h"
|
|
|
| +bool SkWriteBuffer::newWriteImage(const SkImage* image) {
|
| + if (fImageDeduper) {
|
| + this->write32(fImageDeduper->findOrDefine((void*)image));
|
| + return true;
|
| + }
|
| + return false;
|
| +}
|
| +
|
| +bool SkWriteBuffer::newWriteTypeface(SkTypeface* typeface) {
|
| + if (fTypefaceDeduper) {
|
| + this->write32(fTypefaceDeduper->findOrDefine(typeface));
|
| + return true;
|
| + }
|
| + return false;
|
| +}
|
| +
|
| +///////////////////////////////////////////////////////////////////////////////////////////////////
|
| +
|
| SkBinaryWriteBuffer::SkBinaryWriteBuffer(uint32_t flags)
|
| : fFlags(flags)
|
| , fFactorySet(nullptr)
|
| @@ -173,6 +192,10 @@ void SkBinaryWriteBuffer::writeBitmap(const SkBitmap& bitmap) {
|
| }
|
|
|
| void SkBinaryWriteBuffer::writeImage(const SkImage* image) {
|
| + if (this->newWriteImage(image)) {
|
| + return;
|
| + }
|
| +
|
| this->writeInt(image->width());
|
| this->writeInt(image->height());
|
|
|
| @@ -193,6 +216,10 @@ void SkBinaryWriteBuffer::writeImage(const SkImage* image) {
|
| }
|
|
|
| void SkBinaryWriteBuffer::writeTypeface(SkTypeface* obj) {
|
| + if (this->newWriteTypeface(obj)) {
|
| + return;
|
| + }
|
| +
|
| if (nullptr == obj || nullptr == fTFSet) {
|
| fWriter.write32(0);
|
| } else {
|
|
|