📄 libmng_hlapi.c
字号:
MNG_LOCAL mng_retcode mng_reset_rundata (mng_datap pData){ mng_drop_invalid_objects (pData); /* drop invalidly stored objects */#ifndef MNG_SKIPCHUNK_SAVE mng_drop_savedata (pData); /* drop stored savedata */#endif mng_reset_objzero (pData); /* reset object 0 */ /* drop stored objects (if any) */ mng_drop_objects (pData, MNG_FALSE); pData->bFramedone = MNG_FALSE; pData->iFrameseq = 0; /* reset counters & stuff */ pData->iLayerseq = 0; pData->iFrametime = 0; pData->bSkipping = MNG_FALSE;#ifdef MNG_SUPPORT_DYNAMICMNG 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->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->bOnlyfirstframe = MNG_FALSE; pData->iFramesafterTERM = 0; pData->iIterations = 0; /* start of animation objects! */ pData->pCurraniobj = MNG_NULL; pData->iUpdateleft = 0; /* reset region */ pData->iUpdateright = 0; pData->iUpdatetop = 0; pData->iUpdatebottom = 0; pData->iPLTEcount = 0; /* reset PLTE data */#ifndef MNG_SKIPCHUNK_DEFI pData->iDEFIobjectid = 0; /* reset 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;#endif#ifndef MNG_SKIPCHUNK_BACK pData->iBACKred = 0; /* reset BACK data */ pData->iBACKgreen = 0; pData->iBACKblue = 0; pData->iBACKmandatory = 0; pData->iBACKimageid = 0; pData->iBACKtile = 0;#endif#ifndef MNG_SKIPCHUNK_FRAM 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->bForcedelay = MNG_FALSE; pData->iAccumdelay = 0;#endif#ifndef MNG_SKIPCHUNK_SHOW pData->iSHOWmode = 0; /* reset SHOW data */ pData->iSHOWfromid = 0; pData->iSHOWtoid = 0; pData->iSHOWnextid = 0; pData->iSHOWskip = 0;#endif pData->iGlobalPLTEcount = 0; /* reset global PLTE data */ pData->iGlobalTRNSrawlen = 0; /* reset global tRNS data */ pData->iGlobalGamma = 0; /* reset global gAMA data */#ifndef MNG_SKIPCHUNK_cHRM pData->iGlobalWhitepointx = 0; /* reset global cHRM data */ pData->iGlobalWhitepointy = 0; pData->iGlobalPrimaryredx = 0; pData->iGlobalPrimaryredy = 0; pData->iGlobalPrimarygreenx = 0; pData->iGlobalPrimarygreeny = 0; pData->iGlobalPrimarybluex = 0; pData->iGlobalPrimarybluey = 0;#endif pData->iGlobalRendintent = 0; /* reset global sRGB data */#ifndef MNG_SKIPCHUNK_iCCP if (pData->iGlobalProfilesize) /* drop global profile (if any) */ MNG_FREE (pData, pData->pGlobalProfile, pData->iGlobalProfilesize); pData->iGlobalProfilesize = 0; #endif#ifndef MNG_SKIPCHUNK_bKGD pData->iGlobalBKGDred = 0; /* reset global bKGD data */ pData->iGlobalBKGDgreen = 0; pData->iGlobalBKGDblue = 0;#endif#ifndef MNG_NO_DELTA_PNG /* reset 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; pData->fDeltagetrow = MNG_NULL; pData->fDeltaaddrow = MNG_NULL; pData->fDeltareplacerow = MNG_NULL; pData->fDeltaputrow = MNG_NULL; pData->fPromoterow = MNG_NULL; pData->fPromBitdepth = MNG_NULL; pData->pPromBuf = MNG_NULL; pData->iPromColortype = 0; pData->iPromBitdepth = 0; pData->iPromFilltype = 0; pData->iPromWidth = 0; pData->pPromSrc = MNG_NULL; pData->pPromDst = MNG_NULL;#endif#ifndef MNG_SKIPCHUNK_MAGN pData->iMAGNfromid = 0; pData->iMAGNtoid = 0;#endif#ifndef MNG_SKIPCHUNK_PAST pData->iPastx = 0; pData->iPasty = 0;#endif pData->pLastseek = MNG_NULL; return MNG_NOERROR;}#endif /* MNG_SUPPORT_DISPLAY *//* ************************************************************************** */MNG_LOCAL void cleanup_errors (mng_datap pData){ pData->iErrorcode = MNG_NOERROR; pData->iSeverity = 0; pData->iErrorx1 = 0; pData->iErrorx2 = 0; pData->zErrortext = MNG_NULL; return;}/* ************************************************************************** */#ifdef MNG_SUPPORT_READMNG_LOCAL mng_retcode make_pushbuffer (mng_datap pData, mng_ptr pPushdata, mng_size_t iLength, mng_bool bTakeownership, mng_pushdatap * pPush){ mng_pushdatap pTemp; MNG_ALLOC (pData, pTemp, sizeof(mng_pushdata)); pTemp->pNext = MNG_NULL; if (bTakeownership) /* are we going to own the buffer? */ { /* then just copy the pointer */ pTemp->pData = (mng_uint8p)pPushdata; } else { /* otherwise create new buffer */ MNG_ALLOCX (pData, pTemp->pData, iLength); if (!pTemp->pData) /* succeeded? */ { MNG_FREEX (pData, pTemp, sizeof(mng_pushdata)); MNG_ERROR (pData, MNG_OUTOFMEMORY); } /* and copy the bytes across */ MNG_COPY (pTemp->pData, pPushdata, iLength); } pTemp->iLength = iLength; pTemp->bOwned = bTakeownership; pTemp->pDatanext = pTemp->pData; pTemp->iRemaining = iLength; *pPush = pTemp; /* return it */ return MNG_NOERROR; /* and all's well */}#endif#ifdef MNG_VERSION_QUERY_SUPPORT/* ************************************************************************** *//* * * *//* * Versioning control * *//* * * *//* ************************************************************************** */mng_pchar MNG_DECL mng_version_text (void){ return MNG_VERSION_TEXT;}/* ************************************************************************** */mng_uint8 MNG_DECL mng_version_so (void){ return MNG_VERSION_SO;}/* ************************************************************************** */mng_uint8 MNG_DECL mng_version_dll (void){ return MNG_VERSION_DLL;}/* ************************************************************************** */mng_uint8 MNG_DECL mng_version_major (void){ return MNG_VERSION_MAJOR;}/* ************************************************************************** */mng_uint8 MNG_DECL mng_version_minor (void){ return MNG_VERSION_MINOR;}/* ************************************************************************** */mng_uint8 MNG_DECL mng_version_release (void){ return MNG_VERSION_RELEASE;}/* ************************************************************************** */mng_bool MNG_DECL mng_version_beta (void){ return MNG_VERSION_BETA;}#endif/* ************************************************************************** *//* * * *//* * 'supports' function * *//* * * *//* ************************************************************************** */#ifdef MNG_SUPPORT_FUNCQUERYtypedef struct { mng_pchar zFunction; mng_uint8 iMajor; /* Major == 0 means not implemented ! */ mng_uint8 iMinor; mng_uint8 iRelease; } mng_func_entry;typedef mng_func_entry const * mng_func_entryp;MNG_LOCAL mng_func_entry const func_table [] = { /* keep it alphabetically sorted !!!!! */ {"mng_cleanup", 1, 0, 0}, {"mng_copy_chunk", 1, 0, 5}, {"mng_create", 1, 0, 0}, {"mng_display", 1, 0, 0}, {"mng_display_freeze", 1, 0, 0},#ifndef MNG_NO_DISPLAY_GO_SUPPORTED {"mng_display_goframe", 1, 0, 0}, {"mng_display_golayer", 1, 0, 0}, {"mng_display_gotime", 1, 0, 0},#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -