diff options
Diffstat (limited to 'skia/include/SkFlattenable.h')
-rw-r--r-- | skia/include/SkFlattenable.h | 201 |
1 files changed, 0 insertions, 201 deletions
diff --git a/skia/include/SkFlattenable.h b/skia/include/SkFlattenable.h deleted file mode 100644 index d23e20f..0000000 --- a/skia/include/SkFlattenable.h +++ /dev/null @@ -1,201 +0,0 @@ -/* - * Copyright (C) 2006 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef SkFlattenable_DEFINED -#define SkFlattenable_DEFINED - -#include "SkRefCnt.h" -#include "SkBitmap.h" -#include "SkReader32.h" -#include "SkTDArray.h" -#include "SkWriter32.h" - -class SkFlattenableReadBuffer; -class SkFlattenableWriteBuffer; - -/** \class SkFlattenable - - SkFlattenable is the base class for objects that need to be flattened - into a data stream for either transport or as part of the key to the - font cache. - */ -class SkFlattenable : public SkRefCnt { -public: - typedef SkFlattenable* (*Factory)(SkFlattenableReadBuffer&); - - SkFlattenable() {} - - /** Implement this to return a factory function pointer that can be called - to recreate your class given a buffer (previously written to by your - override of flatten(). - */ - virtual Factory getFactory() = 0; - /** Override this to write data specific to your subclass into the buffer, - being sure to call your super-class' version first. This data will later - be passed to your Factory function, returned by getFactory(). - */ - virtual void flatten(SkFlattenableWriteBuffer&); - - static Factory NameToFactory(const char name[]); - static const char* FactoryToName(Factory); - static void Register(const char name[], Factory); - - class Registrar { - public: - Registrar(const char name[], Factory factory) { - SkFlattenable::Register(name, factory); - } - }; - -protected: - SkFlattenable(SkFlattenableReadBuffer&) {} -}; - -/////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////// - -class SkTypeface; - -class SkFlattenableReadBuffer : public SkReader32 { -public: - SkFlattenableReadBuffer(); - explicit SkFlattenableReadBuffer(const void* data); - SkFlattenableReadBuffer(const void* data, size_t size); - - void setRefCntArray(SkRefCnt* array[], int count) { - fRCArray = array; - fRCCount = count; - } - - void setTypefaceArray(SkTypeface* array[], int count) { - fTFArray = array; - fTFCount = count; - } - - void setFactoryPlayback(SkFlattenable::Factory array[], int count) { - fFactoryArray = array; - fFactoryCount = count; - } - - SkTypeface* readTypeface(); - SkRefCnt* readRefCnt(); - void* readFunctionPtr(); - SkFlattenable* readFlattenable(); - -private: - SkRefCnt** fRCArray; - int fRCCount; - - SkTypeface** fTFArray; - int fTFCount; - - SkFlattenable::Factory* fFactoryArray; - int fFactoryCount; - - typedef SkReader32 INHERITED; -}; - -/////////////////////////////////////////////////////////////////////////////// - -#include "SkPtrRecorder.h" - -class SkRefCntRecorder : public SkPtrRecorder { -public: - virtual ~SkRefCntRecorder(); - - /** Add a refcnt object to the set and ref it if not already present, - or if it is already present, do nothing. Either way, returns 0 if obj - is null, or a base-1 index if obj is not null. - */ - uint32_t record(SkRefCnt* ref) { - return this->recordPtr(ref); - } - - // This does not change the owner counts on the objects - void get(SkRefCnt* array[]) const { - this->getPtrs((void**)array); - } - -protected: - // overrides - virtual void incPtr(void*); - virtual void decPtr(void*); - -private: - typedef SkPtrRecorder INHERITED; -}; - -class SkFactoryRecorder : public SkPtrRecorder { -public: - /** Add a factory to the set. If it is null return 0, otherwise return a - base-1 index for the factory. - */ - uint32_t record(SkFlattenable::Factory fact) { - return this->recordPtr((void*)fact); - } - - void get(SkFlattenable::Factory array[]) const { - this->getPtrs((void**)array); - } - -private: - typedef SkPtrRecorder INHERITED; -}; - -class SkFlattenableWriteBuffer : public SkWriter32 { -public: - SkFlattenableWriteBuffer(size_t minSize); - virtual ~SkFlattenableWriteBuffer(); - - void writeTypeface(SkTypeface*); - void writeRefCnt(SkRefCnt*); - void writeFunctionPtr(void*); - void writeFlattenable(SkFlattenable* flattenable); - - SkRefCntRecorder* getTypefaceRecorder() const { return fTFRecorder; } - SkRefCntRecorder* setTypefaceRecorder(SkRefCntRecorder*); - - SkRefCntRecorder* getRefCntRecorder() const { return fRCRecorder; } - SkRefCntRecorder* setRefCntRecorder(SkRefCntRecorder*); - - SkFactoryRecorder* getFactoryRecorder() const { return fFactoryRecorder; } - SkFactoryRecorder* setFactoryRecorder(SkFactoryRecorder*); - - enum Flags { - kCrossProcess_Flag = 0x01 - }; - Flags getFlags() const { return fFlags; } - void setFlags(Flags flags) { fFlags = flags; } - - bool isCrossProcess() const { return (fFlags & kCrossProcess_Flag) != 0; } - - bool persistBitmapPixels() const { - return (fFlags & kCrossProcess_Flag) != 0; - } - - bool persistTypeface() const { return (fFlags & kCrossProcess_Flag) != 0; } - -private: - Flags fFlags; - SkRefCntRecorder* fTFRecorder; - SkRefCntRecorder* fRCRecorder; - SkFactoryRecorder* fFactoryRecorder; - - typedef SkWriter32 INHERITED; -}; - -#endif - |