📄 libmng_hlapi.c
字号:
#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->pCurraniobj = MNG_NULL; pData->pTermaniobj = MNG_NULL; pData->pLastclone = MNG_NULL; pData->pStoreobj = MNG_NULL; pData->pStorebuf = MNG_NULL; pData->pRetrieveobj = MNG_NULL; /* no saved data ! */ pData->pSavedata = MNG_NULL; pData->iUpdateleft = 0; /* no region updated yet */ pData->iUpdateright = 0; pData->iUpdatetop = 0; pData->iUpdatebottom = 0; pData->iPass = -1; /* interlacing stuff and temp buffers */ pData->iRow = 0; pData->iRowinc = 1; pData->iCol = 0; pData->iColinc = 1; pData->iRowsamples = 0; pData->iSamplemul = 0; pData->iSampleofs = 0; pData->iSamplediv = 0; pData->iRowsize = 0; pData->iRowmax = 0; pData->iFilterofs = 0; pData->iPixelofs = 1; pData->iLevel0 = 0; pData->iLevel1 = 0; pData->iLevel2 = 0; pData->iLevel3 = 0; pData->pWorkrow = MNG_NULL; pData->pPrevrow = MNG_NULL; pData->pRGBArow = MNG_NULL; pData->bIsRGBA16 = MNG_TRUE; pData->bIsOpaque = MNG_TRUE; pData->iFilterbpp = 1; pData->iSourcel = 0; /* always initialized just before */ pData->iSourcer = 0; /* c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -