36static void* (*qpng_create_read_struct) (
const char*,
void*,
void(*)(
void *png,
const char *
message),
void(*)(
void *png,
const char *
message));
37static void* (*qpng_create_write_struct) (
const char*,
void*,
void(*)(
void *png,
const char *
message),
void(*)(
void *png,
const char *
message));
38static void* (*qpng_create_info_struct) (
void*);
62static unsigned int (*
qpng_get_IHDR) (
void*,
void*,
unsigned long*,
unsigned long*,
int *,
int *,
int *,
int *,
int *);
71#define qpng_jmpbuf_14(png_ptr) (*qpng_set_longjmp_fn((png_ptr), longjmp, sizeof (jmp_buf)))
74#define qpng_jmpbuf_12(png_ptr) (*((jmp_buf *) png_ptr))
77#define qpng_jmpbuf(png_ptr) \
78 (qpng_set_longjmp_fn ? qpng_jmpbuf_14(png_ptr) : qpng_jmpbuf_12(png_ptr))
145 const char* dllnames [] =
208#define PNG_LIBPNG_VER_STRING_12 "1.2.4"
209#define PNG_LIBPNG_VER_STRING_14 "1.4.0"
210#define PNG_LIBPNG_VER_STRING_15 "1.5.0"
211#define PNG_LIBPNG_VER_STRING_16 "1.6.0"
213#define PNG_COLOR_MASK_PALETTE 1
214#define PNG_COLOR_MASK_COLOR 2
215#define PNG_COLOR_MASK_ALPHA 4
217#define PNG_COLOR_TYPE_GRAY 0
218#define PNG_COLOR_TYPE_PALETTE (PNG_COLOR_MASK_COLOR | PNG_COLOR_MASK_PALETTE)
219#define PNG_COLOR_TYPE_RGB (PNG_COLOR_MASK_COLOR)
220#define PNG_COLOR_TYPE_RGB_ALPHA (PNG_COLOR_MASK_COLOR | PNG_COLOR_MASK_ALPHA)
221#define PNG_COLOR_TYPE_GRAY_ALPHA (PNG_COLOR_MASK_ALPHA)
223#define PNG_COLOR_TYPE_RGBA PNG_COLOR_TYPE_RGB_ALPHA
224#define PNG_COLOR_TYPE_GA PNG_COLOR_TYPE_GRAY_ALPHA
226#define PNG_INFO_tRNS 0x0010
299 unsigned char *imagedata =
NULL;
300 unsigned char ioBuffer[8192];
348 my_png.tmpBuflength = filesize;
367#if LONG_MAX > 4000000000
368 if (
my_png.Width > LONG_MAX ||
my_png.Height > LONG_MAX)
406 Con_Printf(
"PNG_LoadImage : not enough memory\n");
416 Con_Printf(
"PNG_LoadImage : not enough memory\n");
429 Con_Printf (
"PNG_LoadImage : bad color depth\n");
438 imagedata[
y+0] = imagedata[
y+2];
453#define Z_BEST_SPEED 1
454#define Z_BEST_COMPRESSION 9
455#define PNG_INTERLACE_NONE 0
456#define PNG_INTERLACE_ADAM7 1
457#define PNG_FILTER_TYPE_BASE 0
458#define PNG_FILTER_TYPE_DEFAULT PNG_FILTER_TYPE_BASE
459#define PNG_COMPRESSION_TYPE_BASE 0
460#define PNG_COMPRESSION_TYPE_DEFAULT PNG_COMPRESSION_TYPE_BASE
461#define PNG_NO_FILTERS 0x00
462#define PNG_FILTER_NONE 0x08
463#define PNG_FILTER_SUB 0x10
464#define PNG_FILTER_UP 0x20
465#define PNG_FILTER_AVG 0x40
466#define PNG_FILTER_PAETH 0x80
467#define PNG_ALL_FILTERS (PNG_FILTER_NONE | PNG_FILTER_SUB | PNG_FILTER_UP | \
468 PNG_FILTER_AVG | PNG_FILTER_PAETH)
479 unsigned int offset, linesize;
480 qfile_t* file =
NULL;
482 unsigned char ioBuffer[8192];
488 Con_Print(
"You need the libpng library to save PNG images\n");
515 if (setjmp((_JBTYPE *)png))
516#elif defined(MACOSX) || defined(WIN32)
517 if (setjmp((
int *)png))
518#elif defined(__ANDROID__)
519 if (setjmp((
long *)png))
521 if (setjmp((
struct __jmp_buf_tag *)png))
545 linesize =
width * (has_alpha ? 4 : 3);
547 for(
i = 0;
i < passes; ++
i)
548 for(j = 0; j <
height; ++j)
void Con_Print(const char *msg)
Prints to all appropriate console targets, and adds timestamps.
void Con_Printf(const char *fmt,...)
Prints to all appropriate console targets.
fs_offset_t FS_Write(qfile_t *file, const void *data, size_t datasize)
qfile_t * FS_OpenRealFile(const char *filepath, const char *mode, qbool quiet)
static int(ZEXPORT *qz_inflate)(z_stream *strm
int FS_Close(qfile_t *file)
GLenum GLsizei GLsizei height
GLenum GLuint GLenum GLsizei length
GLint GLenum GLint GLint y
GLsizeiptr const GLvoid * data
GLuint GLuint GLintptr offset
static unsigned int(* qpng_get_IHDR)(void *, void *, unsigned long *, unsigned long *, int *, int *, int *, int *, int *)
#define qpng_jmpbuf(png_ptr)
static int(* qpng_sig_cmp)(const unsigned char *, size_t, size_t)
static void(* qpng_set_gray_to_rgb)(void *)
static void(* qpng_set_palette_to_rgb)(void *)
static void PNG_fWriteData(void *png, unsigned char *data, size_t length)
static void(* qpng_read_info)(void *, void *)
static jmp_buf *(* qpng_set_longjmp_fn)(void *, qpng_longjmp_ptr, size_t)
static unsigned int(* qpng_get_valid)(void *, void *, unsigned int)
static void *(* qpng_create_write_struct)(const char *, void *, void(*)(void *png, const char *message), void(*)(void *png, const char *message))
#define PNG_COLOR_TYPE_RGB
#define PNG_LIBPNG_VER_STRING_15
static void(* qpng_set_read_fn)(void *, void *, void(*)(void *png, unsigned char *data, size_t length))
#define PNG_LIBPNG_VER_STRING_16
static dllfunction_t pngfuncs[]
#define PNG_COMPRESSION_TYPE_DEFAULT
static void(* qpng_set_write_fn)(void *, void *, void(*)(void *png, unsigned char *data, size_t length), void(*)(void *png))
void PNG_CloseLibrary(void)
#define PNG_LIBPNG_VER_STRING_12
static void(* qpng_write_info)(void *, void *)
static unsigned int(* qpng_access_version_number)(void)
static void(* qpng_set_compression_level)(void *, int)
static void(* qpng_write_end)(void *, void *)
#define PNG_COLOR_TYPE_RGB_ALPHA
#define PNG_COLOR_TYPE_GRAY_ALPHA
static void(* qpng_set_sig_bytes)(void *, int)
static void(* qpng_write_row)(void *, unsigned char *)
unsigned char * PNG_LoadImage_BGRA(const unsigned char *raw, int filesize, int *miplevel)
static void(* qpng_destroy_read_struct)(void **, void **, void **)
static unsigned int(* qpng_get_rowbytes)(void *, void *)
static void(* qpng_read_end)(void *, void *)
static void PNG_error_fn(void *png, const char *message)
const unsigned char * tmpBuf
static void PNG_warning_fn(void *png, const char *message)
static void(* qpng_set_filler)(void *, unsigned int, int)
qbool PNG_OpenLibrary(void)
#define PNG_COLOR_MASK_ALPHA
void(* qpng_longjmp_ptr)(jmp_buf, int)
#define PNG_INTERLACE_ADAM7
qbool PNG_SaveImage_preflipped(const char *filename, int width, int height, qbool has_alpha, unsigned char *data)
static void(* qpng_set_expand)(void *)
#define PNG_COLOR_TYPE_GRAY
static void(* qpng_set_packing)(void *)
static void(* qpng_set_tRNS_to_alpha)(void *)
static void *(* qpng_create_info_struct)(void *)
static void(* qpng_read_image)(void *, unsigned char **)
static int(* qpng_set_interlace_handling)(void *)
static void(* qpng_destroy_write_struct)(void **, void **)
static unsigned char(* qpng_get_channels)(void *, void *)
static dllfunction_t png14funcs[]
static void PNG_fReadData(void *png, unsigned char *data, size_t length)
static void(* qpng_set_bgr)(void *)
#define PNG_COLOR_TYPE_PALETTE
static void PNG_fFlushData(void *png)
#define PNG_FILTER_TYPE_DEFAULT
static unsigned char(* qpng_get_bit_depth)(void *, void *)
static void(* qpng_read_update_info)(void *, void *)
unsigned char ** FRowPtrs
#define PNG_LIBPNG_VER_STRING_14
static void(* qpng_set_filter)(void *, int, int)
static void *(* qpng_create_read_struct)(const char *, void *, void(*)(void *png, const char *message), void(*)(void *png, const char *message))
static void(* qpng_set_IHDR)(void *, void *, unsigned long, unsigned long, int, int, int, int, int)
qbool Sys_LoadDependency(const char **dllnames, dllhandle_t *handle, const dllfunction_t *fcts)
void Sys_FreeLibrary(dllhandle_t *handle)
#define Mem_Alloc(pool, size)