1/* ************************************************************************** */
2/* * For conditions of distribution and use, * */
3/* * see copyright notice in libmng.h * */
4/* ************************************************************************** */
5/* * * */
6/* * project : libmng * */
7/* * file : libmng_types.h copyright (c) 2000-2007 G.Juyn * */
8/* * version : 2.0.3 * */
9/* * * */
10/* * purpose : type specifications * */
11/* * * */
12/* * author : G.Juyn * */
13/* * * */
14/* * comment : Specification of the types used by the library * */
15/* * Creates platform-independant structure * */
16/* * * */
17/* * changes : 0.5.1 - 05/06/2000 - G.Juyn * */
18/* * - added iteratechunk callback definition * */
19/* * 0.5.1 - 05/08/2000 - G.Juyn * */
20/* * - improved definitions for DLL support * */
21/* * - added 8-bit palette definition * */
22/* * - added general array definitions * */
23/* * - added MNG_NULL definition * */
24/* * - changed strict-ANSI stuff * */
25/* * 0.5.1 - 05/11/2000 - G.Juyn * */
26/* * - changed most callback prototypes to allow the app * */
27/* * to report errors during callback processing * */
28/* * 0.5.1 - 05/16/2000 - G.Juyn * */
29/* * - moved standard header includes into this file * */
30/* * (stdlib/mem for mem-mngmt & math for fp gamma-calc) * */
31/* * * */
32/* * 0.5.2 - 05/18/2000 - G.Juyn * */
33/* * - B003 - fixed problem with <mem.h> being proprietary * */
34/* * to Borland platform * */
35/* * - added helper definitions for JNG (IJG-based) * */
36/* * - fixed support for IJGSRC6B * */
37/* * 0.5.2 - 05/24/2000 - G.Juyn * */
38/* * - added default IJG compression parameters and such * */
39/* * 0.5.2 - 05/31/2000 - G.Juyn * */
40/* * - fixed inclusion for memcpy (contributed by Tim Rowley) * */
41/* * - added mng_int32p (contributed by Tim Rowley) * */
42/* * 0.5.2 - 06/02/2000 - G.Juyn * */
43/* * - removed SWAP_ENDIAN reference (contributed by Tim Rowley)* */
44/* * - added getalphaline callback for RGB8_A8 canvasstyle * */
45/* * * */
46/* * 0.5.3 - 06/21/2000 - G.Juyn * */
47/* * - added speedtype to facilitate testing * */
48/* * 0.5.3 - 06/27/2000 - G.Juyn * */
49/* * - added typedef for mng_size_t * */
50/* * - changed size parameter for memory callbacks to * */
51/* * mng_size_t * */
52/* * 0.5.3 - 06/28/2000 - G.Juyn * */
53/* * - changed definition of 32-bit ints (64-bit platforms) * */
54/* * - changed definition of mng_handle (64-bit platforms) * */
55/* * 0.5.3 - 06/29/2000 - G.Juyn * */
56/* * - changed definition of mng_handle (again) * */
57/* * - swapped refresh parameters * */
58/* * - added inclusion of stdlib.h for abs() * */
59/* * * */
60/* * 0.9.0 - 06/30/2000 - G.Juyn * */
61/* * - changed refresh parameters to 'x,y,width,height' * */
62/* * 0.9.1 - 07/10/2000 - G.Juyn * */
63/* * - added suspendbuffer constants * */
64/* * 0.9.1 - 07/15/2000 - G.Juyn * */
65/* * - added callbacks for SAVE/SEEK processing * */
66/* * * */
67/* * 0.9.2 - 08/05/2000 - G.Juyn * */
68/* * - changed file-prefixes * */
69/* * * */
70/* * 0.9.3 - 08/07/2000 - G.Juyn * */
71/* * - B111300 - fixup for improved portability * */
72/* * 0.9.3 - 08/12/2000 - G.Juyn * */
73/* * - added workaround for faulty PhotoShop iCCP chunk * */
74/* * 0.9.3 - 09/11/2000 - G.Juyn * */
75/* * - added export of zlib functions from windows dll * */
76/* * - fixed inclusion parameters once again to make those * */
77/* * external libs work together * */
78/* * - re-fixed fixed inclusion parameters * */
79/* * (these freeking libraries make me mad) * */
80/* * 0.9.3 - 10/11/2000 - G.Juyn * */
81/* * - added support for nEED * */
82/* * 0.9.3 - 10/17/2000 - G.Juyn * */
83/* * - added callback to process non-critical unknown chunks * */
84/* * * */
85/* * 0.9.4 - 11/20/2000 - R.Giles * */
86/* * - fixed inclusion of lcms header for non-windows platforms * */
87/* * 0.9.4 - 12/12/2000 - G.Juyn * */
88/* * - changed callback convention for MSVC (Thanks Chad) * */
89/* * 0.9.4 - 12/16/2000 - G.Juyn * */
90/* * - fixed mixup of data- & function-pointers (thanks Dimitri)* */
91/* * * */
92/* * 1.0.1 - 02/08/2001 - G.Juyn * */
93/* * - added MEND processing callback * */
94/* * * */
95/* * 1.0.2 - 06/23/2001 - G.Juyn * */
96/* * - added processterm callback * */
97/* * * */
98/* * 1.0.3 - 08/06/2001 - G.Juyn * */
99/* * - changed inclusion of lcms.h for Linux platforms * */
100/* * * */
101/* * 1.0.5 - 08/19/2002 - G.Juyn * */
102/* * - B597134 - libmng pollutes the linker namespace * */
103/* * * */
104/* * 1.0.6 - 04/11/2003 - G.Juyn * */
105/* * - B719420 - fixed several MNG_APP_CMS problems * */
106/* * 1.0.6 - 06/15/2003 - R.Giles * */
107/* * - lcms.h inclusion is generally no longer prefixed * */
108/* * 1.0.6 - 07/07/2003 - G. R-P. * */
109/* * - added png_imgtypes enumeration * */
110/* * * */
111/* * 1.0.7 - 03/10/2004 - G.R-P * */
112/* * - added conditionals around openstream/closestream * */
113/* * * */
114/* * 1.0.8 - 04/11/2004 - G.Juyn * */
115/* * - added data-push mechanisms for specialized decoders * */
116/* * 1.0.8 - 08/01/2004 - G.Juyn * */
117/* * - added support for 3+byte pixelsize for JPEG's * */
118/* * * */
119/* * 1.0.9 - 12/05/2004 - G.Juyn * */
120/* * - inclusion of zlib/lcms/ijgsrc6b with <> instead of "" * */
121/* * 1.0.9 - 12/06/2004 - G.Juyn * */
122/* * - added conditional MNG_OPTIMIZE_CHUNKREADER * */
123/* * * */
124/* * 1.0.10 - 04/08/2007 - G.Juyn * */
125/* * - added support for mPNG proposal * */
126/* * 1.0.10 - 04/12/2007 - G.Juyn * */
127/* * - added support for ANG proposal * */
128/* * * */
129/* * 2.0.3 - 11/15/2014 * */
130/* ************************************************************************** */
131
132#ifndef _libmng_types_h_
133#define _libmng_types_h_
134
135/* ************************************************************************** */
136
137#ifdef __BORLANDC__
138#pragma option -AT /* turn off strict ANSI-C for the moment */
139#endif
140
141#ifndef WIN32
142#if defined(_WIN32) || defined(__WIN32__) || defined(_Windows) || defined(_WINDOWS)
143#define WIN32 /* gather them into a single define */
144#endif
145#endif
146
147/* ************************************************************************** */
148/* * * */
149/* * Here's where the external & standard libs are embedded * */
150/* * * */
151/* * (it can be a bit of a pain in the lower-back to get them to work * */
152/* * together) * */
153/* * * */
154/* ************************************************************************** */
155#ifdef HIDDEN_FOR_NOW
156#ifdef WIN32 /* only include needed stuff */
157#ifndef WIN32_LEAN_AND_MEAN
158#define WIN32_LEAN_AND_MEAN
159#endif
160#endif
161#endif /* HIDDEN_FOR_NOW */
162
163#ifdef MNG_USE_DLL
164#ifdef MNG_SKIP_ZLIB
165#undef MNG_INCLUDE_ZLIB
166#endif
167#ifdef MNG_SKIP_LCMS
168#undef MNG_INCLUDE_LCMS
169#endif
170#ifdef MNG_SKIP_IJG6B
171#undef MNG_INCLUDE_IJG6B
172#endif
173#endif
174
175#ifdef MNG_INCLUDE_ZLIB /* zlib by Mark Adler & Jean-loup Gailly */
176#include <zlib.h>
177#endif
178
179#ifdef MNG_INCLUDE_LCMS /* little cms by Marti Maria Saguer */
180#ifndef ZLIB_DLL
181#undef FAR
182#endif
183#ifdef HAVE_LIBLCMS1
184#include <lcms.h>
185#elif defined(HAVE_LIBLCMS2)
186#include <lcms2.h>
187#endif
188#endif /* MNG_INCLUDE_LCMS */
189
190#ifdef MNG_INCLUDE_IJG6B /* IJG's jpgsrc6b */
191#define JPEG_INTERNAL_OPTIONS /* for RGB_PIXELSIZE */
192#ifdef MNG_USE_SETJMP
193#include <setjmp.h> /* needed for error-recovery (blergh) */
194#else
195#ifdef WIN32
196/* #define USE_WINDOWS_MESSAGEBOX */ /* display a messagebox under Windoze */
197#endif
198#endif /* MNG_USE_SETJMP */
199#ifdef FAR
200#undef FAR /* possibly defined by zlib or lcms */
201#endif
202#define JPEG_INTERNAL_OPTIONS /* for RGB_PIXELSIZE */
203/* There has been a change in jpeg-9 : */
204#if !defined(HAVE_BOOLEAN) && !defined(_WIN32)
205#define HAVE_BOOLEAN
206#endif
207#ifndef _WIN32
208typedef int boolean;
209#endif
210/* For jpegsrc.v09a: */
211#include <stdio.h>
212#include <jpeglib.h>
213#endif /* MNG_INCLUDE_IJG6B */
214
215#if defined(MNG_INTERNAL_MEMMNGMT) || defined(MNG_INCLUDE_FILTERS)
216#include <stdlib.h> /* "calloc" & "free" & "abs" */
217#endif
218
219#include <limits.h> /* get proper integer widths */
220
221#ifdef WIN32
222#if defined __BORLANDC__
223#include <mem.h> /* defines "memcpy" for BCB */
224#else
225#include <memory.h> /* defines "memcpy" for other win32 platforms */
226#endif
227#include <string.h> /* "strncmp" + "strcmp" */
228#else /* WIN32 */
229#ifdef BSD
230#include <strings.h> /* defines "memcpy", etc for BSD (?) */
231#else
232#include <string.h> /* defines "memcpy", etc for all others (???) */
233#endif
234#endif /* WIN32 */
235
236#if defined(MNG_FULL_CMS) || defined(MNG_GAMMA_ONLY) || defined(MNG_APP_CMS)
237#include <math.h> /* fp gamma-calculation */
238#endif
239
240/* ************************************************************************** */
241/* * * */
242/* * Platform-dependant stuff * */
243/* * * */
244/* ************************************************************************** */
245
246/* TODO: this may require some elaboration for other platforms;
247 only works with BCB for now */
248
249#ifndef MNG_DLL
250#if defined(MNG_BUILD_DLL) || defined(MNG_USE_DLL)
251#define MNG_DLL
252#endif
253#endif
254
255#define MNG_LOCAL static
256
257#if defined(MNG_DLL) && defined(WIN32) /* setup DLL calling conventions */
258#define MNG_DECL __stdcall
259#if defined(MNG_BUILD_DLL)
260#define MNG_EXT __declspec(dllexport)
261#elif defined(MNG_USE_DLL)
262#define MNG_EXT __declspec(dllimport)
263#else
264#define MNG_EXT
265#endif
266#ifdef MNG_STRICT_ANSI
267#undef MNG_STRICT_ANSI /* can't do strict-ANSI with this DLL-stuff */
268#endif
269#else
270#define MNG_DECL /* dummies for non-DLL */
271#define MNG_EXT
272#endif /* MNG_DLL && WIN32 */
273
274#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
275#pragma option -A /* now force ANSI-C from here on */
276#endif
277
278/* ************************************************************************** */
279
280#if USHRT_MAX == 0xffffffffU /* get the proper 32-bit width !!! */
281typedef unsigned short mng_uint32;
282typedef signed short mng_int32;
283#elif UINT_MAX == 0xffffffffU
284typedef unsigned int mng_uint32;
285typedef signed int mng_int32;
286#elif ULONG_MAX == 0xffffffffU
287typedef unsigned long mng_uint32;
288typedef signed long mng_int32;
289#else
290#error "Sorry, I can't find any 32-bit integers on this platform."
291#endif
292
293typedef signed short mng_int16; /* other basic integers */
294typedef unsigned short mng_uint16;
295typedef signed char mng_int8;
296typedef unsigned char mng_uint8;
297
298typedef double mng_float; /* basic float */
299
300typedef size_t mng_size_t; /* size field for memory allocation */
301
302typedef char * mng_pchar; /* string */
303typedef void * mng_ptr; /* generic pointer */
304typedef void (*mng_fptr) (void); /* generic function pointer */
305
306/* ************************************************************************** */
307/* * * */
308/* * Platform-independant from here * */
309/* * * */
310/* ************************************************************************** */
311
312typedef mng_uint32 * mng_uint32p; /* pointer to unsigned longs */
313typedef mng_int32 * mng_int32p; /* pointer to longs */
314typedef mng_uint16 * mng_uint16p; /* pointer to unsigned words */
315typedef mng_uint8 * mng_uint8p; /* pointer to unsigned bytes */
316
317typedef mng_int8 mng_bool; /* booleans */
318
319struct mng_data_struct;
320typedef struct mng_data_struct * mng_handle; /* generic handle */
321
322typedef mng_int32 mng_retcode; /* generic return code */
323typedef mng_int32 mng_chunkid; /* 4-byte chunkname identifier */
324typedef mng_ptr mng_chunkp; /* pointer to a chunk-structure */
325typedef mng_ptr mng_objectp; /* pointer to an object-structure */
326
327typedef mng_chunkid * mng_chunkidp; /* pointer to chunkid */
328
329typedef struct { /* 8-bit palette element */
330 mng_uint8 iRed;
331 mng_uint8 iGreen;
332 mng_uint8 iBlue;
333 } mng_palette8e;
334typedef mng_palette8e mng_palette8[256]; /* 8-bit palette */
335typedef mng_palette8e * mng_palette8ep;
336
337typedef mng_uint8 mng_uint8arr[256]; /* generic arrays */
338typedef mng_uint8 mng_uint8arr4[4];
339typedef mng_uint16 mng_uint16arr[256];
340typedef mng_uint32 mng_uint32arr2[2];
341
342/* ************************************************************************** */
343
344#define MNG_FALSE 0
345#define MNG_TRUE 1
346#define MNG_NULL 0
347
348#define MNG_SUSPENDBUFFERSIZE 32768
349#define MNG_SUSPENDREQUESTSIZE 1024
350
351/* ************************************************************************** */
352
353#ifdef MNG_INCLUDE_ZLIB
354
355/* size of temporary zlib buffer for deflate processing */
356#define MNG_ZLIB_MAXBUF 8192
357
358/* default zlib compression parameters for deflateinit2 */
359#define MNG_ZLIB_LEVEL 9 /* level */
360#define MNG_ZLIB_METHOD Z_DEFLATED /* method */
361#define MNG_ZLIB_WINDOWBITS 15 /* window size */
362#define MNG_ZLIB_MEMLEVEL 9 /* memory level */
363#define MNG_ZLIB_STRATEGY Z_DEFAULT_STRATEGY /* strategy */
364
365#define MNG_MAX_IDAT_SIZE 4096 /* maximum size of IDAT data */
366
367#endif /* MNG_INCLUDE_ZLIB */
368
369/* ************************************************************************** */
370
371#ifdef MNG_INCLUDE_JNG
372
373#ifdef MNG_INCLUDE_IJG6B /* IJG helper defs */
374typedef struct jpeg_compress_struct mngjpeg_comp;
375typedef struct jpeg_decompress_struct mngjpeg_decomp;
376typedef struct jpeg_error_mgr mngjpeg_error;
377typedef struct jpeg_source_mgr mngjpeg_source;
378
379typedef mngjpeg_comp * mngjpeg_compp;
380typedef mngjpeg_decomp * mngjpeg_decompp;
381typedef mngjpeg_error * mngjpeg_errorp;
382typedef mngjpeg_source * mngjpeg_sourcep;
383
384typedef J_DCT_METHOD mngjpeg_dctmethod;
385
386/* default IJG parameters for compression */
387#define MNG_JPEG_DCT JDCT_DEFAULT /* DCT algorithm (JDCT_ISLOW) */
388#define MNG_JPEG_QUALITY 100 /* quality 0..100; 100=best */
389#define MNG_JPEG_SMOOTHING 0 /* default no smoothing */
390#define MNG_JPEG_PROGRESSIVE MNG_FALSE /* default is just baseline */
391#define MNG_JPEG_OPTIMIZED MNG_FALSE /* default is not optimized */
392#endif /* MNG_INCLUDE_IJG6B */
393
394#define MNG_JPEG_MAXBUF 65500 /* max size of temp JPEG buffer */
395#define MNG_MAX_JDAT_SIZE 4096 /* maximum size of JDAT data */
396
397#endif /* MNG_INCLUDE_JNG */
398
399/* ************************************************************************** */
400
401#ifdef MNG_INCLUDE_LCMS
402typedef cmsHPROFILE mng_cmsprof; /* little CMS helper defs */
403typedef cmsHTRANSFORM mng_cmstrans;
404typedef cmsCIExyY mng_CIExyY;
405typedef cmsCIExyYTRIPLE mng_CIExyYTRIPLE;
406
407#ifdef HAVE_LIBLCMS1
408typedef LPGAMMATABLE mng_gammatabp;
409#elif defined(HAVE_LIBLCMS2)
410typedef cmsToneCurve* mng_gammatabp;
411#endif
412#endif /* MNG_INCLUDE_LCMS */
413
414/* ************************************************************************** */
415
416 /* enumeration of known graphics types */
417enum mng_imgtypes {mng_it_unknown, mng_it_png, mng_it_mng, mng_it_jng
418#ifdef MNG_INCLUDE_MPNG_PROPOSAL
419 ,mng_it_mpng
420#endif
421#ifdef MNG_INCLUDE_ANG_PROPOSAL
422 ,mng_it_ang
423#endif
424 };
425typedef enum mng_imgtypes mng_imgtype;
426
427 /* enumeration of animation speed-types */
428enum mng_speedtypes {mng_st_normal, mng_st_fast, mng_st_slow, mng_st_slowest};
429typedef enum mng_speedtypes mng_speedtype;
430
431#ifdef MNG_OPTIMIZE_CHUNKREADER
432 /* enumeration object-creation indicators */
433enum mng_createobjtypes {mng_create_none, mng_create_always, mng_create_ifglobal};
434typedef enum mng_createobjtypes mng_createobjtype;
435#endif
436
437/* ************************************************************************** */
438
439/* enumeration of PNG image types */
440#ifdef MNG_OPTIMIZE_FOOTPRINT_INIT
441enum png_imgtypes
442 {
443 png_g1,
444 png_g2,
445 png_g4,
446 png_g8,
447 png_rgb8,
448 png_idx1,
449 png_idx2,
450 png_idx4,
451 png_idx8,
452 png_ga8,
453 png_rgba8,
454#ifdef MNG_INCLUDE_JNG
455 png_jpeg_a1,
456 png_jpeg_a2,
457 png_jpeg_a4,
458 png_jpeg_a8,
459#endif
460#ifndef MNG_NO_16BIT_SUPPORT
461 png_g16,
462 png_ga16,
463 png_rgb16,
464 png_rgba16,
465#ifdef MNG_INCLUDE_JNG
466 png_jpeg_a16,
467#endif
468#endif
469 png_none
470 };
471
472typedef enum png_imgtypes png_imgtype;
473#endif
474/* ************************************************************************** */
475
476 /* memory management callbacks */
477typedef mng_ptr (MNG_DECL *mng_memalloc) (mng_size_t iLen);
478typedef void (MNG_DECL *mng_memfree) (mng_ptr iPtr,
479 mng_size_t iLen);
480
481typedef void (MNG_DECL *mng_releasedata) (mng_ptr pUserdata,
482 mng_ptr pData,
483 mng_size_t iLength);
484
485 /* I/O management callbacks */
486#ifndef MNG_NO_OPEN_CLOSE_STREAM
487typedef mng_bool (MNG_DECL *mng_openstream) (mng_handle hHandle);
488typedef mng_bool (MNG_DECL *mng_closestream) (mng_handle hHandle);
489#endif
490typedef mng_bool (MNG_DECL *mng_readdata) (mng_handle hHandle,
491 mng_ptr pBuf,
492 mng_uint32 iBuflen,
493 mng_uint32p pRead);
494typedef mng_bool (MNG_DECL *mng_writedata) (mng_handle hHandle,
495 mng_ptr pBuf,
496 mng_uint32 iBuflen,
497 mng_uint32p pWritten);
498
499 /* error & trace processing callbacks */
500typedef mng_bool (MNG_DECL *mng_errorproc) (mng_handle hHandle,
501 mng_int32 iErrorcode,
502 mng_int8 iSeverity,
503 mng_chunkid iChunkname,
504 mng_uint32 iChunkseq,
505 mng_int32 iExtra1,
506 mng_int32 iExtra2,
507 mng_pchar zErrortext);
508typedef mng_bool (MNG_DECL *mng_traceproc) (mng_handle hHandle,
509 mng_int32 iFuncnr,
510 mng_int32 iFuncseq,
511 mng_pchar zFuncname);
512
513 /* read processing callbacks */
514typedef mng_bool (MNG_DECL *mng_processheader) (mng_handle hHandle,
515 mng_uint32 iWidth,
516 mng_uint32 iHeight);
517typedef mng_bool (MNG_DECL *mng_processtext) (mng_handle hHandle,
518 mng_uint8 iType,
519 mng_pchar zKeyword,
520 mng_pchar zText,
521 mng_pchar zLanguage,
522 mng_pchar zTranslation);
523typedef mng_bool (MNG_DECL *mng_processsave) (mng_handle hHandle);
524typedef mng_bool (MNG_DECL *mng_processseek) (mng_handle hHandle,
525 mng_pchar zName);
526typedef mng_bool (MNG_DECL *mng_processneed) (mng_handle hHandle,
527 mng_pchar zKeyword);
528typedef mng_bool (MNG_DECL *mng_processmend) (mng_handle hHandle,
529 mng_uint32 iIterationsdone,
530 mng_uint32 iIterationsleft);
531typedef mng_bool (MNG_DECL *mng_processunknown) (mng_handle hHandle,
532 mng_chunkid iChunkid,
533 mng_uint32 iRawlen,
534 mng_ptr pRawdata);
535typedef mng_bool (MNG_DECL *mng_processterm) (mng_handle hHandle,
536 mng_uint8 iTermaction,
537 mng_uint8 iIteraction,
538 mng_uint32 iDelay,
539 mng_uint32 iItermax);
540
541 /* display processing callbacks */
542typedef mng_ptr (MNG_DECL *mng_getcanvasline) (mng_handle hHandle,
543 mng_uint32 iLinenr);
544typedef mng_ptr (MNG_DECL *mng_getbkgdline) (mng_handle hHandle,
545 mng_uint32 iLinenr);
546typedef mng_ptr (MNG_DECL *mng_getalphaline) (mng_handle hHandle,
547 mng_uint32 iLinenr);
548typedef mng_bool (MNG_DECL *mng_refresh) (mng_handle hHandle,
549 mng_uint32 iX,
550 mng_uint32 iY,
551 mng_uint32 iWidth,
552 mng_uint32 iHeight);
553
554 /* timer management callbacks */
555typedef mng_uint32 (MNG_DECL *mng_gettickcount) (mng_handle hHandle);
556typedef mng_bool (MNG_DECL *mng_settimer) (mng_handle hHandle,
557 mng_uint32 iMsecs);
558
559 /* color management callbacks */
560typedef mng_bool (MNG_DECL *mng_processgamma) (mng_handle hHandle,
561 mng_uint32 iGamma);
562typedef mng_bool (MNG_DECL *mng_processchroma) (mng_handle hHandle,
563 mng_uint32 iWhitepointx,
564 mng_uint32 iWhitepointy,
565 mng_uint32 iRedx,
566 mng_uint32 iRedy,
567 mng_uint32 iGreenx,
568 mng_uint32 iGreeny,
569 mng_uint32 iBluex,
570 mng_uint32 iBluey);
571typedef mng_bool (MNG_DECL *mng_processsrgb) (mng_handle hHandle,
572 mng_uint8 iRenderingintent);
573typedef mng_bool (MNG_DECL *mng_processiccp) (mng_handle hHandle,
574 mng_uint32 iProfilesize,
575 mng_ptr pProfile);
576typedef mng_bool (MNG_DECL *mng_processarow) (mng_handle hHandle,
577 mng_uint32 iRowsamples,
578 mng_bool bIsRGBA16,
579 mng_ptr pRow);
580
581 /* chunk access callback(s) */
582typedef mng_bool (MNG_DECL *mng_iteratechunk) (mng_handle hHandle,
583 mng_handle hChunk,
584 mng_chunkid iChunkid,
585 mng_uint32 iChunkseq);
586
587/* ************************************************************************** */
588
589#endif /* _libmng_types_h_ */
590
591/* ************************************************************************** */
592/* * end of file * */
593/* ************************************************************************** */
594
595