📄 libmng_hlapi.c
字号:
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 */ pData->bPreDraft48 = MNG_FALSE; /* 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->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; /* 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; /* TODO: remove in 1.0.0 !!! */ pData->bEMNGMAhack = MNG_FALSE; 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 = 0; pData->bIsRGBA16 = MNG_TRUE; pData->bIsOpaque = MNG_TRUE; pData->iFilterbpp = 1; pData->iSourcel = 0; /* always initialized just before */ pData->iSourcer = 0; /* compositing the next layer */ pData->iSourcet = 0; pData->iSourceb = 0; pData->iDestl = 0; pData->iDestr = 0; pData->iDestt = 0; pData->iDestb = 0; /* lists are empty */ pData->pFirstimgobj = MNG_NULL; pData->pLastimgobj = MNG_NULL; pData->pFirstaniobj = MNG_NULL; pData->pLastaniobj = MNG_NULL; /* no processing callbacks */ pData->fDisplayrow = MNG_NULL; pData->fRestbkgdrow = MNG_NULL; pData->fCorrectrow = MNG_NULL; pData->fRetrieverow = MNG_NULL; pData->fStorerow = MNG_NULL; pData->fProcessrow = MNG_NULL; pData->fDifferrow = MNG_NULL; pData->fInitrowproc = MNG_NULL; pData->iPLTEcount = 0; /* no PLTE data */ pData->iDEFIobjectid = 0; /* no DEFI data */ pData->bDEFIhasdonotshow = MNG_FALSE; pData->iDEFIdonotshow = 0; pData->bDEFIhasconcrete = MNG_FALSE; pData->iDEFIconcrete = 0; pData->bDEFIhasloca = MNG_FALSE; pData->iDEFIlocax = 0; pData->iDEFIlocay = 0; pData->bDEFIhasclip = MNG_FALSE; pData->iDEFIclipl = 0; pData->iDEFIclipr = 0; pData->iDEFIclipt = 0; pData->iDEFIclipb = 0; pData->iBACKred = 0; /* no BACK data */ pData->iBACKgreen = 0; pData->iBACKblue = 0; pData->iBACKmandatory = 0; pData->iBACKimageid = 0; pData->iBACKtile = 0; pData->iFRAMmode = 1; /* default global FRAM variables */ pData->iFRAMdelay = 1; pData->iFRAMtimeout = 0x7fffffffl; pData->bFRAMclipping = MNG_FALSE; pData->iFRAMclipl = 0; pData->iFRAMclipr = 0; pData->iFRAMclipt = 0; pData->iFRAMclipb = 0; pData->iFramemode = 1; /* again for the current frame */ pData->iFramedelay = 1; pData->iFrametimeout = 0x7fffffffl; pData->bFrameclipping = MNG_FALSE; pData->iFrameclipl = 0; pData->iFrameclipr = 0; pData->iFrameclipt = 0; pData->iFrameclipb = 0; pData->iNextdelay = 1; pData->iSHOWmode = 0; /* no SHOW data */ pData->iSHOWfromid = 0; pData->iSHOWtoid = 0; pData->iSHOWnextid = 0; pData->iSHOWskip = 0; pData->iGlobalPLTEcount = 0; /* no global PLTE data */ pData->iGlobalTRNSrawlen = 0; /* no global tRNS data */ pData->iGlobalGamma = 0; /* no global gAMA data */ pData->iGlobalWhitepointx = 0; /* no global cHRM data */ pData->iGlobalWhitepointy = 0; pData->iGlobalPrimaryredx = 0; pData->iGlobalPrimaryredy = 0; pData->iGlobalPrimarygreenx = 0; pData->iGlobalPrimarygreeny = 0; pData->iGlobalPrimarybluex = 0; pData->iGlobalPrimarybluey = 0; pData->iGlobalRendintent = 0; /* no global sRGB data */ pData->iGlobalProfilesize = 0; /* no global iCCP data */ pData->pGlobalProfile = MNG_NULL; pData->iGlobalBKGDred = 0; /* no global bKGD data */ pData->iGlobalBKGDgreen = 0; pData->iGlobalBKGDblue = 0; /* no delta-image */ pData->pDeltaImage = MNG_NULL; pData->iDeltaImagetype = 0; pData->iDeltatype = 0; pData->iDeltaBlockwidth = 0; pData->iDeltaBlockheight = 0; pData->iDeltaBlockx = 0; pData->iDeltaBlocky = 0; pData->bDeltaimmediate = MNG_FALSE;#endif#ifdef MNG_INCLUDE_ZLIB pData->bInflating = 0; /* no inflating or deflating */ pData->bDeflating = 0; /* going on at the moment */#endif#ifdef MNG_SUPPORT_DISPLAY /* reset object 0 */ mng_reset_objzero (pData);#endif#ifdef MNG_SUPPORT_TRACE MNG_TRACE (((mng_datap)hHandle), MNG_FN_RESET, MNG_LC_END)#endif return MNG_NOERROR;}/* ************************************************************************** */mng_retcode MNG_DECL mng_cleanup (mng_handle* hHandle){ mng_datap pData; /* local vars */#ifndef MNG_INTERNAL_MEMMNGMT mng_memfree fFree;#endif#ifdef MNG_SUPPORT_TRACE MNG_TRACE (((mng_datap)*hHandle), MNG_FN_CLEANUP, MNG_LC_START)#endif MNG_VALIDHANDLE (*hHandle) /* check validity handle */ pData = ((mng_datap)(*hHandle)); /* and address main structure */ mng_reset (*hHandle); /* do an implicit reset to cleanup most stuff */#ifdef MNG_SUPPORT_DISPLAY /* drop object 0 */ free_imageobject (pData, (mng_imagep)pData->pObjzero);#endif#if defined(MNG_SUPPORT_DISPLAY) && defined(MNG_INCLUDE_LCMS) if (pData->hProf2) /* output profile defined ? */ mnglcms_freeprofile (pData->hProf2); if (pData->hProf3) /* sRGB profile defined ? */ mnglcms_freeprofile (pData->hProf3);#endif /* MNG_SUPPORT_DISPLAY && MNG_INCLUDE_LCMS */#ifdef MNG_INCLUDE_ZLIB mngzlib_cleanup (pData); /* cleanup zlib stuff */#endif#ifdef MNG_SUPPORT_TRACE MNG_TRACE (((mng_datap)*hHandle), MNG_FN_CLEANUP, MNG_LC_CLEANUP)#endif pData->iMagic = 0; /* invalidate the actual memory */#ifdef MNG_INTERNAL_MEMMNGMT free ((void *)*hHandle); /* cleanup the data-structure */#else fFree = ((mng_datap)*hHandle)->fMemfree; fFree ((mng_ptr)*hHandle, sizeof (mng_data));#endif *hHandle = 0; /* wipe pointer to inhibit future use */ return MNG_NOERROR; /* and we're done */}/* ************************************************************************** */#ifdef MNG_SUPPORT_READmng_retcode MNG_DECL mng_read (mng_handle hHandle)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -