8#ifndef SkWriter32_DEFINED
9#define SkWriter32_DEFINED
43 SkWriter32(
void* external =
nullptr,
size_t externalBytes = 0) {
44 this->
reset(external, externalBytes);
54 void reset(
void* external =
nullptr,
size_t externalBytes = 0) {
60 fData = (uint8_t*)external;
61 fCapacity = externalBytes;
70 size_t totalRequired = fUsed + size;
71 if (totalRequired > fCapacity) {
72 this->growToAtLeast(totalRequired);
74 fUsed = totalRequired;
75 return (uint32_t*)(fData +
offset);
114 *(int32_t*)this->
reserve(
sizeof(value)) =
value & 0xFFFF;
146 size_t size = path.writeToMemory(
nullptr);
148 path.writeToMemory(this->
reserve(size));
163 this->
write(values, size);
170 void write(
const void* values,
size_t size) {
180 size_t alignedSize =
SkAlign4(size);
181 uint32_t* p = this->
reserve(alignedSize);
182 if (alignedSize != size) {
184 p[alignedSize / 4 - 1] = 0;
203 void writeString(
const char* str,
size_t len = (
size_t)-1);
210 static size_t WriteStringSize(
const char* str,
size_t len = (
size_t)-1);
213 uint32_t len = data ?
SkToU32(data->size()) : 0;
221 return 4 +
SkAlign4(data ? data->size() : 0);
236 memcpy(dst, fData, fUsed);
240 return stream->write(fData, fUsed);
254 void growToAtLeast(
size_t size);
static constexpr bool SkIsAlign4(T x)
static constexpr T SkAlign4(T x)
static void * sk_careful_memcpy(void *dst, const void *src, size_t len)
constexpr uint32_t SkToU32(S x)
const void * data() const
size_t writeToMemory(void *buffer) const
static constexpr size_t kSizeInMemory
size_t writeToMemory(void *buffer) const
void overwriteTAt(size_t offset, const T &value)
void writeInt(int32_t value)
static size_t WriteDataSize(const SkData *data)
void write32(int32_t value)
void write(const void *values, size_t size)
bool usingInitialStorage() const
void writeRRect(const SkRRect &rrect)
void writeSampling(const SkSamplingOptions &sampling)
uint32_t * reservePad(size_t size)
void writeRect(const SkRect &rect)
void writeScalar(SkScalar value)
size_t readFromStream(SkStream *stream, size_t length)
void writeIRect(const SkIRect &rect)
void writeMatrix(const SkMatrix &matrix)
uint32_t * reserve(size_t size)
void write16(int32_t value)
void writePoint(const SkPoint &pt)
void writeMul4(const void *values, size_t size)
void writePad(const void *src, size_t size)
void writeData(const SkData *data)
SkWriter32(void *external=nullptr, size_t externalBytes=0)
void reset(void *external=nullptr, size_t externalBytes=0)
void write8(int32_t value)
void writePath(const SkPath &path)
void writePoint3(const SkPoint3 &pt)
bool writeToStream(SkWStream *stream) const
static size_t WriteStringSize(const char *str, size_t len=(size_t) -1)
bool writeBool(bool value)
const T & readTAt(size_t offset) const
void writeRegion(const SkRegion &rgn)
void flatten(void *dst) const
void rewindToOffset(size_t offset)
sk_sp< SkData > snapshotAsData() const
void writeString(const char *str, size_t len=(size_t) -1)
size_t bytesWritten() const