/* ************************************************************************** */ /* * 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 * */ /* ************************************************************************** */