diff options
Diffstat (limited to 'include/core/SkFlattenable.h')
-rw-r--r-- | include/core/SkFlattenable.h | 204 |
1 files changed, 1 insertions, 203 deletions
diff --git a/include/core/SkFlattenable.h b/include/core/SkFlattenable.h index bbd4a80edf..56bc96648f 100644 --- a/include/core/SkFlattenable.h +++ b/include/core/SkFlattenable.h @@ -11,16 +11,9 @@ #define SkFlattenable_DEFINED #include "SkRefCnt.h" -#include "SkReader32.h" -#include "SkTDArray.h" -#include "SkWriter32.h" -class SkBitmap; class SkFlattenableReadBuffer; class SkFlattenableWriteBuffer; -class SkPath; -struct SkPoint; -class SkString; #if SK_ALLOW_STATIC_GLOBAL_INITIALIZERS @@ -55,7 +48,7 @@ class SkString; virtual Factory getFactory() SK_OVERRIDE { return NULL; }; \ #define SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(flattenable) \ - virtual Factory getFactory() SK_OVERRIDE { return CreateProc; }; \ + virtual Factory getFactory() SK_OVERRIDE { return CreateProc; } \ static SkFlattenable* CreateProc(SkFlattenableReadBuffer& buffer) { \ return SkNEW_ARGS(flattenable, (buffer)); \ } @@ -110,116 +103,6 @@ private: typedef SkRefCnt INHERITED; }; -// helpers for matrix and region - -class SkMatrix; -extern void SkReadMatrix(SkReader32*, SkMatrix*); -extern void SkWriteMatrix(SkWriter32*, const SkMatrix&); - -class SkRegion; -extern void SkReadRegion(SkReader32*, SkRegion*); -extern void SkWriteRegion(SkWriter32*, const SkRegion&); - -/////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////// - -class SkTypeface; - -class SkFlattenableReadBuffer { -public: - enum Flags { - kCrossProcess_Flag = 1 << 0, - kScalarIsFloat_Flag = 1 << 1, - kPtrIs64Bit_Flag = 1 << 2, - }; - - SkFlattenableReadBuffer(); - virtual ~SkFlattenableReadBuffer() {} - - void setFlags(uint32_t flags) { fFlags = flags; } - uint32_t getFlags() const { return fFlags; } - - bool isCrossProcess() const { return SkToBool(fFlags & kCrossProcess_Flag); } - bool isScalarFloat() const { return SkToBool(fFlags & kScalarIsFloat_Flag); } - bool isPtr64Bit() const { return SkToBool(fFlags & kPtrIs64Bit_Flag); } - - virtual uint8_t readU8() = 0; - virtual uint16_t readU16() = 0; - virtual uint32_t readU32() = 0; - virtual void read(void* dst, size_t size) = 0; - virtual bool readBool() = 0; - virtual int32_t readInt() = 0; - virtual SkScalar readScalar() = 0; - virtual const void* skip(size_t size) = 0; - - virtual int32_t readS32() { return readInt(); } - template <typename T> const T& skipT() { - SkASSERT(SkAlign4(sizeof(T)) == sizeof(T)); - return *(const T*)this->skip(sizeof(T)); - } - - virtual void readMatrix(SkMatrix*) = 0; - virtual void readPath(SkPath*) = 0; - virtual void readPoint(SkPoint*) = 0; - - // helper function for classes with const SkPoint members - SkPoint readPoint() { - SkPoint point; - this->readPoint(&point); - return point; - } - - void setRefCntArray(SkRefCnt* array[], int count) { - fRCArray = array; - fRCCount = count; - } - - void setTypefaceArray(SkTypeface* array[], int count) { - fTFArray = array; - fTFCount = count; - } - - /** - * Call this with a pre-loaded array of Factories, in the same order as - * were created/written by the writer. SkPicture uses this. - */ - void setFactoryPlayback(SkFlattenable::Factory array[], int count) { - fFactoryTDArray = NULL; - fFactoryArray = array; - fFactoryCount = count; - } - - /** - * Call this with an initially empty array, so the reader can cache each - * factory it sees by name. Used by the pipe code in combination with - * setNamedFactoryRecorder. - */ - void setFactoryArray(SkTDArray<SkFlattenable::Factory>* array) { - fFactoryTDArray = array; - fFactoryArray = NULL; - fFactoryCount = 0; - } - - virtual SkTypeface* readTypeface() = 0; - virtual SkRefCnt* readRefCnt() = 0; - virtual void* readFunctionPtr() = 0; - virtual SkFlattenable* readFlattenable() = 0; - -protected: - SkRefCnt** fRCArray; - int fRCCount; - - SkTypeface** fTFArray; - int fTFCount; - - SkTDArray<SkFlattenable::Factory>* fFactoryTDArray; - SkFlattenable::Factory* fFactoryArray; - int fFactoryCount; - -private: - uint32_t fFlags; -}; - /////////////////////////////////////////////////////////////////////////////// #include "SkPtrRecorder.h" @@ -268,89 +151,4 @@ private: SkTDArray<const char*> fNames; }; -class SkFlattenableWriteBuffer { -public: - SkFlattenableWriteBuffer(); - virtual ~SkFlattenableWriteBuffer(); - - // deprecated naming convention that will be removed after callers are updated - virtual bool writeBool(bool value) = 0; - virtual void writeInt(int32_t value) = 0; - virtual void write8(int32_t value) = 0; - virtual void write16(int32_t value) = 0; - virtual void write32(int32_t value) = 0; - virtual void writeScalar(SkScalar value) = 0; - virtual void writeMul4(const void* values, size_t size) = 0; - - virtual void writePad(const void* src, size_t size) = 0; - virtual void writeString(const char* str, size_t len = (size_t)-1) = 0; - virtual uint32_t* reserve(size_t size) = 0; - virtual void flatten(void* dst) = 0; - virtual uint32_t size() = 0; - virtual void write(const void* values, size_t size) = 0; - virtual void writeRect(const SkRect& rect) = 0; - virtual size_t readFromStream(SkStream*, size_t length) = 0; - - virtual void writeMatrix(const SkMatrix& matrix) = 0; - virtual void writePath(const SkPath& path) = 0; - virtual void writePoint(const SkPoint& point) = 0; - - virtual bool writeToStream(SkWStream*) = 0; - - virtual void writeFunctionPtr(void*)= 0; - virtual void writeFlattenable(SkFlattenable* flattenable)= 0; - - void writeTypeface(SkTypeface*); - void writeRefCnt(SkRefCnt* obj); - - SkRefCntSet* getTypefaceRecorder() const { return fTFSet; } - SkRefCntSet* setTypefaceRecorder(SkRefCntSet*); - - SkRefCntSet* getRefCntRecorder() const { return fRCSet; } - SkRefCntSet* setRefCntRecorder(SkRefCntSet*); - - SkFactorySet* getFactoryRecorder() const { return fFactorySet; } - SkFactorySet* setFactoryRecorder(SkFactorySet*); - - SkNamedFactorySet* getNamedFactoryRecorder() const { return fNamedFactorySet; } - SkNamedFactorySet* setNamedFactoryRecorder(SkNamedFactorySet*); - - enum Flags { - kCrossProcess_Flag = 0x01, - /** - * Instructs the writer to always serialize bitmap pixel data. - */ - kForceFlattenBitmapPixels_Flag = 0x04 - }; - - uint32_t getFlags() const { return fFlags; } - void setFlags(uint32_t flags) { fFlags = flags; } - - bool isCrossProcess() const { - return SkToBool(fFlags & kCrossProcess_Flag); - } - - bool persistBitmapPixels() const { - return (fFlags & (kCrossProcess_Flag | kForceFlattenBitmapPixels_Flag)) != 0; - } - - bool persistTypeface() const { return (fFlags & kCrossProcess_Flag) != 0; } - -protected: - - // A helper function so that each subclass does not have to be a friend of - // SkFlattenable. - void flattenObject(SkFlattenable* obj, SkFlattenableWriteBuffer& buffer) { - obj->flatten(buffer); - } - - uint32_t fFlags; - SkRefCntSet* fTFSet; - SkRefCntSet* fRCSet; - SkFactorySet* fFactorySet; - SkNamedFactorySet* fNamedFactorySet; - -}; - #endif - |