source: trunk/src/3rdparty/libmng/libmng_chunk_io.h@ 122

Last change on this file since 122 was 2, checked in by Dmitry A. Kuminov, 16 years ago

Initially imported qt-all-opensource-src-4.5.1 from Trolltech.

File size: 13.5 KB
Line 
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
63mng_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
73mng_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
89READ_CHUNK (mng_read_general) ;
90#endif
91
92READ_CHUNK (mng_read_ihdr) ;
93READ_CHUNK (mng_read_plte) ;
94READ_CHUNK (mng_read_idat) ;
95READ_CHUNK (mng_read_iend) ;
96READ_CHUNK (mng_read_trns) ;
97READ_CHUNK (mng_read_gama) ;
98READ_CHUNK (mng_read_chrm) ;
99READ_CHUNK (mng_read_srgb) ;
100#ifndef MNG_SKIPCHUNK_iCCP
101READ_CHUNK (mng_read_iccp) ;
102#endif
103#ifndef MNG_SKIPCHUNK_tEXt
104READ_CHUNK (mng_read_text) ;
105#endif
106#ifndef MNG_SKIPCHUNK_zTXt
107READ_CHUNK (mng_read_ztxt) ;
108#endif
109#ifndef MNG_SKIPCHUNK_iTXt
110READ_CHUNK (mng_read_itxt) ;
111#endif
112#ifndef MNG_SKIPCHUNK_bKGD
113READ_CHUNK (mng_read_bkgd) ;
114#endif
115#ifndef MNG_SKIPCHUNK_pHYs
116READ_CHUNK (mng_read_phys) ;
117#endif
118#ifndef MNG_SKIPCHUNK_sBIT
119READ_CHUNK (mng_read_sbit) ;
120#endif
121#ifndef MNG_SKIPCHUNK_sPLT
122READ_CHUNK (mng_read_splt) ;
123#endif
124#ifndef MNG_SKIPCHUNK_hIST
125READ_CHUNK (mng_read_hist) ;
126#endif
127#ifndef MNG_SKIPCHUNK_tIME
128READ_CHUNK (mng_read_time) ;
129#endif
130READ_CHUNK (mng_read_mhdr) ;
131READ_CHUNK (mng_read_mend) ;
132READ_CHUNK (mng_read_loop) ;
133READ_CHUNK (mng_read_endl) ;
134READ_CHUNK (mng_read_defi) ;
135READ_CHUNK (mng_read_basi) ;
136READ_CHUNK (mng_read_clon) ;
137#ifndef MNG_SKIPCHUNK_PAST
138READ_CHUNK (mng_read_past) ;
139#endif
140READ_CHUNK (mng_read_disc) ;
141READ_CHUNK (mng_read_back) ;
142READ_CHUNK (mng_read_fram) ;
143READ_CHUNK (mng_read_move) ;
144READ_CHUNK (mng_read_clip) ;
145READ_CHUNK (mng_read_show) ;
146READ_CHUNK (mng_read_term) ;
147READ_CHUNK (mng_read_save) ;
148READ_CHUNK (mng_read_seek) ;
149#ifndef MNG_SKIPCHUNK_eXPI
150READ_CHUNK (mng_read_expi) ;
151#endif
152#ifndef MNG_SKIPCHUNK_fPRI
153READ_CHUNK (mng_read_fpri) ;
154#endif
155#ifndef MNG_SKIPCHUNK_pHYg
156READ_CHUNK (mng_read_phyg) ;
157#endif
158#ifdef MNG_INCLUDE_JNG
159READ_CHUNK (mng_read_jhdr) ;
160READ_CHUNK (mng_read_jdaa) ;
161READ_CHUNK (mng_read_jdat) ;
162READ_CHUNK (mng_read_jsep) ;
163#endif
164#ifndef MNG_NO_DELTA_PNG
165READ_CHUNK (mng_read_dhdr) ;
166READ_CHUNK (mng_read_prom) ;
167READ_CHUNK (mng_read_ipng) ;
168READ_CHUNK (mng_read_pplt) ;
169#ifdef MNG_INCLUDE_JNG
170READ_CHUNK (mng_read_ijng) ;
171#endif
172READ_CHUNK (mng_read_drop) ;
173READ_CHUNK (mng_read_dbyk) ;
174READ_CHUNK (mng_read_ordr) ;
175#endif
176READ_CHUNK (mng_read_magn) ;
177#ifndef MNG_SKIPCHUNK_nEED
178READ_CHUNK (mng_read_need) ;
179#endif
180#ifdef MNG_INCLUDE_MPNG_PROPOSAL
181READ_CHUNK (mng_read_mpng) ;
182#endif
183#ifndef MNG_SKIPCHUNK_evNT
184READ_CHUNK (mng_read_evnt) ;
185#endif
186READ_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
265WRITE_CHUNK (mng_write_ihdr) ;
266WRITE_CHUNK (mng_write_plte) ;
267WRITE_CHUNK (mng_write_idat) ;
268WRITE_CHUNK (mng_write_iend) ;
269WRITE_CHUNK (mng_write_trns) ;
270WRITE_CHUNK (mng_write_gama) ;
271WRITE_CHUNK (mng_write_chrm) ;
272WRITE_CHUNK (mng_write_srgb) ;
273WRITE_CHUNK (mng_write_iccp) ;
274WRITE_CHUNK (mng_write_text) ;
275WRITE_CHUNK (mng_write_ztxt) ;
276WRITE_CHUNK (mng_write_itxt) ;
277WRITE_CHUNK (mng_write_bkgd) ;
278WRITE_CHUNK (mng_write_phys) ;
279WRITE_CHUNK (mng_write_sbit) ;
280WRITE_CHUNK (mng_write_splt) ;
281WRITE_CHUNK (mng_write_hist) ;
282WRITE_CHUNK (mng_write_time) ;
283WRITE_CHUNK (mng_write_mhdr) ;
284WRITE_CHUNK (mng_write_mend) ;
285WRITE_CHUNK (mng_write_loop) ;
286WRITE_CHUNK (mng_write_endl) ;
287WRITE_CHUNK (mng_write_defi) ;
288WRITE_CHUNK (mng_write_basi) ;
289WRITE_CHUNK (mng_write_clon) ;
290#ifndef MNG_SKIPCHUNK_PAST
291WRITE_CHUNK (mng_write_past) ;
292#endif
293WRITE_CHUNK (mng_write_disc) ;
294WRITE_CHUNK (mng_write_back) ;
295WRITE_CHUNK (mng_write_fram) ;
296WRITE_CHUNK (mng_write_move) ;
297WRITE_CHUNK (mng_write_clip) ;
298WRITE_CHUNK (mng_write_show) ;
299WRITE_CHUNK (mng_write_term) ;
300WRITE_CHUNK (mng_write_save) ;
301WRITE_CHUNK (mng_write_seek) ;
302WRITE_CHUNK (mng_write_expi) ;
303WRITE_CHUNK (mng_write_fpri) ;
304WRITE_CHUNK (mng_write_phyg) ;
305#ifdef MNG_INCLUDE_JNG
306WRITE_CHUNK (mng_write_jhdr) ;
307WRITE_CHUNK (mng_write_jdaa) ;
308WRITE_CHUNK (mng_write_jdat) ;
309WRITE_CHUNK (mng_write_jsep) ;
310#endif
311#ifndef MNG_NO_DELTA_PNG
312WRITE_CHUNK (mng_write_dhdr) ;
313WRITE_CHUNK (mng_write_prom) ;
314WRITE_CHUNK (mng_write_ipng) ;
315WRITE_CHUNK (mng_write_pplt) ;
316#ifdef MNG_INCLUDE_JNG
317WRITE_CHUNK (mng_write_ijng) ;
318#endif
319WRITE_CHUNK (mng_write_drop) ;
320WRITE_CHUNK (mng_write_dbyk) ;
321WRITE_CHUNK (mng_write_ordr) ;
322#endif
323WRITE_CHUNK (mng_write_magn) ;
324WRITE_CHUNK (mng_write_need) ;
325#ifdef MNG_INCLUDE_MPNG_PROPOSAL
326WRITE_CHUNK (mng_write_mpng) ;
327#endif
328#ifdef MNG_INCLUDE_ANG_PROPOSAL
329WRITE_CHUNK (mng_write_ahdr) ;
330WRITE_CHUNK (mng_write_adat) ;
331#endif
332WRITE_CHUNK (mng_write_evnt) ;
333WRITE_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/* ************************************************************************** */
Note: See TracBrowser for help on using the repository browser.