From efb65de8ab9f62244659a0e7792db98bef9a01b0 Mon Sep 17 00:00:00 2001 From: "mike@reedtribe.org" Date: Thu, 9 Aug 2012 00:49:00 +0000 Subject: privatization -- moving headers out of include into src git-svn-id: http://skia.googlecode.com/svn/trunk@5024 2bbb7eff-a529-9590-31e7-b0007b416f81 --- src/core/SkOrderedReadBuffer.h | 115 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 src/core/SkOrderedReadBuffer.h (limited to 'src/core/SkOrderedReadBuffer.h') diff --git a/src/core/SkOrderedReadBuffer.h b/src/core/SkOrderedReadBuffer.h new file mode 100644 index 0000000000..8462b7f89d --- /dev/null +++ b/src/core/SkOrderedReadBuffer.h @@ -0,0 +1,115 @@ + +/* + * Copyright 2011 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkOrderedReadBuffer_DEFINED +#define SkOrderedReadBuffer_DEFINED + +#include "SkRefCnt.h" +#include "SkBitmap.h" +#include "SkBitmapHeap.h" +#include "SkFlattenableBuffers.h" +#include "SkReader32.h" +#include "SkPath.h" + +class SkOrderedReadBuffer : public SkFlattenableReadBuffer { +public: + SkOrderedReadBuffer(); + SkOrderedReadBuffer(const void* data, size_t size); + SkOrderedReadBuffer(SkStream* stream); + virtual ~SkOrderedReadBuffer(); + + virtual SkOrderedReadBuffer* getOrderedBinaryBuffer() SK_OVERRIDE { return this; } + + SkReader32* getReader32() { return &fReader; } + + uint32_t size() { return fReader.size(); } + uint32_t offset() { return fReader.offset(); } + bool eof() { return fReader.eof(); } + const void* skip(size_t size) { return fReader.skip(size); } + + // primitives + virtual bool readBool() SK_OVERRIDE; + virtual SkColor readColor() SK_OVERRIDE; + virtual SkFixed readFixed() SK_OVERRIDE; + virtual int32_t readInt() SK_OVERRIDE; + virtual SkScalar readScalar() SK_OVERRIDE; + virtual uint32_t readUInt() SK_OVERRIDE; + virtual int32_t read32() SK_OVERRIDE; + + // strings -- the caller is responsible for freeing the string contents + virtual char* readString() SK_OVERRIDE; + virtual void* readEncodedString(size_t* length, SkPaint::TextEncoding encoding) SK_OVERRIDE; + + // common data structures + virtual SkFlattenable* readFlattenable() SK_OVERRIDE; + virtual void readPoint(SkPoint* point) SK_OVERRIDE; + virtual void readMatrix(SkMatrix* matrix) SK_OVERRIDE; + virtual void readIRect(SkIRect* rect) SK_OVERRIDE; + virtual void readRect(SkRect* rect) SK_OVERRIDE; + virtual void readRegion(SkRegion* region) SK_OVERRIDE; + virtual void readPath(SkPath* path) SK_OVERRIDE; + + // binary data and arrays + virtual uint32_t readByteArray(void* value) SK_OVERRIDE; + virtual uint32_t readColorArray(SkColor* colors) SK_OVERRIDE; + virtual uint32_t readIntArray(int32_t* values) SK_OVERRIDE; + virtual uint32_t readPointArray(SkPoint* points) SK_OVERRIDE; + virtual uint32_t readScalarArray(SkScalar* values) SK_OVERRIDE; + + // helpers to get info about arrays and binary data + virtual uint32_t getArrayCount() SK_OVERRIDE; + + virtual void readBitmap(SkBitmap* bitmap) SK_OVERRIDE; + virtual SkTypeface* readTypeface() SK_OVERRIDE; + + void setBitmapStorage(SkBitmapHeapReader* bitmapStorage) { + SkRefCnt_SafeAssign(fBitmapStorage, bitmapStorage); + } + + 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 conjunction with + * the writer's kInlineFactoryNames_Flag. + */ + void setFactoryArray(SkTDArray* array) { + fFactoryTDArray = array; + fFactoryArray = NULL; + fFactoryCount = 0; + } + +private: + SkReader32 fReader; + void* fMemoryPtr; + + SkBitmapHeapReader* fBitmapStorage; + SkTypeface** fTFArray; + int fTFCount; + + SkTDArray* fFactoryTDArray; + SkFlattenable::Factory* fFactoryArray; + int fFactoryCount; + + typedef SkFlattenableReadBuffer INHERITED; +}; + +#endif // SkOrderedReadBuffer_DEFINED -- cgit v1.2.3