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

📄 libmng_chunk_io.c

📁 Linux下的基于X11的图形开发环境。
💻 C
📖 第 1 页 / 共 5 页
字号:
#endif  {    mng_imagep pImage;    if (pData->bHasDHDR)               /* update delta image ? */    {                                  /* store in object 0 ! */      pImage = (mng_imagep)pData->pObjzero;                                       /* store for color-processing routines */      pImage->pImgbuf->iGamma   = mng_get_uint32 (pRawdata);      pImage->pImgbuf->bHasGAMA = MNG_TRUE;    }    else    {      pImage = (mng_imagep)pData->pCurrentobj;      if (!pImage)                     /* no object then dump it in obj 0 */        pImage = (mng_imagep)pData->pObjzero;                                       /* store for color-processing routines */      pImage->pImgbuf->iGamma   = mng_get_uint32 (pRawdata);      pImage->pImgbuf->bHasGAMA = MNG_TRUE;    }  }  else  {                                    /* store as global */    if (iRawlen != 0)      pData->iGlobalGamma = mng_get_uint32 (pRawdata);    {                                  /* create an animation object */      mng_retcode iRetcode = create_ani_gama (pData, (mng_bool)(iRawlen == 0),                                              pData->iGlobalGamma);      if (iRetcode)                    /* on error bail out */        return iRetcode;    }  }#endif /* MNG_SUPPORT_DISPLAY */#ifdef MNG_STORE_CHUNKS  if (pData->bStorechunks)  {                                    /* initialize storage */    mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);    if (iRetcode)                      /* on error bail out */      return iRetcode;                                       /* store the fields */    ((mng_gamap)*ppChunk)->bEmpty = (mng_bool)(iRawlen == 0);    if (iRawlen)      ((mng_gamap)*ppChunk)->iGamma = mng_get_uint32 (pRawdata);  }#endif /* MNG_STORE_CHUNKS */#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_READ_GAMA, MNG_LC_END)#endif  return MNG_NOERROR;                  /* done */}/* ************************************************************************** */READ_CHUNK (read_chrm){#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_READ_CHRM, MNG_LC_START)#endif                                       /* sequence checks */#ifdef MNG_INCLUDE_JNG  if ((!pData->bHasMHDR) && (!pData->bHasIHDR) &&      (!pData->bHasBASI) && (!pData->bHasDHDR) && (!pData->bHasJHDR))#else  if ((!pData->bHasMHDR) && (!pData->bHasIHDR) &&      (!pData->bHasBASI) && (!pData->bHasDHDR)    )#endif    MNG_ERROR (pData, MNG_SEQUENCEERROR)#ifdef MNG_INCLUDE_JNG  if ((pData->bHasIDAT) || (pData->bHasPLTE) || (pData->bHasJDAT) || (pData->bHasJDAA))#else  if ((pData->bHasIDAT) || (pData->bHasPLTE))#endif    MNG_ERROR (pData, MNG_SEQUENCEERROR)#ifdef MNG_INCLUDE_JNG  if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))#else  if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))#endif  {                                    /* length must be exactly 32 */    if (iRawlen != 32)      MNG_ERROR (pData, MNG_INVALIDLENGTH)  }  else  {                                    /* length must be empty or exactly 32 */    if ((iRawlen != 0) && (iRawlen != 32))      MNG_ERROR (pData, MNG_INVALIDLENGTH)  }#ifdef MNG_INCLUDE_JNG  if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))#else  if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))#endif    pData->bHasCHRM = MNG_TRUE;        /* indicate we've got it */  else    pData->bHasglobalCHRM = (mng_bool)(iRawlen != 0);#ifdef MNG_SUPPORT_DISPLAY  {    mng_uint32 iWhitepointx,   iWhitepointy;    mng_uint32 iPrimaryredx,   iPrimaryredy;    mng_uint32 iPrimarygreenx, iPrimarygreeny;    mng_uint32 iPrimarybluex,  iPrimarybluey;    iWhitepointx   = mng_get_uint32 (pRawdata);    iWhitepointy   = mng_get_uint32 (pRawdata+4);    iPrimaryredx   = mng_get_uint32 (pRawdata+8);    iPrimaryredy   = mng_get_uint32 (pRawdata+12);    iPrimarygreenx = mng_get_uint32 (pRawdata+16);    iPrimarygreeny = mng_get_uint32 (pRawdata+20);    iPrimarybluex  = mng_get_uint32 (pRawdata+24);    iPrimarybluey  = mng_get_uint32 (pRawdata+28);#ifdef MNG_INCLUDE_JNG    if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))#else    if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))#endif    {      mng_imagep     pImage;      mng_imagedatap pBuf;      if (pData->bHasDHDR)             /* update delta image ? */      {                                /* store it in object 0 ! */        pImage = (mng_imagep)pData->pObjzero;        pBuf = pImage->pImgbuf;        /* address object buffer */        pBuf->bHasCHRM = MNG_TRUE;     /* and tell it it's got a CHRM now */                                       /* store for color-processing routines */        pBuf->iWhitepointx   = iWhitepointx;        pBuf->iWhitepointy   = iWhitepointy;        pBuf->iPrimaryredx   = iPrimaryredx;        pBuf->iPrimaryredy   = iPrimaryredy;        pBuf->iPrimarygreenx = iPrimarygreenx;        pBuf->iPrimarygreeny = iPrimarygreeny;        pBuf->iPrimarybluex  = iPrimarybluex;        pBuf->iPrimarybluey  = iPrimarybluey;      }      else      {        pImage = (mng_imagep)pData->pCurrentobj;        if (!pImage)                   /* no object then dump it in obj 0 */          pImage = (mng_imagep)pData->pObjzero;        pBuf = pImage->pImgbuf;        /* address object buffer */        pBuf->bHasCHRM = MNG_TRUE;     /* and tell it it's got a CHRM now */                                       /* store for color-processing routines */        pBuf->iWhitepointx   = iWhitepointx;        pBuf->iWhitepointy   = iWhitepointy;        pBuf->iPrimaryredx   = iPrimaryredx;        pBuf->iPrimaryredy   = iPrimaryredy;        pBuf->iPrimarygreenx = iPrimarygreenx;        pBuf->iPrimarygreeny = iPrimarygreeny;        pBuf->iPrimarybluex  = iPrimarybluex;        pBuf->iPrimarybluey  = iPrimarybluey;      }    }    else    {                                  /* store as global */      if (iRawlen != 0)      {        pData->iGlobalWhitepointx   = iWhitepointx;        pData->iGlobalWhitepointy   = iWhitepointy;        pData->iGlobalPrimaryredx   = iPrimaryredx;        pData->iGlobalPrimaryredy   = iPrimaryredy;        pData->iGlobalPrimarygreenx = iPrimarygreenx;        pData->iGlobalPrimarygreeny = iPrimarygreeny;        pData->iGlobalPrimarybluex  = iPrimarybluex;        pData->iGlobalPrimarybluey  = iPrimarybluey;      }      {                                /* create an animation object */        mng_retcode iRetcode = create_ani_chrm (pData, (mng_bool)(iRawlen == 0),                                                iWhitepointx,   iWhitepointy,                                                iPrimaryredx,   iPrimaryredy,                                                iPrimarygreenx, iPrimarygreeny,                                                iPrimarybluex,  iPrimarybluey);        if (iRetcode)                  /* on error bail out */          return iRetcode;      }    }  }#endif /* MNG_SUPPORT_DISPLAY */#ifdef MNG_STORE_CHUNKS  if (pData->bStorechunks)  {                                    /* initialize storage */    mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);    if (iRetcode)                      /* on error bail out */      return iRetcode;                                       /* store the fields */    ((mng_chrmp)*ppChunk)->bEmpty = (mng_bool)(iRawlen == 0);    if (iRawlen)    {      ((mng_chrmp)*ppChunk)->iWhitepointx = mng_get_uint32 (pRawdata);      ((mng_chrmp)*ppChunk)->iWhitepointy = mng_get_uint32 (pRawdata+4);      ((mng_chrmp)*ppChunk)->iRedx        = mng_get_uint32 (pRawdata+8);      ((mng_chrmp)*ppChunk)->iRedy        = mng_get_uint32 (pRawdata+12);      ((mng_chrmp)*ppChunk)->iGreenx      = mng_get_uint32 (pRawdata+16);      ((mng_chrmp)*ppChunk)->iGreeny      = mng_get_uint32 (pRawdata+20);      ((mng_chrmp)*ppChunk)->iBluex       = mng_get_uint32 (pRawdata+24);      ((mng_chrmp)*ppChunk)->iBluey       = mng_get_uint32 (pRawdata+28);    }    }#endif /* MNG_STORE_CHUNKS */#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_READ_CHRM, MNG_LC_END)#endif  return MNG_NOERROR;                  /* done */}/* ************************************************************************** */READ_CHUNK (read_srgb){#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_READ_SRGB, MNG_LC_START)#endif                                       /* sequence checks */#ifdef MNG_INCLUDE_JNG  if ((!pData->bHasMHDR) && (!pData->bHasIHDR) &&      (!pData->bHasBASI) && (!pData->bHasDHDR) && (!pData->bHasJHDR))#else  if ((!pData->bHasMHDR) && (!pData->bHasIHDR) &&      (!pData->bHasBASI) && (!pData->bHasDHDR)    )#endif    MNG_ERROR (pData, MNG_SEQUENCEERROR)#ifdef MNG_INCLUDE_JNG  if ((pData->bHasIDAT) || (pData->bHasPLTE) || (pData->bHasJDAT) || (pData->bHasJDAA))#else  if ((pData->bHasIDAT) || (pData->bHasPLTE))#endif    MNG_ERROR (pData, MNG_SEQUENCEERROR)#ifdef MNG_INCLUDE_JNG  if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))#else  if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))#endif  {                                    /* length must be exactly 1 */    if (iRawlen != 1)      MNG_ERROR (pData, MNG_INVALIDLENGTH)  }  else  {                                    /* length must be empty or exactly 1 */    if ((iRawlen != 0) && (iRawlen != 1))      MNG_ERROR (pData, MNG_INVALIDLENGTH)  }#ifdef MNG_INCLUDE_JNG  if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))#else  if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))#endif    pData->bHasSRGB = MNG_TRUE;        /* indicate we've got it */  else    pData->bHasglobalSRGB = (mng_bool)(iRawlen != 0);#ifdef MNG_SUPPORT_DISPLAY#ifdef MNG_INCLUDE_JNG  if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))#else  if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))#endif  {    mng_imagep pImage;    if (pData->bHasDHDR)               /* update delta image ? */    {                                  /* store in object 0 ! */      pImage = (mng_imagep)pData->pObjzero;                                       /* store for color-processing routines */      pImage->pImgbuf->iRenderingintent = *pRawdata;      pImage->pImgbuf->bHasSRGB         = MNG_TRUE;    }    else    {      pImage = (mng_imagep)pData->pCurrentobj;      if (!pImage)                     /* no object then dump it in obj 0 */        pImage = (mng_imagep)pData->pObjzero;                                       /* store for color-processing routines */      pImage->pImgbuf->iRenderingintent = *pRawdata;      pImage->pImgbuf->bHasSRGB         = MNG_TRUE;    }  }  else  {                                    /* store as global */    if (iRawlen != 0)      pData->iGlobalRendintent = *pRawdata;    {                                  /* create an animation object */      mng_retcode iRetcode = create_ani_srgb (pData, (mng_bool)(iRawlen == 0),                                              pData->iGlobalRendintent);      if (iRetcode)                    /* on error bail out */        return iRetcode;    }  }#endif /* MNG_SUPPORT_DISPLAY */#ifdef MNG_STORE_CHUNKS  if (pData->bStorechunks)  {                                    /* initialize storage */    mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);    if (iRetcode)                      /* on error bail out */      return iRetcode;                

⌨️ 快捷键说明

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