summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/libmng/libmng_chunks.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/libmng/libmng_chunks.h')
-rw-r--r--src/3rdparty/libmng/libmng_chunks.h1026
1 files changed, 1026 insertions, 0 deletions
diff --git a/src/3rdparty/libmng/libmng_chunks.h b/src/3rdparty/libmng/libmng_chunks.h
new file mode 100644
index 0000000000..d10bf2dc79
--- /dev/null
+++ b/src/3rdparty/libmng/libmng_chunks.h
@@ -0,0 +1,1026 @@
+/* ************************************************************************** */
+/* * For conditions of distribution and use, * */
+/* * see copyright notice in libmng.h * */
+/* ************************************************************************** */
+/* * * */
+/* * project : libmng * */
+/* * file : libmng_chunks.h copyright (c) 2000-2007 G.Juyn * */
+/* * version : 1.0.10 * */
+/* * * */
+/* * purpose : Chunk structures (definition) * */
+/* * * */
+/* * author : G.Juyn * */
+/* * * */
+/* * comment : Definition of known chunk structures * */
+/* * * */
+/* * changes : 0.5.1 - 05/04/2000 - G.Juyn * */
+/* * - put in some extra comments * */
+/* * 0.5.1 - 05/06/2000 - G.Juyn * */
+/* * - fixed layout for sBIT, PPLT * */
+/* * 0.5.1 - 05/08/2000 - G.Juyn * */
+/* * - changed write callback definition * */
+/* * - changed strict-ANSI stuff * */
+/* * 0.5.1 - 05/11/2000 - G.Juyn * */
+/* * - fixed layout for PPLT again (missed deltatype ?!?) * */
+/* * * */
+/* * 0.5.2 - 05/31/2000 - G.Juyn * */
+/* * - removed useless definition (contributed by Tim Rowley) * */
+/* * 0.5.2 - 06/03/2000 - G.Juyn * */
+/* * - fixed makeup for Linux gcc compile * */
+/* * * */
+/* * 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 - 09/10/2000 - G.Juyn * */
+/* * - fixed DEFI behavior * */
+/* * 0.9.3 - 10/16/2000 - G.Juyn * */
+/* * - added JDAA chunk * */
+/* * * */
+/* * 1.0.5 - 08/19/2002 - G.Juyn * */
+/* * - added HLAPI function to copy chunks * */
+/* * 1.0.5 - 09/14/2002 - G.Juyn * */
+/* * - added event handling for dynamic MNG * */
+/* * 1.0.5 - 11/28/2002 - G.Juyn * */
+/* * - fixed definition of iMethodX/Y for MAGN chunk * */
+/* * * */
+/* * 1.0.6 - 05/25/2003 - G.R-P * */
+/* * added MNG_SKIPCHUNK_cHNK footprint optimizations * */
+/* * 1.0.6 - 07/29/2003 - G.R-P * */
+/* * - added conditionals around PAST chunk support * */
+/* * * */
+/* * 1.0.7 - 03/24/2004 - G.R-P * */
+/* * - added conditional around MNG_NO_DELTA_PNG support * */
+/* * * */
+/* * 1.0.9 - 12/05/2004 - G.Juyn * */
+/* * - added conditional MNG_OPTIMIZE_CHUNKINITFREE * */
+/* * 1.0.9 - 12/06/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_chunks_h_
+#define _libmng_chunks_h_
+
+/* ************************************************************************** */
+
+#ifdef MNG_SWAP_ENDIAN
+#define PNG_SIG 0x474e5089L
+#define JNG_SIG 0x474e4a8bL
+#define MNG_SIG 0x474e4d8aL
+#define POST_SIG 0x0a1a0a0dL
+#else
+#define PNG_SIG 0x89504e47L
+#define JNG_SIG 0x8b4a4e47L
+#define MNG_SIG 0x8a4d4e47L
+#define POST_SIG 0x0d0a1a0aL
+#endif
+
+/* ************************************************************************** */
+
+#ifdef MNG_OPTIMIZE_CHUNKREADER
+
+typedef mng_retcode (*mng_f_specialfunc) (mng_datap pData,
+ mng_chunkp pChunk,
+ mng_uint32* piRawlen,
+ mng_uint8p* ppRawdata);
+
+typedef mng_retcode (*mng_c_specialfunc) (mng_datap pData,
+ mng_chunkp pChunk);
+
+#define MNG_FIELD_OPTIONAL 0x0001
+#define MNG_FIELD_TERMINATOR 0x0002
+#define MNG_FIELD_REPETITIVE 0x0004
+#define MNG_FIELD_DEFLATED 0x0008
+#define MNG_FIELD_IFIMGTYPES 0x01F0 /* image-type mask */
+#define MNG_FIELD_IFIMGTYPE0 0x0010
+#define MNG_FIELD_IFIMGTYPE2 0x0020
+#define MNG_FIELD_IFIMGTYPE3 0x0040
+#define MNG_FIELD_IFIMGTYPE4 0x0080
+#define MNG_FIELD_IFIMGTYPE6 0x0100
+#define MNG_FIELD_PUTIMGTYPE 0x0200
+#define MNG_FIELD_NOHIGHBIT 0x0400
+#define MNG_FIELD_GROUPMASK 0x7000
+#define MNG_FIELD_GROUP1 0x1000
+#define MNG_FIELD_GROUP2 0x2000
+#define MNG_FIELD_GROUP3 0x3000
+#define MNG_FIELD_GROUP4 0x4000
+#define MNG_FIELD_GROUP5 0x5000
+#define MNG_FIELD_GROUP6 0x6000
+#define MNG_FIELD_GROUP7 0x7000
+#define MNG_FIELD_INT 0x8000
+
+typedef struct { /* chunk-field descriptor */
+ mng_f_specialfunc pSpecialfunc;
+ mng_uint16 iFlags;
+ mng_uint16 iMinvalue;
+ mng_uint16 iMaxvalue;
+ mng_uint16 iLengthmin;
+ mng_uint16 iLengthmax;
+ mng_uint16 iOffsetchunk;
+ mng_uint16 iOffsetchunkind;
+ mng_uint16 iOffsetchunklen;
+ } mng_field_descriptor;
+typedef mng_field_descriptor * mng_field_descp;
+
+#define MNG_DESCR_GLOBAL 0x0001
+#define MNG_DESCR_EMPTY 0x0002
+#define MNG_DESCR_EMPTYEMBED 0x0006
+#define MNG_DESCR_EMPTYGLOBAL 0x000A
+
+#define MNG_DESCR_GenHDR 0x0001 /* IHDR/JHDR/BASI/DHDR */
+#define MNG_DESCR_JngHDR 0x0002 /* JHDR/DHDR */
+#define MNG_DESCR_MHDR 0x0004
+#define MNG_DESCR_IHDR 0x0008
+#define MNG_DESCR_JHDR 0x0010
+#define MNG_DESCR_DHDR 0x0020
+#define MNG_DESCR_LOOP 0x0040
+#define MNG_DESCR_PLTE 0x0080
+#define MNG_DESCR_SAVE 0x0100
+
+#define MNG_DESCR_NOIHDR 0x0001
+#define MNG_DESCR_NOJHDR 0x0002
+#define MNG_DESCR_NOBASI 0x0004
+#define MNG_DESCR_NODHDR 0x0008
+#define MNG_DESCR_NOIDAT 0x0010
+#define MNG_DESCR_NOJDAT 0x0020
+#define MNG_DESCR_NOJDAA 0x0040
+#define MNG_DESCR_NOPLTE 0x0080
+#define MNG_DESCR_NOJSEP 0x0100
+#define MNG_DESCR_NOMHDR 0x0200
+#define MNG_DESCR_NOTERM 0x0400
+#define MNG_DESCR_NOLOOP 0x0800
+#define MNG_DESCR_NOSAVE 0x1000
+
+typedef struct { /* chunk descriptor */
+ mng_imgtype eImgtype;
+ mng_createobjtype eCreateobject;
+ mng_uint16 iObjsize;
+ mng_uint16 iOffsetempty;
+ mng_ptr pObjcleanup;
+ mng_ptr pObjprocess;
+ mng_c_specialfunc pSpecialfunc;
+ mng_field_descp pFielddesc;
+ mng_uint16 iFielddesc;
+ mng_uint16 iAllowed;
+ mng_uint16 iMusthaves;
+ mng_uint16 iMustNOThaves;
+ } mng_chunk_descriptor;
+typedef mng_chunk_descriptor * mng_chunk_descp;
+
+#endif /* MNG_OPTIMIZE_CHUNKREADER */
+
+/* ************************************************************************** */
+
+typedef mng_retcode (*mng_createchunk) (mng_datap pData,
+ mng_chunkp pHeader,
+ mng_chunkp* ppChunk);
+
+typedef mng_retcode (*mng_cleanupchunk) (mng_datap pData,
+ mng_chunkp pHeader);
+
+typedef mng_retcode (*mng_readchunk) (mng_datap pData,
+ mng_chunkp pHeader,
+ mng_uint32 iRawlen,
+ mng_uint8p pRawdata,
+ mng_chunkp* pChunk);
+
+typedef mng_retcode (*mng_writechunk) (mng_datap pData,
+ mng_chunkp pChunk);
+
+typedef mng_retcode (*mng_assignchunk) (mng_datap pData,
+ mng_chunkp pChunkto,
+ mng_chunkp pChunkfrom);
+
+/* ************************************************************************** */
+
+typedef struct { /* generic header */
+ mng_chunkid iChunkname;
+ mng_createchunk fCreate;
+ mng_cleanupchunk fCleanup;
+ mng_readchunk fRead;
+ mng_writechunk fWrite;
+ mng_assignchunk fAssign;
+ mng_chunkp pNext; /* for double-linked list */
+ mng_chunkp pPrev;
+#ifdef MNG_OPTIMIZE_CHUNKINITFREE
+ mng_size_t iChunksize;
+#endif
+#ifdef MNG_OPTIMIZE_CHUNKREADER
+ mng_chunk_descp pChunkdescr;
+#endif
+ } mng_chunk_header;
+typedef mng_chunk_header * mng_chunk_headerp;
+
+/* ************************************************************************** */
+
+typedef struct { /* IHDR */
+ mng_chunk_header sHeader;
+ mng_uint32 iWidth;
+ mng_uint32 iHeight;
+ mng_uint8 iBitdepth;
+ mng_uint8 iColortype;
+ mng_uint8 iCompression;
+ mng_uint8 iFilter;
+ mng_uint8 iInterlace;
+ } mng_ihdr;
+typedef mng_ihdr * mng_ihdrp;
+
+/* ************************************************************************** */
+
+typedef struct { /* PLTE */
+ mng_chunk_header sHeader;
+ mng_bool bEmpty;
+ mng_uint32 iEntrycount;
+ mng_rgbpaltab aEntries;
+ } mng_plte;
+typedef mng_plte * mng_pltep;
+
+/* ************************************************************************** */
+
+typedef struct { /* IDAT */
+ mng_chunk_header sHeader;
+ mng_bool bEmpty;
+ mng_uint32 iDatasize;
+ mng_ptr pData;
+ } mng_idat;
+typedef mng_idat * mng_idatp;
+
+/* ************************************************************************** */
+
+typedef struct { /* IEND */
+ mng_chunk_header sHeader;
+ } mng_iend;
+typedef mng_iend * mng_iendp;
+
+/* ************************************************************************** */
+
+typedef struct { /* tRNS */
+ mng_chunk_header sHeader;
+ mng_bool bEmpty;
+ mng_bool bGlobal;
+ mng_uint8 iType; /* colortype (0,2,3) */
+ mng_uint32 iCount;
+ mng_uint8arr aEntries;
+ mng_uint16 iGray;
+ mng_uint16 iRed;
+ mng_uint16 iGreen;
+ mng_uint16 iBlue;
+ mng_uint32 iRawlen;
+ mng_uint8arr aRawdata;
+ } mng_trns;
+typedef mng_trns * mng_trnsp;
+
+/* ************************************************************************** */
+
+typedef struct { /* gAMA */
+ mng_chunk_header sHeader;
+ mng_bool bEmpty;
+ mng_uint32 iGamma;
+ } mng_gama;
+typedef mng_gama * mng_gamap;
+
+/* ************************************************************************** */
+
+#ifndef MNG_SKIPCHUNK_cHRM
+typedef struct { /* cHRM */
+ mng_chunk_header sHeader;
+ mng_bool bEmpty;
+ mng_uint32 iWhitepointx;
+ mng_uint32 iWhitepointy;
+ mng_uint32 iRedx;
+ mng_uint32 iRedy;
+ mng_uint32 iGreenx;
+ mng_uint32 iGreeny;
+ mng_uint32 iBluex;
+ mng_uint32 iBluey;
+ } mng_chrm;
+typedef mng_chrm * mng_chrmp;
+#endif
+
+/* ************************************************************************** */
+
+typedef struct { /* sRGB */
+ mng_chunk_header sHeader;
+ mng_bool bEmpty;
+ mng_uint8 iRenderingintent;
+ } mng_srgb;
+typedef mng_srgb * mng_srgbp;
+
+/* ************************************************************************** */
+
+#ifndef MNG_SKIPCHUNK_iCCP
+typedef struct { /* iCCP */
+ mng_chunk_header sHeader;
+ mng_bool bEmpty;
+ mng_uint32 iNamesize;
+ mng_pchar zName;
+ mng_uint8 iCompression;
+ mng_uint32 iProfilesize;
+ mng_ptr pProfile;
+ } mng_iccp;
+typedef mng_iccp * mng_iccpp;
+#endif
+
+/* ************************************************************************** */
+
+#ifndef MNG_SKIPCHUNK_tEXt
+typedef struct { /* tEXt */
+ mng_chunk_header sHeader;
+ mng_uint32 iKeywordsize;
+ mng_pchar zKeyword;
+ mng_uint32 iTextsize;
+ mng_pchar zText;
+ } mng_text;
+typedef mng_text * mng_textp;
+#endif
+
+/* ************************************************************************** */
+
+#ifndef MNG_SKIPCHUNK_zTXt
+typedef struct { /* zTXt */
+ mng_chunk_header sHeader;
+ mng_uint32 iKeywordsize;
+ mng_pchar zKeyword;
+ mng_uint8 iCompression;
+ mng_uint32 iTextsize;
+ mng_pchar zText;
+ } mng_ztxt;
+typedef mng_ztxt * mng_ztxtp;
+#endif
+
+/* ************************************************************************** */
+
+#ifndef MNG_SKIPCHUNK_iTXt
+typedef struct { /* iTXt */
+ mng_chunk_header sHeader;
+ mng_uint32 iKeywordsize;
+ mng_pchar zKeyword;
+ mng_uint8 iCompressionflag;
+ mng_uint8 iCompressionmethod;
+ mng_uint32 iLanguagesize;
+ mng_pchar zLanguage;
+ mng_uint32 iTranslationsize;
+ mng_pchar zTranslation;
+ mng_uint32 iTextsize;
+ mng_pchar zText;
+ } mng_itxt;
+typedef mng_itxt * mng_itxtp;
+#endif
+
+/* ************************************************************************** */
+
+#ifndef MNG_SKIPCHUNK_bKGD
+typedef struct { /* bKGD */
+ mng_chunk_header sHeader;
+ mng_bool bEmpty;
+ mng_uint8 iType; /* 3=indexed, 0=gray, 2=rgb */
+ mng_uint8 iIndex;
+ mng_uint16 iGray;
+ mng_uint16 iRed;
+ mng_uint16 iGreen;
+ mng_uint16 iBlue;
+ } mng_bkgd;
+typedef mng_bkgd * mng_bkgdp;
+#endif
+
+/* ************************************************************************** */
+
+#ifndef MNG_SKIPCHUNK_pHYs
+typedef struct { /* pHYs */
+ mng_chunk_header sHeader;
+ mng_bool bEmpty;
+ mng_uint32 iSizex;
+ mng_uint32 iSizey;
+ mng_uint8 iUnit;
+ } mng_phys;
+typedef mng_phys * mng_physp;
+#endif
+
+/* ************************************************************************** */
+#ifndef MNG_SKIPCHUNK_sBIT
+
+typedef struct { /* sBIT */
+ mng_chunk_header sHeader;
+ mng_bool bEmpty;
+ mng_uint8 iType; /* colortype (0,2,3,4,6,10,12,14,16) */
+ mng_uint8arr4 aBits;
+ } mng_sbit;
+typedef mng_sbit * mng_sbitp;
+#endif
+
+/* ************************************************************************** */
+
+#ifndef MNG_SKIPCHUNK_sPLT
+typedef struct { /* sPLT */
+ mng_chunk_header sHeader;
+ mng_bool bEmpty;
+ mng_uint32 iNamesize;
+ mng_pchar zName;
+ mng_uint8 iSampledepth;
+ mng_uint32 iEntrycount;
+ mng_ptr pEntries;
+ } mng_splt;
+typedef mng_splt * mng_spltp;
+#endif
+
+/* ************************************************************************** */
+
+#ifndef MNG_SKIPCHUNK_hIST
+typedef struct { /* hIST */
+ mng_chunk_header sHeader;
+ mng_uint32 iEntrycount;
+ mng_uint16arr aEntries;
+ } mng_hist;
+typedef mng_hist * mng_histp;
+#endif
+
+/* ************************************************************************** */
+
+#ifndef MNG_SKIPCHUNK_tIME
+typedef struct { /* tIME */
+ mng_chunk_header sHeader;
+ mng_uint16 iYear;
+ mng_uint8 iMonth;
+ mng_uint8 iDay;
+ mng_uint8 iHour;
+ mng_uint8 iMinute;
+ mng_uint8 iSecond;
+ } mng_time;
+typedef mng_time * mng_timep;
+#endif
+
+/* ************************************************************************** */
+
+typedef struct { /* MHDR */
+ mng_chunk_header sHeader;
+ mng_uint32 iWidth;
+ mng_uint32 iHeight;
+ mng_uint32 iTicks;
+ mng_uint32 iLayercount;
+ mng_uint32 iFramecount;
+ mng_uint32 iPlaytime;
+ mng_uint32 iSimplicity;
+ } mng_mhdr;
+typedef mng_mhdr * mng_mhdrp;
+
+/* ************************************************************************** */
+
+typedef struct { /* MEND */
+ mng_chunk_header sHeader;
+ } mng_mend;
+typedef mng_mend * mng_mendp;
+
+/* ************************************************************************** */
+
+typedef struct { /* LOOP */
+ mng_chunk_header sHeader;
+ mng_uint8 iLevel;
+ mng_uint32 iRepeat;
+ mng_uint8 iTermination;
+ mng_uint32 iItermin;
+ mng_uint32 iItermax;
+ mng_uint32 iCount;
+ mng_uint32p pSignals;
+ } mng_loop;
+typedef mng_loop * mng_loopp;
+
+/* ************************************************************************** */
+
+typedef struct { /* ENDL */
+ mng_chunk_header sHeader;
+ mng_uint8 iLevel;
+ } mng_endl;
+typedef mng_endl * mng_endlp;
+
+/* ************************************************************************** */
+
+typedef struct { /* DEFI */
+ mng_chunk_header sHeader;
+ mng_uint16 iObjectid;
+ mng_bool bHasdonotshow;
+ mng_uint8 iDonotshow;
+ mng_bool bHasconcrete;
+ mng_uint8 iConcrete;
+ mng_bool bHasloca;
+ mng_int32 iXlocation;
+ mng_int32 iYlocation;
+ mng_bool bHasclip;
+ mng_int32 iLeftcb;
+ mng_int32 iRightcb;
+ mng_int32 iTopcb;
+ mng_int32 iBottomcb;
+ } mng_defi;
+typedef mng_defi * mng_defip;
+
+/* ************************************************************************** */
+
+typedef struct { /* BASI */
+ mng_chunk_header sHeader;
+ mng_uint32 iWidth;
+ mng_uint32 iHeight;
+ mng_uint8 iBitdepth;
+ mng_uint8 iColortype;
+ mng_uint8 iCompression;
+ mng_uint8 iFilter;
+ mng_uint8 iInterlace;
+ mng_uint16 iRed;
+ mng_uint16 iGreen;
+ mng_uint16 iBlue;
+#ifdef MNG_OPTIMIZE_CHUNKREADER
+ mng_bool bHasalpha;
+#endif
+ mng_uint16 iAlpha;
+ mng_uint8 iViewable;
+ } mng_basi;
+typedef mng_basi * mng_basip;
+
+/* ************************************************************************** */
+
+typedef struct { /* CLON */
+ mng_chunk_header sHeader;
+ mng_uint16 iSourceid;
+ mng_uint16 iCloneid;
+ mng_uint8 iClonetype;
+#ifdef MNG_OPTIMIZE_CHUNKREADER
+ mng_bool bHasdonotshow;
+#endif
+ mng_uint8 iDonotshow;
+ mng_uint8 iConcrete;
+ mng_bool bHasloca;
+ mng_uint8 iLocationtype;
+ mng_int32 iLocationx;
+ mng_int32 iLocationy;
+ } mng_clon;
+typedef mng_clon * mng_clonp;
+
+/* ************************************************************************** */
+
+#ifndef MNG_SKIPCHUNK_PAST
+typedef struct { /* PAST source */
+ mng_uint16 iSourceid;
+ mng_uint8 iComposition;
+ mng_uint8 iOrientation;
+ mng_uint8 iOffsettype;
+ mng_int32 iOffsetx;
+ mng_int32 iOffsety;
+ mng_uint8 iBoundarytype;
+ mng_int32 iBoundaryl;
+ mng_int32 iBoundaryr;
+ mng_int32 iBoundaryt;
+ mng_int32 iBoundaryb;
+ } mng_past_source;
+typedef mng_past_source * mng_past_sourcep;
+
+typedef struct { /* PAST */
+ mng_chunk_header sHeader;
+ mng_uint16 iDestid;
+ mng_uint8 iTargettype;
+ mng_int32 iTargetx;
+ mng_int32 iTargety;
+ mng_uint32 iCount;
+ mng_past_sourcep pSources;
+ } mng_past;
+typedef mng_past * mng_pastp;
+#endif
+
+/* ************************************************************************** */
+
+typedef struct { /* DISC */
+ mng_chunk_header sHeader;
+ mng_uint32 iCount;
+ mng_uint16p pObjectids;
+ } mng_disc;
+typedef mng_disc * mng_discp;
+
+/* ************************************************************************** */
+
+typedef struct { /* BACK */
+ mng_chunk_header sHeader;
+ mng_uint16 iRed;
+ mng_uint16 iGreen;
+ mng_uint16 iBlue;
+ mng_uint8 iMandatory;
+ mng_uint16 iImageid;
+ mng_uint8 iTile;
+ } mng_back;
+typedef mng_back * mng_backp;
+
+/* ************************************************************************** */
+
+typedef struct { /* FRAM */
+ mng_chunk_header sHeader;
+ mng_bool bEmpty;
+ mng_uint8 iMode;
+ mng_uint32 iNamesize;
+ mng_pchar zName;
+ mng_uint8 iChangedelay;
+ mng_uint8 iChangetimeout;
+ mng_uint8 iChangeclipping;
+ mng_uint8 iChangesyncid;
+ mng_uint32 iDelay;
+ mng_uint32 iTimeout;
+ mng_uint8 iBoundarytype;
+ mng_int32 iBoundaryl;
+ mng_int32 iBoundaryr;
+ mng_int32 iBoundaryt;
+ mng_int32 iBoundaryb;
+ mng_uint32 iCount;
+ mng_uint32p pSyncids;
+ } mng_fram;
+typedef mng_fram * mng_framp;
+
+/* ************************************************************************** */
+
+typedef struct { /* MOVE */
+ mng_chunk_header sHeader;
+ mng_uint16 iFirstid;
+ mng_uint16 iLastid;
+ mng_uint8 iMovetype;
+ mng_int32 iMovex;
+ mng_int32 iMovey;
+ } mng_move;
+typedef mng_move * mng_movep;
+
+/* ************************************************************************** */
+
+typedef struct { /* CLIP */
+ mng_chunk_header sHeader;
+ mng_uint16 iFirstid;
+ mng_uint16 iLastid;
+ mng_uint8 iCliptype;
+ mng_int32 iClipl;
+ mng_int32 iClipr;
+ mng_int32 iClipt;
+ mng_int32 iClipb;
+ } mng_clip;
+typedef mng_clip * mng_clipp;
+
+/* ************************************************************************** */
+
+typedef struct { /* SHOW */
+ mng_chunk_header sHeader;
+ mng_bool bEmpty;
+ mng_uint16 iFirstid;
+#ifdef MNG_OPTIMIZE_CHUNKREADER
+ mng_bool bHaslastid;
+#endif
+ mng_uint16 iLastid;
+ mng_uint8 iMode;
+ } mng_show;
+typedef mng_show * mng_showp;
+
+/* ************************************************************************** */
+
+typedef struct { /* TERM */
+ mng_chunk_header sHeader;
+ mng_uint8 iTermaction;
+ mng_uint8 iIteraction;
+ mng_uint32 iDelay;
+ mng_uint32 iItermax;
+ } mng_term;
+typedef mng_term * mng_termp;
+
+/* ************************************************************************** */
+
+#ifndef MNG_SKIPCHUNK_SAVE
+typedef struct { /* SAVE entry */
+ mng_uint8 iEntrytype;
+ mng_uint32arr2 iOffset; /* 0=MSI, 1=LSI */
+ mng_uint32arr2 iStarttime; /* 0=MSI, 1=LSI */
+ mng_uint32 iLayernr;
+ mng_uint32 iFramenr;
+ mng_uint32 iNamesize;
+ mng_pchar zName;
+ } mng_save_entry;
+typedef mng_save_entry * mng_save_entryp;
+
+typedef struct { /* SAVE */
+ mng_chunk_header sHeader;
+ mng_bool bEmpty;
+ mng_uint8 iOffsettype;
+ mng_uint32 iCount;
+ mng_save_entryp pEntries;
+ } mng_save;
+typedef mng_save * mng_savep;
+#endif
+
+/* ************************************************************************** */
+
+#ifndef MNG_SKIPCHUNK_SEEK
+typedef struct { /* SEEK */
+ mng_chunk_header sHeader;
+ mng_uint32 iNamesize;
+ mng_pchar zName;
+ } mng_seek;
+typedef mng_seek * mng_seekp;
+#endif
+
+/* ************************************************************************** */
+
+#ifndef MNG_SKIPCHUNK_eXPI
+typedef struct { /* eXPI */
+ mng_chunk_header sHeader;
+ mng_uint16 iSnapshotid;
+ mng_uint32 iNamesize;
+ mng_pchar zName;
+ } mng_expi;
+typedef mng_expi * mng_expip;
+#endif
+
+/* ************************************************************************** */
+
+#ifndef MNG_SKIPCHUNK_fPRI
+typedef struct { /* fPRI */
+ mng_chunk_header sHeader;
+ mng_uint8 iDeltatype;
+ mng_uint8 iPriority;
+ } mng_fpri;
+typedef mng_fpri * mng_fprip;
+#endif
+
+/* ************************************************************************** */
+
+#ifndef MNG_SKIPCHUNK_nEED
+typedef struct { /* nEED */
+ mng_chunk_header sHeader;
+ mng_uint32 iKeywordssize;
+ mng_pchar zKeywords;
+ } mng_need;
+typedef mng_need * mng_needp;
+#endif
+
+/* ************************************************************************** */
+
+#ifndef MNG_SKIPCHUNK_pHYg
+typedef mng_phys mng_phyg; /* pHYg */
+typedef mng_phyg * mng_phygp;
+#endif
+
+/* ************************************************************************** */
+
+#ifdef MNG_INCLUDE_JNG
+
+typedef struct { /* JHDR */
+ mng_chunk_header sHeader;
+ mng_uint32 iWidth;
+ mng_uint32 iHeight;
+ mng_uint8 iColortype;
+ mng_uint8 iImagesampledepth;
+ mng_uint8 iImagecompression;
+ mng_uint8 iImageinterlace;
+ mng_uint8 iAlphasampledepth;
+ mng_uint8 iAlphacompression;
+ mng_uint8 iAlphafilter;
+ mng_uint8 iAlphainterlace;
+ } mng_jhdr;
+typedef mng_jhdr * mng_jhdrp;
+
+/* ************************************************************************** */
+
+typedef mng_idat mng_jdaa; /* JDAA */
+typedef mng_jdaa * mng_jdaap;
+
+/* ************************************************************************** */
+
+typedef mng_idat mng_jdat; /* JDAT */
+typedef mng_jdat * mng_jdatp;
+
+/* ************************************************************************** */
+
+typedef struct { /* JSEP */
+ mng_chunk_header sHeader;
+ } mng_jsep;
+typedef mng_jsep * mng_jsepp;
+
+#endif /* MNG_INCLUDE_JNG */
+
+/* ************************************************************************** */
+
+#ifndef MNG_NO_DELTA_PNG
+
+typedef struct { /* DHDR */
+ mng_chunk_header sHeader;
+ mng_uint16 iObjectid;
+ mng_uint8 iImagetype;
+ mng_uint8 iDeltatype;
+#ifdef MNG_OPTIMIZE_CHUNKREADER
+ mng_bool bHasblocksize;
+#endif
+ mng_uint32 iBlockwidth;
+ mng_uint32 iBlockheight;
+#ifdef MNG_OPTIMIZE_CHUNKREADER
+ mng_bool bHasblockloc;
+#endif
+ mng_uint32 iBlockx;
+ mng_uint32 iBlocky;
+ } mng_dhdr;
+typedef mng_dhdr * mng_dhdrp;
+
+/* ************************************************************************** */
+
+typedef struct { /* PROM */
+ mng_chunk_header sHeader;
+ mng_uint8 iColortype;
+ mng_uint8 iSampledepth;
+ mng_uint8 iFilltype;
+ } mng_prom;
+typedef mng_prom * mng_promp;
+
+/* ************************************************************************** */
+
+typedef struct { /* IPNG */
+ mng_chunk_header sHeader;
+ } mng_ipng;
+typedef mng_ipng *mng_ipngp;
+
+/* ************************************************************************** */
+
+typedef struct { /* PPLT entry */
+ mng_uint8 iRed;
+ mng_uint8 iGreen;
+ mng_uint8 iBlue;
+ mng_uint8 iAlpha;
+ mng_bool bUsed;
+ } mng_pplt_entry;
+typedef mng_pplt_entry * mng_pplt_entryp;
+
+typedef struct { /* PPLT */
+ mng_chunk_header sHeader;
+ mng_uint8 iDeltatype;
+ mng_uint32 iCount;
+ mng_pplt_entry aEntries [256];
+ } mng_pplt;
+typedef mng_pplt * mng_ppltp;
+
+/* ************************************************************************** */
+
+typedef struct { /* IJNG */
+ mng_chunk_header sHeader;
+ } mng_ijng;
+typedef mng_ijng *mng_ijngp;
+
+/* ************************************************************************** */
+
+typedef struct { /* DROP */
+ mng_chunk_header sHeader;
+ mng_uint32 iCount;
+ mng_chunkidp pChunknames;
+ } mng_drop;
+typedef mng_drop * mng_dropp;
+
+/* ************************************************************************** */
+
+#ifndef MNG_SKIPCHUNK_DBYK
+typedef struct { /* DBYK */
+ mng_chunk_header sHeader;
+ mng_chunkid iChunkname;
+ mng_uint8 iPolarity;
+ mng_uint32 iKeywordssize;
+ mng_pchar zKeywords;
+ } mng_dbyk;
+typedef mng_dbyk * mng_dbykp;
+#endif
+
+/* ************************************************************************** */
+
+#ifndef MNG_SKIPCHUNK_ORDR
+typedef struct { /* ORDR entry */
+ mng_chunkid iChunkname;
+ mng_uint8 iOrdertype;
+ } mng_ordr_entry;
+typedef mng_ordr_entry * mng_ordr_entryp;
+
+typedef struct mng_ordr_struct { /* ORDR */
+ mng_chunk_header sHeader;
+ mng_uint32 iCount;
+ mng_ordr_entryp pEntries;
+ } mng_ordr;
+typedef mng_ordr * mng_ordrp;
+#endif
+#endif /* MNG_NO_DELTA_PNG */
+
+/* ************************************************************************** */
+
+typedef struct { /* MAGN */
+ mng_chunk_header sHeader;
+ mng_uint16 iFirstid;
+ mng_uint16 iLastid;
+ mng_uint8 iMethodX;
+ mng_uint16 iMX;
+ mng_uint16 iMY;
+ mng_uint16 iML;
+ mng_uint16 iMR;
+ mng_uint16 iMT;
+ mng_uint16 iMB;
+ mng_uint8 iMethodY;
+ } mng_magn;
+typedef mng_magn * mng_magnp;
+
+/* ************************************************************************** */
+
+typedef struct { /* evNT entry */
+ mng_uint8 iEventtype;
+ mng_uint8 iMasktype;
+ mng_int32 iLeft;
+ mng_int32 iRight;
+ mng_int32 iTop;
+ mng_int32 iBottom;
+ mng_uint16 iObjectid;
+ mng_uint8 iIndex;
+ mng_uint32 iSegmentnamesize;
+ mng_pchar zSegmentname;
+ } mng_evnt_entry;
+typedef mng_evnt_entry * mng_evnt_entryp;
+
+typedef struct { /* evNT */
+ mng_chunk_header sHeader;
+ mng_uint32 iCount;
+ mng_evnt_entryp pEntries;
+ } mng_evnt;
+typedef mng_evnt * mng_evntp;
+
+/* ************************************************************************** */
+
+#ifdef MNG_INCLUDE_MPNG_PROPOSAL
+typedef struct { /* mpNG frame */
+ mng_uint32 iX;
+ mng_uint32 iY;
+ mng_uint32 iWidth;
+ mng_uint32 iHeight;
+ mng_int32 iXoffset;
+ mng_int32 iYoffset;
+ mng_uint16 iTicks;
+ } mng_mpng_frame;
+typedef mng_mpng_frame * mng_mpng_framep;
+
+typedef struct { /* mpNG */
+ mng_chunk_header sHeader;
+ mng_uint32 iFramewidth;
+ mng_uint32 iFrameheight;
+ mng_uint16 iNumplays;
+ mng_uint16 iTickspersec;
+ mng_uint8 iCompressionmethod;
+ mng_uint32 iFramessize;
+ mng_mpng_framep pFrames;
+ } mng_mpng;
+typedef mng_mpng * mng_mpngp;
+#endif
+
+/* ************************************************************************** */
+
+#ifdef MNG_INCLUDE_ANG_PROPOSAL
+typedef struct { /* ahDR */
+ mng_chunk_header sHeader;
+ mng_uint32 iNumframes;
+ mng_uint32 iTickspersec;
+ mng_uint32 iNumplays;
+ mng_uint32 iTilewidth;
+ mng_uint32 iTileheight;
+ mng_uint8 iInterlace;
+ mng_uint8 iStillused;
+ } mng_ahdr;
+typedef mng_ahdr * mng_ahdrp;
+
+typedef struct { /* adAT tile */
+ mng_uint32 iTicks;
+ mng_int32 iXoffset;
+ mng_int32 iYoffset;
+ mng_uint8 iTilesource;
+ } mng_adat_tile;
+typedef mng_adat_tile * mng_adat_tilep;
+
+typedef struct { /* adAT */
+ mng_chunk_header sHeader;
+ mng_uint32 iTilessize;
+ mng_adat_tilep pTiles;
+ } mng_adat;
+typedef mng_adat * mng_adatp;
+#endif
+
+/* ************************************************************************** */
+
+typedef struct { /* unknown chunk */
+ mng_chunk_header sHeader;
+ mng_uint32 iDatasize;
+ mng_ptr pData;
+ } mng_unknown_chunk;
+typedef mng_unknown_chunk * mng_unknown_chunkp;
+
+/* ************************************************************************** */
+
+#endif /* _libmng_chunks_h_ */
+
+/* ************************************************************************** */
+/* * end of file * */
+/* ************************************************************************** */