/* ************************************************************************** */ /* * For conditions of distribution and use, * */ /* * see copyright notice in libmng.h * */ /* ************************************************************************** */ /* * * */ /* * project : libmng * */ /* * file : libmng_chunk_io.h copyright (c) 2000-2007 G.Juyn * */ /* * version : 1.0.109 * */ /* * * */ /* * purpose : Chunk I/O routines (definition) * */ /* * * */ /* * author : G.Juyn * */ /* * * */ /* * comment : Definition of the chunk input/output routines * */ /* * * */ /* * changes : 0.5.1 - 05/04/2000 - G.Juyn * */ /* * - changed CRC initialization to use dynamic structure * */ /* * (wasn't thread-safe the old way !) * */ /* * 0.5.1 - 05/08/2000 - G.Juyn * */ /* * - changed write routines definition * */ /* * - changed strict-ANSI stuff * */ /* * * */ /* * 0.9.2 - 08/05/2000 - G.Juyn * */ /* * - changed file-prefixes * */ /* * * */ /* * 0.9.3 - 08/26/2000 - G.Juyn * */ /* * - added MAGN chunk * */ /* * 0.9.3 - 10/16/2000 - G.Juyn * */ /* * - added support for JDAA * */ /* * * */ /* * 1.0.5 - 08/19/2002 - G.Juyn * */ /* * - B597134 - libmng pollutes the linker namespace * */ /* * 1.0.5 - 09/14/2002 - G.Juyn * */ /* * - added event handling for dynamic MNG * */ /* * * */ /* * 1.0.6 - 07/07/2003 - G.R-P * */ /* * - added SKIP_CHUNK and NO_DELTA_PNG support * */ /* * 1.0.6 - 07/29/2003 - G.R-P * */ /* * - added conditionals around PAST chunk support * */ /* * * */ /* * 1.0.7 - 03/24/2004 - G.R-P * */ /* * - fixed SKIPCHUNK_itXT and SKIPCHUNK_ztXT typos * */ /* * * */ /* * 1.0.9 - 12/07/2004 - G.Juyn * */ /* * - added conditional MNG_OPTIMIZE_CHUNKREADER * */ /* * * */ /* * 1.0.10 - 04/08/2007 - G.Juyn * */ /* * - added support for mPNG proposal * */ /* * 1.0.10 - 04/12/2007 - G.Juyn * */ /* * - added support for ANG proposal * */ /* * * */ /* ************************************************************************** */ #if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI) #pragma option -A /* force ANSI-C */ #endif #ifndef _libmng_chunk_io_h_ #define _libmng_chunk_io_h_ /* ************************************************************************** */ mng_uint32 mng_crc (mng_datap pData, mng_uint8p buf, mng_int32 len); /* ************************************************************************** */ #ifdef MNG_INCLUDE_READ_PROCS /* ************************************************************************** */ mng_retcode mng_inflate_buffer (mng_datap pData, mng_uint8p pInbuf, mng_uint32 iInsize, mng_uint8p *pOutbuf, mng_uint32 *iOutsize, mng_uint32 *iRealsize); /* ************************************************************************** */ #define READ_CHUNK(n) mng_retcode n (mng_datap pData, \ mng_chunkp pHeader, \ mng_uint32 iRawlen, \ mng_uint8p pRawdata, \ mng_chunkp* ppChunk) #ifdef MNG_OPTIMIZE_CHUNKREADER READ_CHUNK (mng_read_general) ; #endif READ_CHUNK (mng_read_ihdr) ; READ_CHUNK (mng_read_plte) ; READ_CHUNK (mng_read_idat) ; READ_CHUNK (mng_read_iend) ; READ_CHUNK (mng_read_trns) ; READ_CHUNK (mng_read_gama) ; READ_CHUNK (mng_read_chrm) ; READ_CHUNK (mng_read_srgb) ; #ifndef MNG_SKIPCHUNK_iCCP READ_CHUNK (mng_read_iccp) ; #endif #ifndef MNG_SKIPCHUNK_tEXt READ_CHUNK (mng_read_text) ; #endif #ifndef MNG_SKIPCHUNK_zTXt READ_CHUNK (mng_read_ztxt) ; #endif #ifndef MNG_SKIPCHUNK_iTXt READ_CHUNK (mng_read_itxt) ; #endif #ifndef MNG_SKIPCHUNK_bKGD READ_CHUNK (mng_read_bkgd) ; #endif #ifndef MNG_SKIPCHUNK_pHYs READ_CHUNK (mng_read_phys) ; #endif #ifndef MNG_SKIPCHUNK_sBIT READ_CHUNK (mng_read_sbit) ; #endif #ifndef MNG_SKIPCHUNK_sPLT READ_CHUNK (mng_read_splt) ; #endif #ifndef MNG_SKIPCHUNK_hIST READ_CHUNK (mng_read_hist) ; #endif #ifndef MNG_SKIPCHUNK_tIME READ_CHUNK (mng_read_time) ; #endif READ_CHUNK (mng_read_mhdr) ; READ_CHUNK (mng_read_mend) ; READ_CHUNK (mng_read_loop) ; READ_CHUNK (mng_read_endl) ; READ_CHUNK (mng_read_defi) ; READ_CHUNK (mng_read_basi) ; READ_CHUNK (mng_read_clon) ; #ifndef MNG_SKIPCHUNK_PAST READ_CHUNK (mng_read_past) ; #endif READ_CHUNK (mng_read_disc) ; READ_CHUNK (mng_read_back) ; READ_CHUNK (mng_read_fram) ; READ_CHUNK (mng_read_move) ; READ_CHUNK (mng_read_clip) ; READ_CHUNK (mng_read_show) ; READ_CHUNK (mng_read_term) ; READ_CHUNK (mng_read_save) ; READ_CHUNK (mng_read_seek) ; #ifndef MNG_SKIPCHUNK_eXPI READ_CHUNK (mng_read_expi) ; #endif #ifndef MNG_SKIPCHUNK_fPRI READ_CHUNK (mng_read_fpri) ; #endif #ifndef MNG_SKIPCHUNK_pHYg READ_CHUNK (mng_read_phyg) ; #endif #ifdef MNG_INCLUDE_JNG READ_CHUNK (mng_read_jhdr) ; READ_CHUNK (mng_read_jdaa) ; READ_CHUNK (mng_read_jdat) ; READ_CHUNK (mng_read_jsep) ; #endif #ifndef MNG_NO_DELTA_PNG READ_CHUNK (mng_read_dhdr) ; READ_CHUNK (mng_read_prom) ; READ_CHUNK (mng_read_ipng) ; READ_CHUNK (mng_read_pplt) ; #ifdef MNG_INCLUDE_JNG READ_CHUNK (mng_read_ijng) ; #endif READ_CHUNK (mng_read_drop) ; READ_CHUNK (mng_read_dbyk) ; READ_CHUNK (mng_read_ordr) ; #endif READ_CHUNK (mng_read_magn) ; #ifndef MNG_SKIPCHUNK_nEED READ_CHUNK (mng_read_need) ; #endif #ifdef MNG_INCLUDE_MPNG_PROPOSAL READ_CHUNK (mng_read_mpng) ; #endif #ifndef MNG_SKIPCHUNK_evNT READ_CHUNK (mng_read_evnt) ; #endif READ_CHUNK (mng_read_unknown) ; /* ************************************************************************** */ #else /* MNG_INCLUDE_READ_PROCS */ #define mng_read_ihdr 0 #define mng_read_plte 0 #define mng_read_idat 0 #define mng_read_iend 0 #define mng_read_trns 0 #define mng_read_gama 0 #define mng_read_chrm 0 #define mng_read_srgb 0 #define mng_read_iccp 0 #define mng_read_text 0 #define mng_read_ztxt 0 #define mng_read_itxt 0 #define mng_read_bkgd 0 #define mng_read_phys 0 #define mng_read_sbit 0 #define mng_read_splt 0 #define mng_read_hist 0 #define mng_read_time 0 #define mng_read_mhdr 0 #define mng_read_mend 0 #define mng_read_loop 0 #define mng_read_endl 0 #define mng_read_defi 0 #define mng_read_basi 0 #define mng_read_clon 0 #ifndef MNG_SKIPCHUNK_PAST #define mng_read_past 0 #endif #define mng_read_disc 0 #define mng_read_back 0 #define mng_read_fram 0 #define mng_read_move 0 #define mng_read_clip 0 #define mng_read_show 0 #define mng_read_term 0 #define mng_read_save 0 #define mng_read_seek 0 #define mng_read_expi 0 #define mng_read_fpri 0 #define mng_read_phyg 0 #ifdef MNG_INCLUDE_JNG #define mng_read_jhdr 0 #define mng_read_jdaa 0 #define mng_read_jdat 0 #define mng_read_jsep 0 #endif #ifndef MNG_NO_DELTA_PNG #define mng_read_dhdr 0 #define mng_read_prom 0 #define mng_read_ipng 0 #define mng_read_pplt 0 #ifdef MNG_INCLUDE_JNG #define mng_read_ijng 0 #endif #define mng_read_drop 0 #define mng_read_dbyk 0 #define mng_read_ordr 0 #endif #define mng_read_magn 0 #define mng_read_need 0 #ifdef MNG_INCLUDE_MPNG_PROPOSAL #define mng_read_mpng 0 #endif #define mng_read_evnt 0 #define mng_read_unknown 0 #endif /* MNG_INCLUDE_READ_PROCS */ /* ************************************************************************** */ #ifdef MNG_INCLUDE_WRITE_PROCS #define WRITE_CHUNK(n) mng_retcode n (mng_datap pData, \ mng_chunkp pChunk) WRITE_CHUNK (mng_write_ihdr) ; WRITE_CHUNK (mng_write_plte) ; WRITE_CHUNK (mng_write_idat) ; WRITE_CHUNK (mng_write_iend) ; WRITE_CHUNK (mng_write_trns) ; WRITE_CHUNK (mng_write_gama) ; WRITE_CHUNK (mng_write_chrm) ; WRITE_CHUNK (mng_write_srgb) ; WRITE_CHUNK (mng_write_iccp) ; WRITE_CHUNK (mng_write_text) ; WRITE_CHUNK (mng_write_ztxt) ; WRITE_CHUNK (mng_write_itxt) ; WRITE_CHUNK (mng_write_bkgd) ; WRITE_CHUNK (mng_write_phys) ; WRITE_CHUNK (mng_write_sbit) ; WRITE_CHUNK (mng_write_splt) ; WRITE_CHUNK (mng_write_hist) ; WRITE_CHUNK (mng_write_time) ; WRITE_CHUNK (mng_write_mhdr) ; WRITE_CHUNK (mng_write_mend) ; WRITE_CHUNK (mng_write_loop) ; WRITE_CHUNK (mng_write_endl) ; WRITE_CHUNK (mng_write_defi) ; WRITE_CHUNK (mng_write_basi) ; WRITE_CHUNK (mng_write_clon) ; #ifndef MNG_SKIPCHUNK_PAST WRITE_CHUNK (mng_write_past) ; #endif WRITE_CHUNK (mng_write_disc) ; WRITE_CHUNK (mng_write_back) ; WRITE_CHUNK (mng_write_fram) ; WRITE_CHUNK (mng_write_move) ; WRITE_CHUNK (mng_write_clip) ; WRITE_CHUNK (mng_write_show) ; WRITE_CHUNK (mng_write_term) ; WRITE_CHUNK (mng_write_save) ; WRITE_CHUNK (mng_write_seek) ; WRITE_CHUNK (mng_write_expi) ; WRITE_CHUNK (mng_write_fpri) ; WRITE_CHUNK (mng_write_phyg) ; #ifdef MNG_INCLUDE_JNG WRITE_CHUNK (mng_write_jhdr) ; WRITE_CHUNK (mng_write_jdaa) ; WRITE_CHUNK (mng_write_jdat) ; WRITE_CHUNK (mng_write_jsep) ; #endif #ifndef MNG_NO_DELTA_PNG WRITE_CHUNK (mng_write_dhdr) ; WRITE_CHUNK (mng_write_prom) ; WRITE_CHUNK (mng_write_ipng) ; WRITE_CHUNK (mng_write_pplt) ; #ifdef MNG_INCLUDE_JNG WRITE_CHUNK (mng_write_ijng) ; #endif WRITE_CHUNK (mng_write_drop) ; WRITE_CHUNK (mng_write_dbyk) ; WRITE_CHUNK (mng_write_ordr) ; #endif WRITE_CHUNK (mng_write_magn) ; WRITE_CHUNK (mng_write_need) ; #ifdef MNG_INCLUDE_MPNG_PROPOSAL WRITE_CHUNK (mng_write_mpng) ; #endif #ifdef MNG_INCLUDE_ANG_PROPOSAL WRITE_CHUNK (mng_write_ahdr) ; WRITE_CHUNK (mng_write_adat) ; #endif WRITE_CHUNK (mng_write_evnt) ; WRITE_CHUNK (mng_write_unknown) ; /* ************************************************************************** */ #else /* MNG_INCLUDE_WRITE_PROCS */ #define mng_write_ihdr 0 #define mng_write_plte 0 #define mng_write_idat 0 #define mng_write_iend 0 #define mng_write_trns 0 #define mng_write_gama 0 #define mng_write_chrm 0 #define mng_write_srgb 0 #define mng_write_iccp 0 #define mng_write_text 0 #define mng_write_ztxt 0 #define mng_write_itxt 0 #define mng_write_bkgd 0 #define mng_write_phys 0 #define mng_write_sbit 0 #define mng_write_splt 0 #define mng_write_hist 0 #define mng_write_time 0 #define mng_write_mhdr 0 #define mng_write_mend 0 #define mng_write_loop 0 #define mng_write_endl 0 #define mng_write_defi 0 #define mng_write_basi 0 #define mng_write_clon 0 #ifndef MNG_SKIPCHUNK_PAST #define mng_write_past 0 #endif #define mng_write_disc 0 #define mng_write_back 0 #define mng_write_fram 0 #define mng_write_move 0 #define mng_write_clip 0 #define mng_write_show 0 #define mng_write_term 0 #define mng_write_save 0 #define mng_write_seek 0 #define mng_write_expi 0 #define mng_write_fpri 0 #define mng_write_phyg 0 #ifdef MNG_INCLUDE_JNG #define mng_write_jhdr 0 #define mng_write_jdaa 0 #define mng_write_jdat 0 #define mng_write_jsep 0 #endif #ifndef MNG_NO_DELTA_PNG #define mng_write_dhdr 0 #define mng_write_prom 0 #define mng_write_ipng 0 #define mng_write_pplt 0 #ifdef MNG_INCLUDE_JNG #define mng_write_ijng 0 #endif #define mng_write_drop 0 #define mng_write_dbyk 0 #define mng_write_ordr 0 #endif #define mng_write_magn 0 #define mng_write_need 0 #ifdef MNG_INCLUDE_MPNG_PROPOSAL #define mng_write_mpng 0 #endif #ifdef MNG_INCLUDE_ANG_PROPOSAL #define mng_write_adat 0 #define mng_write_ahdr 0 #endif #define mng_write_evnt 0 #define mng_write_unknown 0 #endif /* MNG_INCLUDE_WRITE_PROCS */ /* ************************************************************************** */ #endif /* _libmng_chunk_io_h_ */ /* ************************************************************************** */ /* * end of file * */ /* ************************************************************************** */