int
fz_file_exists (
fz_context *ctx,
const char *path
)
Return true if the named file exists and is readable.
typedef struct fz_stream fz_stream
fz_stream is a buffered reader capable of seeking in both directions.
Streams are reference counted, so references must be dropped by a call to fz_drop_stream.
Only the data between rp and wp is valid.
fz_stream *
fz_open_file (
fz_context *ctx,
const char *filename
)
Open the named file and wrap it in a stream.
fz_stream *
fz_open_file_autodelete (
fz_context *ctx,
const char *filename
)
Do the same as fz_open_file, but delete the file upon close.
fz_stream *
fz_try_open_file (
fz_context *ctx,
const char *name
)
Open the named file and wrap it in a stream.
Does the same as fz_open_file, but in the event the file does not open, it will return NULL rather than throw an exception.
fz_stream *
fz_open_file_w (
fz_context *ctx,
const wchar_t *filename
)
Open the named file and wrap it in a stream.
This function is only available when compiling for Win32.
const char *
fz_stream_filename (
fz_context *ctx,
fz_stream *stm
)
Return the filename (UTF-8 encoded) from which a stream was opened.
Returns NULL if the filename is not available (or the stream was opened from a source other than a file).
fz_stream *
fz_open_memory (
fz_context *ctx,
const unsigned char *data,
size_t len
)
Open a block of memory as a stream.
Returns pointer to newly created stream. May throw exceptions on failure to allocate.
fz_stream *
fz_open_buffer (
fz_context *ctx,
fz_buffer *buf
)
Open a buffer as a stream.
Returns pointer to newly created stream. May throw exceptions on failure to allocate.
fz_stream *
fz_open_leecher (
fz_context *ctx,
fz_stream *chain,
fz_buffer *buf
)
Attach a filter to a stream that will store any characters read from the stream into the supplied buffer.
Returns pointer to newly created stream. May throw exceptions on failure to allocate.
fz_stream *
fz_keep_stream (
fz_context *ctx,
fz_stream *stm
)
Increments the reference count for a stream. Returns the same pointer.
Never throws exceptions.
void
fz_drop_stream (
fz_context *ctx,
fz_stream *stm
)
Decrements the reference count for a stream.
When the reference count for the stream hits zero, frees the storage used for the fz_stream itself, and (usually) releases the underlying resources that the stream is based upon (depends on the method used to open the stream initially).
int64_t
fz_tell (
fz_context *ctx,
fz_stream *stm
)
return the current reading position within a stream
void
fz_seek (
fz_context *ctx,
fz_stream *stm,
int64_t offset,
int whence
)
Seek within a stream.
size_t
fz_read (
fz_context *ctx,
fz_stream *stm,
unsigned char *data,
size_t len
)
Read from a stream into a given data block.
Returns the number of bytes read. May throw exceptions.
size_t
fz_skip (
fz_context *ctx,
fz_stream *stm,
size_t len
)
Read from a stream discarding data.
Returns the number of bytes read. May throw exceptions.
fz_buffer *
fz_read_all (
fz_context *ctx,
fz_stream *stm,
size_t initial
)
Read all of a stream into a buffer.
Returns a buffer created from reading from the stream. May throw exceptions on failure to allocate.
fz_buffer *
fz_read_file (
fz_context *ctx,
const char *filename
)
Read all the contents of a file into a buffer.
fz_buffer *
fz_try_read_file (
fz_context *ctx,
const char *filename
)
Read all the contents of a file into a buffer.
Returns NULL if the file does not exist, otherwise behaves exactly as fz_read_file.
char *
fz_read_text_file (
fz_context *ctx,
const char *filename
)
Read all the contents of a file into a string. File should be UTF-8 encoded plain text.
uint16_t
fz_read_uint16 (
fz_context *ctx,
fz_stream *stm
)
fz_read_[u]int(16|24|32|64)(_le)?
Read a 16/32/64 bit signed/unsigned integer from stream, in big or little-endian byte orders.
Throws an exception if EOF is encountered.
uint32_t
fz_read_uint24 (
fz_context *ctx,
fz_stream *stm
)
uint32_t
fz_read_uint32 (
fz_context *ctx,
fz_stream *stm
)
uint64_t
fz_read_uint64 (
fz_context *ctx,
fz_stream *stm
)
uint16_t
fz_read_uint16_le (
fz_context *ctx,
fz_stream *stm
)
uint32_t
fz_read_uint24_le (
fz_context *ctx,
fz_stream *stm
)
uint32_t
fz_read_uint32_le (
fz_context *ctx,
fz_stream *stm
)
uint64_t
fz_read_uint64_le (
fz_context *ctx,
fz_stream *stm
)
int16_t
fz_read_int16 (
fz_context *ctx,
fz_stream *stm
)
int32_t
fz_read_int32 (
fz_context *ctx,
fz_stream *stm
)
int64_t
fz_read_int64 (
fz_context *ctx,
fz_stream *stm
)
int16_t
fz_read_int16_le (
fz_context *ctx,
fz_stream *stm
)
int32_t
fz_read_int32_le (
fz_context *ctx,
fz_stream *stm
)
int64_t
fz_read_int64_le (
fz_context *ctx,
fz_stream *stm
)
float
fz_read_float_le (
fz_context *ctx,
fz_stream *stm
)
float
fz_read_float (
fz_context *ctx,
fz_stream *stm
)
void
fz_read_string (
fz_context *ctx,
fz_stream *stm,
char *buffer,
int len
)
Read a null terminated string from the stream into a buffer of a given length. The buffer will be null terminated. Throws on failure (including the failure to fit the entire string including the terminator into the buffer).
int
fz_read_rune (
fz_context *ctx,
fz_stream *in
)
Read a utf-8 rune from a stream.
In the event of encountering badly formatted utf-8 codes (such as a leading code with an unexpected number of following codes) no error/exception is given, but undefined values may be returned.
int
fz_read_utf16_le (
fz_context *ctx,
fz_stream *stm
)
Read a utf-16 rune from a stream. (little endian and big endian respectively).
In the event of encountering badly formatted utf-16 codes (mismatched surrogates) no error/exception is given, but undefined values may be returned.
int
fz_read_utf16_be (
fz_context *ctx,
fz_stream *stm
)
typedef int (fz_stream_next_fn)(fz_context *ctx, fz_stream *stm, size_t max)
A function type for use when implementing fz_streams. The supplied function of this type is called whenever data is required, and the current buffer is empty.
Returns -1 if there is no more data in the stream. Otherwise, the function should find its internal state using stm->state, refill its buffer, update stm->rp and stm->wp to point to the start and end of the new data respectively, and then “return *stm->rp++“.
typedef void (fz_stream_drop_fn)(fz_context *ctx, void *state)
A function type for use when implementing fz_streams. The supplied function of this type is called when the stream is dropped, to release the stream specific state information.
typedef void (fz_stream_seek_fn)(fz_context *ctx, fz_stream *stm, int64_t offset, int whence)
A function type for use when implementing fz_streams. The supplied function of this type is called when fz_seek is requested, and the arguments are as defined for fz_seek.
The stream can find it’s private state in stm->state.
struct fz_stream
{
int refs;
int error;
int eof;
int progressive;
int64_t pos;
int avail;
int bits;
unsigned char *rp, *wp;
void *state;
fz_stream_next_fn *next;
fz_stream_drop_fn *drop;
fz_stream_seek_fn *seek;
}
fz_stream *
fz_new_stream (
fz_context *ctx,
void *state,
fz_stream_next_fn *next,
fz_stream_drop_fn *drop
)
Create a new stream object with the given internal state and function pointers.
fz_buffer *
fz_read_best (
fz_context *ctx,
fz_stream *stm,
size_t initial,
int *truncated,
size_t worst_case
)
Attempt to read a stream into a buffer. If truncated is NULL behaves as fz_read_all, sets a truncated flag in case of error.
Returns a buffer created from reading from the stream.
char *
fz_read_line (
fz_context *ctx,
fz_stream *stm,
char *buf,
size_t max
)
Read a line from stream into the buffer until either a terminating newline or EOF, which it replaces with a null byte (‘\0’).
Returns buf on success, and NULL when end of file occurs while no characters have been read.
int
fz_skip_string (
fz_context *ctx,
fz_stream *stm,
const char *str
)
Skip over a given string in a stream. Return 0 if successfully skipped, non-zero otherwise. As many characters will be skipped over as matched in the string.
void
fz_skip_space (
fz_context *ctx,
fz_stream *stm
)
Skip over whitespace (bytes <= 32) in a stream.
size_t
fz_available (
fz_context *ctx,
fz_stream *stm,
size_t max
)
Ask how many bytes are available immediately from a given stream.
Returns the number of bytes immediately available between the read and write pointers. This number is guaranteed only to be 0 if we have hit EOF. The number of bytes returned here need have no relation to max (could be larger, could be smaller).
int
fz_read_byte (
fz_context *ctx,
fz_stream *stm
)
Read the next byte from a stream.
Returns -1 for end of stream, or the next byte. May throw exceptions.
int
fz_peek_byte (
fz_context *ctx,
fz_stream *stm
)
Peek at the next byte in a stream.
Returns -1 for EOF, or the next byte that will be read.
void
fz_unread_byte (
fz_context *ctx FZ_UNUSED,
fz_stream *stm
)
Unread the single last byte successfully read from a stream. Do not call this without having successfully read a byte.
int
fz_is_eof (
fz_context *ctx,
fz_stream *stm
)
Query if the stream has reached EOF (during normal bytewise reading).
See fz_is_eof_bits for the equivalent function for bitwise reading.
unsigned int
fz_read_bits (
fz_context *ctx,
fz_stream *stm,
int n
)
Read the next n bits from a stream (assumed to be packed most significant bit first).
Returns -1 for EOF, or the required number of bits.
unsigned int
fz_read_rbits (
fz_context *ctx,
fz_stream *stm,
int n
)
Read the next n bits from a stream (assumed to be packed least significant bit first).
Returns (unsigned int)-1 for EOF, or the required number of bits.
void
fz_sync_bits (
fz_context *ctx FZ_UNUSED,
fz_stream *stm
)
Called after reading bits to tell the stream that we are about to return to reading bytewise. Resyncs the stream to whole byte boundaries.
int
fz_is_eof_bits (
fz_context *ctx,
fz_stream *stm
)
Query if the stream has reached EOF (during bitwise reading).
See fz_is_eof for the equivalent function for bytewise reading.
Implementation details: subject to change.
fz_stream *
fz_open_file_ptr_no_close (
fz_context *ctx,
FILE *file
)
Create a stream from a FILE * that will not be closed when the stream is dropped.