?? libmng_hlapi.c
字號:
#endif /* MNG_SUPPORT_DISPLAY */
/* ************************************************************************** */
#ifdef MNG_SUPPORT_DISPLAY
#ifndef MNG_SKIPCHUNK_SAVE
mng_retcode mng_drop_savedata (mng_datap pData)
{
#ifdef MNG_SUPPORT_TRACE
MNG_TRACE (pData, MNG_FN_DROP_SAVEDATA, MNG_LC_START)
#endif
if (pData->pSavedata) /* sanity check */
{ /* address it more directly */
mng_savedatap pSave = pData->pSavedata;
if (pSave->iGlobalProfilesize) /* cleanup the profile ? */
MNG_FREEX (pData, pSave->pGlobalProfile, pSave->iGlobalProfilesize)
/* cleanup the save structure */
MNG_FREE (pData, pData->pSavedata, sizeof (mng_savedata))
}
#ifdef MNG_SUPPORT_TRACE
MNG_TRACE (pData, MNG_FN_DROP_SAVEDATA, MNG_LC_END)
#endif
return MNG_NOERROR;
}
#endif
#endif /* MNG_SUPPORT_DISPLAY */
/* ************************************************************************** */
#ifdef MNG_SUPPORT_DISPLAY
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 */
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;
pData->iBACKred = 0; /* reset 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; /* reset SHOW data */
pData->iSHOWfromid = 0;
pData->iSHOWtoid = 0;
pData->iSHOWnextid = 0;
pData->iSHOWskip = 0;
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
/* 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;
#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_READ
MNG_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
/* ************************************************************************** */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -