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

📄 libmng_chunk_prc.c

📁 Linux下的基于X11的图形开发环境。
💻 C
📖 第 1 页 / 共 4 页
字号:
/* ************************************************************************** *//* *             For conditions of distribution and use,                    * *//* *                see copyright notice in libmng.h                        * *//* ************************************************************************** *//* *                                                                        * *//* * project   : libmng                                                     * *//* * file      : libmng_chunk_prc.c        copyright (c) 2000 G.Juyn        * *//* * version   : 1.0.0                                                      * *//* *                                                                        * *//* * purpose   : Chunk initialization & cleanup (implementation)            * *//* *                                                                        * *//* * author    : G.Juyn                                                     * *//* * web       : http://www.3-t.com                                         * *//* * email     : mailto:info@3-t.com                                        * *//* *                                                                        * *//* * comment   : implementation of the chunk initialization & cleanup       * *//* *             routines                                                   * *//* *                                                                        * *//* * changes   : 0.5.1 - 05/08/2000 - G.Juyn                                * *//* *             - changed strict-ANSI stuff                                * *//* *             0.5.1 - 05/12/2000 - G.Juyn                                * *//* *             - changed trace to macro for callback error-reporting      * *//* *                                                                        * *//* *             0.9.1 - 07/19/2000 - G.Juyn                                * *//* *             - fixed creation-code                                      * *//* *                                                                        * *//* *             0.9.2 - 07/31/2000 - G.Juyn                                * *//* *             - put add_chunk() inside MNG_INCLUDE_WRITE_PROCS wrapper   * *//* *             0.9.2 - 08/01/2000 - G.Juyn                                * *//* *             - wrapper for add_chunk() changed                          * *//* *             0.9.2 - 08/05/2000 - G.Juyn                                * *//* *             - changed file-prefixes                                    * *//* *                                                                        * *//* *             0.9.3 - 08/26/2000 - G.Juyn                                * *//* *             - added MAGN chunk                                         * *//* *             0.9.3 - 10/16/2000 - G.Juyn                                * *//* *             - added support for JDAA                                   * *//* *                                                                        * *//* ************************************************************************** */#include "libmng.h"#include "libmng_data.h"#include "libmng_error.h"#include "libmng_trace.h"#ifdef __BORLANDC__#pragma hdrstop#endif#include "libmng_memory.h"#include "libmng_chunks.h"#include "libmng_chunk_prc.h"#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)#pragma option -A                      /* force ANSI-C */#endif/* ************************************************************************** *//* *                                                                        * *//* * General chunk routines                                                 * *//* *                                                                        * *//* ************************************************************************** */void add_chunk (mng_datap  pData,                mng_chunkp pChunk){  if (!pData->pFirstchunk)             /* list is still empty ? */  {    pData->pFirstchunk      = pChunk;  /* then this becomes the first */    #ifdef MNG_SUPPORT_WRITE    pData->iFirstchunkadded = ((mng_chunk_headerp)pChunk)->iChunkname;#endif    if (((mng_chunk_headerp)pChunk)->iChunkname == MNG_UINT_IHDR)      pData->eImagetype     = mng_it_png;    else#ifdef MNG_INCLUDE_JNG    if (((mng_chunk_headerp)pChunk)->iChunkname == MNG_UINT_JHDR)      pData->eImagetype     = mng_it_jng;    else#endif      pData->eImagetype     = mng_it_mng;    pData->eSigtype         = pData->eImagetype;  }  else  {                                    /* else we make appropriate links */    ((mng_chunk_headerp)pChunk)->pPrev = pData->pLastchunk;    ((mng_chunk_headerp)pData->pLastchunk)->pNext = pChunk;  }  pData->pLastchunk = pChunk;          /* and it's always the last */  return;}/* ************************************************************************** *//* *                                                                        * *//* * Chunk specific initialization routines                                 * *//* *                                                                        * *//* ************************************************************************** */INIT_CHUNK_HDR (init_ihdr){#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_IHDR, MNG_LC_START)#endif  MNG_ALLOC (pData, *ppChunk, sizeof (mng_ihdr))  ((mng_ihdrp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_IHDR, MNG_LC_END)#endif  return MNG_NOERROR;}/* ************************************************************************** */INIT_CHUNK_HDR (init_plte){#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_PLTE, MNG_LC_START)#endif  MNG_ALLOC (pData, *ppChunk, sizeof (mng_plte))  ((mng_pltep)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_PLTE, MNG_LC_END)#endif  return MNG_NOERROR;}/* ************************************************************************** */INIT_CHUNK_HDR (init_idat){#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_IDAT, MNG_LC_START)#endif  MNG_ALLOC (pData, *ppChunk, sizeof (mng_idat))  ((mng_idatp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_IDAT, MNG_LC_END)#endif  return MNG_NOERROR;}/* ************************************************************************** */INIT_CHUNK_HDR (init_iend){#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_IEND, MNG_LC_START)#endif  MNG_ALLOC (pData, *ppChunk, sizeof (mng_iend))  ((mng_iendp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_IEND, MNG_LC_END)#endif  return MNG_NOERROR;}/* ************************************************************************** */INIT_CHUNK_HDR (init_trns){#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_TRNS, MNG_LC_START)#endif  MNG_ALLOC (pData, *ppChunk, sizeof (mng_trns))  ((mng_trnsp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_TRNS, MNG_LC_END)#endif  return MNG_NOERROR;}/* ************************************************************************** */INIT_CHUNK_HDR (init_gama){#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_GAMA, MNG_LC_START)#endif  MNG_ALLOC (pData, *ppChunk, sizeof (mng_gama))  ((mng_gamap)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_GAMA, MNG_LC_END)#endif  return MNG_NOERROR;}/* ************************************************************************** */INIT_CHUNK_HDR (init_chrm){#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_CHRM, MNG_LC_START)#endif  MNG_ALLOC (pData, *ppChunk, sizeof (mng_chrm))  ((mng_chrmp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_CHRM, MNG_LC_END)#endif  return MNG_NOERROR;}/* ************************************************************************** */INIT_CHUNK_HDR (init_srgb){#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_SRGB, MNG_LC_START)#endif  MNG_ALLOC (pData, *ppChunk, sizeof (mng_srgb))  ((mng_srgbp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_SRGB, MNG_LC_END)#endif  return MNG_NOERROR;}/* ************************************************************************** */INIT_CHUNK_HDR (init_iccp){#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_ICCP, MNG_LC_START)#endif  MNG_ALLOC (pData, *ppChunk, sizeof (mng_iccp))  ((mng_iccpp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_ICCP, MNG_LC_END)#endif  return MNG_NOERROR;}/* ************************************************************************** */INIT_CHUNK_HDR (init_text){#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_TEXT, MNG_LC_START)#endif  MNG_ALLOC (pData, *ppChunk, sizeof (mng_text))  ((mng_textp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_TEXT, MNG_LC_END)#endif  return MNG_NOERROR;}/* ************************************************************************** */INIT_CHUNK_HDR (init_ztxt){#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_ZTXT, MNG_LC_START)#endif  MNG_ALLOC (pData, *ppChunk, sizeof (mng_ztxt))  ((mng_ztxtp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_ZTXT, MNG_LC_END)#endif  return MNG_NOERROR;}/* ************************************************************************** */INIT_CHUNK_HDR (init_itxt){#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_ITXT, MNG_LC_START)#endif  MNG_ALLOC (pData, *ppChunk, sizeof (mng_itxt))  ((mng_itxtp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_ITXT, MNG_LC_END)#endif  return MNG_NOERROR;}/* ************************************************************************** */INIT_CHUNK_HDR (init_bkgd){#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_BKGD, MNG_LC_START)#endif  MNG_ALLOC (pData, *ppChunk, sizeof (mng_bkgd))  ((mng_bkgdp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_BKGD, MNG_LC_END)#endif  return MNG_NOERROR;}/* ************************************************************************** */INIT_CHUNK_HDR (init_phys){#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_PHYS, MNG_LC_START)#endif  MNG_ALLOC (pData, *ppChunk, sizeof (mng_phys))  ((mng_physp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_PHYS, MNG_LC_END)#endif  return MNG_NOERROR;}/* ************************************************************************** */INIT_CHUNK_HDR (init_sbit){#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_SBIT, MNG_LC_START)#endif  MNG_ALLOC (pData, *ppChunk, sizeof (mng_sbit))  ((mng_sbitp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_SBIT, MNG_LC_END)#endif  return MNG_NOERROR;}/* ************************************************************************** */INIT_CHUNK_HDR (init_splt){#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_SPLT, MNG_LC_START)#endif  MNG_ALLOC (pData, *ppChunk, sizeof (mng_splt))  ((mng_spltp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_SPLT, MNG_LC_END)#endif  return MNG_NOERROR;}/* ************************************************************************** */INIT_CHUNK_HDR (init_hist){#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_HIST, MNG_LC_START)#endif  MNG_ALLOC (pData, *ppChunk, sizeof (mng_hist))  ((mng_histp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_HIST, MNG_LC_END)#endif  return MNG_NOERROR;}/* ************************************************************************** */INIT_CHUNK_HDR (init_time){#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_TIME, MNG_LC_START)#endif  MNG_ALLOC (pData, *ppChunk, sizeof (mng_time))  ((mng_timep)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_TIME, MNG_LC_END)#endif  return MNG_NOERROR;}/* ************************************************************************** */INIT_CHUNK_HDR (init_mhdr){#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_MHDR, MNG_LC_START)#endif  MNG_ALLOC (pData, *ppChunk, sizeof (mng_mhdr))  ((mng_mhdrp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_MHDR, MNG_LC_END)#endif  return MNG_NOERROR;}/* ************************************************************************** */INIT_CHUNK_HDR (init_mend){#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_MEND, MNG_LC_START)#endif  MNG_ALLOC (pData, *ppChunk, sizeof (mng_mend))  ((mng_mendp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_MEND, MNG_LC_END)#endif  return MNG_NOERROR;}/* ************************************************************************** */INIT_CHUNK_HDR (init_loop){#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_LOOP, MNG_LC_START)#endif  MNG_ALLOC (pData, *ppChunk, sizeof (mng_loop))  ((mng_loopp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_LOOP, MNG_LC_END)#endif  return MNG_NOERROR;}/* ************************************************************************** */INIT_CHUNK_HDR (init_endl){#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_ENDL, MNG_LC_START)#endif  MNG_ALLOC (pData, *ppChunk, sizeof (mng_endl))  ((mng_endlp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_ENDL, MNG_LC_END)#endif  return MNG_NOERROR;}/* ************************************************************************** */INIT_CHUNK_HDR (init_defi){#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_DEFI, MNG_LC_START)#endif  MNG_ALLOC (pData, *ppChunk, sizeof (mng_defi))  ((mng_defip)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_DEFI, MNG_LC_END)#endif  return MNG_NOERROR;}/* ************************************************************************** */INIT_CHUNK_HDR (init_basi){#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_BASI, MNG_LC_START)#endif  MNG_ALLOC (pData, *ppChunk, sizeof (mng_basi))  ((mng_basip)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INIT_BASI, MNG_LC_END)

⌨️ 快捷键说明

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