diff options
Diffstat (limited to 'plugins/FreeImage/src/LibMNG/libmng_chunks.h')
| -rw-r--r-- | plugins/FreeImage/src/LibMNG/libmng_chunks.h | 1026 | 
1 files changed, 1026 insertions, 0 deletions
diff --git a/plugins/FreeImage/src/LibMNG/libmng_chunks.h b/plugins/FreeImage/src/LibMNG/libmng_chunks.h new file mode 100644 index 0000000000..6c50d8b867 --- /dev/null +++ b/plugins/FreeImage/src/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                                                            * */
 +/* ************************************************************************** */
  | 
