src/3rdparty/libmng/libmng_chunk_io.h
changeset 0 1918ee327afb
equal deleted inserted replaced
-1:000000000000 0:1918ee327afb
       
     1 /* ************************************************************************** */
       
     2 /* *             For conditions of distribution and use,                    * */
       
     3 /* *                see copyright notice in libmng.h                        * */
       
     4 /* ************************************************************************** */
       
     5 /* *                                                                        * */
       
     6 /* * project   : libmng                                                     * */
       
     7 /* * file      : libmng_chunk_io.h         copyright (c) 2000-2007 G.Juyn   * */
       
     8 /* * version   : 1.0.109                                                      * */
       
     9 /* *                                                                        * */
       
    10 /* * purpose   : Chunk I/O routines (definition)                            * */
       
    11 /* *                                                                        * */
       
    12 /* * author    : G.Juyn                                                     * */
       
    13 /* *                                                                        * */
       
    14 /* * comment   : Definition of the chunk input/output routines              * */
       
    15 /* *                                                                        * */
       
    16 /* * changes   : 0.5.1 - 05/04/2000 - G.Juyn                                * */
       
    17 /* *             - changed CRC initialization to use dynamic structure      * */
       
    18 /* *               (wasn't thread-safe the old way !)                       * */
       
    19 /* *             0.5.1 - 05/08/2000 - G.Juyn                                * */
       
    20 /* *             - changed write routines definition                        * */
       
    21 /* *             - changed strict-ANSI stuff                                * */
       
    22 /* *                                                                        * */
       
    23 /* *             0.9.2 - 08/05/2000 - G.Juyn                                * */
       
    24 /* *             - changed file-prefixes                                    * */
       
    25 /* *                                                                        * */
       
    26 /* *             0.9.3 - 08/26/2000 - G.Juyn                                * */
       
    27 /* *             - added MAGN chunk                                         * */
       
    28 /* *             0.9.3 - 10/16/2000 - G.Juyn                                * */
       
    29 /* *             - added support for JDAA                                   * */
       
    30 /* *                                                                        * */
       
    31 /* *             1.0.5 - 08/19/2002 - G.Juyn                                * */
       
    32 /* *             - B597134 - libmng pollutes the linker namespace           * */
       
    33 /* *             1.0.5 - 09/14/2002 - G.Juyn                                * */
       
    34 /* *             - added event handling for dynamic MNG                     * */
       
    35 /* *                                                                        * */
       
    36 /* *             1.0.6 - 07/07/2003 - G.R-P                                 * */
       
    37 /* *             - added SKIP_CHUNK and NO_DELTA_PNG support                * */
       
    38 /* *             1.0.6 - 07/29/2003 - G.R-P                                 * */
       
    39 /* *             - added conditionals around PAST chunk support             * */
       
    40 /* *                                                                        * */
       
    41 /* *             1.0.7 - 03/24/2004 - G.R-P                                 * */
       
    42 /* *             - fixed SKIPCHUNK_itXT and SKIPCHUNK_ztXT typos            * */
       
    43 /* *                                                                        * */
       
    44 /* *             1.0.9 - 12/07/2004 - G.Juyn                                * */
       
    45 /* *             - added conditional MNG_OPTIMIZE_CHUNKREADER               * */
       
    46 /* *                                                                        * */
       
    47 /* *             1.0.10 - 04/08/2007 - G.Juyn                               * */
       
    48 /* *             - added support for mPNG proposal                          * */
       
    49 /* *             1.0.10 - 04/12/2007 - G.Juyn                               * */
       
    50 /* *             - added support for ANG proposal                           * */
       
    51 /* *                                                                        * */
       
    52 /* ************************************************************************** */
       
    53 
       
    54 #if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
       
    55 #pragma option -A                      /* force ANSI-C */
       
    56 #endif
       
    57 
       
    58 #ifndef _libmng_chunk_io_h_
       
    59 #define _libmng_chunk_io_h_
       
    60 
       
    61 /* ************************************************************************** */
       
    62 
       
    63 mng_uint32 mng_crc (mng_datap  pData,
       
    64                     mng_uint8p buf,
       
    65                     mng_int32  len);
       
    66 
       
    67 /* ************************************************************************** */
       
    68 
       
    69 #ifdef MNG_INCLUDE_READ_PROCS
       
    70 
       
    71 /* ************************************************************************** */
       
    72 
       
    73 mng_retcode mng_inflate_buffer (mng_datap  pData,
       
    74                                 mng_uint8p pInbuf,
       
    75                                 mng_uint32 iInsize,
       
    76                                 mng_uint8p *pOutbuf,
       
    77                                 mng_uint32 *iOutsize,
       
    78                                 mng_uint32 *iRealsize);
       
    79 
       
    80 /* ************************************************************************** */
       
    81 
       
    82 #define READ_CHUNK(n) mng_retcode n (mng_datap   pData,    \
       
    83                                      mng_chunkp  pHeader,  \
       
    84                                      mng_uint32  iRawlen,  \
       
    85                                      mng_uint8p  pRawdata, \
       
    86                                      mng_chunkp* ppChunk)
       
    87 
       
    88 #ifdef MNG_OPTIMIZE_CHUNKREADER
       
    89 READ_CHUNK (mng_read_general) ;
       
    90 #endif
       
    91 
       
    92 READ_CHUNK (mng_read_ihdr) ;
       
    93 READ_CHUNK (mng_read_plte) ;
       
    94 READ_CHUNK (mng_read_idat) ;
       
    95 READ_CHUNK (mng_read_iend) ;
       
    96 READ_CHUNK (mng_read_trns) ;
       
    97 READ_CHUNK (mng_read_gama) ;
       
    98 READ_CHUNK (mng_read_chrm) ;
       
    99 READ_CHUNK (mng_read_srgb) ;
       
   100 #ifndef MNG_SKIPCHUNK_iCCP
       
   101 READ_CHUNK (mng_read_iccp) ;
       
   102 #endif
       
   103 #ifndef MNG_SKIPCHUNK_tEXt
       
   104 READ_CHUNK (mng_read_text) ;
       
   105 #endif
       
   106 #ifndef MNG_SKIPCHUNK_zTXt
       
   107 READ_CHUNK (mng_read_ztxt) ;
       
   108 #endif
       
   109 #ifndef MNG_SKIPCHUNK_iTXt
       
   110 READ_CHUNK (mng_read_itxt) ;
       
   111 #endif
       
   112 #ifndef MNG_SKIPCHUNK_bKGD
       
   113 READ_CHUNK (mng_read_bkgd) ;
       
   114 #endif
       
   115 #ifndef MNG_SKIPCHUNK_pHYs
       
   116 READ_CHUNK (mng_read_phys) ;
       
   117 #endif
       
   118 #ifndef MNG_SKIPCHUNK_sBIT
       
   119 READ_CHUNK (mng_read_sbit) ;
       
   120 #endif
       
   121 #ifndef MNG_SKIPCHUNK_sPLT
       
   122 READ_CHUNK (mng_read_splt) ;
       
   123 #endif
       
   124 #ifndef MNG_SKIPCHUNK_hIST
       
   125 READ_CHUNK (mng_read_hist) ;
       
   126 #endif
       
   127 #ifndef MNG_SKIPCHUNK_tIME
       
   128 READ_CHUNK (mng_read_time) ;
       
   129 #endif
       
   130 READ_CHUNK (mng_read_mhdr) ;
       
   131 READ_CHUNK (mng_read_mend) ;
       
   132 READ_CHUNK (mng_read_loop) ;
       
   133 READ_CHUNK (mng_read_endl) ;
       
   134 READ_CHUNK (mng_read_defi) ;
       
   135 READ_CHUNK (mng_read_basi) ;
       
   136 READ_CHUNK (mng_read_clon) ;
       
   137 #ifndef MNG_SKIPCHUNK_PAST
       
   138 READ_CHUNK (mng_read_past) ;
       
   139 #endif
       
   140 READ_CHUNK (mng_read_disc) ;
       
   141 READ_CHUNK (mng_read_back) ;
       
   142 READ_CHUNK (mng_read_fram) ;
       
   143 READ_CHUNK (mng_read_move) ;
       
   144 READ_CHUNK (mng_read_clip) ;
       
   145 READ_CHUNK (mng_read_show) ;
       
   146 READ_CHUNK (mng_read_term) ;
       
   147 READ_CHUNK (mng_read_save) ;
       
   148 READ_CHUNK (mng_read_seek) ;
       
   149 #ifndef MNG_SKIPCHUNK_eXPI
       
   150 READ_CHUNK (mng_read_expi) ;
       
   151 #endif
       
   152 #ifndef MNG_SKIPCHUNK_fPRI
       
   153 READ_CHUNK (mng_read_fpri) ;
       
   154 #endif
       
   155 #ifndef MNG_SKIPCHUNK_pHYg
       
   156 READ_CHUNK (mng_read_phyg) ;
       
   157 #endif
       
   158 #ifdef MNG_INCLUDE_JNG
       
   159 READ_CHUNK (mng_read_jhdr) ;
       
   160 READ_CHUNK (mng_read_jdaa) ;
       
   161 READ_CHUNK (mng_read_jdat) ;
       
   162 READ_CHUNK (mng_read_jsep) ;
       
   163 #endif
       
   164 #ifndef MNG_NO_DELTA_PNG
       
   165 READ_CHUNK (mng_read_dhdr) ;
       
   166 READ_CHUNK (mng_read_prom) ;
       
   167 READ_CHUNK (mng_read_ipng) ;
       
   168 READ_CHUNK (mng_read_pplt) ;
       
   169 #ifdef MNG_INCLUDE_JNG
       
   170 READ_CHUNK (mng_read_ijng) ;
       
   171 #endif
       
   172 READ_CHUNK (mng_read_drop) ;
       
   173 READ_CHUNK (mng_read_dbyk) ;
       
   174 READ_CHUNK (mng_read_ordr) ;
       
   175 #endif
       
   176 READ_CHUNK (mng_read_magn) ;
       
   177 #ifndef MNG_SKIPCHUNK_nEED
       
   178 READ_CHUNK (mng_read_need) ;
       
   179 #endif
       
   180 #ifdef MNG_INCLUDE_MPNG_PROPOSAL
       
   181 READ_CHUNK (mng_read_mpng) ;
       
   182 #endif
       
   183 #ifndef MNG_SKIPCHUNK_evNT
       
   184 READ_CHUNK (mng_read_evnt) ;
       
   185 #endif
       
   186 READ_CHUNK (mng_read_unknown) ;
       
   187 
       
   188 /* ************************************************************************** */
       
   189 
       
   190 #else /* MNG_INCLUDE_READ_PROCS */
       
   191 #define mng_read_ihdr 0
       
   192 #define mng_read_plte 0
       
   193 #define mng_read_idat 0
       
   194 #define mng_read_iend 0
       
   195 #define mng_read_trns 0
       
   196 #define mng_read_gama 0
       
   197 #define mng_read_chrm 0
       
   198 #define mng_read_srgb 0
       
   199 #define mng_read_iccp 0
       
   200 #define mng_read_text 0
       
   201 #define mng_read_ztxt 0
       
   202 #define mng_read_itxt 0
       
   203 #define mng_read_bkgd 0
       
   204 #define mng_read_phys 0
       
   205 #define mng_read_sbit 0
       
   206 #define mng_read_splt 0
       
   207 #define mng_read_hist 0
       
   208 #define mng_read_time 0
       
   209 #define mng_read_mhdr 0
       
   210 #define mng_read_mend 0
       
   211 #define mng_read_loop 0
       
   212 #define mng_read_endl 0
       
   213 #define mng_read_defi 0
       
   214 #define mng_read_basi 0
       
   215 #define mng_read_clon 0
       
   216 #ifndef MNG_SKIPCHUNK_PAST
       
   217 #define mng_read_past 0
       
   218 #endif
       
   219 #define mng_read_disc 0
       
   220 #define mng_read_back 0
       
   221 #define mng_read_fram 0
       
   222 #define mng_read_move 0
       
   223 #define mng_read_clip 0
       
   224 #define mng_read_show 0
       
   225 #define mng_read_term 0
       
   226 #define mng_read_save 0
       
   227 #define mng_read_seek 0
       
   228 #define mng_read_expi 0
       
   229 #define mng_read_fpri 0
       
   230 #define mng_read_phyg 0
       
   231 #ifdef MNG_INCLUDE_JNG
       
   232 #define mng_read_jhdr 0
       
   233 #define mng_read_jdaa 0
       
   234 #define mng_read_jdat 0
       
   235 #define mng_read_jsep 0
       
   236 #endif
       
   237 #ifndef MNG_NO_DELTA_PNG
       
   238 #define mng_read_dhdr 0
       
   239 #define mng_read_prom 0
       
   240 #define mng_read_ipng 0
       
   241 #define mng_read_pplt 0
       
   242 #ifdef MNG_INCLUDE_JNG
       
   243 #define mng_read_ijng 0
       
   244 #endif
       
   245 #define mng_read_drop 0
       
   246 #define mng_read_dbyk 0
       
   247 #define mng_read_ordr 0
       
   248 #endif
       
   249 #define mng_read_magn 0
       
   250 #define mng_read_need 0
       
   251 #ifdef MNG_INCLUDE_MPNG_PROPOSAL
       
   252 #define mng_read_mpng 0
       
   253 #endif
       
   254 #define mng_read_evnt 0
       
   255 #define mng_read_unknown 0
       
   256 #endif /* MNG_INCLUDE_READ_PROCS */
       
   257 
       
   258 /* ************************************************************************** */
       
   259 
       
   260 #ifdef MNG_INCLUDE_WRITE_PROCS
       
   261 
       
   262 #define WRITE_CHUNK(n) mng_retcode n (mng_datap  pData,   \
       
   263                                       mng_chunkp pChunk)
       
   264 
       
   265 WRITE_CHUNK (mng_write_ihdr) ;
       
   266 WRITE_CHUNK (mng_write_plte) ;
       
   267 WRITE_CHUNK (mng_write_idat) ;
       
   268 WRITE_CHUNK (mng_write_iend) ;
       
   269 WRITE_CHUNK (mng_write_trns) ;
       
   270 WRITE_CHUNK (mng_write_gama) ;
       
   271 WRITE_CHUNK (mng_write_chrm) ;
       
   272 WRITE_CHUNK (mng_write_srgb) ;
       
   273 WRITE_CHUNK (mng_write_iccp) ;
       
   274 WRITE_CHUNK (mng_write_text) ;
       
   275 WRITE_CHUNK (mng_write_ztxt) ;
       
   276 WRITE_CHUNK (mng_write_itxt) ;
       
   277 WRITE_CHUNK (mng_write_bkgd) ;
       
   278 WRITE_CHUNK (mng_write_phys) ;
       
   279 WRITE_CHUNK (mng_write_sbit) ;
       
   280 WRITE_CHUNK (mng_write_splt) ;
       
   281 WRITE_CHUNK (mng_write_hist) ;
       
   282 WRITE_CHUNK (mng_write_time) ;
       
   283 WRITE_CHUNK (mng_write_mhdr) ;
       
   284 WRITE_CHUNK (mng_write_mend) ;
       
   285 WRITE_CHUNK (mng_write_loop) ;
       
   286 WRITE_CHUNK (mng_write_endl) ;
       
   287 WRITE_CHUNK (mng_write_defi) ;
       
   288 WRITE_CHUNK (mng_write_basi) ;
       
   289 WRITE_CHUNK (mng_write_clon) ;
       
   290 #ifndef MNG_SKIPCHUNK_PAST
       
   291 WRITE_CHUNK (mng_write_past) ;
       
   292 #endif
       
   293 WRITE_CHUNK (mng_write_disc) ;
       
   294 WRITE_CHUNK (mng_write_back) ;
       
   295 WRITE_CHUNK (mng_write_fram) ;
       
   296 WRITE_CHUNK (mng_write_move) ;
       
   297 WRITE_CHUNK (mng_write_clip) ;
       
   298 WRITE_CHUNK (mng_write_show) ;
       
   299 WRITE_CHUNK (mng_write_term) ;
       
   300 WRITE_CHUNK (mng_write_save) ;
       
   301 WRITE_CHUNK (mng_write_seek) ;
       
   302 WRITE_CHUNK (mng_write_expi) ;
       
   303 WRITE_CHUNK (mng_write_fpri) ;
       
   304 WRITE_CHUNK (mng_write_phyg) ;
       
   305 #ifdef MNG_INCLUDE_JNG
       
   306 WRITE_CHUNK (mng_write_jhdr) ;
       
   307 WRITE_CHUNK (mng_write_jdaa) ;
       
   308 WRITE_CHUNK (mng_write_jdat) ;
       
   309 WRITE_CHUNK (mng_write_jsep) ;
       
   310 #endif
       
   311 #ifndef MNG_NO_DELTA_PNG
       
   312 WRITE_CHUNK (mng_write_dhdr) ;
       
   313 WRITE_CHUNK (mng_write_prom) ;
       
   314 WRITE_CHUNK (mng_write_ipng) ;
       
   315 WRITE_CHUNK (mng_write_pplt) ;
       
   316 #ifdef MNG_INCLUDE_JNG
       
   317 WRITE_CHUNK (mng_write_ijng) ;
       
   318 #endif
       
   319 WRITE_CHUNK (mng_write_drop) ;
       
   320 WRITE_CHUNK (mng_write_dbyk) ;
       
   321 WRITE_CHUNK (mng_write_ordr) ;
       
   322 #endif
       
   323 WRITE_CHUNK (mng_write_magn) ;
       
   324 WRITE_CHUNK (mng_write_need) ;
       
   325 #ifdef MNG_INCLUDE_MPNG_PROPOSAL
       
   326 WRITE_CHUNK (mng_write_mpng) ;
       
   327 #endif
       
   328 #ifdef MNG_INCLUDE_ANG_PROPOSAL
       
   329 WRITE_CHUNK (mng_write_ahdr) ;
       
   330 WRITE_CHUNK (mng_write_adat) ;
       
   331 #endif
       
   332 WRITE_CHUNK (mng_write_evnt) ;
       
   333 WRITE_CHUNK (mng_write_unknown) ;
       
   334 
       
   335 /* ************************************************************************** */
       
   336 
       
   337 #else /* MNG_INCLUDE_WRITE_PROCS */
       
   338 #define mng_write_ihdr 0
       
   339 #define mng_write_plte 0
       
   340 #define mng_write_idat 0
       
   341 #define mng_write_iend 0
       
   342 #define mng_write_trns 0
       
   343 #define mng_write_gama 0
       
   344 #define mng_write_chrm 0
       
   345 #define mng_write_srgb 0
       
   346 #define mng_write_iccp 0
       
   347 #define mng_write_text 0
       
   348 #define mng_write_ztxt 0
       
   349 #define mng_write_itxt 0
       
   350 #define mng_write_bkgd 0
       
   351 #define mng_write_phys 0
       
   352 #define mng_write_sbit 0
       
   353 #define mng_write_splt 0
       
   354 #define mng_write_hist 0
       
   355 #define mng_write_time 0
       
   356 #define mng_write_mhdr 0
       
   357 #define mng_write_mend 0
       
   358 #define mng_write_loop 0
       
   359 #define mng_write_endl 0
       
   360 #define mng_write_defi 0
       
   361 #define mng_write_basi 0
       
   362 #define mng_write_clon 0
       
   363 #ifndef MNG_SKIPCHUNK_PAST
       
   364 #define mng_write_past 0
       
   365 #endif
       
   366 #define mng_write_disc 0
       
   367 #define mng_write_back 0
       
   368 #define mng_write_fram 0
       
   369 #define mng_write_move 0
       
   370 #define mng_write_clip 0
       
   371 #define mng_write_show 0
       
   372 #define mng_write_term 0
       
   373 #define mng_write_save 0
       
   374 #define mng_write_seek 0
       
   375 #define mng_write_expi 0
       
   376 #define mng_write_fpri 0
       
   377 #define mng_write_phyg 0
       
   378 #ifdef MNG_INCLUDE_JNG
       
   379 #define mng_write_jhdr 0
       
   380 #define mng_write_jdaa 0
       
   381 #define mng_write_jdat 0
       
   382 #define mng_write_jsep 0
       
   383 #endif
       
   384 #ifndef MNG_NO_DELTA_PNG
       
   385 #define mng_write_dhdr 0
       
   386 #define mng_write_prom 0
       
   387 #define mng_write_ipng 0
       
   388 #define mng_write_pplt 0
       
   389 #ifdef MNG_INCLUDE_JNG
       
   390 #define mng_write_ijng 0
       
   391 #endif
       
   392 #define mng_write_drop 0
       
   393 #define mng_write_dbyk 0
       
   394 #define mng_write_ordr 0
       
   395 #endif
       
   396 #define mng_write_magn 0
       
   397 #define mng_write_need 0
       
   398 #ifdef MNG_INCLUDE_MPNG_PROPOSAL
       
   399 #define mng_write_mpng 0
       
   400 #endif
       
   401 #ifdef MNG_INCLUDE_ANG_PROPOSAL
       
   402 #define mng_write_adat 0
       
   403 #define mng_write_ahdr 0
       
   404 #endif
       
   405 #define mng_write_evnt 0
       
   406 #define mng_write_unknown 0
       
   407 #endif /* MNG_INCLUDE_WRITE_PROCS */
       
   408 
       
   409 /* ************************************************************************** */
       
   410 
       
   411 #endif /* _libmng_chunk_io_h_ */
       
   412 
       
   413 /* ************************************************************************** */
       
   414 /* * end of file                                                            * */
       
   415 /* ************************************************************************** */