8#ifndef SkPictureData_DEFINED
9#define SkPictureData_DEFINED
61#define SK_PICT_READER_TAG SkSetFourByteTag('r', 'e', 'a', 'd')
62#define SK_PICT_FACTORY_TAG SkSetFourByteTag('f', 'a', 'c', 't')
63#define SK_PICT_TYPEFACE_TAG SkSetFourByteTag('t', 'p', 'f', 'c')
64#define SK_PICT_PICTURE_TAG SkSetFourByteTag('p', 'c', 't', 'r')
65#define SK_PICT_DRAWABLE_TAG SkSetFourByteTag('d', 'r', 'a', 'w')
68#define SK_PICT_BUFFER_SIZE_TAG SkSetFourByteTag('a', 'r', 'a', 'y')
70#define SK_PICT_PAINT_BUFFER_TAG SkSetFourByteTag('p', 'n', 't', ' ')
71#define SK_PICT_PATH_BUFFER_TAG SkSetFourByteTag('p', 't', 'h', ' ')
72#define SK_PICT_TEXTBLOB_BUFFER_TAG SkSetFourByteTag('b', 'l', 'o', 'b')
73#define SK_PICT_SLUG_BUFFER_TAG SkSetFourByteTag('s', 'l', 'u', 'g')
74#define SK_PICT_VERTICES_BUFFER_TAG SkSetFourByteTag('v', 'e', 'r', 't')
75#define SK_PICT_IMAGE_BUFFER_TAG SkSetFourByteTag('i', 'm', 'a', 'g')
78#define SK_PICT_EOF_TAG SkSetFourByteTag('e', 'o', 'f', ' ')
84 return reader->
validate(index > 0 && index <= array.size()) ? array[index - 1].get() :
nullptr;
116 const int index = reader->
readInt();
117 return reader->
validateIndex(index, fImages.
size()) ? fImages[index].get() :
nullptr;
122 return reader->
validate(index > 0 && index <= fPaths.
size()) ?
123 fPaths[index - 1] : fEmptyPath;
156 bool parseStreamTag(
SkStream*, uint32_t tag, uint32_t size,
159 void parseBufferTag(
SkReadBuffer&, uint32_t tag, uint32_t size);
160 void flattenToBuffer(
SkWriteBuffer&,
bool textBlobsOnly)
const;
178 std::unique_ptr<SkFactoryPlayback> fFactoryPlayback;
185 void initForPlayback()
const;
T * read_index_base_1_or_null(SkReadBuffer *reader, const skia_private::TArray< sk_sp< T > > &array)
const sktext::gpu::Slug * getSlug(SkReadBuffer *reader) const
bool parseBuffer(SkReadBuffer &buffer)
static SkPictureData * CreateFromStream(SkStream *, const SkPictInfo &, const SkDeserialProcs &, SkTypefacePlayback *, int recursionLimit)
static SkPictureData * CreateFromBuffer(SkReadBuffer &, const SkPictInfo &)
bool parseStream(SkStream *, const SkDeserialProcs &, SkTypefacePlayback *, int recursionLimit)
const SkPaint * optionalPaint(SkReadBuffer *reader) const
const SkPath & getPath(SkReadBuffer *reader) const
const SkVertices * getVertices(SkReadBuffer *reader) const
const sk_sp< SkData > & opData() const
const SkTextBlob * getTextBlob(SkReadBuffer *reader) const
const SkPaint & requiredPaint(SkReadBuffer *reader) const
void flatten(SkWriteBuffer &) const
const SkImage * getImage(SkReadBuffer *reader) const
const SkPicture * getPicture(SkReadBuffer *reader) const
SkDrawable * getDrawable(SkReadBuffer *reader) const
void serialize(SkWStream *, const SkSerialProcs &, SkRefCntSet *, bool textBlobsOnly=false) const
const SkPictInfo & info() const
bool validate(bool isValid)
bool validateIndex(int index, int count)
static const uint8_t buffer[]
void setVersion(uint32_t version)
uint32_t getVersion() const