📄 libmng_data.h
字号:
/* ************************************************************************** *//* * For conditions of distribution and use, * *//* * see copyright notice in libmng.h * *//* ************************************************************************** *//* * * *//* * project : libmng * *//* * file : libmng_data.h copyright (c) 2000 G.Juyn * *//* * version : 1.0.2 * *//* * * *//* * purpose : main data structure definition * *//* * * *//* * author : G.Juyn * *//* * web : http://www.3-t.com * *//* * email : mailto:info@3-t.com * *//* * * *//* * comment : Definition of the library main data structure * *//* * * *//* * changes : 0.5.1 - 05/04/2000 - G.Juyn * *//* * - added CRC table to main structure (for thread-safety) * *//* * 0.5.1 - 05/06/2000 - G.Juyn * *//* * - added iPLTEentries for checking hIST-length * *//* * 0.5.1 - 05/08/2000 - G.Juyn * *//* * - changed palette definition to exported palette-type * *//* * - removed frozen indicator * *//* * - added create/write indicators * *//* * - changed strict-ANSI stuff * *//* * 0.5.1 - 05/13/2000 - G.Juyn * *//* * - added eMNGma hack (will be removed in 1.0.0 !!!) * *//* * - added TERM animation object pointer (easier reference) * *//* * - added saved-data structure for SAVE/SEEK processing * *//* * * *//* * 0.5.2 - 05/18/2000 - G.Juyn * *//* * - added fields for JNG support (IJG-based) * *//* * 0.5.2 - 05/24/2000 - G.Juyn * *//* * - changed global tRNS definition * *//* * 0.5.2 - 05/30/2000 - G.Juyn * *//* * - added delta-image fields * *//* * 0.5.2 - 06/01/2000 - G.Juyn * *//* * - added internal delta-image processing callbacks * *//* * 0.5.2 - 06/02/2000 - G.Juyn * *//* * - changed SWAP_ENDIAN to BIGENDIAN_SUPPORTED * *//* * (contributed by Tim Rowley) * *//* * - added getalphaline callback for RGB8_A8 canvasstyle * *//* * 0.5.2 - 06/06/2000 - G.Juyn * *//* * - added parameter for delayed buffer-processing * *//* * * *//* * 0.5.3 - 06/16/2000 - G.Juyn * *//* * - added update-region parms for refresh calback * *//* * - added Needrefresh parameter * *//* * 0.5.3 - 06/17/2000 - G.Juyn * *//* * - added Deltaimmediate parm for faster delta-processing * *//* * 0.5.3 - 06/21/2000 - G.Juyn * *//* * - added Speed parameter to facilitate testing * *//* * - added Imagelevel parameter for processtext callback * *//* * 0.5.3 - 06/26/2000 - G.Juyn * *//* * - changed userdata variable to mng_ptr * *//* * * *//* * 0.9.1 - 07/07/2000 - G.Juyn * *//* * - added variables for go_xxxx processing * *//* * 0.9.1 - 07/08/2000 - G.Juyn * *//* * - added variables for improved timing support * *//* * 0.9.1 - 07/15/2000 - G.Juyn * *//* * - added callbacks for SAVE/SEEK processing * *//* * - added variable for NEEDSECTIONWAIT breaks * *//* * - added variable for freeze & reset processing * *//* * 0.9.1 - 07/17/2000 - G.Juyn * *//* * - fixed suspension-buffering for 32K+ chunks * *//* * * *//* * 0.9.2 - 07/29/2000 - G.Juyn * *//* * - removed Nextbackxxx fields (no longer used) * *//* * 0.9.2 - 07/31/2000 - G.Juyn * *//* * - fixed wrapping of suspension parameters * *//* * 0.9.2 - 08/04/2000 - G.Juyn * *//* * - B111096 - fixed large-buffer read-suspension * *//* * 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/07/2000 - G.Juyn * *//* * - added support for new filter_types * *//* * 0.9.3 - 09/10/2000 - G.Juyn * *//* * - fixed DEFI behavior * *//* * 0.9.3 - 10/10/2000 - G.Juyn * *//* * - added support for alpha-depth prediction * *//* * 0.9.3 - 10/11/2000 - G.Juyn * *//* * - added support for nEED * *//* * 0.9.3 - 10/16/2000 - G.Juyn * *//* * - added optional support for bKGD for PNG images * *//* * - added support for JDAA * *//* * 0.9.3 - 10/17/2000 - G.Juyn * *//* * - added callback to process non-critical unknown chunks * *//* * - fixed support for bKGD * *//* * 0.9.3 - 10/19/2000 - G.Juyn * *//* * - implemented delayed delta-processing * *//* * 0.9.4 - 12/16/2000 - G.Juyn * *//* * - fixed mixup of data- & function-pointers (thanks Dimitri)* *//* * * *//* * 1.0.1 - 02/08/2001 - G.Juyn * *//* * - added MEND processing callback * *//* * 1.0.1 - 02/13/2001 - G.Juyn * *//* * - fixed first FRAM_MODE=4 timing problem * *//* * * *//* * 1.0.2 - 06/23/2001 - G.Juyn * *//* * - added optimization option for MNG-video playback * *//* * - added processterm callback * *//* * 1.0.2 - 06/25/2001 - G.Juyn * *//* * - added option to turn off progressive refresh * *//* * * *//* ************************************************************************** */#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)#pragma option -A /* force ANSI-C */#endif#ifndef _libmng_data_h_#define _libmng_data_h_/* ************************************************************************** */#define MNG_MAGIC 0x52530a0aL/* ************************************************************************** *//* * * *//* * Internal structures * *//* * * *//* ************************************************************************** */typedef mng_palette8 mng_rgbpaltab;/* ************************************************************************** *//* * * *//* * The saved_data structure * *//* * * *//* * This contains the saved data after a SAVE chunk has been processed. * *//* * The data is saved from the main data structure during SAVE processing, * *//* * and restored to the main data structure during SEEK processing. * *//* * * *//* ************************************************************************** */typedef struct mng_savedata_struct {#if defined(MNG_SUPPORT_READ) || defined(MNG_SUPPORT_WRITE) mng_bool bHasglobalPLTE; /* global PLTE chunk processed */ mng_bool bHasglobalTRNS; /* global tRNS chunk processed */ mng_bool bHasglobalGAMA; /* global gAMA chunk processed */ mng_bool bHasglobalCHRM; /* global cHRM chunk processed */ mng_bool bHasglobalSRGB; /* global sRGB chunk processed */ mng_bool bHasglobalICCP; /* global iCCP chunk processed */ mng_bool bHasglobalBKGD; /* global bKGD chunk processed */#endif /* MNG_SUPPORT_READ || MNG_SUPPORT_WRITE */#ifdef MNG_SUPPORT_DISPLAY mng_uint16 iBACKred; /* BACK fields */ mng_uint16 iBACKgreen; mng_uint16 iBACKblue; mng_uint8 iBACKmandatory; mng_uint16 iBACKimageid; mng_uint8 iBACKtile; mng_uint8 iFRAMmode; /* FRAM fields (global) */ mng_uint32 iFRAMdelay; mng_uint32 iFRAMtimeout; mng_bool bFRAMclipping; mng_int32 iFRAMclipl; mng_int32 iFRAMclipr; mng_int32 iFRAMclipt; mng_int32 iFRAMclipb; mng_uint32 iGlobalPLTEcount; /* global PLTE fields */ mng_rgbpaltab aGlobalPLTEentries; mng_uint32 iGlobalTRNSrawlen; /* global tRNS fields */ mng_uint8arr aGlobalTRNSrawdata; mng_uint32 iGlobalGamma; /* global gAMA fields */ mng_uint32 iGlobalWhitepointx; /* global cHRM fields */ mng_uint32 iGlobalWhitepointy; mng_uint32 iGlobalPrimaryredx; mng_uint32 iGlobalPrimaryredy; mng_uint32 iGlobalPrimarygreenx; mng_uint32 iGlobalPrimarygreeny; mng_uint32 iGlobalPrimarybluex; mng_uint32 iGlobalPrimarybluey; mng_uint8 iGlobalRendintent; /* global sRGB fields */ mng_uint32 iGlobalProfilesize; /* global iCCP fields */ mng_ptr pGlobalProfile; mng_uint16 iGlobalBKGDred; /* global bKGD fields */ mng_uint16 iGlobalBKGDgreen; mng_uint16 iGlobalBKGDblue;#endif /* MNG_SUPPORT_DISPLAY */ } mng_savedata;typedef mng_savedata * mng_savedatap;/* ************************************************************************** *//* * * *//* * The main libmng data structure * *//* * * *//* * The handle used in all functions points to this structure which * *//* * contains all volatile data necessary to process the network graphic. * *//* * * *//* ************************************************************************** */typedef struct mng_data_struct { mng_uint32 iMagic; /* magic number to validate a given handle */ mng_ptr pUserdata; /* application workdata */ mng_imgtype eSigtype; /* image information */ mng_imgtype eImagetype; /* initially zeroed */ mng_uint32 iWidth; /* filled after header is processed */ mng_uint32 iHeight; mng_uint32 iTicks; /* these only after MHDR */ mng_uint32 iLayercount; mng_uint32 iFramecount; mng_uint32 iPlaytime; mng_uint32 iSimplicity; mng_uint8 iAlphadepth; /* indicates expected alpha-depth */ mng_uint32 iImagelevel; /* level an image inside a stream */ mng_uint32 iCanvasstyle; /* layout of the drawing-canvas */ mng_uint32 iBkgdstyle; /* layout of the background-canvas */ mng_int8 iMagnify; /* magnification factor (not used yet) */ mng_uint32 iOffsetx; /* x-offset for extremely large image */ mng_uint32 iOffsety; /* y-offset for extremely large image */ mng_uint32 iCanvaswidth; /* real canvas size */ mng_uint32 iCanvasheight; /* must be set by processheader callback */ mng_uint16 iBGred; /* default background color */ mng_uint16 iBGgreen; /* initially "black" */ mng_uint16 iBGblue; mng_bool bUseBKGD; /* preferred use of bKGD for PNG */ mng_bool bIssRGB; /* indicates sRGB system */#ifdef MNG_FULL_CMS /* little CMS variables */ mng_cmsprof hProf1; /* image input profile */ mng_cmsprof hProf2; /* default output profile */ mng_cmsprof hProf3; /* default sRGB profile */ mng_cmstrans hTrans; /* current transformation handle */#endif mng_float dViewgamma; /* gamma calculation variables */ mng_float dDisplaygamma; /* initially set for sRGB conditions */ mng_float dDfltimggamma; mng_bool bStorechunks; /* switch for storing chunkdata */ mng_bool bSectionbreaks; /* indicate NEEDSECTIONWAIT breaks */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -