[485424b] | 1 | #ifndef STBI_INCLUDE_STB_IMAGE_H
|
---|
| 2 | #define STBI_INCLUDE_STB_IMAGE_H
|
---|
| 3 |
|
---|
| 4 | #ifndef STBI_NO_STDIO
|
---|
| 5 | #include <stdio.h>
|
---|
| 6 | #endif
|
---|
| 7 |
|
---|
| 8 | #define STBI_VERSION 1
|
---|
| 9 |
|
---|
| 10 | enum
|
---|
| 11 | {
|
---|
| 12 | STBI_default = 0, // only used for desired_channels
|
---|
| 13 |
|
---|
| 14 | STBI_grey = 1,
|
---|
| 15 | STBI_grey_alpha = 2,
|
---|
| 16 | STBI_rgb = 3,
|
---|
| 17 | STBI_rgb_alpha = 4
|
---|
| 18 | };
|
---|
| 19 |
|
---|
| 20 | typedef unsigned char stbi_uc;
|
---|
| 21 | typedef unsigned short stbi_us;
|
---|
| 22 |
|
---|
| 23 | #ifdef __cplusplus
|
---|
| 24 | extern "C" {
|
---|
| 25 | #endif
|
---|
| 26 |
|
---|
| 27 | #ifdef STB_IMAGE_STATIC
|
---|
| 28 | #define STBIDEF static
|
---|
| 29 | #else
|
---|
| 30 | #define STBIDEF extern
|
---|
| 31 | #endif
|
---|
| 32 |
|
---|
| 33 | //////////////////////////////////////////////////////////////////////////////
|
---|
| 34 | //
|
---|
| 35 | // PRIMARY API - works on images of any type
|
---|
| 36 | //
|
---|
| 37 |
|
---|
| 38 | //
|
---|
| 39 | // load image by filename, open file, or memory buffer
|
---|
| 40 | //
|
---|
| 41 |
|
---|
| 42 | typedef struct
|
---|
| 43 | {
|
---|
| 44 | int (*read) (void *user,char *data,int size); // fill 'data' with 'size' bytes. return number of bytes actually read
|
---|
| 45 | void (*skip) (void *user,int n); // skip the next 'n' bytes, or 'unget' the last -n bytes if negative
|
---|
| 46 | int (*eof) (void *user); // returns nonzero if we are at end of file/data
|
---|
| 47 | } stbi_io_callbacks;
|
---|
| 48 |
|
---|
| 49 | ////////////////////////////////////
|
---|
| 50 | //
|
---|
| 51 | // 8-bits-per-channel interface
|
---|
| 52 | //
|
---|
| 53 |
|
---|
| 54 | STBIDEF stbi_uc *stbi_load_from_memory (stbi_uc const *buffer, int len , int *x, int *y, int *channels_in_file, int desired_channels);
|
---|
| 55 | STBIDEF stbi_uc *stbi_load_from_callbacks(stbi_io_callbacks const *clbk , void *user, int *x, int *y, int *channels_in_file, int desired_channels);
|
---|
| 56 |
|
---|
| 57 | #ifndef STBI_NO_STDIO
|
---|
| 58 | STBIDEF stbi_uc *stbi_load (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels);
|
---|
| 59 | STBIDEF stbi_uc *stbi_load_from_file (FILE *f, int *x, int *y, int *channels_in_file, int desired_channels);
|
---|
| 60 | // for stbi_load_from_file, file pointer is left pointing immediately after image
|
---|
| 61 | #endif
|
---|
| 62 |
|
---|
| 63 | ////////////////////////////////////
|
---|
| 64 | //
|
---|
| 65 | // 16-bits-per-channel interface
|
---|
| 66 | //
|
---|
| 67 |
|
---|
| 68 | STBIDEF stbi_us *stbi_load_16_from_memory (stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels);
|
---|
| 69 | STBIDEF stbi_us *stbi_load_16_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels);
|
---|
| 70 |
|
---|
| 71 | #ifndef STBI_NO_STDIO
|
---|
| 72 | STBIDEF stbi_us *stbi_load_16 (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels);
|
---|
| 73 | STBIDEF stbi_us *stbi_load_from_file_16(FILE *f, int *x, int *y, int *channels_in_file, int desired_channels);
|
---|
| 74 | #endif
|
---|
| 75 |
|
---|
| 76 | ////////////////////////////////////
|
---|
| 77 | //
|
---|
| 78 | // float-per-channel interface
|
---|
| 79 | //
|
---|
| 80 | #ifndef STBI_NO_LINEAR
|
---|
| 81 | STBIDEF float *stbi_loadf_from_memory (stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels);
|
---|
| 82 | STBIDEF float *stbi_loadf_from_callbacks (stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels);
|
---|
| 83 |
|
---|
| 84 | #ifndef STBI_NO_STDIO
|
---|
| 85 | STBIDEF float *stbi_loadf (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels);
|
---|
| 86 | STBIDEF float *stbi_loadf_from_file (FILE *f, int *x, int *y, int *channels_in_file, int desired_channels);
|
---|
| 87 | #endif
|
---|
| 88 | #endif
|
---|
| 89 |
|
---|
| 90 | #ifndef STBI_NO_HDR
|
---|
| 91 | STBIDEF void stbi_hdr_to_ldr_gamma(float gamma);
|
---|
| 92 | STBIDEF void stbi_hdr_to_ldr_scale(float scale);
|
---|
| 93 | #endif // STBI_NO_HDR
|
---|
| 94 |
|
---|
| 95 | #ifndef STBI_NO_LINEAR
|
---|
| 96 | STBIDEF void stbi_ldr_to_hdr_gamma(float gamma);
|
---|
| 97 | STBIDEF void stbi_ldr_to_hdr_scale(float scale);
|
---|
| 98 | #endif // STBI_NO_LINEAR
|
---|
| 99 |
|
---|
| 100 | // stbi_is_hdr is always defined, but always returns false if STBI_NO_HDR
|
---|
| 101 | STBIDEF int stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clbk, void *user);
|
---|
| 102 | STBIDEF int stbi_is_hdr_from_memory(stbi_uc const *buffer, int len);
|
---|
| 103 | #ifndef STBI_NO_STDIO
|
---|
| 104 | STBIDEF int stbi_is_hdr (char const *filename);
|
---|
| 105 | STBIDEF int stbi_is_hdr_from_file(FILE *f);
|
---|
| 106 | #endif // STBI_NO_STDIO
|
---|
| 107 |
|
---|
| 108 |
|
---|
| 109 | // get a VERY brief reason for failure
|
---|
| 110 | // NOT THREADSAFE
|
---|
| 111 | STBIDEF const char *stbi_failure_reason (void);
|
---|
| 112 |
|
---|
| 113 | // free the loaded image -- this is just free()
|
---|
| 114 | STBIDEF void stbi_image_free (void *retval_from_stbi_load);
|
---|
| 115 |
|
---|
| 116 | // get image dimensions & components without fully decoding
|
---|
| 117 | STBIDEF int stbi_info_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp);
|
---|
| 118 | STBIDEF int stbi_info_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp);
|
---|
| 119 |
|
---|
| 120 | #ifndef STBI_NO_STDIO
|
---|
| 121 | STBIDEF int stbi_info (char const *filename, int *x, int *y, int *comp);
|
---|
| 122 | STBIDEF int stbi_info_from_file (FILE *f, int *x, int *y, int *comp);
|
---|
| 123 |
|
---|
| 124 | #endif
|
---|
| 125 |
|
---|
| 126 |
|
---|
| 127 |
|
---|
| 128 | // for image formats that explicitly notate that they have premultiplied alpha,
|
---|
| 129 | // we just return the colors as stored in the file. set this flag to force
|
---|
| 130 | // unpremultiplication. results are undefined if the unpremultiply overflow.
|
---|
| 131 | STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply);
|
---|
| 132 |
|
---|
| 133 | // indicate whether we should process iphone images back to canonical format,
|
---|
| 134 | // or just pass them through "as-is"
|
---|
| 135 | STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert);
|
---|
| 136 |
|
---|
| 137 | // flip the image vertically, so the first pixel in the output array is the bottom left
|
---|
| 138 | STBIDEF void stbi_set_flip_vertically_on_load(int flag_true_if_should_flip);
|
---|
| 139 |
|
---|
| 140 | // ZLIB client - used by PNG, available for other purposes
|
---|
| 141 |
|
---|
| 142 | STBIDEF char *stbi_zlib_decode_malloc_guesssize(const char *buffer, int len, int initial_size, int *outlen);
|
---|
| 143 | STBIDEF char *stbi_zlib_decode_malloc_guesssize_headerflag(const char *buffer, int len, int initial_size, int *outlen, int parse_header);
|
---|
| 144 | STBIDEF char *stbi_zlib_decode_malloc(const char *buffer, int len, int *outlen);
|
---|
| 145 | STBIDEF int stbi_zlib_decode_buffer(char *obuffer, int olen, const char *ibuffer, int ilen);
|
---|
| 146 |
|
---|
| 147 | STBIDEF char *stbi_zlib_decode_noheader_malloc(const char *buffer, int len, int *outlen);
|
---|
| 148 | STBIDEF int stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, const char *ibuffer, int ilen);
|
---|
| 149 |
|
---|
| 150 | #ifdef __cplusplus
|
---|
| 151 | }
|
---|
| 152 | #endif
|
---|
| 153 |
|
---|
| 154 | #endif
|
---|