Tk
view release on metacpan or search on metacpan
pTk/mTk/additions/imgPNG.c view on Meta::CPAN
int destX, int destY, int width, int height, int srcX, int srcY));
static int FileReadPNG _ANSI_ARGS_((Tcl_Interp *interp, FILE *f,
char *fileName, char *formatString, Tk_PhotoHandle imageHandle,
int destX, int destY, int width, int height, int srcX, int srcY));
static int ObjReadPNG _ANSI_ARGS_((Tcl_Interp *interp, struct Tcl_Obj *dataObj,
char *formatString, Tk_PhotoHandle imageHandle,
int destX, int destY, int width, int height, int srcX, int srcY));
static int FileWritePNG _ANSI_ARGS_((Tcl_Interp *interp, char *filename,
char *formatString, Tk_PhotoImageBlock *blockPtr));
static int StringWritePNG _ANSI_ARGS_((Tcl_Interp *interp,
Tcl_DString *dataPtr, char *formatString,
Tk_PhotoImageBlock *blockPtr));
Tk_PhotoImageFormat imgFmtPNG = {
"PNG", /* name */
(Tk_ImageFileMatchProc *) ChnMatchPNG, /* fileMatchProc */
(Tk_ImageStringMatchProc *) ObjMatchPNG, /* stringMatchProc */
(Tk_ImageFileReadProc *) ChnReadPNG, /* fileReadProc */
(Tk_ImageStringReadProc *) ObjReadPNG, /* stringReadProc */
FileWritePNG, /* fileWriteProc */
(Tk_ImageStringWriteProc *) StringWritePNG, /* stringWriteProc */
};
Tk_PhotoImageFormat imgOldFmtPNG = {
"PNG", /* name */
(Tk_ImageFileMatchProc *) FileMatchPNG, /* fileMatchProc */
(Tk_ImageStringMatchProc *) ObjMatchPNG,/* stringMatchProc */
(Tk_ImageFileReadProc *) FileReadPNG, /* fileReadProc */
(Tk_ImageStringReadProc *) ObjReadPNG, /* stringReadProc */
FileWritePNG, /* fileWriteProc */
(Tk_ImageStringWriteProc *) StringWritePNG, /* stringWriteProc */
};
/*
* Prototypes for local procedures defined in this file:
*/
static int CommonMatchPNG _ANSI_ARGS_((MFile *handle, int *widthPtr,
int *heightPtr));
static int CommonReadPNG _ANSI_ARGS_((png_structp png_ptr, char *formatString,
Tk_PhotoHandle imageHandle, int destX, int destY, int width,
int height, int srcX, int srcY));
static int CommonWritePNG _ANSI_ARGS_((Tcl_Interp *interp, png_structp png_ptr,
png_infop info_ptr, char *formatString,
Tk_PhotoImageBlock *blockPtr));
static void tk_png_error _ANSI_ARGS_((png_structp, png_const_charp));
static void tk_png_warning _ANSI_ARGS_((png_structp, png_const_charp));
static int load_png_library _ANSI_ARGS_((Tcl_Interp *interp));
/*
* these are for the BASE64 image reader code only
*/
static void tk_png_memread _ANSI_ARGS_((png_structp, png_bytep,
png_size_t));
static void tk_png_memwrite _ANSI_ARGS_((png_structp, png_bytep,
png_size_t));
static void tk_png_chanread _ANSI_ARGS_((png_structp, png_bytep,
png_size_t));
static struct PngFunctions {
VOID *handle;
png_structp (* create_read_struct) _ANSI_ARGS_((png_const_charp,
png_voidp, png_error_ptr, png_error_ptr));
png_infop (* create_info_struct) _ANSI_ARGS_((png_structp));
png_structp (* create_write_struct) _ANSI_ARGS_((png_const_charp,
png_voidp, png_error_ptr, png_error_ptr));
void (* destroy_read_struct) _ANSI_ARGS_((png_structpp,
png_infopp, png_infopp));
void (* destroy_write_struct) _ANSI_ARGS_((png_structpp, png_infopp));
void (* error) _ANSI_ARGS_((png_structp, png_charp));
png_byte (* get_channels) _ANSI_ARGS_((png_structp, png_infop));
png_voidp (* get_error_ptr) _ANSI_ARGS_((png_structp));
png_voidp (* get_progressive_ptr) _ANSI_ARGS_((png_structp));
png_uint_32 (* get_rowbytes) _ANSI_ARGS_((png_structp, png_infop));
png_uint_32 (* get_IHDR) _ANSI_ARGS_((png_structp, png_infop,
png_uint_32*, png_uint_32*, int*, int*, int*, int*, int*));
void (* init_io) _ANSI_ARGS_((png_structp, FILE *));
void (* read_image) _ANSI_ARGS_((png_structp, png_bytepp));
void (* read_info) _ANSI_ARGS_((png_structp, png_infop));
void (* read_update_info) _ANSI_ARGS_((png_structp, png_infop));
int (* set_interlace_handling) _ANSI_ARGS_ ((png_structp));
void (* set_read_fn) _ANSI_ARGS_((png_structp, png_voidp, png_rw_ptr));
void (* set_text) _ANSI_ARGS_((png_structp, png_infop, png_textp, int));
void (* set_write_fn) _ANSI_ARGS_((png_structp, png_voidp,
png_rw_ptr, png_voidp));
void (* set_IHDR) _ANSI_ARGS_((png_structp, png_infop, png_uint_32,
png_uint_32, int, int, int, int, int));
void (* write_end) _ANSI_ARGS_((png_structp, png_infop));
void (* write_info) _ANSI_ARGS_((png_structp, png_infop));
void (* write_row) _ANSI_ARGS_((png_structp, png_bytep));
void (* set_expand) _ANSI_ARGS_((png_structp));
void (* set_filler) _ANSI_ARGS_((png_structp, png_uint_32, int));
void (* set_strip_16) _ANSI_ARGS_((png_structp));
} png = {0};
static char *symbols[] = {
"png_create_read_struct",
"png_create_info_struct",
"png_create_write_struct",
"png_destroy_read_struct",
"png_destroy_write_struct",
"png_error",
"png_get_channels",
"png_get_error_ptr",
"png_get_progressive_ptr",
"png_get_rowbytes",
"png_get_IHDR",
"png_init_io",
"png_read_image",
"png_read_info",
"png_read_update_info",
"png_set_interlace_handling",
"png_set_read_fn",
"png_set_text",
"png_set_write_fn",
"png_set_IHDR",
"png_write_end",
"png_write_info",
"png_write_row",
/* The following symbols are not crucial. All of them
( run in 0.960 second using v1.01-cache-2.11-cpan-364913b4093 )