?? libmng_hlapi.c
字號:
pData->fProcessunknown = MNG_NULL;
pData->fProcessterm = MNG_NULL;
pData->fGetcanvasline = MNG_NULL;
pData->fGetbkgdline = MNG_NULL;
pData->fGetalphaline = MNG_NULL;
pData->fRefresh = MNG_NULL;
pData->fGettickcount = MNG_NULL;
pData->fSettimer = MNG_NULL;
pData->fProcessgamma = MNG_NULL;
pData->fProcesschroma = MNG_NULL;
pData->fProcesssrgb = MNG_NULL;
pData->fProcessiccp = MNG_NULL;
pData->fProcessarow = MNG_NULL;
#if defined(MNG_SUPPORT_DISPLAY) && (defined(MNG_GAMMA_ONLY) || defined(MNG_FULL_CMS))
pData->dLastgamma = 0; /* lookup table needs first-time calc */
#endif
#ifdef MNG_SUPPORT_DISPLAY /* create object 0 */
iRetcode = mng_create_imageobject (pData, 0, MNG_TRUE, MNG_TRUE, MNG_TRUE,
0, 0, 0, 0, 0, 0, 0, 0, 0, MNG_FALSE,
0, 0, 0, 0, &pImage);
if (iRetcode) /* on error drop out */
{
MNG_FREEX (pData, pData, sizeof (mng_data))
return MNG_NULL;
}
pData->pObjzero = pImage;
#endif
#if defined(MNG_SUPPORT_DISPLAY) && defined(MNG_INCLUDE_LCMS)
mnglcms_initlibrary (); /* init lcms particulars */
#endif
#ifdef MNG_SUPPORT_READ
pData->bSuspensionmode = MNG_FALSE;
pData->iSuspendbufsize = 0;
pData->pSuspendbuf = MNG_NULL;
pData->pSuspendbufnext = MNG_NULL;
pData->iSuspendbufleft = 0;
pData->iChunklen = 0;
pData->pReadbufnext = MNG_NULL;
pData->pLargebufnext = MNG_NULL;
pData->pFirstpushchunk = MNG_NULL;
pData->pLastpushchunk = MNG_NULL;
pData->pFirstpushdata = MNG_NULL;
pData->pLastpushdata = MNG_NULL;
#endif
#ifdef MNG_INCLUDE_ZLIB
mngzlib_initialize (pData); /* initialize zlib structures and such */
/* default zlib compression parameters */
pData->iZlevel = MNG_ZLIB_LEVEL;
pData->iZmethod = MNG_ZLIB_METHOD;
pData->iZwindowbits = MNG_ZLIB_WINDOWBITS;
pData->iZmemlevel = MNG_ZLIB_MEMLEVEL;
pData->iZstrategy = MNG_ZLIB_STRATEGY;
/* default maximum IDAT data size */
pData->iMaxIDAT = MNG_MAX_IDAT_SIZE;
#endif
#ifdef MNG_INCLUDE_JNG /* default IJG compression parameters */
pData->eJPEGdctmethod = MNG_JPEG_DCT;
pData->iJPEGquality = MNG_JPEG_QUALITY;
pData->iJPEGsmoothing = MNG_JPEG_SMOOTHING;
pData->bJPEGcompressprogr = MNG_JPEG_PROGRESSIVE;
pData->bJPEGcompressopt = MNG_JPEG_OPTIMIZED;
/* default maximum JDAT data size */
pData->iMaxJDAT = MNG_MAX_JDAT_SIZE;
#endif
mng_reset ((mng_handle)pData);
#ifdef MNG_SUPPORT_TRACE
if (mng_trace (pData, MNG_FN_INITIALIZE, MNG_LC_END))
{
MNG_FREEX (pData, pData, sizeof (mng_data))
return MNG_NULL;
}
#endif
return (mng_handle)pData; /* if we get here, we're in business */
}
/* ************************************************************************** */
mng_retcode MNG_DECL mng_reset (mng_handle hHandle)
{
mng_datap pData;
#ifdef MNG_SUPPORT_TRACE
MNG_TRACE (((mng_datap)hHandle), MNG_FN_RESET, MNG_LC_START)
#endif
MNG_VALIDHANDLE (hHandle) /* check validity handle */
pData = ((mng_datap)(hHandle)); /* address main structure */
#ifdef MNG_SUPPORT_DISPLAY
#ifndef MNG_SKIPCHUNK_SAVE
mng_drop_savedata (pData); /* cleanup saved-data from SAVE/SEEK */
#endif
#endif
#if defined(MNG_SUPPORT_DISPLAY) && defined(MNG_FULL_CMS)
mng_clear_cms (pData); /* cleanup left-over cms stuff if any */
#endif
#if defined(MNG_SUPPORT_DISPLAY) && defined(MNG_INCLUDE_JNG)
mngjpeg_cleanup (pData); /* cleanup jpeg stuff */
#endif
#ifdef MNG_INCLUDE_ZLIB
if (pData->bInflating) /* if we've been inflating */
{
#ifdef MNG_INCLUDE_DISPLAY_PROCS
mng_cleanup_rowproc (pData); /* cleanup row-processing, */
#endif
mngzlib_inflatefree (pData); /* cleanup inflate! */
}
#endif /* MNG_INCLUDE_ZLIB */
#ifdef MNG_SUPPORT_READ
if ((pData->bReading) && (!pData->bEOF))
mng_process_eof (pData); /* cleanup app streaming */
/* cleanup default read buffers */
MNG_FREE (pData, pData->pReadbuf, pData->iReadbufsize)
MNG_FREE (pData, pData->pLargebuf, pData->iLargebufsize)
MNG_FREE (pData, pData->pSuspendbuf, pData->iSuspendbufsize)
while (pData->pFirstpushdata) /* release any pushed data & chunks */
mng_release_pushdata (pData);
while (pData->pFirstpushchunk)
mng_release_pushchunk (pData);
#endif
#ifdef MNG_SUPPORT_WRITE /* cleanup default write buffer */
MNG_FREE (pData, pData->pWritebuf, pData->iWritebufsize)
#endif
#if defined(MNG_SUPPORT_READ) || defined(MNG_SUPPORT_WRITE)
mng_drop_chunks (pData); /* drop stored chunks (if any) */
#endif
#ifdef MNG_SUPPORT_DISPLAY
mng_drop_objects (pData, MNG_TRUE); /* drop stored objects (if any) */
#ifndef MNG_SKIPCHUNK_iCCP
if (pData->iGlobalProfilesize) /* drop global profile (if any) */
MNG_FREEX (pData, pData->pGlobalProfile, pData->iGlobalProfilesize)
#endif
#endif
pData->eSigtype = mng_it_unknown;
pData->eImagetype = mng_it_unknown;
pData->iWidth = 0; /* these are unknown yet */
pData->iHeight = 0;
pData->iTicks = 0;
pData->iLayercount = 0;
pData->iFramecount = 0;
pData->iPlaytime = 0;
pData->iSimplicity = 0;
pData->iAlphadepth = 16; /* assume the worst! */
pData->iImagelevel = 0; /* no image encountered */
pData->iMagnify = 0; /* 1-to-1 display */
pData->iOffsetx = 0; /* no offsets */
pData->iOffsety = 0;
pData->iCanvaswidth = 0; /* let the app decide during processheader */
pData->iCanvasheight = 0;
/* so far, so good */
pData->iErrorcode = MNG_NOERROR;
pData->iSeverity = 0;
pData->iErrorx1 = 0;
pData->iErrorx2 = 0;
pData->zErrortext = MNG_NULL;
#if defined(MNG_SUPPORT_READ) || defined(MNG_SUPPORT_WRITE)
/* let's assume the best scenario */
#ifndef MNG_NO_OLD_VERSIONS
pData->bPreDraft48 = MNG_FALSE;
#endif
/* the unknown chunk */
pData->iChunkname = MNG_UINT_HUH;
pData->iChunkseq = 0;
pData->pFirstchunk = MNG_NULL;
pData->pLastchunk = MNG_NULL;
/* nothing processed yet */
pData->bHasheader = MNG_FALSE;
pData->bHasMHDR = MNG_FALSE;
pData->bHasIHDR = MNG_FALSE;
pData->bHasBASI = MNG_FALSE;
pData->bHasDHDR = MNG_FALSE;
#ifdef MNG_INCLUDE_JNG
pData->bHasJHDR = MNG_FALSE;
pData->bHasJSEP = MNG_FALSE;
pData->bHasJDAA = MNG_FALSE;
pData->bHasJDAT = MNG_FALSE;
#endif
pData->bHasPLTE = MNG_FALSE;
pData->bHasTRNS = MNG_FALSE;
pData->bHasGAMA = MNG_FALSE;
pData->bHasCHRM = MNG_FALSE;
pData->bHasSRGB = MNG_FALSE;
pData->bHasICCP = MNG_FALSE;
pData->bHasBKGD = MNG_FALSE;
pData->bHasIDAT = MNG_FALSE;
pData->bHasSAVE = MNG_FALSE;
pData->bHasBACK = MNG_FALSE;
pData->bHasFRAM = MNG_FALSE;
pData->bHasTERM = MNG_FALSE;
pData->bHasLOOP = MNG_FALSE;
/* there's no global stuff yet either */
pData->bHasglobalPLTE = MNG_FALSE;
pData->bHasglobalTRNS = MNG_FALSE;
pData->bHasglobalGAMA = MNG_FALSE;
pData->bHasglobalCHRM = MNG_FALSE;
pData->bHasglobalSRGB = MNG_FALSE;
pData->bHasglobalICCP = MNG_FALSE;
pData->iDatawidth = 0; /* no IHDR/BASI/DHDR done yet */
pData->iDataheight = 0;
pData->iBitdepth = 0;
pData->iColortype = 0;
pData->iCompression = 0;
pData->iFilter = 0;
pData->iInterlace = 0;
#ifdef MNG_INCLUDE_JNG
pData->iJHDRcolortype = 0; /* no JHDR data */
pData->iJHDRimgbitdepth = 0;
pData->iJHDRimgcompression = 0;
pData->iJHDRimginterlace = 0;
pData->iJHDRalphabitdepth = 0;
pData->iJHDRalphacompression = 0;
pData->iJHDRalphafilter = 0;
pData->iJHDRalphainterlace = 0;
#endif
#endif /* MNG_SUPPORT_READ || MNG_SUPPORT_WRITE */
#ifdef MNG_SUPPORT_READ /* no reading done */
pData->bReading = MNG_FALSE;
pData->bHavesig = MNG_FALSE;
pData->bEOF = MNG_FALSE;
pData->iReadbufsize = 0;
pData->pReadbuf = MNG_NULL;
pData->iLargebufsize = 0;
pData->pLargebuf = MNG_NULL;
pData->iSuspendtime = 0;
pData->bSuspended = MNG_FALSE;
pData->iSuspendpoint = 0;
pData->pSuspendbufnext = pData->pSuspendbuf;
pData->iSuspendbufleft = 0;
#endif /* MNG_SUPPORT_READ */
#ifdef MNG_SUPPORT_WRITE /* no creating/writing done */
pData->bCreating = MNG_FALSE;
pData->bWriting = MNG_FALSE;
pData->iFirstchunkadded = 0;
pData->iWritebufsize = 0;
pData->pWritebuf = MNG_NULL;
#endif /* MNG_SUPPORT_WRITE */
#ifdef MNG_SUPPORT_DISPLAY /* done nuttin' yet */
pData->bDisplaying = MNG_FALSE;
pData->iFrameseq = 0;
pData->iLayerseq = 0;
pData->iFrametime = 0;
pData->iTotallayers = 0;
pData->iTotalframes = 0;
pData->iTotalplaytime = 0;
pData->bSkipping = MNG_FALSE;
#ifdef MNG_SUPPORT_DYNAMICMNG
pData->bDynamic = MNG_FALSE;
pData->bRunningevent = MNG_FALSE;
pData->bStopafterseek = MNG_FALSE;
pData->iEventx = 0;
pData->iEventy = 0;
pData->pLastmousemove = MNG_NULL;
#endif
pData->iRequestframe = 0;
pData->iRequestlayer = 0;
pData->iRequesttime = 0;
pData->bSearching = MNG_FALSE;
pData->bRestorebkgd = MNG_FALSE;
pData->iRuntime = 0;
pData->iSynctime = 0;
pData->iStarttime = 0;
pData->iEndtime = 0;
pData->bRunning = MNG_FALSE;
pData->bTimerset = MNG_FALSE;
pData->iBreakpoint = 0;
pData->bSectionwait = MNG_FALSE;
pData->bFreezing = MNG_FALSE;
pData->bResetting = MNG_FALSE;
pData->bNeedrefresh = MNG_FALSE;
pData->bMisplacedTERM = MNG_FALSE;
pData->bOnlyfirstframe = MNG_FALSE;
pData->iFramesafterTERM = 0;
/* these don't exist yet */
pData->pCurrentobj = MNG_NULL;
pData
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -