8 #ifndef SkStream_DEFINED
9 #define SkStream_DEFINED
56 virtual size_t read(
void* buffer,
size_t size) = 0;
62 return this->read(NULL, size);
78 virtual size_t peek(
void* ,
size_t )
const {
return 0; }
84 virtual bool isAtEnd()
const = 0;
90 uint8_t readU8() {
return (uint8_t)this->readS8(); }
91 uint16_t readU16() {
return (uint16_t)this->readS16(); }
92 uint32_t readU32() {
return (uint32_t)this->readS32(); }
94 bool readBool() {
return this->readU8() != 0; }
95 SkScalar readScalar();
96 size_t readPackedUInt();
119 virtual bool seek(
size_t ) {
return false; }
125 virtual bool move(
long ) {
return false; }
147 bool rewind()
override = 0;
158 bool seek(
size_t position)
override = 0;
159 bool move(
long offset)
override = 0;
191 virtual bool write(
const void* buffer,
size_t size) = 0;
192 virtual void newline();
193 virtual void flush();
195 virtual size_t bytesWritten()
const = 0;
201 bool write32(uint32_t);
203 bool writeText(
const char text[]) {
205 return this->write(text, strlen(text));
207 bool writeDecAsText(int32_t);
208 bool writeBigDecAsText(int64_t,
int minDigits = 0);
209 bool writeHexAsText(uint32_t,
int minDigits = 0);
210 bool writeScalarAsText(SkScalar);
212 bool writeBool(
bool v) {
return this->write8(v); }
213 bool writeScalar(SkScalar);
214 bool writePackedUInt(
size_t);
216 bool writeStream(
SkStream* input,
size_t length);
222 static int SizeOfPackedUInt(
size_t value);
227 #include "SkString.h"
239 kCallerPasses_Ownership,
240 kCallerRetains_Ownership
247 explicit SkFILEStream(FILE* file, Ownership ownership = kCallerPasses_Ownership);
252 bool isValid()
const {
return fFILE != NULL; }
257 void setPath(
const char path[]);
259 size_t read(
void* buffer,
size_t size)
override;
266 bool seek(
size_t position)
override;
267 bool move(
long offset)
override;
277 Ownership fOwnership;
292 SkMemoryStream(
const void* data,
size_t length,
bool copyData =
false);
307 virtual void setMemory(
const void* data,
size_t length,
308 bool copyData =
false);
313 void setMemoryOwned(
const void* data,
size_t length);
318 SkData* copyToData()
const;
328 const void* getAtPos();
330 size_t read(
void* buffer,
size_t size)
override;
333 size_t peek(
void* buffer,
size_t size)
const override;
339 bool seek(
size_t position)
override;
340 bool move(
long offset)
override;
363 bool isValid()
const {
return fFILE != NULL; }
365 bool write(
const void* buffer,
size_t size)
override;
366 void flush()
override;
368 size_t bytesWritten()
const override;
379 bool write(
const void* buffer,
size_t size)
override;
380 size_t bytesWritten()
const override {
return fBytesWritten; }
385 size_t fBytesWritten;
395 bool write(
const void* buffer,
size_t size)
override;
396 size_t bytesWritten()
const override {
return fBytesWritten; }
399 bool write(
const void* buffer,
size_t offset,
size_t size);
400 bool read(
void* buffer,
size_t offset,
size_t size);
401 size_t getOffset()
const {
return fBytesWritten; }
404 void copyTo(
void* dst)
const;
405 void writeToStream(
SkWStream* dst)
const;
411 SkData* copyToData()
const;
423 size_t fBytesWritten;
426 void invalidateCopy();
429 friend class SkBlockMemoryStream;
430 friend class SkBlockMemoryRefCnt;
441 bool write(
const void* buffer,
size_t size)
override;
442 void newline()
override;
443 size_t bytesWritten()
const override {
return fBytesWritten; }
446 size_t fBytesWritten;
SkStreamMemory * duplicate() const override=0
Duplicates this stream.
bool hasLength() const override
Returns true if this stream can report it's total length.
Definition: SkStream.h:169
A stream that wraps a C FILE* file stream.
Definition: SkStream.h:231
virtual bool rewind()
Rewinds to the beginning of the stream.
Definition: SkStream.h:102
virtual SkStreamRewindable * duplicate() const
Duplicates this stream.
Definition: SkStream.h:107
SkStreamAsset is a SkStreamSeekable for which getLength is required.
Definition: SkStream.h:164
Definition: SkStream.h:390
SkStreamMemory is a SkStreamAsset for which getMemoryBase is required.
Definition: SkStream.h:174
SkStreamSeekable is a SkStreamRewindable for which position, seek, move, and fork are required...
Definition: SkStream.h:152
bool seek(size_t position) override=0
Seeks to an absolute position in the stream.
SkStreamSeekable * fork() const override=0
Duplicates this stream.
virtual SkStreamSeekable * fork() const
Duplicates this stream.
Definition: SkStream.h:130
virtual bool isAtEnd() const =0
Returns true when all the bytes in the stream have been read.
virtual bool seek(size_t)
Seeks to an absolute position in the stream.
Definition: SkStream.h:119
Definition: SkStream.h:356
unsigned U16CPU
Fast type for unsigned 16 bits.
Definition: SkTypes.h:263
bool isValid() const
Returns true if the current path could be opened.
Definition: SkStream.h:363
SkData holds an immutable data buffer.
Definition: SkData.h:22
SkStreamSeekable * duplicate() const override=0
Duplicates this stream.
virtual bool move(long)
Seeks to an relative offset in the stream.
Definition: SkStream.h:125
bool rewind() override=0
Rewinds to the beginning of the stream.
SkStreamAsset * duplicate() const override=0
Duplicates this stream.
size_t getPosition() const override=0
Returns the current position in the stream.
const void * getMemoryBase() override=0
Returns the starting address for the data.
bool isValid() const
Returns true if the current path could be opened.
Definition: SkStream.h:252
Definition: SkStream.h:284
bool hasPosition() const override
Returns true if this stream can report it's current position.
Definition: SkStream.h:156
SkStreamMemory * fork() const override=0
Duplicates this stream.
Definition: SkStream.h:376
SkStreamRewindable is a SkStream for which rewind and duplicate are required.
Definition: SkStream.h:145
size_t skip(size_t size)
Skip size number of bytes.
Definition: SkStream.h:61
SkStreamAsset * fork() const override=0
Duplicates this stream.
SkStream – abstraction for a source of bytes.
Definition: SkStream.h:38
virtual size_t peek(void *, size_t) const
Attempt to peek at size bytes.
Definition: SkStream.h:78
virtual const void * getMemoryBase()
Returns the starting address for the data.
Definition: SkStream.h:141
Definition: SkStream.h:182
virtual size_t getLength() const
Returns the total length of the stream.
Definition: SkStream.h:136
bool move(long offset) override=0
Seeks to an relative offset in the stream.
virtual size_t read(void *buffer, size_t size)=0
Reads or skips size number of bytes.
SkStreamRewindable * duplicate() const override=0
Duplicates this stream.
virtual bool hasLength() const
Returns true if this stream can report it's total length.
Definition: SkStream.h:134
virtual bool write(const void *buffer, size_t size)=0
Called to write bytes to a SkWStream.
virtual bool hasPosition() const
Returns true if this stream can report it's current position.
Definition: SkStream.h:111
size_t getLength() const override=0
Returns the total length of the stream.
unsigned U8CPU
Fast type for unsigned 8 bits.
Definition: SkTypes.h:251
Definition: SkStream.h:436
Light weight class for managing strings.
Definition: SkString.h:121
virtual size_t getPosition() const
Returns the current position in the stream.
Definition: SkStream.h:113