⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 libmng_object_prc.c

📁 Linux下的基于X11的图形开发环境。
💻 C
📖 第 1 页 / 共 5 页
字号:
    else                               /* get the current object */      pCurrent = (mng_imagep)pData->pCurrentobj;    if (!pCurrent)                     /* otherwise object 0 */      pCurrent = (mng_imagep)pData->pObjzero;                                       /* now just clone the object !!! */    iRetcode  = clone_imageobject (pData, 0, MNG_FALSE, pCurrent->bVisible,                                   MNG_FALSE, MNG_FALSE, 0, 0, 0, pCurrent, &pImage);    if (iRetcode)                      /* on error bail out */      return iRetcode;    pImage->sHeader.fCleanup = free_ani_image;    pImage->sHeader.fProcess = process_ani_image;    add_ani_object (pData, (mng_object_headerp)pImage);  }#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_CREATE_ANI_IMAGE, MNG_LC_END)#endif  return MNG_NOERROR;                  /* okido */}/* ************************************************************************** */mng_retcode free_ani_image (mng_datap   pData,                            mng_objectp pObject){  mng_ani_imagep pImage = (mng_ani_imagep)pObject;  mng_imagedatap pImgbuf = pImage->pImgbuf;  mng_retcode    iRetcode;#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_FREE_ANI_IMAGE, MNG_LC_START)#endif                                       /* unlink the image-data buffer */  iRetcode = free_imagedataobject (pData, pImgbuf);                                       /* drop it's own buffer */  MNG_FREEX (pData, pImage, sizeof (mng_ani_image))#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_FREE_ANI_IMAGE, MNG_LC_END)#endif  return iRetcode;}/* ************************************************************************** */mng_retcode process_ani_image (mng_datap   pData,                               mng_objectp pObject){  mng_retcode    iRetcode = MNG_NOERROR;  mng_ani_imagep pImage   = (mng_imagep)pObject;#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_PROCESS_ANI_IMAGE, MNG_LC_START)#endif  if (pData->bHasDHDR)                 /* processing delta-image ? */  {    mng_imagep pDelta = (mng_imagep)pData->pDeltaImage;    if (!pData->iBreakpoint)           /* only execute if not broken before */    {                                  /* make sure to process pixels as well */      pData->bDeltaimmediate = MNG_FALSE;                                       /* execute the delta process */      iRetcode = execute_delta_image (pData, pDelta, (mng_imagep)pObject);      if (iRetcode)                    /* on error bail out */        return iRetcode;    }                                       /* now go and shoot it off (if required) */    if ((pDelta->bVisible) && (pDelta->bViewable))      iRetcode = display_image (pData, pDelta, MNG_FALSE);    if (!pData->bTimerset)      pData->bHasDHDR = MNG_FALSE;     /* this image signifies IEND !! */  }  else  if (pData->pCurrentobj)              /* active object ? */  {    mng_imagep     pCurrent = (mng_imagep)pData->pCurrentobj;    mng_imagedatap pBuf     = pCurrent->pImgbuf;    if (!pData->iBreakpoint)           /* don't copy it again ! */    {      if (pBuf->iImgdatasize)          /* buffer present in active object ? */                                       /* then drop it */        MNG_FREE (pData, pBuf->pImgdata, pBuf->iImgdatasize)      if (pBuf->iProfilesize)          /* iCCP profile present ? */                                       /* then drop it */        MNG_FREE (pData, pBuf->pProfile, pBuf->iProfilesize)                                       /* now blatently copy the animation buffer */      MNG_COPY (pBuf, pImage->pImgbuf, sizeof (mng_imagedata))                                       /* copy viewability */      pCurrent->bViewable = pImage->bViewable;      if (pBuf->iImgdatasize)          /* sample buffer present ? */      {                                /* then make a copy */        MNG_ALLOC (pData, pBuf->pImgdata, pBuf->iImgdatasize)        MNG_COPY (pBuf->pImgdata, pImage->pImgbuf->pImgdata, pBuf->iImgdatasize)      }      if (pBuf->iProfilesize)          /* iCCP profile present ? */      {                                /* then make a copy */        MNG_ALLOC (pData, pBuf->pProfile, pBuf->iProfilesize)        MNG_COPY (pBuf->pProfile, pImage->pImgbuf->pProfile, pBuf->iProfilesize)      }    }                                       /* now go and shoot it off (if required) */    if ((pCurrent->bVisible) && (pCurrent->bViewable))      iRetcode = display_image (pData, pCurrent, MNG_FALSE);  }  else  {    mng_imagep pObjzero = (mng_imagep)pData->pObjzero;                                       /* overlay with object 0 status */    pImage->bVisible  = pObjzero->bVisible;    pImage->bViewable = pObjzero->bViewable;    pImage->iPosx     = pObjzero->iPosx;    pImage->iPosy     = pObjzero->iPosy;    pImage->bClipped  = pObjzero->bClipped;    pImage->iClipl    = pObjzero->iClipl;    pImage->iClipr    = pObjzero->iClipr;    pImage->iClipt    = pObjzero->iClipt;    pImage->iClipb    = pObjzero->iClipb;                                       /* now this should do the trick */    if ((pImage->bVisible) && (pImage->bViewable))      iRetcode = display_image (pData, pImage, MNG_FALSE);  }  if (!iRetcode)                       /* all's well ? */  {    if (pData->bTimerset)              /* timer break ? */      pData->iBreakpoint = 99;         /* fictive number; no more processing needed! */    else      pData->iBreakpoint = 0;          /* else clear it */  }#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_PROCESS_ANI_IMAGE, MNG_LC_END)#endif  return iRetcode;}/* ************************************************************************** *//* ************************************************************************** */mng_retcode create_ani_plte (mng_datap      pData,                             mng_uint32     iEntrycount,                             mng_palette8ep paEntries){  mng_ani_pltep pPLTE;#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_CREATE_ANI_PLTE, MNG_LC_START)#endif  if (pData->bCacheplayback)           /* caching playback info ? */  {    MNG_ALLOC (pData, pPLTE, sizeof (mng_ani_plte))    pPLTE->sHeader.fCleanup = free_ani_plte;    pPLTE->sHeader.fProcess = process_ani_plte;    add_ani_object (pData, (mng_object_headerp)pPLTE);    pPLTE->iEntrycount      = iEntrycount;    MNG_COPY (pPLTE->aEntries, paEntries, sizeof (pPLTE->aEntries))  }#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_CREATE_ANI_PLTE, MNG_LC_END)#endif  return MNG_NOERROR;}/* ************************************************************************** */mng_retcode free_ani_plte (mng_datap   pData,                           mng_objectp pObject){#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_FREE_ANI_PLTE, MNG_LC_START)#endif  MNG_FREEX (pData, pObject, sizeof (mng_ani_plte))#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_FREE_ANI_PLTE, MNG_LC_END)#endif  return MNG_NOERROR;}/* ************************************************************************** */mng_retcode process_ani_plte (mng_datap   pData,                              mng_objectp pObject){  mng_ani_pltep pPLTE = (mng_ani_pltep)pObject;#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_PROCESS_ANI_PLTE, MNG_LC_START)#endif  pData->bHasglobalPLTE   = MNG_TRUE;  pData->iGlobalPLTEcount = pPLTE->iEntrycount;  MNG_COPY (pData->aGlobalPLTEentries, pPLTE->aEntries, sizeof (pPLTE->aEntries))#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_PROCESS_ANI_PLTE, MNG_LC_END)#endif  return MNG_NOERROR;}/* ************************************************************************** *//* ************************************************************************** */mng_retcode create_ani_trns (mng_datap    pData,                             mng_uint32   iRawlen,                             mng_uint8p   pRawdata){  mng_ani_trnsp pTRNS;#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_CREATE_ANI_TRNS, MNG_LC_START)#endif  if (pData->bCacheplayback)           /* caching playback info ? */  {    MNG_ALLOC (pData, pTRNS, sizeof (mng_ani_trns))    pTRNS->sHeader.fCleanup = free_ani_trns;    pTRNS->sHeader.fProcess = process_ani_trns;    add_ani_object (pData, (mng_object_headerp)pTRNS);    pTRNS->iRawlen          = iRawlen;    MNG_COPY (pTRNS->aRawdata, pRawdata, sizeof (pTRNS->aRawdata))  }#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_CREATE_ANI_TRNS, MNG_LC_END)#endif  return MNG_NOERROR;}/* ************************************************************************** */mng_retcode free_ani_trns (mng_datap   pData,                           mng_objectp pObject){#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_FREE_ANI_TRNS, MNG_LC_START)#endif  MNG_FREEX (pData, pObject, sizeof (mng_ani_trns))#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_FREE_ANI_TRNS, MNG_LC_END)#endif  return MNG_NOERROR;}/* ************************************************************************** */mng_retcode process_ani_trns (mng_datap   pData,                              mng_objectp pObject){  mng_ani_trnsp pTRNS = (mng_ani_trnsp)pObject;#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_PROCESS_ANI_TRNS, MNG_LC_START)#endif  pData->bHasglobalTRNS    = MNG_TRUE;  pData->iGlobalTRNSrawlen = pTRNS->iRawlen;  MNG_COPY (pData->aGlobalTRNSrawdata, pTRNS->aRawdata, sizeof (pTRNS->aRawdata))#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_PROCESS_ANI_TRNS, MNG_LC_END)#endif  return MNG_NOERROR;}/* ************************************************************************** *//* ************************************************************************** */mng_retcode create_ani_gama (mng_datap  pData,                             mng_bool   bEmpty,                             mng_uint32 iGamma){  mng_ani_gamap pGAMA;#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_CREATE_ANI_GAMA, MNG_LC_START)#endif  if (pData->bCacheplayback)           /* caching playback info ? */  {    MNG_ALLOC (pData, pGAMA, sizeof (mng_ani_gama))    pGAMA->sHeader.fCleanup = free_ani_gama;    pGAMA->sHeader.fProcess = process_ani_gama;    add_ani_object (pData, (mng_object_headerp)pGAMA);    pGAMA->bEmpty           = bEmpty;    pGAMA->iGamma           = iGamma;  }#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_CREATE_ANI_GAMA, MNG_LC_END)#endif  return MNG_NOERROR;}/* ************************************************************************** */mng_retcode free_ani_gama (mng_datap   pData,                           mng_objectp pObject){#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_FREE_ANI_GAMA, MNG_LC_START)#endif  MNG_FREEX (pData, pObject, sizeof (mng_ani_gama))#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_FREE_ANI_GAMA, MNG_LC_END)#endif  return MNG_NOERROR;}/* ************************************************************************** */mng_retcode process_ani_gama (mng_datap   pData,                              mng_objectp pObject){  mng_ani_gamap pGAMA = (mng_ani_gamap)pObject;#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_PROCESS_ANI_GAMA, MNG_LC_START)#endif  i

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -