9 #ifndef SkWriteBuffer_DEFINED
10 #define SkWriteBuffer_DEFINED
15 #include "SkPicture.h"
16 #include "SkPixelSerializer.h"
18 #include "SkWriter32.h"
19 #include "../private/SkTHash.h"
31 virtual bool isCrossProcess()
const = 0;
33 virtual void writeByteArray(
const void* data,
size_t size) = 0;
34 void writeDataAsByteArray(
SkData* data) {
35 this->writeByteArray(data->
data(), data->
size());
37 virtual void writeBool(
bool value) = 0;
38 virtual void writeScalar(SkScalar value) = 0;
39 virtual void writeScalarArray(
const SkScalar* value, uint32_t count) = 0;
40 virtual void writeInt(int32_t value) = 0;
41 virtual void writeIntArray(
const int32_t* value, uint32_t count) = 0;
42 virtual void writeUInt(uint32_t value) = 0;
43 void write32(int32_t value) {
44 this->writeInt(value);
46 virtual void writeString(
const char* value) = 0;
48 virtual void writeFlattenable(
const SkFlattenable* flattenable) = 0;
49 virtual void writeColor(
SkColor color) = 0;
50 virtual void writeColorArray(
const SkColor* color, uint32_t count) = 0;
51 virtual void writePoint(
const SkPoint& point) = 0;
52 virtual void writePointArray(
const SkPoint* point, uint32_t count) = 0;
53 virtual void writeMatrix(
const SkMatrix& matrix) = 0;
54 virtual void writeIRect(
const SkIRect& rect) = 0;
55 virtual void writeRect(
const SkRect& rect) = 0;
56 virtual void writeRegion(
const SkRegion& region) = 0;
57 virtual void writePath(
const SkPath& path) = 0;
58 virtual size_t writeStream(
SkStream* stream,
size_t length) = 0;
59 virtual void writeBitmap(
const SkBitmap& bitmap) = 0;
60 virtual void writeImage(
const SkImage*) = 0;
61 virtual void writeTypeface(
SkTypeface* typeface) = 0;
62 virtual void writePaint(
const SkPaint& paint) = 0;
71 kCrossProcess_Flag = 1 << 0,
78 bool isCrossProcess()
const override {
79 return SkToBool(fFlags & kCrossProcess_Flag);
82 void reset(
void* storage = NULL,
size_t storageSize = 0) {
83 fWriter.reset(storage, storageSize);
86 size_t bytesWritten()
const {
return fWriter.bytesWritten(); }
88 void writeByteArray(
const void* data,
size_t size)
override;
89 void writeBool(
bool value)
override;
90 void writeScalar(SkScalar value)
override;
91 void writeScalarArray(
const SkScalar* value, uint32_t count)
override;
92 void writeInt(int32_t value)
override;
93 void writeIntArray(
const int32_t* value, uint32_t count)
override;
94 void writeUInt(uint32_t value)
override;
95 void writeString(
const char* value)
override;
97 void writeFlattenable(
const SkFlattenable* flattenable)
override;
98 void writeColor(
SkColor color)
override;
99 void writeColorArray(
const SkColor* color, uint32_t count)
override;
100 void writePoint(
const SkPoint& point)
override;
101 void writePointArray(
const SkPoint* point, uint32_t count)
override;
102 void writeMatrix(
const SkMatrix& matrix)
override;
103 void writeIRect(
const SkIRect& rect)
override;
104 void writeRect(
const SkRect& rect)
override;
105 void writeRegion(
const SkRegion& region)
override;
106 void writePath(
const SkPath& path)
override;
107 size_t writeStream(
SkStream* stream,
size_t length)
override;
108 void writeBitmap(
const SkBitmap& bitmap)
override;
109 void writeImage(
const SkImage*)
override;
110 void writeTypeface(
SkTypeface* typeface)
override;
111 void writePaint(
const SkPaint& paint)
override;
114 void writeToMemory(
void* dst) { fWriter.flatten(dst); }
116 SkFactorySet* setFactoryRecorder(SkFactorySet*);
117 SkRefCntSet* setTypefaceRecorder(SkRefCntSet*);
131 const uint32_t fFlags;
132 SkFactorySet* fFactorySet;
140 SkTHashMap<SkString, uint32_t> fFlattenableDict;
143 #endif // SkWriteBuffer_DEFINED
The SkPath class encapsulates compound (multiple contour) geometric paths consisting of straight line...
Definition: SkPath.h:27
void setPixelSerializer(SkPixelSerializer *)
Set an SkPixelSerializer to store an encoded representation of pixels, e.g.
Definition: SkPoint.h:156
size_t size() const
Returns the number of bytes stored.
Definition: SkData.h:27
The SkMatrix class holds a 3x3 matrix for transforming coordinates.
Definition: SkMatrix.h:26
Definition: SkWriter32.h:25
The SkPaint class holds the style and color information about how to draw geometries, text and bitmaps.
Definition: SkPaint.h:46
Concrete implementation that serializes to a flat binary blob.
Definition: SkWriteBuffer.h:68
SkData holds an immutable data buffer.
Definition: SkData.h:22
#define SkToBool(cond)
Returns 0 or 1 based on the condition.
Definition: SkTypes.h:287
SkFlattenable is the base class for objects that need to be flattened into a data stream for either t...
Definition: SkFlattenable.h:70
The SkTypeface class specifies the typeface and intrinsic style of a font.
Definition: SkTypeface.h:42
The SkBitmap class specifies a raster bitmap.
Definition: SkBitmap.h:41
The SkRegion class encapsulates the geometric region used to specify clipping areas for drawing...
Definition: SkRegion.h:30
Interface for serializing pixels, e.g.
Definition: SkPixelSerializer.h:19
uint32_t SkColor
32 bit ARGB color value, not premultiplied.
Definition: SkColor.h:28
SkStream – abstraction for a source of bytes.
Definition: SkStream.h:38
Definition: SkStream.h:182
Definition: SkWriteBuffer.h:26
const void * data() const
Returns the ptr to the data.
Definition: SkData.h:34
SkIRect holds four 32 bit integer coordinates for a rectangle.
Definition: SkRect.h:20
SkImage is an abstraction for drawing a rectagle of pixels, though the particular type of image could...
Definition: SkImage.h:45