📄 libmng_zlib.c
字号:
{#ifdef MNG_INCLUDE_JNG if (pData->bHasJHDR) /* is JNG alpha-channel ? */ { /* just store in object ? */ if ((!iRslt) && (pData->fStorerow)) iRslt = ((mng_storerow)pData->fStorerow) (pData); } else#endif /* MNG_INCLUDE_JNG */ { /* process this row */ if ((!iRslt) && (pData->fProcessrow)) iRslt = ((mng_processrow)pData->fProcessrow) (pData); /* store in object ? */ if ((!iRslt) && (pData->fStorerow)) iRslt = ((mng_storerow)pData->fStorerow) (pData); /* color correction ? */ if ((!iRslt) && (pData->fCorrectrow)) iRslt = ((mng_correctrow)pData->fCorrectrow) (pData); /* slap onto canvas ? */ if ((!iRslt) && (pData->fDisplayrow)) { iRslt = ((mng_displayrow)pData->fDisplayrow) (pData); if (!iRslt) /* check progressive display refresh */ iRslt = display_progressive_check (pData); } } } if (iRslt) /* on error bail out */ MNG_ERROR (pData, iRslt); if (!pData->fDifferrow) /* swap row-pointers */ { pSwap = pData->pWorkrow; pData->pWorkrow = pData->pPrevrow; pData->pPrevrow = pSwap; /* so prev points to the processed row! */ } iRslt = next_row (pData); /* adjust variables for next row */ if (iRslt) /* on error bail out */ MNG_ERROR (pData, iRslt); } /* let zlib know where to store next output */ pData->sZlib.next_out = pData->pWorkrow; pData->sZlib.avail_out = (uInt)(pData->iRowsize + pData->iPixelofs); } } /* until some error or EOI */ while ((iZrslt == Z_OK) && (pData->sZlib.avail_in > 0)); /* on error bail out */ if ((iZrslt != Z_OK) && (iZrslt != Z_STREAM_END)) MNG_ERRORZ (pData, (mng_uint32)iZrslt)#ifdef MNG_SUPPORT_TRACE MNG_TRACE (pData, MNG_FN_ZLIB_INFLATEROWS, MNG_LC_END)#endif return MNG_NOERROR;}#endif /* MNG_SUPPORT_DISPLAY *//* ************************************************************************** */mng_retcode mngzlib_inflatedata (mng_datap pData, mng_uint32 iInlen, mng_uint8p pIndata){ int iZrslt;#ifdef MNG_SUPPORT_TRACE MNG_TRACE (pData, MNG_FN_ZLIB_INFLATEDATA, MNG_LC_START)#endif /* let zlib know where to get stuff */ pData->sZlib.next_in = pIndata; pData->sZlib.avail_in = (uInt)iInlen; /* now inflate the data in one go! */ iZrslt = inflate (&pData->sZlib, Z_FINISH); /* not enough room in output-buffer ? */ if ((iZrslt == Z_BUF_ERROR) || (pData->sZlib.avail_in > 0)) return MNG_BUFOVERFLOW; /* on error bail out */ if ((iZrslt != Z_OK) && (iZrslt != Z_STREAM_END)) MNG_ERRORZ (pData, (mng_uint32)iZrslt)#ifdef MNG_SUPPORT_TRACE MNG_TRACE (pData, MNG_FN_ZLIB_INFLATEDATA, MNG_LC_END)#endif return MNG_NOERROR;}/* ************************************************************************** */mng_retcode mngzlib_inflatefree (mng_datap pData){ int iZrslt;#ifdef MNG_SUPPORT_TRACE MNG_TRACE (pData, MNG_FN_ZLIB_INFLATEFREE, MNG_LC_START)#endif pData->bInflating = MNG_FALSE; /* stopped it */ iZrslt = inflateEnd (&pData->sZlib); /* let zlib cleanup it's own stuff */ if (iZrslt != Z_OK) /* on error bail out */ MNG_ERRORZ (pData, (mng_uint32)iZrslt)#ifdef MNG_SUPPORT_TRACE MNG_TRACE (pData, MNG_FN_ZLIB_INFLATEFREE, MNG_LC_END)#endif return MNG_NOERROR; /* done */}/* ************************************************************************** */mng_retcode mngzlib_deflateinit (mng_datap pData){ int iZrslt;#ifdef MNG_SUPPORT_TRACE MNG_TRACE (pData, MNG_FN_ZLIB_DEFLATEINIT, MNG_LC_START)#endif /* initialize zlib structures and such */ iZrslt = deflateInit2 (&pData->sZlib, pData->iZlevel, pData->iZmethod, pData->iZwindowbits, pData->iZmemlevel, pData->iZstrategy); if (iZrslt != Z_OK) /* on error bail out */ MNG_ERRORZ (pData, (mng_uint32)iZrslt) pData->bDeflating = MNG_TRUE; /* really deflating something now */#ifdef MNG_SUPPORT_TRACE MNG_TRACE (pData, MNG_FN_ZLIB_DEFLATEINIT, MNG_LC_END)#endif return MNG_NOERROR; /* done */}/* ************************************************************************** */mng_retcode mngzlib_deflaterows (mng_datap pData, mng_uint32 iInlen, mng_uint8p pIndata){#ifdef MNG_SUPPORT_TRACE MNG_TRACE (pData, MNG_FN_ZLIB_DEFLATEROWS, MNG_LC_START)#endif#ifdef MNG_SUPPORT_TRACE MNG_TRACE (pData, MNG_FN_ZLIB_DEFLATEROWS, MNG_LC_END)#endif return MNG_NOERROR;}/* ************************************************************************** */mng_retcode mngzlib_deflatedata (mng_datap pData, mng_uint32 iInlen, mng_uint8p pIndata){ int iZrslt;#ifdef MNG_SUPPORT_TRACE MNG_TRACE (pData, MNG_FN_ZLIB_DEFLATEDATA, MNG_LC_START)#endif pData->sZlib.next_in = pIndata; /* let zlib know where to get stuff */ pData->sZlib.avail_in = (uInt)iInlen; /* now deflate the data in one go! */ iZrslt = deflate (&pData->sZlib, Z_FINISH); /* not enough room in output-buffer ? */ if ((iZrslt == Z_BUF_ERROR) || (pData->sZlib.avail_in > 0)) return MNG_BUFOVERFLOW; /* on error bail out */ if ((iZrslt != Z_OK) && (iZrslt != Z_STREAM_END)) MNG_ERRORZ (pData, (mng_uint32)iZrslt)#ifdef MNG_SUPPORT_TRACE MNG_TRACE (pData, MNG_FN_ZLIB_DEFLATEDATA, MNG_LC_END)#endif return MNG_NOERROR;}/* ************************************************************************** */mng_retcode mngzlib_deflatefree (mng_datap pData){ int iZrslt;#ifdef MNG_SUPPORT_TRACE MNG_TRACE (pData, MNG_FN_ZLIB_DEFLATEFREE, MNG_LC_START)#endif iZrslt = deflateEnd (&pData->sZlib); /* let zlib cleanup it's own stuff */ if (iZrslt != Z_OK) /* on error bail out */ MNG_ERRORZ (pData, (mng_uint32)iZrslt) pData->bDeflating = MNG_FALSE; /* stopped it */#ifdef MNG_SUPPORT_TRACE MNG_TRACE (pData, MNG_FN_ZLIB_DEFLATEFREE, MNG_LC_END)#endif return MNG_NOERROR; /* done */}/* ************************************************************************** */#endif /* MNG_INCLUDE_ZLIB *//* ************************************************************************** *//* * end of file * *//* ************************************************************************** */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -