source: trunk/src/3rdparty/libmng/libmng_chunks.h@ 348

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

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

File size: 37.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_chunks.h copyright (c) 2000-2007 G.Juyn * */
8/* * version : 1.0.10 * */
9/* * * */
10/* * purpose : Chunk structures (definition) * */
11/* * * */
12/* * author : G.Juyn * */
13/* * * */
14/* * comment : Definition of known chunk structures * */
15/* * * */
16/* * changes : 0.5.1 - 05/04/2000 - G.Juyn * */
17/* * - put in some extra comments * */
18/* * 0.5.1 - 05/06/2000 - G.Juyn * */
19/* * - fixed layout for sBIT, PPLT * */
20/* * 0.5.1 - 05/08/2000 - G.Juyn * */
21/* * - changed write callback definition * */
22/* * - changed strict-ANSI stuff * */
23/* * 0.5.1 - 05/11/2000 - G.Juyn * */
24/* * - fixed layout for PPLT again (missed deltatype ?!?) * */
25/* * * */
26/* * 0.5.2 - 05/31/2000 - G.Juyn * */
27/* * - removed useless definition (contributed by Tim Rowley) * */
28/* * 0.5.2 - 06/03/2000 - G.Juyn * */
29/* * - fixed makeup for Linux gcc compile * */
30/* * * */
31/* * 0.9.2 - 08/05/2000 - G.Juyn * */
32/* * - changed file-prefixes * */
33/* * * */
34/* * 0.9.3 - 08/26/2000 - G.Juyn * */
35/* * - added MAGN chunk * */
36/* * 0.9.3 - 09/10/2000 - G.Juyn * */
37/* * - fixed DEFI behavior * */
38/* * 0.9.3 - 10/16/2000 - G.Juyn * */
39/* * - added JDAA chunk * */
40/* * * */
41/* * 1.0.5 - 08/19/2002 - G.Juyn * */
42/* * - added HLAPI function to copy chunks * */
43/* * 1.0.5 - 09/14/2002 - G.Juyn * */
44/* * - added event handling for dynamic MNG * */
45/* * 1.0.5 - 11/28/2002 - G.Juyn * */
46/* * - fixed definition of iMethodX/Y for MAGN chunk * */
47/* * * */
48/* * 1.0.6 - 05/25/2003 - G.R-P * */
49/* * added MNG_SKIPCHUNK_cHNK footprint optimizations * */
50/* * 1.0.6 - 07/29/2003 - G.R-P * */
51/* * - added conditionals around PAST chunk support * */
52/* * * */
53/* * 1.0.7 - 03/24/2004 - G.R-P * */
54/* * - added conditional around MNG_NO_DELTA_PNG support * */
55/* * * */
56/* * 1.0.9 - 12/05/2004 - G.Juyn * */
57/* * - added conditional MNG_OPTIMIZE_CHUNKINITFREE * */
58/* * 1.0.9 - 12/06/2004 - G.Juyn * */
59/* * - added conditional MNG_OPTIMIZE_CHUNKREADER * */
60/* * * */
61/* * 1.0.10 - 04/08/2007 - G.Juyn * */
62/* * - added support for mPNG proposal * */
63/* * 1.0.10 - 04/12/2007 - G.Juyn * */
64/* * - added support for ANG proposal * */
65/* * * */
66/* ************************************************************************** */
67
68#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
69#pragma option -A /* force ANSI-C */
70#endif
71
72#ifndef _libmng_chunks_h_
73#define _libmng_chunks_h_
74
75/* ************************************************************************** */
76
77#ifdef MNG_SWAP_ENDIAN
78#define PNG_SIG 0x474e5089L
79#define JNG_SIG 0x474e4a8bL
80#define MNG_SIG 0x474e4d8aL
81#define POST_SIG 0x0a1a0a0dL
82#else
83#define PNG_SIG 0x89504e47L
84#define JNG_SIG 0x8b4a4e47L
85#define MNG_SIG 0x8a4d4e47L
86#define POST_SIG 0x0d0a1a0aL
87#endif
88
89/* ************************************************************************** */
90
91#ifdef MNG_OPTIMIZE_CHUNKREADER
92
93typedef mng_retcode (*mng_f_specialfunc) (mng_datap pData,
94 mng_chunkp pChunk,
95 mng_uint32* piRawlen,
96 mng_uint8p* ppRawdata);
97
98typedef mng_retcode (*mng_c_specialfunc) (mng_datap pData,
99 mng_chunkp pChunk);
100
101#define MNG_FIELD_OPTIONAL 0x0001
102#define MNG_FIELD_TERMINATOR 0x0002
103#define MNG_FIELD_REPETITIVE 0x0004
104#define MNG_FIELD_DEFLATED 0x0008
105#define MNG_FIELD_IFIMGTYPES 0x01F0 /* image-type mask */
106#define MNG_FIELD_IFIMGTYPE0 0x0010
107#define MNG_FIELD_IFIMGTYPE2 0x0020
108#define MNG_FIELD_IFIMGTYPE3 0x0040
109#define MNG_FIELD_IFIMGTYPE4 0x0080
110#define MNG_FIELD_IFIMGTYPE6 0x0100
111#define MNG_FIELD_PUTIMGTYPE 0x0200
112#define MNG_FIELD_NOHIGHBIT 0x0400
113#define MNG_FIELD_GROUPMASK 0x7000
114#define MNG_FIELD_GROUP1 0x1000
115#define MNG_FIELD_GROUP2 0x2000
116#define MNG_FIELD_GROUP3 0x3000
117#define MNG_FIELD_GROUP4 0x4000
118#define MNG_FIELD_GROUP5 0x5000
119#define MNG_FIELD_GROUP6 0x6000
120#define MNG_FIELD_GROUP7 0x7000
121#define MNG_FIELD_INT 0x8000
122
123typedef struct { /* chunk-field descriptor */
124 mng_f_specialfunc pSpecialfunc;
125 mng_uint16 iFlags;
126 mng_uint16 iMinvalue;
127 mng_uint16 iMaxvalue;
128 mng_uint16 iLengthmin;
129 mng_uint16 iLengthmax;
130 mng_uint16 iOffsetchunk;
131 mng_uint16 iOffsetchunkind;
132 mng_uint16 iOffsetchunklen;
133 } mng_field_descriptor;
134typedef mng_field_descriptor * mng_field_descp;
135
136#define MNG_DESCR_GLOBAL 0x0001
137#define MNG_DESCR_EMPTY 0x0002
138#define MNG_DESCR_EMPTYEMBED 0x0006
139#define MNG_DESCR_EMPTYGLOBAL 0x000A
140
141#define MNG_DESCR_GenHDR 0x0001 /* IHDR/JHDR/BASI/DHDR */
142#define MNG_DESCR_JngHDR 0x0002 /* JHDR/DHDR */
143#define MNG_DESCR_MHDR 0x0004
144#define MNG_DESCR_IHDR 0x0008
145#define MNG_DESCR_JHDR 0x0010
146#define MNG_DESCR_DHDR 0x0020
147#define MNG_DESCR_LOOP 0x0040
148#define MNG_DESCR_PLTE 0x0080
149#define MNG_DESCR_SAVE 0x0100
150
151#define MNG_DESCR_NOIHDR 0x0001
152#define MNG_DESCR_NOJHDR 0x0002
153#define MNG_DESCR_NOBASI 0x0004
154#define MNG_DESCR_NODHDR 0x0008
155#define MNG_DESCR_NOIDAT 0x0010
156#define MNG_DESCR_NOJDAT 0x0020
157#define MNG_DESCR_NOJDAA 0x0040
158#define MNG_DESCR_NOPLTE 0x0080
159#define MNG_DESCR_NOJSEP 0x0100
160#define MNG_DESCR_NOMHDR 0x0200
161#define MNG_DESCR_NOTERM 0x0400
162#define MNG_DESCR_NOLOOP 0x0800
163#define MNG_DESCR_NOSAVE 0x1000
164
165typedef struct { /* chunk descriptor */
166 mng_imgtype eImgtype;
167 mng_createobjtype eCreateobject;
168 mng_uint16 iObjsize;
169 mng_uint16 iOffsetempty;
170 mng_ptr pObjcleanup;
171 mng_ptr pObjprocess;
172 mng_c_specialfunc pSpecialfunc;
173 mng_field_descp pFielddesc;
174 mng_uint16 iFielddesc;
175 mng_uint16 iAllowed;
176 mng_uint16 iMusthaves;
177 mng_uint16 iMustNOThaves;
178 } mng_chunk_descriptor;
179typedef mng_chunk_descriptor * mng_chunk_descp;
180
181#endif /* MNG_OPTIMIZE_CHUNKREADER */
182
183/* ************************************************************************** */
184
185typedef mng_retcode (*mng_createchunk) (mng_datap pData,
186 mng_chunkp pHeader,
187 mng_chunkp* ppChunk);
188
189typedef mng_retcode (*mng_cleanupchunk) (mng_datap pData,
190 mng_chunkp pHeader);
191
192typedef mng_retcode (*mng_readchunk) (mng_datap pData,
193 mng_chunkp pHeader,
194 mng_uint32 iRawlen,
195 mng_uint8p pRawdata,
196 mng_chunkp* pChunk);
197
198typedef mng_retcode (*mng_writechunk) (mng_datap pData,
199 mng_chunkp pChunk);
200
201typedef mng_retcode (*mng_assignchunk) (mng_datap pData,
202 mng_chunkp pChunkto,
203 mng_chunkp pChunkfrom);
204
205/* ************************************************************************** */
206
207typedef struct { /* generic header */
208 mng_chunkid iChunkname;
209 mng_createchunk fCreate;
210 mng_cleanupchunk fCleanup;
211 mng_readchunk fRead;
212 mng_writechunk fWrite;
213 mng_assignchunk fAssign;
214 mng_chunkp pNext; /* for double-linked list */
215 mng_chunkp pPrev;
216#ifdef MNG_OPTIMIZE_CHUNKINITFREE
217 mng_size_t iChunksize;
218#endif
219#ifdef MNG_OPTIMIZE_CHUNKREADER
220 mng_chunk_descp pChunkdescr;
221#endif
222 } mng_chunk_header;
223typedef mng_chunk_header * mng_chunk_headerp;
224
225/* ************************************************************************** */
226
227typedef struct { /* IHDR */
228 mng_chunk_header sHeader;
229 mng_uint32 iWidth;
230 mng_uint32 iHeight;
231 mng_uint8 iBitdepth;
232 mng_uint8 iColortype;
233 mng_uint8 iCompression;
234 mng_uint8 iFilter;
235 mng_uint8 iInterlace;
236 } mng_ihdr;
237typedef mng_ihdr * mng_ihdrp;
238
239/* ************************************************************************** */
240
241typedef struct { /* PLTE */
242 mng_chunk_header sHeader;
243 mng_bool bEmpty;
244 mng_uint32 iEntrycount;
245 mng_rgbpaltab aEntries;
246 } mng_plte;
247typedef mng_plte * mng_pltep;
248
249/* ************************************************************************** */
250
251typedef struct { /* IDAT */
252 mng_chunk_header sHeader;
253 mng_bool bEmpty;
254 mng_uint32 iDatasize;
255 mng_ptr pData;
256 } mng_idat;
257typedef mng_idat * mng_idatp;
258
259/* ************************************************************************** */
260
261typedef struct { /* IEND */
262 mng_chunk_header sHeader;
263 } mng_iend;
264typedef mng_iend * mng_iendp;
265
266/* ************************************************************************** */
267
268typedef struct { /* tRNS */
269 mng_chunk_header sHeader;
270 mng_bool bEmpty;
271 mng_bool bGlobal;
272 mng_uint8 iType; /* colortype (0,2,3) */
273 mng_uint32 iCount;
274 mng_uint8arr aEntries;
275 mng_uint16 iGray;
276 mng_uint16 iRed;
277 mng_uint16 iGreen;
278 mng_uint16 iBlue;
279 mng_uint32 iRawlen;
280 mng_uint8arr aRawdata;
281 } mng_trns;
282typedef mng_trns * mng_trnsp;
283
284/* ************************************************************************** */
285
286typedef struct { /* gAMA */
287 mng_chunk_header sHeader;
288 mng_bool bEmpty;
289 mng_uint32 iGamma;
290 } mng_gama;
291typedef mng_gama * mng_gamap;
292
293/* ************************************************************************** */
294
295#ifndef MNG_SKIPCHUNK_cHRM
296typedef struct { /* cHRM */
297 mng_chunk_header sHeader;
298 mng_bool bEmpty;
299 mng_uint32 iWhitepointx;
300 mng_uint32 iWhitepointy;
301 mng_uint32 iRedx;
302 mng_uint32 iRedy;
303 mng_uint32 iGreenx;
304 mng_uint32 iGreeny;
305 mng_uint32 iBluex;
306 mng_uint32 iBluey;
307 } mng_chrm;
308typedef mng_chrm * mng_chrmp;
309#endif
310
311/* ************************************************************************** */
312
313typedef struct { /* sRGB */
314 mng_chunk_header sHeader;
315 mng_bool bEmpty;
316 mng_uint8 iRenderingintent;
317 } mng_srgb;
318typedef mng_srgb * mng_srgbp;
319
320/* ************************************************************************** */
321
322#ifndef MNG_SKIPCHUNK_iCCP
323typedef struct { /* iCCP */
324 mng_chunk_header sHeader;
325 mng_bool bEmpty;
326 mng_uint32 iNamesize;
327 mng_pchar zName;
328 mng_uint8 iCompression;
329 mng_uint32 iProfilesize;
330 mng_ptr pProfile;
331 } mng_iccp;
332typedef mng_iccp * mng_iccpp;
333#endif
334
335/* ************************************************************************** */
336
337#ifndef MNG_SKIPCHUNK_tEXt
338typedef struct { /* tEXt */
339 mng_chunk_header sHeader;
340 mng_uint32 iKeywordsize;
341 mng_pchar zKeyword;
342 mng_uint32 iTextsize;
343 mng_pchar zText;
344 } mng_text;
345typedef mng_text * mng_textp;
346#endif
347
348/* ************************************************************************** */
349
350#ifndef MNG_SKIPCHUNK_zTXt
351typedef struct { /* zTXt */
352 mng_chunk_header sHeader;
353 mng_uint32 iKeywordsize;
354 mng_pchar zKeyword;
355 mng_uint8 iCompression;
356 mng_uint32 iTextsize;
357 mng_pchar zText;
358 } mng_ztxt;
359typedef mng_ztxt * mng_ztxtp;
360#endif
361
362/* ************************************************************************** */
363
364#ifndef MNG_SKIPCHUNK_iTXt
365typedef struct { /* iTXt */
366 mng_chunk_header sHeader;
367 mng_uint32 iKeywordsize;
368 mng_pchar zKeyword;
369 mng_uint8 iCompressionflag;
370 mng_uint8 iCompressionmethod;
371 mng_uint32 iLanguagesize;
372 mng_pchar zLanguage;
373 mng_uint32 iTranslationsize;
374 mng_pchar zTranslation;
375 mng_uint32 iTextsize;
376 mng_pchar zText;
377 } mng_itxt;
378typedef mng_itxt * mng_itxtp;
379#endif
380
381/* ************************************************************************** */
382
383#ifndef MNG_SKIPCHUNK_bKGD
384typedef struct { /* bKGD */
385 mng_chunk_header sHeader;
386 mng_bool bEmpty;
387 mng_uint8 iType; /* 3=indexed, 0=gray, 2=rgb */
388 mng_uint8 iIndex;
389 mng_uint16 iGray;
390 mng_uint16 iRed;
391 mng_uint16 iGreen;
392 mng_uint16 iBlue;
393 } mng_bkgd;
394typedef mng_bkgd * mng_bkgdp;
395#endif
396
397/* ************************************************************************** */
398
399#ifndef MNG_SKIPCHUNK_pHYs
400typedef struct { /* pHYs */
401 mng_chunk_header sHeader;
402 mng_bool bEmpty;
403 mng_uint32 iSizex;
404 mng_uint32 iSizey;
405 mng_uint8 iUnit;
406 } mng_phys;
407typedef mng_phys * mng_physp;
408#endif
409
410/* ************************************************************************** */
411#ifndef MNG_SKIPCHUNK_sBIT
412
413typedef struct { /* sBIT */
414 mng_chunk_header sHeader;
415 mng_bool bEmpty;
416 mng_uint8 iType; /* colortype (0,2,3,4,6,10,12,14,16) */
417 mng_uint8arr4 aBits;
418 } mng_sbit;
419typedef mng_sbit * mng_sbitp;
420#endif
421
422/* ************************************************************************** */
423
424#ifndef MNG_SKIPCHUNK_sPLT
425typedef struct { /* sPLT */
426 mng_chunk_header sHeader;
427 mng_bool bEmpty;
428 mng_uint32 iNamesize;
429 mng_pchar zName;
430 mng_uint8 iSampledepth;
431 mng_uint32 iEntrycount;
432 mng_ptr pEntries;
433 } mng_splt;
434typedef mng_splt * mng_spltp;
435#endif
436
437/* ************************************************************************** */
438
439#ifndef MNG_SKIPCHUNK_hIST
440typedef struct { /* hIST */
441 mng_chunk_header sHeader;
442 mng_uint32 iEntrycount;
443 mng_uint16arr aEntries;
444 } mng_hist;
445typedef mng_hist * mng_histp;
446#endif
447
448/* ************************************************************************** */
449
450#ifndef MNG_SKIPCHUNK_tIME
451typedef struct { /* tIME */
452 mng_chunk_header sHeader;
453 mng_uint16 iYear;
454 mng_uint8 iMonth;
455 mng_uint8 iDay;
456 mng_uint8 iHour;
457 mng_uint8 iMinute;
458 mng_uint8 iSecond;
459 } mng_time;
460typedef mng_time * mng_timep;
461#endif
462
463/* ************************************************************************** */
464
465typedef struct { /* MHDR */
466 mng_chunk_header sHeader;
467 mng_uint32 iWidth;
468 mng_uint32 iHeight;
469 mng_uint32 iTicks;
470 mng_uint32 iLayercount;
471 mng_uint32 iFramecount;
472 mng_uint32 iPlaytime;
473 mng_uint32 iSimplicity;
474 } mng_mhdr;
475typedef mng_mhdr * mng_mhdrp;
476
477/* ************************************************************************** */
478
479typedef struct { /* MEND */
480 mng_chunk_header sHeader;
481 } mng_mend;
482typedef mng_mend * mng_mendp;
483
484/* ************************************************************************** */
485
486typedef struct { /* LOOP */
487 mng_chunk_header sHeader;
488 mng_uint8 iLevel;
489 mng_uint32 iRepeat;
490 mng_uint8 iTermination;
491 mng_uint32 iItermin;
492 mng_uint32 iItermax;
493 mng_uint32 iCount;
494 mng_uint32p pSignals;
495 } mng_loop;
496typedef mng_loop * mng_loopp;
497
498/* ************************************************************************** */
499
500typedef struct { /* ENDL */
501 mng_chunk_header sHeader;
502 mng_uint8 iLevel;
503 } mng_endl;
504typedef mng_endl * mng_endlp;
505
506/* ************************************************************************** */
507
508typedef struct { /* DEFI */
509 mng_chunk_header sHeader;
510 mng_uint16 iObjectid;
511 mng_bool bHasdonotshow;
512 mng_uint8 iDonotshow;
513 mng_bool bHasconcrete;
514 mng_uint8 iConcrete;
515 mng_bool bHasloca;
516 mng_int32 iXlocation;
517 mng_int32 iYlocation;
518 mng_bool bHasclip;
519 mng_int32 iLeftcb;
520 mng_int32 iRightcb;
521 mng_int32 iTopcb;
522 mng_int32 iBottomcb;
523 } mng_defi;
524typedef mng_defi * mng_defip;
525
526/* ************************************************************************** */
527
528typedef struct { /* BASI */
529 mng_chunk_header sHeader;
530 mng_uint32 iWidth;
531 mng_uint32 iHeight;
532 mng_uint8 iBitdepth;
533 mng_uint8 iColortype;
534 mng_uint8 iCompression;
535 mng_uint8 iFilter;
536 mng_uint8 iInterlace;
537 mng_uint16 iRed;
538 mng_uint16 iGreen;
539 mng_uint16 iBlue;
540#ifdef MNG_OPTIMIZE_CHUNKREADER
541 mng_bool bHasalpha;
542#endif
543 mng_uint16 iAlpha;
544 mng_uint8 iViewable;
545 } mng_basi;
546typedef mng_basi * mng_basip;
547
548/* ************************************************************************** */
549
550typedef struct { /* CLON */
551 mng_chunk_header sHeader;
552 mng_uint16 iSourceid;
553 mng_uint16 iCloneid;
554 mng_uint8 iClonetype;
555#ifdef MNG_OPTIMIZE_CHUNKREADER
556 mng_bool bHasdonotshow;
557#endif
558 mng_uint8 iDonotshow;
559 mng_uint8 iConcrete;
560 mng_bool bHasloca;
561 mng_uint8 iLocationtype;
562 mng_int32 iLocationx;
563 mng_int32 iLocationy;
564 } mng_clon;
565typedef mng_clon * mng_clonp;
566
567/* ************************************************************************** */
568
569#ifndef MNG_SKIPCHUNK_PAST
570typedef struct { /* PAST source */
571 mng_uint16 iSourceid;
572 mng_uint8 iComposition;
573 mng_uint8 iOrientation;
574 mng_uint8 iOffsettype;
575 mng_int32 iOffsetx;
576 mng_int32 iOffsety;
577 mng_uint8 iBoundarytype;
578 mng_int32 iBoundaryl;
579 mng_int32 iBoundaryr;
580 mng_int32 iBoundaryt;
581 mng_int32 iBoundaryb;
582 } mng_past_source;
583typedef mng_past_source * mng_past_sourcep;
584
585typedef struct { /* PAST */
586 mng_chunk_header sHeader;
587 mng_uint16 iDestid;
588 mng_uint8 iTargettype;
589 mng_int32 iTargetx;
590 mng_int32 iTargety;
591 mng_uint32 iCount;
592 mng_past_sourcep pSources;
593 } mng_past;
594typedef mng_past * mng_pastp;
595#endif
596
597/* ************************************************************************** */
598
599typedef struct { /* DISC */
600 mng_chunk_header sHeader;
601 mng_uint32 iCount;
602 mng_uint16p pObjectids;
603 } mng_disc;
604typedef mng_disc * mng_discp;
605
606/* ************************************************************************** */
607
608typedef struct { /* BACK */
609 mng_chunk_header sHeader;
610 mng_uint16 iRed;
611 mng_uint16 iGreen;
612 mng_uint16 iBlue;
613 mng_uint8 iMandatory;
614 mng_uint16 iImageid;
615 mng_uint8 iTile;
616 } mng_back;
617typedef mng_back * mng_backp;
618
619/* ************************************************************************** */
620
621typedef struct { /* FRAM */
622 mng_chunk_header sHeader;
623 mng_bool bEmpty;
624 mng_uint8 iMode;
625 mng_uint32 iNamesize;
626 mng_pchar zName;
627 mng_uint8 iChangedelay;
628 mng_uint8 iChangetimeout;
629 mng_uint8 iChangeclipping;
630 mng_uint8 iChangesyncid;
631 mng_uint32 iDelay;
632 mng_uint32 iTimeout;
633 mng_uint8 iBoundarytype;
634 mng_int32 iBoundaryl;
635 mng_int32 iBoundaryr;
636 mng_int32 iBoundaryt;
637 mng_int32 iBoundaryb;
638 mng_uint32 iCount;
639 mng_uint32p pSyncids;
640 } mng_fram;
641typedef mng_fram * mng_framp;
642
643/* ************************************************************************** */
644
645typedef struct { /* MOVE */
646 mng_chunk_header sHeader;
647 mng_uint16 iFirstid;
648 mng_uint16 iLastid;
649 mng_uint8 iMovetype;
650 mng_int32 iMovex;
651 mng_int32 iMovey;
652 } mng_move;
653typedef mng_move * mng_movep;
654
655/* ************************************************************************** */
656
657typedef struct { /* CLIP */
658 mng_chunk_header sHeader;
659 mng_uint16 iFirstid;
660 mng_uint16 iLastid;
661 mng_uint8 iCliptype;
662 mng_int32 iClipl;
663 mng_int32 iClipr;
664 mng_int32 iClipt;
665 mng_int32 iClipb;
666 } mng_clip;
667typedef mng_clip * mng_clipp;
668
669/* ************************************************************************** */
670
671typedef struct { /* SHOW */
672 mng_chunk_header sHeader;
673 mng_bool bEmpty;
674 mng_uint16 iFirstid;
675#ifdef MNG_OPTIMIZE_CHUNKREADER
676 mng_bool bHaslastid;
677#endif
678 mng_uint16 iLastid;
679 mng_uint8 iMode;
680 } mng_show;
681typedef mng_show * mng_showp;
682
683/* ************************************************************************** */
684
685typedef struct { /* TERM */
686 mng_chunk_header sHeader;
687 mng_uint8 iTermaction;
688 mng_uint8 iIteraction;
689 mng_uint32 iDelay;
690 mng_uint32 iItermax;
691 } mng_term;
692typedef mng_term * mng_termp;
693
694/* ************************************************************************** */
695
696#ifndef MNG_SKIPCHUNK_SAVE
697typedef struct { /* SAVE entry */
698 mng_uint8 iEntrytype;
699 mng_uint32arr2 iOffset; /* 0=MSI, 1=LSI */
700 mng_uint32arr2 iStarttime; /* 0=MSI, 1=LSI */
701 mng_uint32 iLayernr;
702 mng_uint32 iFramenr;
703 mng_uint32 iNamesize;
704 mng_pchar zName;
705 } mng_save_entry;
706typedef mng_save_entry * mng_save_entryp;
707
708typedef struct { /* SAVE */
709 mng_chunk_header sHeader;
710 mng_bool bEmpty;
711 mng_uint8 iOffsettype;
712 mng_uint32 iCount;
713 mng_save_entryp pEntries;
714 } mng_save;
715typedef mng_save * mng_savep;
716#endif
717
718/* ************************************************************************** */
719
720#ifndef MNG_SKIPCHUNK_SEEK
721typedef struct { /* SEEK */
722 mng_chunk_header sHeader;
723 mng_uint32 iNamesize;
724 mng_pchar zName;
725 } mng_seek;
726typedef mng_seek * mng_seekp;
727#endif
728
729/* ************************************************************************** */
730
731#ifndef MNG_SKIPCHUNK_eXPI
732typedef struct { /* eXPI */
733 mng_chunk_header sHeader;
734 mng_uint16 iSnapshotid;
735 mng_uint32 iNamesize;
736 mng_pchar zName;
737 } mng_expi;
738typedef mng_expi * mng_expip;
739#endif
740
741/* ************************************************************************** */
742
743#ifndef MNG_SKIPCHUNK_fPRI
744typedef struct { /* fPRI */
745 mng_chunk_header sHeader;
746 mng_uint8 iDeltatype;
747 mng_uint8 iPriority;
748 } mng_fpri;
749typedef mng_fpri * mng_fprip;
750#endif
751
752/* ************************************************************************** */
753
754#ifndef MNG_SKIPCHUNK_nEED
755typedef struct { /* nEED */
756 mng_chunk_header sHeader;
757 mng_uint32 iKeywordssize;
758 mng_pchar zKeywords;
759 } mng_need;
760typedef mng_need * mng_needp;
761#endif
762
763/* ************************************************************************** */
764
765#ifndef MNG_SKIPCHUNK_pHYg
766typedef mng_phys mng_phyg; /* pHYg */
767typedef mng_phyg * mng_phygp;
768#endif
769
770/* ************************************************************************** */
771
772#ifdef MNG_INCLUDE_JNG
773
774typedef struct { /* JHDR */
775 mng_chunk_header sHeader;
776 mng_uint32 iWidth;
777 mng_uint32 iHeight;
778 mng_uint8 iColortype;
779 mng_uint8 iImagesampledepth;
780 mng_uint8 iImagecompression;
781 mng_uint8 iImageinterlace;
782 mng_uint8 iAlphasampledepth;
783 mng_uint8 iAlphacompression;
784 mng_uint8 iAlphafilter;
785 mng_uint8 iAlphainterlace;
786 } mng_jhdr;
787typedef mng_jhdr * mng_jhdrp;
788
789/* ************************************************************************** */
790
791typedef mng_idat mng_jdaa; /* JDAA */
792typedef mng_jdaa * mng_jdaap;
793
794/* ************************************************************************** */
795
796typedef mng_idat mng_jdat; /* JDAT */
797typedef mng_jdat * mng_jdatp;
798
799/* ************************************************************************** */
800
801typedef struct { /* JSEP */
802 mng_chunk_header sHeader;
803 } mng_jsep;
804typedef mng_jsep * mng_jsepp;
805
806#endif /* MNG_INCLUDE_JNG */
807
808/* ************************************************************************** */
809
810#ifndef MNG_NO_DELTA_PNG
811
812typedef struct { /* DHDR */
813 mng_chunk_header sHeader;
814 mng_uint16 iObjectid;
815 mng_uint8 iImagetype;
816 mng_uint8 iDeltatype;
817#ifdef MNG_OPTIMIZE_CHUNKREADER
818 mng_bool bHasblocksize;
819#endif
820 mng_uint32 iBlockwidth;
821 mng_uint32 iBlockheight;
822#ifdef MNG_OPTIMIZE_CHUNKREADER
823 mng_bool bHasblockloc;
824#endif
825 mng_uint32 iBlockx;
826 mng_uint32 iBlocky;
827 } mng_dhdr;
828typedef mng_dhdr * mng_dhdrp;
829
830/* ************************************************************************** */
831
832typedef struct { /* PROM */
833 mng_chunk_header sHeader;
834 mng_uint8 iColortype;
835 mng_uint8 iSampledepth;
836 mng_uint8 iFilltype;
837 } mng_prom;
838typedef mng_prom * mng_promp;
839
840/* ************************************************************************** */
841
842typedef struct { /* IPNG */
843 mng_chunk_header sHeader;
844 } mng_ipng;
845typedef mng_ipng *mng_ipngp;
846
847/* ************************************************************************** */
848
849typedef struct { /* PPLT entry */
850 mng_uint8 iRed;
851 mng_uint8 iGreen;
852 mng_uint8 iBlue;
853 mng_uint8 iAlpha;
854 mng_bool bUsed;
855 } mng_pplt_entry;
856typedef mng_pplt_entry * mng_pplt_entryp;
857
858typedef struct { /* PPLT */
859 mng_chunk_header sHeader;
860 mng_uint8 iDeltatype;
861 mng_uint32 iCount;
862 mng_pplt_entry aEntries [256];
863 } mng_pplt;
864typedef mng_pplt * mng_ppltp;
865
866/* ************************************************************************** */
867
868typedef struct { /* IJNG */
869 mng_chunk_header sHeader;
870 } mng_ijng;
871typedef mng_ijng *mng_ijngp;
872
873/* ************************************************************************** */
874
875typedef struct { /* DROP */
876 mng_chunk_header sHeader;
877 mng_uint32 iCount;
878 mng_chunkidp pChunknames;
879 } mng_drop;
880typedef mng_drop * mng_dropp;
881
882/* ************************************************************************** */
883
884#ifndef MNG_SKIPCHUNK_DBYK
885typedef struct { /* DBYK */
886 mng_chunk_header sHeader;
887 mng_chunkid iChunkname;
888 mng_uint8 iPolarity;
889 mng_uint32 iKeywordssize;
890 mng_pchar zKeywords;
891 } mng_dbyk;
892typedef mng_dbyk * mng_dbykp;
893#endif
894
895/* ************************************************************************** */
896
897#ifndef MNG_SKIPCHUNK_ORDR
898typedef struct { /* ORDR entry */
899 mng_chunkid iChunkname;
900 mng_uint8 iOrdertype;
901 } mng_ordr_entry;
902typedef mng_ordr_entry * mng_ordr_entryp;
903
904typedef struct mng_ordr_struct { /* ORDR */
905 mng_chunk_header sHeader;
906 mng_uint32 iCount;
907 mng_ordr_entryp pEntries;
908 } mng_ordr;
909typedef mng_ordr * mng_ordrp;
910#endif
911#endif /* MNG_NO_DELTA_PNG */
912
913/* ************************************************************************** */
914
915typedef struct { /* MAGN */
916 mng_chunk_header sHeader;
917 mng_uint16 iFirstid;
918 mng_uint16 iLastid;
919 mng_uint8 iMethodX;
920 mng_uint16 iMX;
921 mng_uint16 iMY;
922 mng_uint16 iML;
923 mng_uint16 iMR;
924 mng_uint16 iMT;
925 mng_uint16 iMB;
926 mng_uint8 iMethodY;
927 } mng_magn;
928typedef mng_magn * mng_magnp;
929
930/* ************************************************************************** */
931
932typedef struct { /* evNT entry */
933 mng_uint8 iEventtype;
934 mng_uint8 iMasktype;
935 mng_int32 iLeft;
936 mng_int32 iRight;
937 mng_int32 iTop;
938 mng_int32 iBottom;
939 mng_uint16 iObjectid;
940 mng_uint8 iIndex;
941 mng_uint32 iSegmentnamesize;
942 mng_pchar zSegmentname;
943 } mng_evnt_entry;
944typedef mng_evnt_entry * mng_evnt_entryp;
945
946typedef struct { /* evNT */
947 mng_chunk_header sHeader;
948 mng_uint32 iCount;
949 mng_evnt_entryp pEntries;
950 } mng_evnt;
951typedef mng_evnt * mng_evntp;
952
953/* ************************************************************************** */
954
955#ifdef MNG_INCLUDE_MPNG_PROPOSAL
956typedef struct { /* mpNG frame */
957 mng_uint32 iX;
958 mng_uint32 iY;
959 mng_uint32 iWidth;
960 mng_uint32 iHeight;
961 mng_int32 iXoffset;
962 mng_int32 iYoffset;
963 mng_uint16 iTicks;
964 } mng_mpng_frame;
965typedef mng_mpng_frame * mng_mpng_framep;
966
967typedef struct { /* mpNG */
968 mng_chunk_header sHeader;
969 mng_uint32 iFramewidth;
970 mng_uint32 iFrameheight;
971 mng_uint16 iNumplays;
972 mng_uint16 iTickspersec;
973 mng_uint8 iCompressionmethod;
974 mng_uint32 iFramessize;
975 mng_mpng_framep pFrames;
976 } mng_mpng;
977typedef mng_mpng * mng_mpngp;
978#endif
979
980/* ************************************************************************** */
981
982#ifdef MNG_INCLUDE_ANG_PROPOSAL
983typedef struct { /* ahDR */
984 mng_chunk_header sHeader;
985 mng_uint32 iNumframes;
986 mng_uint32 iTickspersec;
987 mng_uint32 iNumplays;
988 mng_uint32 iTilewidth;
989 mng_uint32 iTileheight;
990 mng_uint8 iInterlace;
991 mng_uint8 iStillused;
992 } mng_ahdr;
993typedef mng_ahdr * mng_ahdrp;
994
995typedef struct { /* adAT tile */
996 mng_uint32 iTicks;
997 mng_int32 iXoffset;
998 mng_int32 iYoffset;
999 mng_uint8 iTilesource;
1000 } mng_adat_tile;
1001typedef mng_adat_tile * mng_adat_tilep;
1002
1003typedef struct { /* adAT */
1004 mng_chunk_header sHeader;
1005 mng_uint32 iTilessize;
1006 mng_adat_tilep pTiles;
1007 } mng_adat;
1008typedef mng_adat * mng_adatp;
1009#endif
1010
1011/* ************************************************************************** */
1012
1013typedef struct { /* unknown chunk */
1014 mng_chunk_header sHeader;
1015 mng_uint32 iDatasize;
1016 mng_ptr pData;
1017 } mng_unknown_chunk;
1018typedef mng_unknown_chunk * mng_unknown_chunkp;
1019
1020/* ************************************************************************** */
1021
1022#endif /* _libmng_chunks_h_ */
1023
1024/* ************************************************************************** */
1025/* * end of file * */
1026/* ************************************************************************** */
Note: See TracBrowser for help on using the repository browser.