diff options
Diffstat (limited to 'Build/source/libs/gd/libgd-2.1.1/src/gd_io.h')
-rw-r--r-- | Build/source/libs/gd/libgd-2.1.1/src/gd_io.h | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/Build/source/libs/gd/libgd-2.1.1/src/gd_io.h b/Build/source/libs/gd/libgd-2.1.1/src/gd_io.h new file mode 100644 index 00000000000..1039d597dc8 --- /dev/null +++ b/Build/source/libs/gd/libgd-2.1.1/src/gd_io.h @@ -0,0 +1,100 @@ +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef GD_IO_H +#define GD_IO_H 1 + +#include <stdio.h> + +#ifdef VMS +# define Putchar gdPutchar +#endif + +/* + Group: Types + + typedef: gdIOCtx + + gdIOCtx structures hold function pointers for doing image IO. + + Most of the gd functions that read and write files, such as + <gdImagePng> also have variants that accept a <gdIOCtx> structure; + see <gdImagePngCtx> and <gdImageCreateFromJpegCtx>. + + Those who wish to provide their own custom routines to read and + write images can populate a gdIOCtx structure with functions of + their own devising to to read and write data. For image reading, the + only mandatory functions are getC and getBuf, which must return the + number of characters actually read, or a negative value on error or + EOF. These functions must read the number of characters requested + unless at the end of the file. + + For image writing, the only mandatory functions are putC and putBuf, + which return the number of characters written; these functions must + write the number of characters requested except in the event of an + error. The seek and tell functions are only required in conjunction + with the gd2 file format, which supports quick loading of partial + images. The gd_free function will not be invoked when calling the + standard Ctx functions; it is an implementation convenience when + adding new data types to gd. For examples, see gd_png.c, gd_gd2.c, + gd_jpeg.c, etc., all of which rely on gdIOCtx to implement the + standard image read and write functions. + + > typedef struct gdIOCtx + > { + > int (*getC) (struct gdIOCtx *); + > int (*getBuf) (struct gdIOCtx *, void *, int wanted); + > + > void (*putC) (struct gdIOCtx *, int); + > int (*putBuf) (struct gdIOCtx *, const void *, int wanted); + > + > // seek must return 1 on SUCCESS, 0 on FAILURE. Unlike fseek! + > int (*seek) (struct gdIOCtx *, const int); + > long (*tell) (struct gdIOCtx *); + > + > void (*gd_free) (struct gdIOCtx *); + > } gdIOCtx; + + + + + */ +typedef struct gdIOCtx { + int (*getC)(struct gdIOCtx *); + int (*getBuf)(struct gdIOCtx *, void *, int); + void (*putC)(struct gdIOCtx *, int); + int (*putBuf)(struct gdIOCtx *, const void *, int); + /* seek must return 1 on SUCCESS, 0 on FAILURE. Unlike fseek! */ + int (*seek)(struct gdIOCtx *, const int); + long (*tell)(struct gdIOCtx *); + void (*gd_free)(struct gdIOCtx *); + void *data; +} gdIOCtx; + +typedef struct gdIOCtx *gdIOCtxPtr; + +void Putword(int w, gdIOCtx *ctx); +void Putchar(int c, gdIOCtx *ctx); + +void gdPutC(const unsigned char c, gdIOCtx *ctx); +int gdPutBuf(const void *, int, gdIOCtx *); +void gdPutWord(int w, gdIOCtx *ctx); +void gdPutInt(int w, gdIOCtx *ctx); + +int gdGetC(gdIOCtx *ctx); +int gdGetBuf(void *, int, gdIOCtx *); +int gdGetByte(int *result, gdIOCtx *ctx); +int gdGetWord(int *result, gdIOCtx *ctx); +int gdGetWordLSB(signed short int *result, gdIOCtx *ctx); +int gdGetInt(int *result, gdIOCtx *ctx); +int gdGetIntLSB(signed int *result, gdIOCtx *ctx); + +int gdSeek(gdIOCtx *ctx, const int offset); +long gdTell(gdIOCtx *ctx); + +#endif + +#ifdef __cplusplus +} +#endif |