0
|
1 |
/* ************************************************************************** */
|
|
2 |
/* * * */
|
|
3 |
/* * COPYRIGHT NOTICE: * */
|
|
4 |
/* * * */
|
|
5 |
/* * Copyright (c) 2000-2007 Gerard Juyn * */
|
|
6 |
/* * [You may insert additional notices after this sentence if you modify * */
|
|
7 |
/* * this source] * */
|
|
8 |
/* * * */
|
|
9 |
/* * For the purposes of this copyright and license, "Contributing Authors" * */
|
|
10 |
/* * is defined as the following set of individuals: * */
|
|
11 |
/* * * */
|
|
12 |
/* * Gerard Juyn - gjuyn :at: users.sourceforge.net * */
|
|
13 |
/* * Glenn Randers-Pehrson - glennrp :at: users.sourceforge.net * */
|
|
14 |
/* * Raphael Assenat - raph :at: raphnet.net * */
|
|
15 |
/* * John Stiles - * */
|
|
16 |
/* * * */
|
|
17 |
/* * The MNG Library is supplied "AS IS". The Contributing Authors * */
|
|
18 |
/* * disclaim all warranties, expressed or implied, including, without * */
|
|
19 |
/* * limitation, the warranties of merchantability and of fitness for any * */
|
|
20 |
/* * purpose. The Contributing Authors assume no liability for direct, * */
|
|
21 |
/* * indirect, incidental, special, exemplary, or consequential damages, * */
|
|
22 |
/* * which may result from the use of the MNG Library, even if advised of * */
|
|
23 |
/* * the possibility of such damage. * */
|
|
24 |
/* * * */
|
|
25 |
/* * Permission is hereby granted to use, copy, modify, and distribute this * */
|
|
26 |
/* * source code, or portions hereof, for any purpose, without fee, subject * */
|
|
27 |
/* * to the following restrictions: * */
|
|
28 |
/* * * */
|
|
29 |
/* * 1. The origin of this source code must not be misrepresented; * */
|
|
30 |
/* * you must not claim that you wrote the original software. * */
|
|
31 |
/* * * */
|
|
32 |
/* * 2. Altered versions must be plainly marked as such and must not be * */
|
|
33 |
/* * misrepresented as being the original source. * */
|
|
34 |
/* * * */
|
|
35 |
/* * 3. This Copyright notice may not be removed or altered from any source * */
|
|
36 |
/* * or altered source distribution. * */
|
|
37 |
/* * * */
|
|
38 |
/* * The Contributing Authors specifically permit, without fee, and * */
|
|
39 |
/* * encourage the use of this source code as a component to supporting * */
|
|
40 |
/* * the MNG and JNG file format in commercial products. If you use this * */
|
|
41 |
/* * source code in a product, acknowledgment would be highly appreciated. * */
|
|
42 |
/* * * */
|
|
43 |
/* ************************************************************************** */
|
|
44 |
/* * * */
|
|
45 |
/* * Parts of this software have been adapted from the libpng package. * */
|
|
46 |
/* * Although this library supports all features from the PNG specification * */
|
|
47 |
/* * (as MNG descends from it) it does not require the libpng package. * */
|
|
48 |
/* * It does require the zlib library and optionally the IJG jpeg library, * */
|
|
49 |
/* * and/or the "little-cms" library by Marti Maria (depending on the * */
|
|
50 |
/* * inclusion of support for JNG and Full-Color-Management respectively. * */
|
|
51 |
/* * * */
|
|
52 |
/* * This library's function is primarily to read and display MNG * */
|
|
53 |
/* * animations. It is not meant as a full-featured image-editing * */
|
|
54 |
/* * component! It does however offer creation and editing functionality * */
|
|
55 |
/* * at the chunk level. * */
|
|
56 |
/* * (future modifications may include some more support for creation * */
|
|
57 |
/* * and or editing) * */
|
|
58 |
/* * * */
|
|
59 |
/* ************************************************************************** */
|
|
60 |
|
|
61 |
/* ************************************************************************** */
|
|
62 |
/* * * */
|
|
63 |
/* * Version numbering * */
|
|
64 |
/* * * */
|
|
65 |
/* * X.Y.Z : X = release (0 = initial build) * */
|
|
66 |
/* * Y = major version (uneven = test; even = production) * */
|
|
67 |
/* * Z = minor version (bugfixes; 2 is older than 10) * */
|
|
68 |
/* * * */
|
|
69 |
/* * production versions only appear when a test-version is extensively * */
|
|
70 |
/* * tested and found stable or for intermediate bug-fixes (recognized by * */
|
|
71 |
/* * a change in the Z number) * */
|
|
72 |
/* * * */
|
|
73 |
/* * x.1.x = test version * */
|
|
74 |
/* * x.2.x = production version * */
|
|
75 |
/* * x.3.x = test version * */
|
|
76 |
/* * x.4.x = production version * */
|
|
77 |
/* * etc. * */
|
|
78 |
/* * * */
|
|
79 |
/* ************************************************************************** */
|
|
80 |
/* * * */
|
|
81 |
/* * Identifier naming conventions throughout this library * */
|
|
82 |
/* * * */
|
|
83 |
/* * iXxxx = an integer * */
|
|
84 |
/* * dXxxx = a float * */
|
|
85 |
/* * pXxxx = a pointer * */
|
|
86 |
/* * bXxxx = a boolean * */
|
|
87 |
/* * eXxxx = an enumeration * */
|
|
88 |
/* * hXxxx = a handle * */
|
|
89 |
/* * zXxxx = a zero-terminated string (pchar) * */
|
|
90 |
/* * fXxxx = a pointer to a function (callback) * */
|
|
91 |
/* * aXxxx = an array * */
|
|
92 |
/* * sXxxx = a structure * */
|
|
93 |
/* * * */
|
|
94 |
/* * Macros & defines are in all uppercase. * */
|
|
95 |
/* * Functions & typedefs in all lowercase. * */
|
|
96 |
/* * Exported stuff is prefixed with MNG_ or mng_ respectively. * */
|
|
97 |
/* * * */
|
|
98 |
/* * (I may have missed a couple; don't hesitate to let me know!) * */
|
|
99 |
/* * * */
|
|
100 |
/* ************************************************************************** */
|
|
101 |
|
|
102 |
/* ************************************************************************** */
|
|
103 |
/* * * */
|
|
104 |
/* * project : libmng * */
|
|
105 |
/* * file : libmng.h copyright (c) 2000-2007 G.Juyn * */
|
|
106 |
/* * version : 1.0.10 * */
|
|
107 |
/* * * */
|
|
108 |
/* * purpose : main application interface * */
|
|
109 |
/* * * */
|
|
110 |
/* * author : G.Juyn * */
|
|
111 |
/* * * */
|
|
112 |
/* * comment : The main application interface. An application should not * */
|
|
113 |
/* * need access to any of the other modules! * */
|
|
114 |
/* * * */
|
|
115 |
/* * changes : 0.5.1 - 05/06/2000 - G.Juyn * */
|
|
116 |
/* * - changed chunk iteration function * */
|
|
117 |
/* * 0.5.1 - 05/08/2000 - G.Juyn * */
|
|
118 |
/* * - added chunk access functions * */
|
|
119 |
/* * - added version control constants & functions * */
|
|
120 |
/* * - changed strict-ANSI stuff * */
|
|
121 |
/* * 0.5.1 - 05/11/2000 - G.Juyn * */
|
|
122 |
/* * - added set_outputprofile2 & set_srgbprofile2 * */
|
|
123 |
/* * - added empty-chunk put-routines * */
|
|
124 |
/* * 0.5.1 - 05/12/2000 - G.Juyn * */
|
|
125 |
/* * - added version_dll & VERSION_DLL (for consistency) * */
|
|
126 |
/* * - added version control explanatory text & samples * */
|
|
127 |
/* * 0.5.1 - 05/15/2000 - G.Juyn * */
|
|
128 |
/* * - added getimgdata & putimgdata functions * */
|
|
129 |
/* * * */
|
|
130 |
/* * 0.5.2 - 05/16/2000 - G.Juyn * */
|
|
131 |
/* * - changed the version parameters (obviously) * */
|
|
132 |
/* * 0.5.2 - 05/18/2000 - G.Juyn * */
|
|
133 |
/* * - complimented constants for chunk-property values * */
|
|
134 |
/* * 0.5.2 - 05/23/2000 - G.Juyn * */
|
|
135 |
/* * - fixed MNG_UINT_pHYg value * */
|
|
136 |
/* * 0.5.2 - 05/24/2000 - G.Juyn * */
|
|
137 |
/* * - added support for get/set default zlib/IJG parms * */
|
|
138 |
/* * 0.5.2 - 06/02/2000 - G.Juyn * */
|
|
139 |
/* * - added MNG_BIGENDIAN_SUPPORT (contributed by Tim Rowley) * */
|
|
140 |
/* * - separated configuration-options into "mng_conf.h" * */
|
|
141 |
/* * - added RGB8_A8 canvasstyle * */
|
|
142 |
/* * - added getalphaline callback for RGB8_A8 canvasstyle * */
|
|
143 |
/* * 0.5.2 - 06/06/2000 - G.Juyn * */
|
|
144 |
/* * - moved errorcodes from "mng_error.h" * */
|
|
145 |
/* * - added mng_read_resume function to support * */
|
|
146 |
/* * read-suspension * */
|
|
147 |
/* * * */
|
|
148 |
/* * 0.5.3 - 06/16/2000 - G.Juyn * */
|
|
149 |
/* * - changed the version parameters (obviously) * */
|
|
150 |
/* * 0.5.3 - 06/21/2000 - G.Juyn * */
|
|
151 |
/* * - added get/set for speedtype to facilitate testing * */
|
|
152 |
/* * - added get for imagelevel during processtext callback * */
|
|
153 |
/* * 0.5.3 - 06/24/2000 - G.Juyn * */
|
|
154 |
/* * - fixed inclusion of IJG read/write code * */
|
|
155 |
/* * 0.5.3 - 06/26/2000 - G.Juyn * */
|
|
156 |
/* * - changed userdata variable to mng_ptr * */
|
|
157 |
/* * * */
|
|
158 |
/* * 0.9.0 - 06/30/2000 - G.Juyn * */
|
|
159 |
/* * - changed refresh parameters to 'x,y,width,height' * */
|
|
160 |
/* * * */
|
|
161 |
/* * 0.9.1 - 07/06/2000 - G.Juyn * */
|
|
162 |
/* * - added MNG_NEEDTIMERWAIT errorcode * */
|
|
163 |
/* * - changed comments to indicate modified behavior for * */
|
|
164 |
/* * timer & suspension breaks * */
|
|
165 |
/* * 0.9.1 - 07/08/2000 - G.Juyn * */
|
|
166 |
/* * - added get routines for internal display variables * */
|
|
167 |
/* * - added get/set routines for suspensionmode variable * */
|
|
168 |
/* * 0.9.1 - 07/15/2000 - G.Juyn * */
|
|
169 |
/* * - added callbacks for SAVE/SEEK processing * */
|
|
170 |
/* * - added get/set routines for sectionbreak variable * */
|
|
171 |
/* * - added NEEDSECTIONWAIT errorcode * */
|
|
172 |
/* * 0.9.1 - 07/19/2000 - G.Juyn * */
|
|
173 |
/* * - added function to set frame-/layer-count & playtime * */
|
|
174 |
/* * - added errorcode for updatemngheader if not a MNG * */
|
|
175 |
/* * * */
|
|
176 |
/* * 0.9.2 - 07/31/2000 - G.Juyn * */
|
|
177 |
/* * - fixed problem with trace-functions improperly wrapped * */
|
|
178 |
/* * - added status_xxxx functions * */
|
|
179 |
/* * 0.9.2 - 08/05/2000 - G.Juyn * */
|
|
180 |
/* * - changed file-prefixes * */
|
|
181 |
/* * - added function to set simplicity field * */
|
|
182 |
/* * * */
|
|
183 |
/* * 0.9.3 - 08/09/2000 - G.Juyn * */
|
|
184 |
/* * - added check for simplicity-bits in MHDR * */
|
|
185 |
/* * 0.9.3 - 08/12/2000 - G.Juyn * */
|
|
186 |
/* * - added workaround for faulty PhotoShop iCCP chunk * */
|
|
187 |
/* * 0.9.3 - 08/26/2000 - G.Juyn * */
|
|
188 |
/* * - added MAGN chunk * */
|
|
189 |
/* * 0.9.3 - 09/07/2000 - G.Juyn * */
|
|
190 |
/* * - added support for new filter_types * */
|
|
191 |
/* * 0.9.3 - 10/10/2000 - G.Juyn * */
|
|
192 |
/* * - added support for alpha-depth prediction * */
|
|
193 |
/* * 0.9.3 - 10/11/2000 - G.Juyn * */
|
|
194 |
/* * - fixed processing of unknown critical chunks * */
|
|
195 |
/* * - removed test-MaGN * */
|
|
196 |
/* * - added PNG/MNG spec version indicators * */
|
|
197 |
/* * - added support for nEED * */
|
|
198 |
/* * 0.9.3 - 10/16/2000 - G.Juyn * */
|
|
199 |
/* * - added functions to retrieve PNG/JNG specific header-info * */
|
|
200 |
/* * - added JDAA chunk * */
|
|
201 |
/* * 0.9.3 - 10/17/2000 - G.Juyn * */
|
|
202 |
/* * - added callback to process non-critical unknown chunks * */
|
|
203 |
/* * 0.9.3 - 10/20/2000 - G.Juyn * */
|
|
204 |
/* * - added errocode for delayed delta-processing * */
|
|
205 |
/* * - added get/set for bKGD preference setting * */
|
|
206 |
/* * 0.9.3 - 10/21/2000 - G.Juyn * */
|
|
207 |
/* * - added get function for interlace/progressive display * */
|
|
208 |
/* * * */
|
|
209 |
/* * 0.9.4 - 01/18/2001 - G.Juyn * */
|
|
210 |
/* * - added errorcode for MAGN methods * */
|
|
211 |
/* * - removed test filter-methods 1 & 65 * */
|
|
212 |
/* * * */
|
|
213 |
/* * 1.0.0 - 02/05/2001 - G.Juyn * */
|
|
214 |
/* * - version numbers (obviously) * */
|
|
215 |
/* * * */
|
|
216 |
/* * 1.0.1 - 02/08/2001 - G.Juyn * */
|
|
217 |
/* * - added MEND processing callback * */
|
|
218 |
/* * 1.0.1 - 04/21/2001 - G.Juyn (code by G.Kelly) * */
|
|
219 |
/* * - added BGRA8 canvas with premultiplied alpha * */
|
|
220 |
/* * 1.0.1 - 05/02/2001 - G.Juyn * */
|
|
221 |
/* * - added "default" sRGB generation (Thanks Marti!) * */
|
|
222 |
/* * * */
|
|
223 |
/* * 1.0.2 - 06/23/2001 - G.Juyn * */
|
|
224 |
/* * - added optimization option for MNG-video playback * */
|
|
225 |
/* * - added processterm callback * */
|
|
226 |
/* * 1.0.2 - 06/25/2001 - G.Juyn * */
|
|
227 |
/* * - added late binding errorcode (not used internally) * */
|
|
228 |
/* * - added option to turn off progressive refresh * */
|
|
229 |
/* * * */
|
|
230 |
/* * 1.0.3 - 08/06/2001 - G.Juyn * */
|
|
231 |
/* * - added get function for last processed BACK chunk * */
|
|
232 |
/* * * */
|
|
233 |
/* * 1.0.5 - 07/04/2002 - G.Juyn * */
|
|
234 |
/* * - added errorcode for extreme chunk-sizes * */
|
|
235 |
/* * 1.0.5 - 08/07/2002 - G.Juyn * */
|
|
236 |
/* * - added test-option for PNG filter method 193 (=no filter) * */
|
|
237 |
/* * 1.0.5 - 08/15/2002 - G.Juyn * */
|
|
238 |
/* * - completed PROM support * */
|
|
239 |
/* * - completed delta-image support * */
|
|
240 |
/* * 1.0.5 - 08/19/2002 - G.Juyn * */
|
|
241 |
/* * - added HLAPI function to copy chunks * */
|
|
242 |
/* * 1.0.5 - 09/14/2002 - G.Juyn * */
|
|
243 |
/* * - added event handling for dynamic MNG * */
|
|
244 |
/* * - added 'supports' call to check function availability * */
|
|
245 |
/* * 1.0.5 - 09/15/2002 - G.Juyn * */
|
|
246 |
/* * - fixed LOOP iteration=0 special case * */
|
|
247 |
/* * 1.0.5 - 09/20/2002 - G.Juyn * */
|
|
248 |
/* * - added support for PAST * */
|
|
249 |
/* * 1.0.5 - 09/22/2002 - G.Juyn * */
|
|
250 |
/* * - added bgrx8 canvas (filler byte) * */
|
|
251 |
/* * 1.0.5 - 10/07/2002 - G.Juyn * */
|
|
252 |
/* * - added check for TERM placement during create/write * */
|
|
253 |
/* * - added beta version function & constant * */
|
|
254 |
/* * 1.0.5 - 11/07/2002 - G.Juyn * */
|
|
255 |
/* * - added support to get totals after mng_read() * */
|
|
256 |
/* * * */
|
|
257 |
/* * 1.0.6 - 07/07/2003 - G. Randers-Pehrson * */
|
|
258 |
/* * - added support for reducing the footprint of libmng * */
|
|
259 |
/* * by macros that optionally skip unused chunks, remove * */
|
|
260 |
/* * 16-bit sample support, remove Delta support, and * */
|
|
261 |
/* * remove JNG support, to accomodate Mozilla/Firebird. * */
|
|
262 |
/* * 1.0.6 - 07/14/2003 - G. Randers-Pehrson * */
|
|
263 |
/* * - further optional removal of unused functions * */
|
|
264 |
/* * * */
|
|
265 |
/* * 1.0.7 - 11/27/2003 - R.A * */
|
|
266 |
/* * - added CANVAS_RGB565 and CANVAS_BGR565 * */
|
|
267 |
/* * 1.0.7 - 12/06/2003 - R.A * */
|
|
268 |
/* * - added CANVAS_RGBA565 and CANVAS_BGRA565 * */
|
|
269 |
/* * 1.0.7 - 01/25/2004 - J.S * */
|
|
270 |
/* * - added premultiplied alpha canvas' for RGBA, ARGB, ABGR * */
|
|
271 |
/* * 1.0.7 - 03/07/2004 - G. Randers-Pehrson * */
|
|
272 |
/* * - put gamma, cms-related declarations inside #ifdef * */
|
|
273 |
/* * 1.0.7 - 03/10/2004 - G.R-P * */
|
|
274 |
/* * - added conditionals around openstream/closestream * */
|
|
275 |
/* * * */
|
|
276 |
/* * 1.0.8 - 04/02/2004 - G.Juyn * */
|
|
277 |
/* * - added CRC existence & checking flags * */
|
|
278 |
/* * 1.0.8 - 04/12/2004 - G.Juyn * */
|
|
279 |
/* * - added data-push mechanisms for specialized decoders * */
|
|
280 |
/* * 1.0.8 - 06/05/2004 - G.R-P * */
|
|
281 |
/* * - define MNG_INCLUDE_ZLIB when MNG_USE_ZLIB_CRC is defined * */
|
|
282 |
/* * * */
|
|
283 |
/* * 1.0.9 - 10/03/2004 - G.Juyn * */
|
|
284 |
/* * - added function to retrieve current FRAM delay * */
|
|
285 |
/* * 1.0.9 - 10/14/2004 - G.Juyn * */
|
|
286 |
/* * - added bgr565_a8 canvas-style (thanks to J. Elvander) * */
|
|
287 |
/* * 1.0.9 - 10/17/2004 - G.Juyn * */
|
|
288 |
/* * - fixed PPLT getchunk/putchunk routines * */
|
|
289 |
/* * * */
|
|
290 |
/* * 1.0.10 - 03/07/2006 - (thanks to W. Manthey) * */
|
|
291 |
/* * - added CANVAS_RGB555 and CANVAS_BGR555 * */
|
|
292 |
/* * 1.0.10 - 04/08/2007 - G.Juyn * */
|
|
293 |
/* * - added support for mPNG proposal * */
|
|
294 |
/* * 1.0.10 - 04/12/2007 - G.Juyn * */
|
|
295 |
/* * - added support for ANG proposal * */
|
|
296 |
/* * * */
|
|
297 |
/* ************************************************************************** */
|
|
298 |
|
|
299 |
#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
|
|
300 |
#pragma option -A /* force ANSI-C */
|
|
301 |
#endif
|
|
302 |
|
|
303 |
#ifndef _libmng_h_
|
|
304 |
#define _libmng_h_
|
|
305 |
|
|
306 |
/* ************************************************************************** */
|
|
307 |
|
|
308 |
#include "libmng_conf.h" /* user-specific configuration options */
|
|
309 |
|
|
310 |
/* ************************************************************************** */
|
|
311 |
|
|
312 |
#define MNG_CHECK_BAD_ICCP /* let's catch that sucker !!! */
|
|
313 |
|
|
314 |
#ifdef MNG_SUPPORT_READ /* dependencies based on user-configuration */
|
|
315 |
#define MNG_INCLUDE_READ_PROCS
|
|
316 |
#endif
|
|
317 |
|
|
318 |
#ifdef MNG_SUPPORT_WRITE
|
|
319 |
#define MNG_INCLUDE_WRITE_PROCS
|
|
320 |
#endif
|
|
321 |
|
|
322 |
#ifdef MNG_USE_ZLIB_CRC
|
|
323 |
#define MNG_INCLUDE_ZLIB
|
|
324 |
#endif
|
|
325 |
|
|
326 |
#ifdef MNG_SUPPORT_DISPLAY
|
|
327 |
#define MNG_INCLUDE_FILTERS
|
|
328 |
#define MNG_INCLUDE_INTERLACE
|
|
329 |
#define MNG_INCLUDE_OBJECTS
|
|
330 |
#define MNG_INCLUDE_DISPLAY_PROCS
|
|
331 |
#define MNG_INCLUDE_TIMING_PROCS
|
|
332 |
#define MNG_INCLUDE_ZLIB
|
|
333 |
#endif
|
|
334 |
|
|
335 |
#ifdef MNG_STORE_CHUNKS
|
|
336 |
#define MNG_INCLUDE_ZLIB
|
|
337 |
#endif
|
|
338 |
|
|
339 |
#ifdef MNG_SUPPORT_IJG6B
|
|
340 |
#define MNG_INCLUDE_JNG
|
|
341 |
#define MNG_INCLUDE_IJG6B
|
|
342 |
#define MNG_USE_SETJMP
|
|
343 |
#endif
|
|
344 |
|
|
345 |
#ifdef MNG_INCLUDE_JNG
|
|
346 |
#if defined(MNG_SUPPORT_DISPLAY) || defined(MNG_ACCESS_CHUNKS)
|
|
347 |
#define MNG_INCLUDE_JNG_READ
|
|
348 |
#endif
|
|
349 |
#if defined(MNG_SUPPORT_WRITE) || defined(MNG_ACCESS_CHUNKS)
|
|
350 |
#define MNG_INCLUDE_JNG_WRITE
|
|
351 |
#endif
|
|
352 |
#endif
|
|
353 |
|
|
354 |
#ifdef MNG_FULL_CMS
|
|
355 |
#define MNG_INCLUDE_LCMS
|
|
356 |
#endif
|
|
357 |
|
|
358 |
#ifdef MNG_AUTO_DITHER
|
|
359 |
#define MNG_INCLUDE_DITHERING
|
|
360 |
#endif
|
|
361 |
|
|
362 |
#ifdef MNG_SUPPORT_TRACE
|
|
363 |
#define MNG_INCLUDE_TRACE_PROCS
|
|
364 |
#ifdef MNG_TRACE_TELLTALE
|
|
365 |
#define MNG_INCLUDE_TRACE_STRINGS
|
|
366 |
#endif
|
|
367 |
#endif
|
|
368 |
|
|
369 |
#ifdef MNG_ERROR_TELLTALE
|
|
370 |
#define MNG_INCLUDE_ERROR_STRINGS
|
|
371 |
#endif
|
|
372 |
|
|
373 |
#ifdef MNG_OPTIMIZE_CHUNKINITFREE
|
|
374 |
#ifndef MNG_OPTIMIZE_CHUNKACCESS
|
|
375 |
#define MNG_OPTIMIZE_CHUNKACCESS
|
|
376 |
#endif
|
|
377 |
#else
|
|
378 |
#ifdef MNG_OPTIMIZE_CHUNKACCESS
|
|
379 |
#undef MNG_OPTIMIZE_CHUNKACCESS
|
|
380 |
#endif
|
|
381 |
#endif
|
|
382 |
|
|
383 |
/* ************************************************************************** */
|
|
384 |
|
|
385 |
#include "libmng_types.h" /* platform-specific definitions
|
|
386 |
and other assorted stuff */
|
|
387 |
|
|
388 |
/* ************************************************************************** */
|
|
389 |
|
|
390 |
#ifdef __cplusplus
|
|
391 |
extern "C" {
|
|
392 |
#endif
|
|
393 |
|
|
394 |
/* ************************************************************************** */
|
|
395 |
/* * * */
|
|
396 |
/* * Versioning control * */
|
|
397 |
/* * * */
|
|
398 |
/* * version_so and version_dll will NOT reflect version_major; * */
|
|
399 |
/* * these will only change for binary incompatible changes (which will * */
|
|
400 |
/* * hopefully never occur) * */
|
|
401 |
/* * note: they will be set to 1 on the first public release !!! * */
|
|
402 |
/* * * */
|
|
403 |
/* * first public release: * */
|
|
404 |
/* * #define MNG_VERSION_TEXT "1.0.0" * */
|
|
405 |
/* * #define MNG_VERSION_SO 1 eg. libmng.so.1 * */
|
|
406 |
/* * #define MNG_VERSION_DLL 1 eg. libmng.dll * */
|
|
407 |
/* * #define MNG_VERSION_MAJOR 1 * */
|
|
408 |
/* * #define MNG_VERSION_MINOR 0 * */
|
|
409 |
/* * #define MNG_VERSION_RELEASE 0 * */
|
|
410 |
/* * * */
|
|
411 |
/* * bug fix & cosmetics : * */
|
|
412 |
/* * #define MNG_VERSION_TEXT "1.0.1" * */
|
|
413 |
/* * #define MNG_VERSION_SO 1 eg. libmng.so.1 * */
|
|
414 |
/* * #define MNG_VERSION_DLL 1 eg. libmng.dll * */
|
|
415 |
/* * #define MNG_VERSION_MAJOR 1 * */
|
|
416 |
/* * #define MNG_VERSION_MINOR 0 * */
|
|
417 |
/* * #define MNG_VERSION_RELEASE 1 * */
|
|
418 |
/* * * */
|
|
419 |
/* * feature change : * */
|
|
420 |
/* * #define MNG_VERSION_TEXT "1.2.0" * */
|
|
421 |
/* * #define MNG_VERSION_SO 1 eg. libmng.so.1 * */
|
|
422 |
/* * #define MNG_VERSION_DLL 1 eg. libmng.dll * */
|
|
423 |
/* * #define MNG_VERSION_MAJOR 1 * */
|
|
424 |
/* * #define MNG_VERSION_MINOR 2 * */
|
|
425 |
/* * #define MNG_VERSION_RELEASE 0 * */
|
|
426 |
/* * * */
|
|
427 |
/* * major rewrite (still binary compatible) : * */
|
|
428 |
/* * #define MNG_VERSION_TEXT "2.0.0" * */
|
|
429 |
/* * #define MNG_VERSION_SO 1 eg. libmng.so.1 * */
|
|
430 |
/* * #define MNG_VERSION_DLL 1 eg. libmng.dll * */
|
|
431 |
/* * #define MNG_VERSION_MAJOR 2 * */
|
|
432 |
/* * #define MNG_VERSION_MINOR 0 * */
|
|
433 |
/* * #define MNG_VERSION_RELEASE 0 * */
|
|
434 |
/* * * */
|
|
435 |
/* * binary incompatible change: * */
|
|
436 |
/* * #define MNG_VERSION_TEXT "13.0.0" * */
|
|
437 |
/* * #define MNG_VERSION_SO 2 eg. libmng.so.2 * */
|
|
438 |
/* * #define MNG_VERSION_DLL 2 eg. libmng2.dll * */
|
|
439 |
/* * #define MNG_VERSION_MAJOR 13 * */
|
|
440 |
/* * #define MNG_VERSION_MINOR 0 * */
|
|
441 |
/* * #define MNG_VERSION_RELEASE 0 * */
|
|
442 |
/* * * */
|
|
443 |
/* * note that version_so & version_dll will always remain equal so it * */
|
|
444 |
/* * doesn't matter which one is called to do version-checking; they are * */
|
|
445 |
/* * just provided for their target platform * */
|
|
446 |
/* * * */
|
|
447 |
/* ************************************************************************** */
|
|
448 |
|
|
449 |
#define MNG_VERSION_TEXT "1.0.10"
|
|
450 |
#define MNG_VERSION_SO 1 /* eg. libmng.so.1 */
|
|
451 |
#define MNG_VERSION_DLL 1 /* but: libmng.dll (!) */
|
|
452 |
#define MNG_VERSION_MAJOR 1
|
|
453 |
#define MNG_VERSION_MINOR 0
|
|
454 |
#define MNG_VERSION_RELEASE 10
|
|
455 |
#define MNG_VERSION_BETA MNG_FALSE
|
|
456 |
|
|
457 |
MNG_EXT mng_pchar MNG_DECL mng_version_text (void);
|
|
458 |
MNG_EXT mng_uint8 MNG_DECL mng_version_so (void);
|
|
459 |
MNG_EXT mng_uint8 MNG_DECL mng_version_dll (void);
|
|
460 |
MNG_EXT mng_uint8 MNG_DECL mng_version_major (void);
|
|
461 |
MNG_EXT mng_uint8 MNG_DECL mng_version_minor (void);
|
|
462 |
MNG_EXT mng_uint8 MNG_DECL mng_version_release (void);
|
|
463 |
MNG_EXT mng_bool MNG_DECL mng_version_beta (void);
|
|
464 |
|
|
465 |
/* use the following call to check wether the version of libmng your app
|
|
466 |
is using supports the given function; this is useful in apps that dynamically
|
|
467 |
load the library to make sure a certain function will work; the result will
|
|
468 |
be MNG_TRUE if the given function is implemented in this version of the library;
|
|
469 |
Major/Minor/Version indicate the version the function became available;
|
|
470 |
(if these fields are zero the function is not yet implemented!) */
|
|
471 |
#ifdef MNG_SUPPORT_FUNCQUERY
|
|
472 |
MNG_EXT mng_bool MNG_DECL mng_supports_func (mng_pchar zFunction,
|
|
473 |
mng_uint8* iMajor,
|
|
474 |
mng_uint8* iMinor,
|
|
475 |
mng_uint8* iRelease);
|
|
476 |
#endif
|
|
477 |
|
|
478 |
/* ************************************************************************** */
|
|
479 |
/* * * */
|
|
480 |
/* * MNG/PNG specification level conformance * */
|
|
481 |
/* * * */
|
|
482 |
/* ************************************************************************** */
|
|
483 |
|
|
484 |
#define MNG_PNG_VERSION "1.2"
|
|
485 |
#define MNG_PNG_VERSION_MAJ 1
|
|
486 |
#define MNG_PNG_VERSION_MIN 2
|
|
487 |
|
|
488 |
#define MNG_MNG_VERSION "1.1"
|
|
489 |
#define MNG_MNG_VERSION_MAJ 1
|
|
490 |
#define MNG_MNG_VERSION_MIN 1
|
|
491 |
#define MNG_MNG_DRAFT 99 /* deprecated;
|
|
492 |
only used for nEED "MNG DRAFT nn" */
|
|
493 |
|
|
494 |
/* ************************************************************************** */
|
|
495 |
/* * * */
|
|
496 |
/* * High-level application functions * */
|
|
497 |
/* * * */
|
|
498 |
/* ************************************************************************** */
|
|
499 |
|
|
500 |
/* library initialization function */
|
|
501 |
/* must be the first called before anything can be done at all */
|
|
502 |
/* initializes internal datastructure(s) */
|
|
503 |
MNG_EXT mng_handle MNG_DECL mng_initialize (mng_ptr pUserdata,
|
|
504 |
mng_memalloc fMemalloc,
|
|
505 |
mng_memfree fMemfree,
|
|
506 |
mng_traceproc fTraceproc);
|
|
507 |
|
|
508 |
/* library reset function */
|
|
509 |
/* can be used to re-initialize the library, so another image can be
|
|
510 |
processed. there's absolutely no harm in calling it, even when it's not
|
|
511 |
really necessary */
|
|
512 |
MNG_EXT mng_retcode MNG_DECL mng_reset (mng_handle hHandle);
|
|
513 |
|
|
514 |
/* library cleanup function */
|
|
515 |
/* must be the last called to clean up internal datastructure(s) */
|
|
516 |
MNG_EXT mng_retcode MNG_DECL mng_cleanup (mng_handle* hHandle);
|
|
517 |
|
|
518 |
/* high-level read functions */
|
|
519 |
/* use mng_read if you simply want to read a Network Graphic */
|
|
520 |
/* mng_read_resume is used in I/O-read-suspension scenarios, where the
|
|
521 |
"readdata" callback may return FALSE & length=0 indicating its buffer is
|
|
522 |
depleted or too short to supply the required bytes, and the buffer needs
|
|
523 |
to be refilled; libmng will return the errorcode MNG_NEEDMOREDATA telling
|
|
524 |
the app to refill its read-buffer after which it must call mng_read_resume
|
|
525 |
(or mng_display_resume if it also displaying the image simultaneously) */
|
|
526 |
#ifdef MNG_SUPPORT_READ
|
|
527 |
MNG_EXT mng_retcode MNG_DECL mng_read (mng_handle hHandle);
|
|
528 |
MNG_EXT mng_retcode MNG_DECL mng_read_resume (mng_handle hHandle);
|
|
529 |
#endif
|
|
530 |
|
|
531 |
/* high-level "data push" functions */
|
|
532 |
/* these functions can be used in situations where data is streaming into the
|
|
533 |
application and needs to be buffered by libmng before it is actually
|
|
534 |
requested by libmng itself. the pushing complements the normal reading
|
|
535 |
mechanism, but applications can decide to always return "0 bytes read" to
|
|
536 |
make libmng go into suspension mode with the returncode MNG_NEEDMOREDATA */
|
|
537 |
/* mng_read_pushdata can be used to push blobs of data of arbitrary size;
|
|
538 |
mng_read_pushsig and mng_read_pushchunk can be used if the application
|
|
539 |
has already done some low-level decoding (eg. at the chunk level) */
|
|
540 |
/* the data being pushed into libmng with mng_read_pushdata *must* contain
|
|
541 |
the regular 4-byte chunklength, but *must not* contain it with
|
|
542 |
mng_read_pushchunk!!! */
|
|
543 |
/* mng_read_pushsig is used to prevent libmng from trying to parse the regular
|
|
544 |
PNG/JNG/MNG signature bytes; the application must have done this itself
|
|
545 |
and *must* indicate the proper type in the function call or things will
|
|
546 |
go amiss!!
|
|
547 |
also you *must* call this first, so pretty much right after mng_initialize
|
|
548 |
and certainly before any call to mng_read or mng_readdisplay !!!! */
|
|
549 |
/* IMPORTANT!!! data can only be safely pushed when libmng is in a
|
|
550 |
"wait" state; eg. during MNG_NEEDTIMERWAIT, MNG_NEEDSECTIONWAIT or
|
|
551 |
MNG_NEEDMOREDATA !!! this just means you can't have one thread displaying
|
|
552 |
and another thread pushing data !!! */
|
|
553 |
/* if bOwnership = MNG_TRUE, libmng will retain the supplied pointer and
|
|
554 |
*will* expect the buffer to remain available until libmng is finished
|
|
555 |
with it; what happens then depends on whether or not you have set the
|
|
556 |
releasedata() callback; if this is set than the supplied buffer will
|
|
557 |
be returned through this callback and your application can take care of
|
|
558 |
cleaning it up, otherwise libmng will use its internal freeing mechanism
|
|
559 |
(which, depending on compile-options, will be the standard C free() call,
|
|
560 |
or the memfree() callback */
|
|
561 |
/* if bOwnership = MNG_FALSE, libmng will just copy the data into its own
|
|
562 |
buffers and dispose of it in the normal way */
|
|
563 |
#ifdef MNG_SUPPORT_READ
|
|
564 |
MNG_EXT mng_retcode MNG_DECL mng_read_pushdata (mng_handle hHandle,
|
|
565 |
mng_ptr pData,
|
|
566 |
mng_size_t iLength,
|
|
567 |
mng_bool bTakeownership);
|
|
568 |
MNG_EXT mng_retcode MNG_DECL mng_read_pushsig (mng_handle hHandle,
|
|
569 |
mng_imgtype eSigtype);
|
|
570 |
MNG_EXT mng_retcode MNG_DECL mng_read_pushchunk (mng_handle hHandle,
|
|
571 |
mng_ptr pChunk,
|
|
572 |
mng_size_t iLength,
|
|
573 |
mng_bool bTakeownership);
|
|
574 |
#endif
|
|
575 |
|
|
576 |
/* high-level write & create functions */
|
|
577 |
/* use this if you want to write a previously read Network Graphic or
|
|
578 |
if you want to create a new graphic and write it */
|
|
579 |
/* to write a previously read graphic you must have defined MNG_STORE_CHUNKS */
|
|
580 |
/* to create a new graphic you'll also need access to the chunks
|
|
581 |
(eg. #define MNG_ACCESS_CHUNKS !) */
|
|
582 |
#ifdef MNG_SUPPORT_WRITE
|
|
583 |
MNG_EXT mng_retcode MNG_DECL mng_write (mng_handle hHandle);
|
|
584 |
MNG_EXT mng_retcode MNG_DECL mng_create (mng_handle hHandle);
|
|
585 |
#endif
|
|
586 |
|
|
587 |
/* high-level display functions */
|
|
588 |
/* use these to display a previously read or created graphic or
|
|
589 |
to read & display a graphic simultaneously */
|
|
590 |
/* mng_display_resume should be called after a timer-interval
|
|
591 |
expires that was set through the settimer-callback, after a
|
|
592 |
read suspension-break, or, to resume an animation after a call
|
|
593 |
to mng_display_freeze/mng_display_reset */
|
|
594 |
/* mng_display_freeze thru mng_display_gotime can be used to influence
|
|
595 |
the display of an image, BUT ONLY if it has been completely read! */
|
|
596 |
#ifdef MNG_SUPPORT_DISPLAY
|
|
597 |
#ifdef MNG_SUPPORT_READ
|
|
598 |
MNG_EXT mng_retcode MNG_DECL mng_readdisplay (mng_handle hHandle);
|
|
599 |
#endif
|
|
600 |
MNG_EXT mng_retcode MNG_DECL mng_display (mng_handle hHandle);
|
|
601 |
MNG_EXT mng_retcode MNG_DECL mng_display_resume (mng_handle hHandle);
|
|
602 |
MNG_EXT mng_retcode MNG_DECL mng_display_freeze (mng_handle hHandle);
|
|
603 |
MNG_EXT mng_retcode MNG_DECL mng_display_reset (mng_handle hHandle);
|
|
604 |
#ifndef MNG_NO_DISPLAY_GO_SUPPORTED
|
|
605 |
MNG_EXT mng_retcode MNG_DECL mng_display_goframe (mng_handle hHandle,
|
|
606 |
mng_uint32 iFramenr);
|
|
607 |
MNG_EXT mng_retcode MNG_DECL mng_display_golayer (mng_handle hHandle,
|
|
608 |
mng_uint32 iLayernr);
|
|
609 |
MNG_EXT mng_retcode MNG_DECL mng_display_gotime (mng_handle hHandle,
|
|
610 |
mng_uint32 iPlaytime);
|
|
611 |
#endif
|
|
612 |
#endif /* MNG_SUPPORT_DISPLAY */
|
|
613 |
|
|
614 |
/* event processing function */
|
|
615 |
/* this needs to be called by the app when dynamic MNG is enabled and
|
|
616 |
a specific event occurs in the user-interface */
|
|
617 |
#if defined(MNG_SUPPORT_DISPLAY) && defined(MNG_SUPPORT_DYNAMICMNG)
|
|
618 |
MNG_EXT mng_retcode MNG_DECL mng_trapevent (mng_handle hHandle,
|
|
619 |
mng_uint8 iEventtype,
|
|
620 |
mng_int32 iX,
|
|
621 |
mng_int32 iY);
|
|
622 |
#endif
|
|
623 |
|
|
624 |
/* error reporting function */
|
|
625 |
/* use this if you need more detailed info on the last error */
|
|
626 |
/* iExtra1 & iExtra2 may contain errorcodes from zlib, jpeg, etc... */
|
|
627 |
/* zErrortext will only be filled if you #define MNG_ERROR_TELLTALE */
|
|
628 |
MNG_EXT mng_retcode MNG_DECL mng_getlasterror (mng_handle hHandle,
|
|
629 |
mng_int8* iSeverity,
|
|
630 |
mng_chunkid* iChunkname,
|
|
631 |
mng_uint32* iChunkseq,
|
|
632 |
mng_int32* iExtra1,
|
|
633 |
mng_int32* iExtra2,
|
|
634 |
mng_pchar* zErrortext);
|
|
635 |
|
|
636 |
/* ************************************************************************** */
|
|
637 |
/* * * */
|
|
638 |
/* * Callback set functions * */
|
|
639 |
/* * * */
|
|
640 |
/* ************************************************************************** */
|
|
641 |
|
|
642 |
/* memory callbacks */
|
|
643 |
/* called to allocate and release internal datastructures */
|
|
644 |
#ifndef MNG_INTERNAL_MEMMNGMT
|
|
645 |
MNG_EXT mng_retcode MNG_DECL mng_setcb_memalloc (mng_handle hHandle,
|
|
646 |
mng_memalloc fProc);
|
|
647 |
MNG_EXT mng_retcode MNG_DECL mng_setcb_memfree (mng_handle hHandle,
|
|
648 |
mng_memfree fProc);
|
|
649 |
#endif /* MNG_INTERNAL_MEMMNGMT */
|
|
650 |
|
|
651 |
/* open- & close-stream callbacks */
|
|
652 |
/* called to open & close streams for input or output */
|
|
653 |
#if defined(MNG_SUPPORT_READ) || defined(MNG_SUPPORT_WRITE)
|
|
654 |
#ifndef MNG_NO_OPEN_CLOSE_STREAM
|
|
655 |
MNG_EXT mng_retcode MNG_DECL mng_setcb_openstream (mng_handle hHandle,
|
|
656 |
mng_openstream fProc);
|
|
657 |
MNG_EXT mng_retcode MNG_DECL mng_setcb_closestream (mng_handle hHandle,
|
|
658 |
mng_closestream fProc);
|
|
659 |
#endif
|
|
660 |
#endif
|
|
661 |
|
|
662 |
/* read callback */
|
|
663 |
/* called to get data from the inputstream */
|
|
664 |
#ifdef MNG_SUPPORT_READ
|
|
665 |
MNG_EXT mng_retcode MNG_DECL mng_setcb_readdata (mng_handle hHandle,
|
|
666 |
mng_readdata fProc);
|
|
667 |
#endif
|
|
668 |
|
|
669 |
/* write callback */
|
|
670 |
/* called to put data into the outputstream */
|
|
671 |
#ifdef MNG_SUPPORT_WRITE
|
|
672 |
MNG_EXT mng_retcode MNG_DECL mng_setcb_writedata (mng_handle hHandle,
|
|
673 |
mng_writedata fProc);
|
|
674 |
#endif
|
|
675 |
|
|
676 |
/* error callback */
|
|
677 |
/* called when an error occurs */
|
|
678 |
/* the application can determine if the error is recoverable,
|
|
679 |
and may inform the library by setting specific returncodes */
|
|
680 |
MNG_EXT mng_retcode MNG_DECL mng_setcb_errorproc (mng_handle hHandle,
|
|
681 |
mng_errorproc fProc);
|
|
682 |
|
|
683 |
/* trace callback */
|
|
684 |
/* called to show the currently executing function */
|
|
685 |
#ifdef MNG_SUPPORT_TRACE
|
|
686 |
MNG_EXT mng_retcode MNG_DECL mng_setcb_traceproc (mng_handle hHandle,
|
|
687 |
mng_traceproc fProc);
|
|
688 |
#endif
|
|
689 |
|
|
690 |
/* callbacks for read processing */
|
|
691 |
/* processheader is called when all header information has been gathered
|
|
692 |
from the inputstream */
|
|
693 |
/* processtext is called for every tEXt, zTXt and iTXt chunk in the
|
|
694 |
inputstream (iType=0 for tEXt, 1 for zTXt and 2 for iTXt);
|
|
695 |
you can call get_imagelevel to check at what nesting-level the chunk is
|
|
696 |
encountered (eg. tEXt inside an embedded image inside a MNG -> level == 2;
|
|
697 |
in most other case -> level == 1) */
|
|
698 |
/* processsave & processseek are called for SAVE/SEEK chunks */
|
|
699 |
/* processneed is called for the nEED chunk; you should specify a callback
|
|
700 |
for this as the default behavior will be to abort processing, unless
|
|
701 |
the requirement is one of:
|
|
702 |
- a supported chunk
|
|
703 |
- the text "draft nn" where nn is a numeric value
|
|
704 |
- the text "MNG-1.0" or "MNG-1.1"
|
|
705 |
- the text "CACHEOFF" */
|
|
706 |
/* processmend is called at the very end of the animation-stream;
|
|
707 |
note that this may not be the end of the animation though! */
|
|
708 |
/* processterm is called when a TERM chunk is encountered; there can be only
|
|
709 |
1 in the stream (or none) */
|
|
710 |
/* processunknown is called after reading each non-critical unknown chunk */
|
|
711 |
#ifdef MNG_SUPPORT_READ
|
|
712 |
MNG_EXT mng_retcode MNG_DECL mng_setcb_processheader (mng_handle hHandle,
|
|
713 |
mng_processheader fProc);
|
|
714 |
MNG_EXT mng_retcode MNG_DECL mng_setcb_processtext (mng_handle hHandle,
|
|
715 |
mng_processtext fProc);
|
|
716 |
MNG_EXT mng_retcode MNG_DECL mng_setcb_processsave (mng_handle hHandle,
|
|
717 |
mng_processsave fProc);
|
|
718 |
MNG_EXT mng_retcode MNG_DECL mng_setcb_processseek (mng_handle hHandle,
|
|
719 |
mng_processseek fProc);
|
|
720 |
MNG_EXT mng_retcode MNG_DECL mng_setcb_processneed (mng_handle hHandle,
|
|
721 |
mng_processneed fProc);
|
|
722 |
MNG_EXT mng_retcode MNG_DECL mng_setcb_processmend (mng_handle hHandle,
|
|
723 |
mng_processmend fProc);
|
|
724 |
MNG_EXT mng_retcode MNG_DECL mng_setcb_processterm (mng_handle hHandle,
|
|
725 |
mng_processterm fProc);
|
|
726 |
MNG_EXT mng_retcode MNG_DECL mng_setcb_processunknown(mng_handle hHandle,
|
|
727 |
mng_processunknown fProc);
|
|
728 |
#endif
|
|
729 |
|
|
730 |
/* callbacks for display processing */
|
|
731 |
/* getcanvasline is called to get an access-pointer to a line on the
|
|
732 |
drawing-canvas */
|
|
733 |
/* getbkgdline is called to get an access-pointer to a line from the
|
|
734 |
background-canvas */
|
|
735 |
/* refresh is called to inform the GUI to redraw the current canvas onto
|
|
736 |
its output device (eg. in Win32 this would mean sending an
|
|
737 |
invalidate message for the specified region */
|
|
738 |
/* NOTE that the update-region is specified as x,y,width,height; eg. the
|
|
739 |
invalidate message for Windows requires left,top,right,bottom parameters
|
|
740 |
where the bottom-right is exclusive of the region!!
|
|
741 |
to get these correctly is as simple as:
|
|
742 |
left = x;
|
|
743 |
top = y;
|
|
744 |
right = x + width;
|
|
745 |
bottom = y + height;
|
|
746 |
if your implementation requires inclusive points, simply subtract 1 from
|
|
747 |
both the right & bottom values calculated above.
|
|
748 |
*/
|
|
749 |
#ifdef MNG_SUPPORT_DISPLAY
|
|
750 |
MNG_EXT mng_retcode MNG_DECL mng_setcb_getcanvasline (mng_handle hHandle,
|
|
751 |
mng_getcanvasline fProc);
|
|
752 |
MNG_EXT mng_retcode MNG_DECL mng_setcb_getbkgdline (mng_handle hHandle,
|
|
753 |
mng_getbkgdline fProc);
|
|
754 |
MNG_EXT mng_retcode MNG_DECL mng_setcb_getalphaline (mng_handle hHandle,
|
|
755 |
mng_getalphaline fProc);
|
|
756 |
MNG_EXT mng_retcode MNG_DECL mng_setcb_refresh (mng_handle hHandle,
|
|
757 |
mng_refresh fProc);
|
|
758 |
|
|
759 |
/* timing callbacks */
|
|
760 |
/* gettickcount is called to get the system tickcount (milliseconds);
|
|
761 |
this is used to determine the remaining interval between frames */
|
|
762 |
/* settimer is called to inform the application that it should set a timer;
|
|
763 |
when the timer is triggered the app must call mng_display_resume */
|
|
764 |
MNG_EXT mng_retcode MNG_DECL mng_setcb_gettickcount (mng_handle hHandle,
|
|
765 |
mng_gettickcount fProc);
|
|
766 |
MNG_EXT mng_retcode MNG_DECL mng_setcb_settimer (mng_handle hHandle,
|
|
767 |
mng_settimer fProc);
|
|
768 |
|
|
769 |
/* color management callbacks */
|
|
770 |
/* called to transmit color management information to the application */
|
|
771 |
/* these are only used when you #define MNG_APP_CMS */
|
|
772 |
#ifdef MNG_APP_CMS
|
|
773 |
MNG_EXT mng_retcode MNG_DECL mng_setcb_processgamma (mng_handle hHandle,
|
|
774 |
mng_processgamma fProc);
|
|
775 |
MNG_EXT mng_retcode MNG_DECL mng_setcb_processchroma (mng_handle hHandle,
|
|
776 |
mng_processchroma fProc);
|
|
777 |
MNG_EXT mng_retcode MNG_DECL mng_setcb_processsrgb (mng_handle hHandle,
|
|
778 |
mng_processsrgb fProc);
|
|
779 |
MNG_EXT mng_retcode MNG_DECL mng_setcb_processiccp (mng_handle hHandle,
|
|
780 |
mng_processiccp fProc);
|
|
781 |
MNG_EXT mng_retcode MNG_DECL mng_setcb_processarow (mng_handle hHandle,
|
|
782 |
mng_processarow fProc);
|
|
783 |
#endif /* MNG_APP_CMS */
|
|
784 |
#endif /* MNG_SUPPORT_DISPLAY */
|
|
785 |
|
|
786 |
/* release push data callback */
|
|
787 |
/* used when the app pushes data into libmng (as opposed to libmng pulling it)
|
|
788 |
and relinquishes ownership of the pushed data-buffer, but *does* want to
|
|
789 |
release (free) the buffer itself once libmng has finished processing it */
|
|
790 |
#ifdef MNG_SUPPORT_READ
|
|
791 |
MNG_EXT mng_retcode MNG_DECL mng_setcb_releasedata (mng_handle hHandle,
|
|
792 |
mng_releasedata fProc);
|
|
793 |
#endif
|
|
794 |
|
|
795 |
/* ************************************************************************** */
|
|
796 |
/* * * */
|
|
797 |
/* * Callback get functions * */
|
|
798 |
/* * * */
|
|
799 |
/* ************************************************************************** */
|
|
800 |
|
|
801 |
/* see _setcb_ */
|
|
802 |
#ifndef MNG_INTERNAL_MEMMNGMT
|
|
803 |
MNG_EXT mng_memalloc MNG_DECL mng_getcb_memalloc (mng_handle hHandle);
|
|
804 |
MNG_EXT mng_memfree MNG_DECL mng_getcb_memfree (mng_handle hHandle);
|
|
805 |
#endif
|
|
806 |
|
|
807 |
/* see _setcb_ */
|
|
808 |
#ifdef MNG_SUPPORT_READ
|
|
809 |
MNG_EXT mng_releasedata MNG_DECL mng_getcb_releasedata (mng_handle hHandle);
|
|
810 |
#endif
|
|
811 |
|
|
812 |
/* see _setcb_ */
|
|
813 |
#if defined(MNG_SUPPORT_READ) || defined(MNG_WRITE_SUPPORT)
|
|
814 |
#ifndef MNG_NO_OPEN_CLOSE_STREAM
|
|
815 |
MNG_EXT mng_openstream MNG_DECL mng_getcb_openstream (mng_handle hHandle);
|
|
816 |
MNG_EXT mng_closestream MNG_DECL mng_getcb_closestream (mng_handle hHandle);
|
|
817 |
#endif
|
|
818 |
#endif
|
|
819 |
|
|
820 |
/* see _setcb_ */
|
|
821 |
#ifdef MNG_SUPPORT_READ
|
|
822 |
MNG_EXT mng_readdata MNG_DECL mng_getcb_readdata (mng_handle hHandle);
|
|
823 |
#endif
|
|
824 |
|
|
825 |
/* see _setcb_ */
|
|
826 |
#ifdef MNG_SUPPORT_WRITE
|
|
827 |
MNG_EXT mng_writedata MNG_DECL mng_getcb_writedata (mng_handle hHandle);
|
|
828 |
#endif
|
|
829 |
|
|
830 |
/* see _setcb_ */
|
|
831 |
MNG_EXT mng_errorproc MNG_DECL mng_getcb_errorproc (mng_handle hHandle);
|
|
832 |
|
|
833 |
/* see _setcb_ */
|
|
834 |
#ifdef MNG_SUPPORT_TRACE
|
|
835 |
MNG_EXT mng_traceproc MNG_DECL mng_getcb_traceproc (mng_handle hHandle);
|
|
836 |
#endif
|
|
837 |
|
|
838 |
/* see _setcb_ */
|
|
839 |
#ifdef MNG_SUPPORT_READ
|
|
840 |
MNG_EXT mng_processheader MNG_DECL mng_getcb_processheader (mng_handle hHandle);
|
|
841 |
MNG_EXT mng_processtext MNG_DECL mng_getcb_processtext (mng_handle hHandle);
|
|
842 |
MNG_EXT mng_processsave MNG_DECL mng_getcb_processsave (mng_handle hHandle);
|
|
843 |
MNG_EXT mng_processseek MNG_DECL mng_getcb_processseek (mng_handle hHandle);
|
|
844 |
MNG_EXT mng_processneed MNG_DECL mng_getcb_processneed (mng_handle hHandle);
|
|
845 |
MNG_EXT mng_processunknown MNG_DECL mng_getcb_processunknown (mng_handle hHandle);
|
|
846 |
MNG_EXT mng_processterm MNG_DECL mng_getcb_processterm (mng_handle hHandle);
|
|
847 |
#endif
|
|
848 |
|
|
849 |
/* see _setcb_ */
|
|
850 |
#ifdef MNG_SUPPORT_DISPLAY
|
|
851 |
MNG_EXT mng_getcanvasline MNG_DECL mng_getcb_getcanvasline (mng_handle hHandle);
|
|
852 |
MNG_EXT mng_getbkgdline MNG_DECL mng_getcb_getbkgdline (mng_handle hHandle);
|
|
853 |
MNG_EXT mng_getalphaline MNG_DECL mng_getcb_getalphaline (mng_handle hHandle);
|
|
854 |
MNG_EXT mng_refresh MNG_DECL mng_getcb_refresh (mng_handle hHandle);
|
|
855 |
|
|
856 |
/* see _setcb_ */
|
|
857 |
MNG_EXT mng_gettickcount MNG_DECL mng_getcb_gettickcount (mng_handle hHandle);
|
|
858 |
MNG_EXT mng_settimer MNG_DECL mng_getcb_settimer (mng_handle hHandle);
|
|
859 |
|
|
860 |
/* see _setcb_ */
|
|
861 |
#ifdef MNG_APP_CMS
|
|
862 |
MNG_EXT mng_processgamma MNG_DECL mng_getcb_processgamma (mng_handle hHandle);
|
|
863 |
MNG_EXT mng_processchroma MNG_DECL mng_getcb_processchroma (mng_handle hHandle);
|
|
864 |
MNG_EXT mng_processsrgb MNG_DECL mng_getcb_processsrgb (mng_handle hHandle);
|
|
865 |
MNG_EXT mng_processiccp MNG_DECL mng_getcb_processiccp (mng_handle hHandle);
|
|
866 |
MNG_EXT mng_processarow MNG_DECL mng_getcb_processarow (mng_handle hHandle);
|
|
867 |
#endif /* MNG_APP_CMS */
|
|
868 |
#endif /* MNG_SUPPORT_DISPLAY */
|
|
869 |
|
|
870 |
/* ************************************************************************** */
|
|
871 |
/* * * */
|
|
872 |
/* * Property set functions * */
|
|
873 |
/* * * */
|
|
874 |
/* ************************************************************************** */
|
|
875 |
|
|
876 |
/* Application data pointer */
|
|
877 |
/* provided for application use; not used by the library */
|
|
878 |
MNG_EXT mng_retcode MNG_DECL mng_set_userdata (mng_handle hHandle,
|
|
879 |
mng_ptr pUserdata);
|
|
880 |
|
|
881 |
/* The style of the drawing- & background-canvas */
|
|
882 |
/* only used for displaying images */
|
|
883 |
/* both are initially set to 24-bit RGB (eg. 8-bit per channel) */
|
|
884 |
MNG_EXT mng_retcode MNG_DECL mng_set_canvasstyle (mng_handle hHandle,
|
|
885 |
mng_uint32 iStyle);
|
|
886 |
MNG_EXT mng_retcode MNG_DECL mng_set_bkgdstyle (mng_handle hHandle,
|
|
887 |
mng_uint32 iStyle);
|
|
888 |
|
|
889 |
/* The default background color */
|
|
890 |
/* only used if the getbkgdline callback is not defined */
|
|
891 |
/* for initially painting the canvas and restoring (part of) the background */
|
|
892 |
MNG_EXT mng_retcode MNG_DECL mng_set_bgcolor (mng_handle hHandle,
|
|
893 |
mng_uint16 iRed,
|
|
894 |
mng_uint16 iGreen,
|
|
895 |
mng_uint16 iBlue);
|
|
896 |
|
|
897 |
/* Indicates preferred use of the bKGD chunk for PNG images */
|
|
898 |
MNG_EXT mng_retcode MNG_DECL mng_set_usebkgd (mng_handle hHandle,
|
|
899 |
mng_bool bUseBKGD);
|
|
900 |
|
|
901 |
/* Indicates storage of read chunks */
|
|
902 |
/* only useful if you #define mng_store_chunks */
|
|
903 |
/* can be used to dynamically change storage management */
|
|
904 |
MNG_EXT mng_retcode MNG_DECL mng_set_storechunks (mng_handle hHandle,
|
|
905 |
mng_bool bStorechunks);
|
|
906 |
|
|
907 |
/* Indicates breaks requested when processing SAVE/SEEK */
|
|
908 |
/* set this to let the app handle section breaks; the library will return
|
|
909 |
MNG_NEEDSECTIONWAIT return-codes for each SEEK chunk */
|
|
910 |
MNG_EXT mng_retcode MNG_DECL mng_set_sectionbreaks (mng_handle hHandle,
|
|
911 |
mng_bool bSectionbreaks);
|
|
912 |
|
|
913 |
/* Indicates storage of playback info (ON by default!) */
|
|
914 |
/* can be used to turn off caching of playback info; this is useful to
|
|
915 |
specifically optimize MNG-video playback; note that if caching is turned off
|
|
916 |
LOOP chunks will be flagged as errors! TERM chunks will be ignored and only
|
|
917 |
passed to the processterm() callback if it is defined by the app; also, this
|
|
918 |
feature can only be used with mng_readdisplay(); mng_read(),
|
|
919 |
mng_display_reset() and mng_display_goxxxx() will return an error;
|
|
920 |
once this option is turned off it can't be turned on for the same stream!!! */
|
|
921 |
MNG_EXT mng_retcode MNG_DECL mng_set_cacheplayback (mng_handle hHandle,
|
|
922 |
mng_bool bCacheplayback);
|
|
923 |
|
|
924 |
/* Indicates automatic progressive refreshes for large images (ON by default!) */
|
|
925 |
/* turn this off if you do not want intermittent painting while a large image
|
|
926 |
is being read. useful if the input-stream comes from a fast medium, such
|
|
927 |
as a local harddisk */
|
|
928 |
MNG_EXT mng_retcode MNG_DECL mng_set_doprogressive (mng_handle hHandle,
|
|
929 |
mng_bool bDoProgressive);
|
|
930 |
|
|
931 |
/* Indicates existence and required checking of the CRC in input streams,
|
|
932 |
and generation in output streams */
|
|
933 |
/* !!!! Use this ONLY if you know what you are doing !!!! */
|
|
934 |
/* The value is a combination of the following flags:
|
|
935 |
0x0000001 = CRC is present in the input stream
|
|
936 |
0x0000002 = CRC must be generated in the output stream
|
|
937 |
0x0000010 = CRC should be checked for ancillary chunks
|
|
938 |
0x0000020 = a faulty CRC for ancillary chunks generates a warning only
|
|
939 |
0x0000040 = a faulty CRC for ancillary chunks generates an error
|
|
940 |
0x0000100 = CRC should be checked for critical chunks
|
|
941 |
0x0000200 = a faulty CRC for critical chunks generates a warning only
|
|
942 |
0x0000400 = a faulty CRC for critical chunks generates an error
|
|
943 |
|
|
944 |
The default is 0x00000533 = CRC present in input streams; should be checked;
|
|
945 |
warning for ancillary chunks; error for critical
|
|
946 |
chunks; generate CRC for output streams
|
|
947 |
|
|
948 |
Note that some combinations are meaningless; eg. if the CRC is not present
|
|
949 |
it won't do any good to turn the checking flags on; if a checking flag
|
|
950 |
is off, it doesn't do any good to ask for generation of warnings or errors.
|
|
951 |
Also libmng will generate either an error or a warning, not both,
|
|
952 |
so if you specify both the default will be to generate an error!
|
|
953 |
The only useful combinations for input are 331, 551, 351, 531, 0, 301, 501
|
|
954 |
and optionally 031 and 051, but only checking ancillary chunks and not
|
|
955 |
critical chunks is generally not a very good idea!!!
|
|
956 |
If you've also writing these values should be combined with 0x02 if
|
|
957 |
CRC's are required in the output stream
|
|
958 |
*/
|
|
959 |
MNG_EXT mng_retcode MNG_DECL mng_set_crcmode (mng_handle hHandle,
|
|
960 |
mng_uint32 iCrcmode);
|
|
961 |
|
|
962 |
/* Color-management necessaries */
|
|
963 |
/*
|
|
964 |
*************************************************************************
|
|
965 |
!!!!!!!! THIS NEXT BIT IS IMPORTANT !!!!!!!!!
|
|
966 |
*************************************************************************
|
|
967 |
|
|
968 |
If you have defined MNG_FULL_CMS (and are using lcms), you will have to
|
|
969 |
think hard about the following routines.
|
|
970 |
|
|
971 |
lcms requires 2 profiles to work off the differences in the input-image
|
|
972 |
and the output-device. The ICC profile for the input-image will be
|
|
973 |
embedded within it to reflect its color-characteristics, but the output
|
|
974 |
profile depends on the output-device, which is something only *YOU* know
|
|
975 |
about. sRGB (standard RGB) is common for x86 compatible environments
|
|
976 |
(eg. Windows, Linux and some others)
|
|
977 |
|
|
978 |
If you are compiling for a sRGB compliant system you probably won't have
|
|
979 |
to do anything special. (unless you want to of course)
|
|
980 |
|
|
981 |
If you are compiling for a non-sRGB compliant system
|
|
982 |
(eg. SGI, Mac, Next, others...)
|
|
983 |
you *MUST* define a proper ICC profile for the generic output-device
|
|
984 |
associated with that platform.
|
|
985 |
|
|
986 |
In either event, you may also want to offer an option to your users to
|
|
987 |
set the profile manually, or, if you know how, set it from a
|
|
988 |
system-defined default.
|
|
989 |
|
|
990 |
TO RECAP: for sRGB systems (Windows, Linux) no action required!
|
|
991 |
for non-sRGB systems (SGI, Mac, Next) ACTION REQUIRED!
|
|
992 |
|
|
993 |
Please visit http://www.srgb.com, http://www.color.org and
|
|
994 |
http://www.littlecms.com for more info.
|
|
995 |
|
|
996 |
*************************************************************************
|
|
997 |
!!!!!!!! THE BIT ABOVE IS IMPORTANT !!!!!!!!!
|
|
998 |
*************************************************************************
|
|
999 |
*/
|
|
1000 |
/* mng_set_srgb tells libmng if it's running on a sRGB compliant system or not
|
|
1001 |
the default is already set to MNG_TRUE */
|
|
1002 |
/* mng_set_outputprofile, mng_set_outputprofile2, mng_set_outputsrgb
|
|
1003 |
are used to set the default profile describing the output-device
|
|
1004 |
by default it is already initialized with an sRGB profile */
|
|
1005 |
/* mng_set_srgbprofile, mng_set_srgbprofile2, mng_set_srgbimplicit
|
|
1006 |
are used to set the default profile describing a standard sRGB device
|
|
1007 |
this is used when the input-image is tagged only as being sRGB, but the
|
|
1008 |
output-device is defined as not being sRGB compliant
|
|
1009 |
by default it is already initialized with a standard sRGB profile */
|
|
1010 |
#if defined(MNG_SUPPORT_DISPLAY)
|
|
1011 |
MNG_EXT mng_retcode MNG_DECL mng_set_srgb (mng_handle hHandle,
|
|
1012 |
mng_bool bIssRGB);
|
|
1013 |
MNG_EXT mng_retcode MNG_DECL mng_set_outputprofile (mng_handle hHandle,
|
|
1014 |
mng_pchar zFilename);
|
|
1015 |
MNG_EXT mng_retcode MNG_DECL mng_set_outputprofile2 (mng_handle hHandle,
|
|
1016 |
mng_uint32 iProfilesize,
|
|
1017 |
mng_ptr pProfile);
|
|
1018 |
MNG_EXT mng_retcode MNG_DECL mng_set_outputsrgb (mng_handle hHandle);
|
|
1019 |
MNG_EXT mng_retcode MNG_DECL mng_set_srgbprofile (mng_handle hHandle,
|
|
1020 |
mng_pchar zFilename);
|
|
1021 |
MNG_EXT mng_retcode MNG_DECL mng_set_srgbprofile2 (mng_handle hHandle,
|
|
1022 |
mng_uint32 iProfilesize,
|
|
1023 |
mng_ptr pProfile);
|
|
1024 |
MNG_EXT mng_retcode MNG_DECL mng_set_srgbimplicit (mng_handle hHandle);
|
|
1025 |
#endif
|
|
1026 |
|
|
1027 |
#if defined(MNG_FULL_CMS) || defined(MNG_GAMMA_ONLY) || defined(MNG_APP_CMS)
|
|
1028 |
/* Gamma settings */
|
|
1029 |
/* ... blabla (explain gamma processing a little; eg. formula & stuff) ... */
|
|
1030 |
MNG_EXT mng_retcode MNG_DECL mng_set_viewgamma (mng_handle hHandle,
|
|
1031 |
mng_float dGamma);
|
|
1032 |
MNG_EXT mng_retcode MNG_DECL mng_set_displaygamma (mng_handle hHandle,
|
|
1033 |
mng_float dGamma);
|
|
1034 |
MNG_EXT mng_retcode MNG_DECL mng_set_dfltimggamma (mng_handle hHandle,
|
|
1035 |
mng_float dGamma);
|
|
1036 |
MNG_EXT mng_retcode MNG_DECL mng_set_viewgammaint (mng_handle hHandle,
|
|
1037 |
mng_uint32 iGamma);
|
|
1038 |
MNG_EXT mng_retcode MNG_DECL mng_set_displaygammaint (mng_handle hHandle,
|
|
1039 |
mng_uint32 iGamma);
|
|
1040 |
MNG_EXT mng_retcode MNG_DECL mng_set_dfltimggammaint (mng_handle hHandle,
|
|
1041 |
mng_uint32 iGamma);
|
|
1042 |
#endif
|
|
1043 |
|
|
1044 |
#ifndef MNG_SKIP_MAXCANVAS
|
|
1045 |
/* Ultimate clipping size */
|
|
1046 |
/* used to limit extreme graphics from overloading the system */
|
|
1047 |
/* if a graphic exceeds these limits a warning is issued, which can
|
|
1048 |
be ignored by the app (using the errorproc callback). in that case
|
|
1049 |
the library will use these settings to clip the input graphic, and
|
|
1050 |
the app's canvas must account for this */
|
|
1051 |
MNG_EXT mng_retcode MNG_DECL mng_set_maxcanvaswidth (mng_handle hHandle,
|
|
1052 |
mng_uint32 iMaxwidth);
|
|
1053 |
MNG_EXT mng_retcode MNG_DECL mng_set_maxcanvasheight (mng_handle hHandle,
|
|
1054 |
mng_uint32 iMaxheight);
|
|
1055 |
MNG_EXT mng_retcode MNG_DECL mng_set_maxcanvassize (mng_handle hHandle,
|
|
1056 |
mng_uint32 iMaxwidth,
|
|
1057 |
mng_uint32 iMaxheight);
|
|
1058 |
#endif
|
|
1059 |
|
|
1060 |
/* ZLIB default compression parameters */
|
|
1061 |
/* these are used when writing out chunks */
|
|
1062 |
/* they are also used when compressing PNG image-data or JNG alpha-data;
|
|
1063 |
in this case you can set them just before calling mng_putimgdata_ihdr */
|
|
1064 |
/* set to your liking; usually the defaults will suffice though! */
|
|
1065 |
/* check the documentation for ZLIB for details on these parameters */
|
|
1066 |
#ifdef MNG_INCLUDE_ZLIB
|
|
1067 |
MNG_EXT mng_retcode MNG_DECL mng_set_zlib_level (mng_handle hHandle,
|
|
1068 |
mng_int32 iZlevel);
|
|
1069 |
MNG_EXT mng_retcode MNG_DECL mng_set_zlib_method (mng_handle hHandle,
|
|
1070 |
mng_int32 iZmethod);
|
|
1071 |
MNG_EXT mng_retcode MNG_DECL mng_set_zlib_windowbits (mng_handle hHandle,
|
|
1072 |
mng_int32 iZwindowbits);
|
|
1073 |
MNG_EXT mng_retcode MNG_DECL mng_set_zlib_memlevel (mng_handle hHandle,
|
|
1074 |
mng_int32 iZmemlevel);
|
|
1075 |
MNG_EXT mng_retcode MNG_DECL mng_set_zlib_strategy (mng_handle hHandle,
|
|
1076 |
mng_int32 iZstrategy);
|
|
1077 |
|
|
1078 |
MNG_EXT mng_retcode MNG_DECL mng_set_zlib_maxidat (mng_handle hHandle,
|
|
1079 |
mng_uint32 iMaxIDAT);
|
|
1080 |
#endif /* MNG_INCLUDE_ZLIB */
|
|
1081 |
|
|
1082 |
/* JNG default compression parameters (based on IJG code) */
|
|
1083 |
/* these are used when compressing JNG image-data; so you can set them
|
|
1084 |
just before calling mng_putimgdata_jhdr */
|
|
1085 |
/* set to your liking; usually the defaults will suffice though! */
|
|
1086 |
/* check the documentation for IJGSRC6B for details on these parameters */
|
|
1087 |
#ifdef MNG_INCLUDE_JNG
|
|
1088 |
#ifdef MNG_INCLUDE_IJG6B
|
|
1089 |
MNG_EXT mng_retcode MNG_DECL mng_set_jpeg_dctmethod (mng_handle hHandle,
|
|
1090 |
mngjpeg_dctmethod eJPEGdctmethod);
|
|
1091 |
#endif
|
|
1092 |
MNG_EXT mng_retcode MNG_DECL mng_set_jpeg_quality (mng_handle hHandle,
|
|
1093 |
mng_int32 iJPEGquality);
|
|
1094 |
MNG_EXT mng_retcode MNG_DECL mng_set_jpeg_smoothing (mng_handle hHandle,
|
|
1095 |
mng_int32 iJPEGsmoothing);
|
|
1096 |
MNG_EXT mng_retcode MNG_DECL mng_set_jpeg_progressive(mng_handle hHandle,
|
|
1097 |
mng_bool bJPEGprogressive);
|
|
1098 |
MNG_EXT mng_retcode MNG_DECL mng_set_jpeg_optimized (mng_handle hHandle,
|
|
1099 |
mng_bool bJPEGoptimized);
|
|
1100 |
|
|
1101 |
MNG_EXT mng_retcode MNG_DECL mng_set_jpeg_maxjdat (mng_handle hHandle,
|
|
1102 |
mng_uint32 iMaxJDAT);
|
|
1103 |
#endif /* MNG_INCLUDE_JNG */
|
|
1104 |
|
|
1105 |
/* Suspension-mode setting */
|
|
1106 |
/* use this to activate the internal suspension-buffer to improve
|
|
1107 |
read-suspension processing */
|
|
1108 |
/* TODO: write-suspension ??? */
|
|
1109 |
#if defined(MNG_SUPPORT_READ)
|
|
1110 |
MNG_EXT mng_retcode MNG_DECL mng_set_suspensionmode (mng_handle hHandle,
|
|
1111 |
mng_bool bSuspensionmode);
|
|
1112 |
#endif
|
|
1113 |
|
|
1114 |
/* Speed setting */
|
|
1115 |
/* use this to influence the display-speed of animations */
|
|
1116 |
#if defined(MNG_SUPPORT_DISPLAY)
|
|
1117 |
MNG_EXT mng_retcode MNG_DECL mng_set_speed (mng_handle hHandle,
|
|
1118 |
mng_speedtype iSpeed);
|
|
1119 |
#endif
|
|
1120 |
|
|
1121 |
/* ************************************************************************** */
|
|
1122 |
/* * * */
|
|
1123 |
/* * Property get functions * */
|
|
1124 |
/* * * */
|
|
1125 |
/* ************************************************************************** */
|
|
1126 |
|
|
1127 |
/* see _set_ */
|
|
1128 |
MNG_EXT mng_ptr MNG_DECL mng_get_userdata (mng_handle hHandle);
|
|
1129 |
|
|
1130 |
/* Network Graphic header details */
|
|
1131 |
/* these get filled once the graphics header is processed,
|
|
1132 |
so they are available in the processheader callback; before that
|
|
1133 |
they are zeroed out and imagetype is set to it_unknown */
|
|
1134 |
/* this might be a good point for the app to initialize the drawing-canvas! */
|
|
1135 |
/* note that some fields are only set for the first(!) header-chunk:
|
|
1136 |
MNG/MHDR (imagetype = mng_it_mng) - ticks thru simplicity
|
|
1137 |
PNG/IHDR (imagetype = mng_it_png) - bitdepth thru interlace
|
|
1138 |
JNG/JHDR (imagetype = mng_it_jng) - bitdepth thru compression &
|
|
1139 |
interlace thru alphainterlace */
|
|
1140 |
MNG_EXT mng_imgtype MNG_DECL mng_get_sigtype (mng_handle hHandle);
|
|
1141 |
MNG_EXT mng_imgtype MNG_DECL mng_get_imagetype (mng_handle hHandle);
|
|
1142 |
MNG_EXT mng_uint32 MNG_DECL mng_get_imagewidth (mng_handle hHandle);
|
|
1143 |
MNG_EXT mng_uint32 MNG_DECL mng_get_imageheight (mng_handle hHandle);
|
|
1144 |
|
|
1145 |
MNG_EXT mng_uint32 MNG_DECL mng_get_ticks (mng_handle hHandle);
|
|
1146 |
MNG_EXT mng_uint32 MNG_DECL mng_get_framecount (mng_handle hHandle);
|
|
1147 |
MNG_EXT mng_uint32 MNG_DECL mng_get_layercount (mng_handle hHandle);
|
|
1148 |
MNG_EXT mng_uint32 MNG_DECL mng_get_playtime (mng_handle hHandle);
|
|
1149 |
MNG_EXT mng_uint32 MNG_DECL mng_get_simplicity (mng_handle hHandle);
|
|
1150 |
|
|
1151 |
MNG_EXT mng_uint8 MNG_DECL mng_get_bitdepth (mng_handle hHandle);
|
|
1152 |
MNG_EXT mng_uint8 MNG_DECL mng_get_colortype (mng_handle hHandle);
|
|
1153 |
MNG_EXT mng_uint8 MNG_DECL mng_get_compression (mng_handle hHandle);
|
|
1154 |
MNG_EXT mng_uint8 MNG_DECL mng_get_filter (mng_handle hHandle);
|
|
1155 |
MNG_EXT mng_uint8 MNG_DECL mng_get_interlace (mng_handle hHandle);
|
|
1156 |
MNG_EXT mng_uint8 MNG_DECL mng_get_alphabitdepth (mng_handle hHandle);
|
|
1157 |
MNG_EXT mng_uint8 MNG_DECL mng_get_alphacompression(mng_handle hHandle);
|
|
1158 |
MNG_EXT mng_uint8 MNG_DECL mng_get_alphafilter (mng_handle hHandle);
|
|
1159 |
MNG_EXT mng_uint8 MNG_DECL mng_get_alphainterlace (mng_handle hHandle);
|
|
1160 |
|
|
1161 |
/* indicates the predicted alpha-depth required to properly display the image */
|
|
1162 |
/* gets set once the graphics header is processed and is available in the
|
|
1163 |
processheader callback for any type of input-image (PNG, JNG or MNG) */
|
|
1164 |
/* possible values are 0,1,2,4,8,16
|
|
1165 |
0 = no transparency required
|
|
1166 |
1 = on/off transparency required (alpha-values are 0 or 2^bit_depth-1)
|
|
1167 |
2+ = semi-transparency required (values will be scaled to the bitdepth of the
|
|
1168 |
canvasstyle supplied by the application) */
|
|
1169 |
MNG_EXT mng_uint8 MNG_DECL mng_get_alphadepth (mng_handle hHandle);
|
|
1170 |
|
|
1171 |
/* defines whether a refresh() callback is called for an interlace pass (PNG)
|
|
1172 |
or progressive scan (JNG) */
|
|
1173 |
/* returns the interlace pass number for PNG or a fabricated pass number for JNG;
|
|
1174 |
returns 0 in all other cases */
|
|
1175 |
/* only useful if the image_type = mng_it_png or mng_it_jng and if the image
|
|
1176 |
is actually interlaced (PNG) or progressive (JNG) */
|
|
1177 |
#ifdef MNG_SUPPORT_DISPLAY
|
|
1178 |
MNG_EXT mng_uint8 MNG_DECL mng_get_refreshpass (mng_handle hHandle);
|
|
1179 |
#endif
|
|
1180 |
|
|
1181 |
/* see _set_ */
|
|
1182 |
MNG_EXT mng_uint32 MNG_DECL mng_get_canvasstyle (mng_handle hHandle);
|
|
1183 |
MNG_EXT mng_uint32 MNG_DECL mng_get_bkgdstyle (mng_handle hHandle);
|
|
1184 |
|
|
1185 |
/* see _set_ */
|
|
1186 |
MNG_EXT mng_retcode MNG_DECL mng_get_bgcolor (mng_handle hHandle,
|
|
1187 |
mng_uint16* iRed,
|
|
1188 |
mng_uint16* iGreen,
|
|
1189 |
mng_uint16* iBlue);
|
|
1190 |
|
|
1191 |
/* see _set_ */
|
|
1192 |
MNG_EXT mng_bool MNG_DECL mng_get_usebkgd (mng_handle hHandle);
|
|
1193 |
|
|
1194 |
/* see _set_ */
|
|
1195 |
MNG_EXT mng_bool MNG_DECL mng_get_storechunks (mng_handle hHandle);
|
|
1196 |
|
|
1197 |
/* see _set_ */
|
|
1198 |
MNG_EXT mng_bool MNG_DECL mng_get_sectionbreaks (mng_handle hHandle);
|
|
1199 |
|
|
1200 |
/* see _set_ */
|
|
1201 |
MNG_EXT mng_bool MNG_DECL mng_get_cacheplayback (mng_handle hHandle);
|
|
1202 |
|
|
1203 |
/* see _set_ */
|
|
1204 |
MNG_EXT mng_bool MNG_DECL mng_get_doprogressive (mng_handle hHandle);
|
|
1205 |
|
|
1206 |
/* see _set_ */
|
|
1207 |
MNG_EXT mng_uint32 MNG_DECL mng_get_crcmode (mng_handle hHandle);
|
|
1208 |
|
|
1209 |
/* see _set_ */
|
|
1210 |
#if defined(MNG_SUPPORT_DISPLAY) && defined(MNG_FULL_CMS)
|
|
1211 |
MNG_EXT mng_bool MNG_DECL mng_get_srgb (mng_handle hHandle);
|
|
1212 |
#endif
|
|
1213 |
|
|
1214 |
/* see _set_ */
|
|
1215 |
MNG_EXT mng_float MNG_DECL mng_get_viewgamma (mng_handle hHandle);
|
|
1216 |
MNG_EXT mng_float MNG_DECL mng_get_displaygamma (mng_handle hHandle);
|
|
1217 |
MNG_EXT mng_float MNG_DECL mng_get_dfltimggamma (mng_handle hHandle);
|
|
1218 |
MNG_EXT mng_uint32 MNG_DECL mng_get_viewgammaint (mng_handle hHandle);
|
|
1219 |
MNG_EXT mng_uint32 MNG_DECL mng_get_displaygammaint (mng_handle hHandle);
|
|
1220 |
MNG_EXT mng_uint32 MNG_DECL mng_get_dfltimggammaint (mng_handle hHandle);
|
|
1221 |
|
|
1222 |
#ifndef MNG_SKIP_MAXCANVAS
|
|
1223 |
/* see _set_ */
|
|
1224 |
MNG_EXT mng_uint32 MNG_DECL mng_get_maxcanvaswidth (mng_handle hHandle);
|
|
1225 |
MNG_EXT mng_uint32 MNG_DECL mng_get_maxcanvasheight (mng_handle hHandle);
|
|
1226 |
#endif
|
|
1227 |
|
|
1228 |
/* see _set_ */
|
|
1229 |
#ifdef MNG_INCLUDE_ZLIB
|
|
1230 |
MNG_EXT mng_int32 MNG_DECL mng_get_zlib_level (mng_handle hHandle);
|
|
1231 |
MNG_EXT mng_int32 MNG_DECL mng_get_zlib_method (mng_handle hHandle);
|
|
1232 |
MNG_EXT mng_int32 MNG_DECL mng_get_zlib_windowbits (mng_handle hHandle);
|
|
1233 |
MNG_EXT mng_int32 MNG_DECL mng_get_zlib_memlevel (mng_handle hHandle);
|
|
1234 |
MNG_EXT mng_int32 MNG_DECL mng_get_zlib_strategy (mng_handle hHandle);
|
|
1235 |
|
|
1236 |
MNG_EXT mng_uint32 MNG_DECL mng_get_zlib_maxidat (mng_handle hHandle);
|
|
1237 |
#endif /* MNG_INCLUDE_ZLIB */
|
|
1238 |
|
|
1239 |
/* see _set_ */
|
|
1240 |
#ifdef MNG_INCLUDE_JNG
|
|
1241 |
#ifdef MNG_INCLUDE_IJG6B
|
|
1242 |
MNG_EXT mngjpeg_dctmethod
|
|
1243 |
MNG_DECL mng_get_jpeg_dctmethod (mng_handle hHandle);
|
|
1244 |
#endif
|
|
1245 |
MNG_EXT mng_int32 MNG_DECL mng_get_jpeg_quality (mng_handle hHandle);
|
|
1246 |
MNG_EXT mng_int32 MNG_DECL mng_get_jpeg_smoothing (mng_handle hHandle);
|
|
1247 |
MNG_EXT mng_bool MNG_DECL mng_get_jpeg_progressive(mng_handle hHandle);
|
|
1248 |
MNG_EXT mng_bool MNG_DECL mng_get_jpeg_optimized (mng_handle hHandle);
|
|
1249 |
|
|
1250 |
MNG_EXT mng_uint32 MNG_DECL mng_get_jpeg_maxjdat (mng_handle hHandle);
|
|
1251 |
#endif /* MNG_INCLUDE_JNG */
|
|
1252 |
|
|
1253 |
/* see _set_ */
|
|
1254 |
#if defined(MNG_SUPPORT_READ)
|
|
1255 |
MNG_EXT mng_bool MNG_DECL mng_get_suspensionmode (mng_handle hHandle);
|
|
1256 |
#endif
|
|
1257 |
|
|
1258 |
/* see _set_ */
|
|
1259 |
#if defined(MNG_SUPPORT_DISPLAY)
|
|
1260 |
MNG_EXT mng_speedtype
|
|
1261 |
MNG_DECL mng_get_speed (mng_handle hHandle);
|
|
1262 |
#endif
|
|
1263 |
|
|
1264 |
/* Image-level */
|
|
1265 |
/* this can be used inside the processtext callback to determine the level of
|
|
1266 |
text of the image being processed; the value 1 is returned for top-level
|
|
1267 |
texts, and the value 2 for a text inside an embedded image inside a MNG */
|
|
1268 |
MNG_EXT mng_uint32 MNG_DECL mng_get_imagelevel (mng_handle hHandle);
|
|
1269 |
|
|
1270 |
/* BACK info */
|
|
1271 |
/* can be used to retrieve the color & mandatory values for the last processed
|
|
1272 |
BACK chunk of a MNG (will fail for other image-types);
|
|
1273 |
if no BACK chunk was processed yet, it will return all zeroes */
|
|
1274 |
#ifdef MNG_SUPPORT_DISPLAY
|
|
1275 |
MNG_EXT mng_retcode MNG_DECL mng_get_lastbackchunk (mng_handle hHandle,
|
|
1276 |
mng_uint16* iRed,
|
|
1277 |
mng_uint16* iGreen,
|
|
1278 |
mng_uint16* iBlue,
|
|
1279 |
mng_uint8* iMandatory);
|
|
1280 |
#endif
|
|
1281 |
|
|
1282 |
/* SEEK info */
|
|
1283 |
/* can be used to retrieve the segmentname of the last processed SEEK chunk;
|
|
1284 |
if no SEEK chunk was processed or its segmentname was empty, the function
|
|
1285 |
will return an empty string; the provided buffer must be at least 80 bytes!! */
|
|
1286 |
#ifdef MNG_SUPPORT_DISPLAY
|
|
1287 |
MNG_EXT mng_retcode MNG_DECL mng_get_lastseekname (mng_handle hHandle,
|
|
1288 |
mng_pchar zSegmentname);
|
|
1289 |
#endif
|
|
1290 |
|
|
1291 |
/* FRAM info */
|
|
1292 |
/* can be used to retrieve the current FRAM delay; this may be useful when
|
|
1293 |
retrieving a stream of frames with their corresponding delays by "fake"
|
|
1294 |
reading and displaying the file */
|
|
1295 |
#ifdef MNG_SUPPORT_DISPLAY
|
|
1296 |
MNG_EXT mng_uint32 MNG_DECL mng_get_currframdelay (mng_handle hHandle);
|
|
1297 |
#endif
|
|
1298 |
|
|
1299 |
/* Display status variables */
|
|
1300 |
/* these get filled & updated during display processing */
|
|
1301 |
/* starttime is the tickcount at the start of displaying the animation */
|
|
1302 |
/* runtime is the actual number of millisecs since the start of the animation */
|
|
1303 |
/* currentframe, currentlayer & currentplaytime indicate the current
|
|
1304 |
frame/layer/playtime(msecs) in the animation (these keep increasing;
|
|
1305 |
even after the animation loops back to the TERM chunk) */
|
|
1306 |
/* totalframes, totallayers & totalplaytime are filled after a complete run
|
|
1307 |
of an animation (eg. at MEND); they are also valid after just reading the MNG */
|
|
1308 |
#ifdef MNG_SUPPORT_DISPLAY
|
|
1309 |
MNG_EXT mng_uint32 MNG_DECL mng_get_starttime (mng_handle hHandle);
|
|
1310 |
MNG_EXT mng_uint32 MNG_DECL mng_get_runtime (mng_handle hHandle);
|
|
1311 |
#ifndef MNG_NO_CURRENT_INFO
|
|
1312 |
MNG_EXT mng_uint32 MNG_DECL mng_get_currentframe (mng_handle hHandle);
|
|
1313 |
MNG_EXT mng_uint32 MNG_DECL mng_get_currentlayer (mng_handle hHandle);
|
|
1314 |
MNG_EXT mng_uint32 MNG_DECL mng_get_currentplaytime (mng_handle hHandle);
|
|
1315 |
MNG_EXT mng_uint32 MNG_DECL mng_get_totalframes (mng_handle hHandle);
|
|
1316 |
MNG_EXT mng_uint32 MNG_DECL mng_get_totallayers (mng_handle hHandle);
|
|
1317 |
MNG_EXT mng_uint32 MNG_DECL mng_get_totalplaytime (mng_handle hHandle);
|
|
1318 |
#endif
|
|
1319 |
#endif
|
|
1320 |
|
|
1321 |
/* Status variables */
|
|
1322 |
/* these indicate the internal state of the library */
|
|
1323 |
/* most indicate exactly what you would expect -
|
|
1324 |
status_error: true if the last function call returned an errorcode
|
|
1325 |
status_reading: true if the library is (still) reading an image
|
|
1326 |
status_suspendbreak: true if the library has suspended for "I/O"
|
|
1327 |
status_creating: true if the library is in the middle of creating an image
|
|
1328 |
status_writing: true if the library is in the middle of writing an image
|
|
1329 |
status_displaying: true if the library is displaying an image
|
|
1330 |
status_running: true if display processing is active (eg. not frozen or reset)
|
|
1331 |
status_timerbreak: true if the library has suspended for a "timer-break"
|
|
1332 |
status_dynamic: true if the library encountered an evNT chunk in the MNG
|
|
1333 |
status_runningevent: true if the library is processing an external event */
|
|
1334 |
/* eg. mng_readdisplay() will turn the reading, displaying and running status on;
|
|
1335 |
when EOF is reached the reading status will be turned off */
|
|
1336 |
MNG_EXT mng_bool MNG_DECL mng_status_error (mng_handle hHandle);
|
|
1337 |
#ifdef MNG_SUPPORT_READ
|
|
1338 |
MNG_EXT mng_bool MNG_DECL mng_status_reading (mng_handle hHandle);
|
|
1339 |
MNG_EXT mng_bool MNG_DECL mng_status_suspendbreak (mng_handle hHandle);
|
|
1340 |
#endif
|
|
1341 |
#ifdef MNG_SUPPORT_WRITE
|
|
1342 |
MNG_EXT mng_bool MNG_DECL mng_status_creating (mng_handle hHandle);
|
|
1343 |
MNG_EXT mng_bool MNG_DECL mng_status_writing (mng_handle hHandle);
|
|
1344 |
#endif
|
|
1345 |
#ifdef MNG_SUPPORT_DISPLAY
|
|
1346 |
MNG_EXT mng_bool MNG_DECL mng_status_displaying (mng_handle hHandle);
|
|
1347 |
MNG_EXT mng_bool MNG_DECL mng_status_running (mng_handle hHandle);
|
|
1348 |
MNG_EXT mng_bool MNG_DECL mng_status_timerbreak (mng_handle hHandle);
|
|
1349 |
#endif
|
|
1350 |
#ifdef MNG_SUPPORT_DYNAMICMNG
|
|
1351 |
MNG_EXT mng_bool MNG_DECL mng_status_dynamic (mng_handle hHandle);
|
|
1352 |
MNG_EXT mng_bool MNG_DECL mng_status_runningevent (mng_handle hHandle);
|
|
1353 |
#endif
|
|
1354 |
|
|
1355 |
/* ************************************************************************** */
|
|
1356 |
/* * * */
|
|
1357 |
/* * Chunk access functions * */
|
|
1358 |
/* * * */
|
|
1359 |
/* ************************************************************************** */
|
|
1360 |
|
|
1361 |
#ifdef MNG_ACCESS_CHUNKS
|
|
1362 |
|
|
1363 |
/* ************************************************************************** */
|
|
1364 |
|
|
1365 |
/* use this to iterate the stored chunks */
|
|
1366 |
/* requires MNG_ACCESS_CHUNKS & MNG_STORE_CHUNKS */
|
|
1367 |
/* starts from the supplied chunk-index-nr; the first chunk has index 0!! */
|
|
1368 |
MNG_EXT mng_retcode MNG_DECL mng_iterate_chunks (mng_handle hHandle,
|
|
1369 |
mng_uint32 iChunkseq,
|
|
1370 |
mng_iteratechunk fProc);
|
|
1371 |
|
|
1372 |
/* use the next function inside your 'iteratechunk' callback to copy
|
|
1373 |
the given chunk to a new mng you are creating */
|
|
1374 |
/* the 'out' handle should be in 'create' status! */
|
|
1375 |
#ifdef MNG_SUPPORT_WRITE
|
|
1376 |
MNG_EXT mng_retcode MNG_DECL mng_copy_chunk (mng_handle hHandle,
|
|
1377 |
mng_handle hChunk,
|
|
1378 |
mng_handle hHandleOut);
|
|
1379 |
#endif
|
|
1380 |
|
|
1381 |
/* ************************************************************************** */
|
|
1382 |
|
|
1383 |
/* use these to get chunk data from within the callback in iterate_chunks */
|
|
1384 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_ihdr (mng_handle hHandle,
|
|
1385 |
mng_handle hChunk,
|
|
1386 |
mng_uint32 *iWidth,
|
|
1387 |
mng_uint32 *iHeight,
|
|
1388 |
mng_uint8 *iBitdepth,
|
|
1389 |
mng_uint8 *iColortype,
|
|
1390 |
mng_uint8 *iCompression,
|
|
1391 |
mng_uint8 *iFilter,
|
|
1392 |
mng_uint8 *iInterlace);
|
|
1393 |
|
|
1394 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_plte (mng_handle hHandle,
|
|
1395 |
mng_handle hChunk,
|
|
1396 |
mng_uint32 *iCount,
|
|
1397 |
mng_palette8 *aPalette);
|
|
1398 |
|
|
1399 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_idat (mng_handle hHandle,
|
|
1400 |
mng_handle hChunk,
|
|
1401 |
mng_uint32 *iRawlen,
|
|
1402 |
mng_ptr *pRawdata);
|
|
1403 |
|
|
1404 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_trns (mng_handle hHandle,
|
|
1405 |
mng_handle hChunk,
|
|
1406 |
mng_bool *bEmpty,
|
|
1407 |
mng_bool *bGlobal,
|
|
1408 |
mng_uint8 *iType,
|
|
1409 |
mng_uint32 *iCount,
|
|
1410 |
mng_uint8arr *aAlphas,
|
|
1411 |
mng_uint16 *iGray,
|
|
1412 |
mng_uint16 *iRed,
|
|
1413 |
mng_uint16 *iGreen,
|
|
1414 |
mng_uint16 *iBlue,
|
|
1415 |
mng_uint32 *iRawlen,
|
|
1416 |
mng_uint8arr *aRawdata);
|
|
1417 |
|
|
1418 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_gama (mng_handle hHandle,
|
|
1419 |
mng_handle hChunk,
|
|
1420 |
mng_bool *bEmpty,
|
|
1421 |
mng_uint32 *iGamma);
|
|
1422 |
|
|
1423 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_chrm (mng_handle hHandle,
|
|
1424 |
mng_handle hChunk,
|
|
1425 |
mng_bool *bEmpty,
|
|
1426 |
mng_uint32 *iWhitepointx,
|
|
1427 |
mng_uint32 *iWhitepointy,
|
|
1428 |
mng_uint32 *iRedx,
|
|
1429 |
mng_uint32 *iRedy,
|
|
1430 |
mng_uint32 *iGreenx,
|
|
1431 |
mng_uint32 *iGreeny,
|
|
1432 |
mng_uint32 *iBluex,
|
|
1433 |
mng_uint32 *iBluey);
|
|
1434 |
|
|
1435 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_srgb (mng_handle hHandle,
|
|
1436 |
mng_handle hChunk,
|
|
1437 |
mng_bool *bEmpty,
|
|
1438 |
mng_uint8 *iRenderingintent);
|
|
1439 |
|
|
1440 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_iccp (mng_handle hHandle,
|
|
1441 |
mng_handle hChunk,
|
|
1442 |
mng_bool *bEmpty,
|
|
1443 |
mng_uint32 *iNamesize,
|
|
1444 |
mng_pchar *zName,
|
|
1445 |
mng_uint8 *iCompression,
|
|
1446 |
mng_uint32 *iProfilesize,
|
|
1447 |
mng_ptr *pProfile);
|
|
1448 |
|
|
1449 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_text (mng_handle hHandle,
|
|
1450 |
mng_handle hChunk,
|
|
1451 |
mng_uint32 *iKeywordsize,
|
|
1452 |
mng_pchar *zKeyword,
|
|
1453 |
mng_uint32 *iTextsize,
|
|
1454 |
mng_pchar *zText);
|
|
1455 |
|
|
1456 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_ztxt (mng_handle hHandle,
|
|
1457 |
mng_handle hChunk,
|
|
1458 |
mng_uint32 *iKeywordsize,
|
|
1459 |
mng_pchar *zKeyword,
|
|
1460 |
mng_uint8 *iCompression,
|
|
1461 |
mng_uint32 *iTextsize,
|
|
1462 |
mng_pchar *zText);
|
|
1463 |
|
|
1464 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_itxt (mng_handle hHandle,
|
|
1465 |
mng_handle hChunk,
|
|
1466 |
mng_uint32 *iKeywordsize,
|
|
1467 |
mng_pchar *zKeyword,
|
|
1468 |
mng_uint8 *iCompressionflag,
|
|
1469 |
mng_uint8 *iCompressionmethod,
|
|
1470 |
mng_uint32 *iLanguagesize,
|
|
1471 |
mng_pchar *zLanguage,
|
|
1472 |
mng_uint32 *iTranslationsize,
|
|
1473 |
mng_pchar *zTranslation,
|
|
1474 |
mng_uint32 *iTextsize,
|
|
1475 |
mng_pchar *zText);
|
|
1476 |
|
|
1477 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_bkgd (mng_handle hHandle,
|
|
1478 |
mng_handle hChunk,
|
|
1479 |
mng_bool *bEmpty,
|
|
1480 |
mng_uint8 *iType,
|
|
1481 |
mng_uint8 *iIndex,
|
|
1482 |
mng_uint16 *iGray,
|
|
1483 |
mng_uint16 *iRed,
|
|
1484 |
mng_uint16 *iGreen,
|
|
1485 |
mng_uint16 *iBlue);
|
|
1486 |
|
|
1487 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_phys (mng_handle hHandle,
|
|
1488 |
mng_handle hChunk,
|
|
1489 |
mng_bool *bEmpty,
|
|
1490 |
mng_uint32 *iSizex,
|
|
1491 |
mng_uint32 *iSizey,
|
|
1492 |
mng_uint8 *iUnit);
|
|
1493 |
|
|
1494 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_sbit (mng_handle hHandle,
|
|
1495 |
mng_handle hChunk,
|
|
1496 |
mng_bool *bEmpty,
|
|
1497 |
mng_uint8 *iType,
|
|
1498 |
mng_uint8arr4 *aBits);
|
|
1499 |
|
|
1500 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_splt (mng_handle hHandle,
|
|
1501 |
mng_handle hChunk,
|
|
1502 |
mng_bool *bEmpty,
|
|
1503 |
mng_uint32 *iNamesize,
|
|
1504 |
mng_pchar *zName,
|
|
1505 |
mng_uint8 *iSampledepth,
|
|
1506 |
mng_uint32 *iEntrycount,
|
|
1507 |
mng_ptr *pEntries);
|
|
1508 |
|
|
1509 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_hist (mng_handle hHandle,
|
|
1510 |
mng_handle hChunk,
|
|
1511 |
mng_uint32 *iEntrycount,
|
|
1512 |
mng_uint16arr *aEntries);
|
|
1513 |
|
|
1514 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_time (mng_handle hHandle,
|
|
1515 |
mng_handle hChunk,
|
|
1516 |
mng_uint16 *iYear,
|
|
1517 |
mng_uint8 *iMonth,
|
|
1518 |
mng_uint8 *iDay,
|
|
1519 |
mng_uint8 *iHour,
|
|
1520 |
mng_uint8 *iMinute,
|
|
1521 |
mng_uint8 *iSecond);
|
|
1522 |
|
|
1523 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_mhdr (mng_handle hHandle,
|
|
1524 |
mng_handle hChunk,
|
|
1525 |
mng_uint32 *iWidth,
|
|
1526 |
mng_uint32 *iHeight,
|
|
1527 |
mng_uint32 *iTicks,
|
|
1528 |
mng_uint32 *iLayercount,
|
|
1529 |
mng_uint32 *iFramecount,
|
|
1530 |
mng_uint32 *iPlaytime,
|
|
1531 |
mng_uint32 *iSimplicity);
|
|
1532 |
|
|
1533 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_loop (mng_handle hHandle,
|
|
1534 |
mng_handle hChunk,
|
|
1535 |
mng_uint8 *iLevel,
|
|
1536 |
mng_uint32 *iRepeat,
|
|
1537 |
mng_uint8 *iTermination,
|
|
1538 |
mng_uint32 *iItermin,
|
|
1539 |
mng_uint32 *iItermax,
|
|
1540 |
mng_uint32 *iCount,
|
|
1541 |
mng_uint32p *pSignals);
|
|
1542 |
|
|
1543 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_endl (mng_handle hHandle,
|
|
1544 |
mng_handle hChunk,
|
|
1545 |
mng_uint8 *iLevel);
|
|
1546 |
|
|
1547 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_defi (mng_handle hHandle,
|
|
1548 |
mng_handle hChunk,
|
|
1549 |
mng_uint16 *iObjectid,
|
|
1550 |
mng_uint8 *iDonotshow,
|
|
1551 |
mng_uint8 *iConcrete,
|
|
1552 |
mng_bool *bHasloca,
|
|
1553 |
mng_int32 *iXlocation,
|
|
1554 |
mng_int32 *iYlocation,
|
|
1555 |
mng_bool *bHasclip,
|
|
1556 |
mng_int32 *iLeftcb,
|
|
1557 |
mng_int32 *iRightcb,
|
|
1558 |
mng_int32 *iTopcb,
|
|
1559 |
mng_int32 *iBottomcb);
|
|
1560 |
|
|
1561 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_basi (mng_handle hHandle,
|
|
1562 |
mng_handle hChunk,
|
|
1563 |
mng_uint32 *iWidth,
|
|
1564 |
mng_uint32 *iHeight,
|
|
1565 |
mng_uint8 *iBitdepth,
|
|
1566 |
mng_uint8 *iColortype,
|
|
1567 |
mng_uint8 *iCompression,
|
|
1568 |
mng_uint8 *iFilter,
|
|
1569 |
mng_uint8 *iInterlace,
|
|
1570 |
mng_uint16 *iRed,
|
|
1571 |
mng_uint16 *iGreen,
|
|
1572 |
mng_uint16 *iBlue,
|
|
1573 |
mng_uint16 *iAlpha,
|
|
1574 |
mng_uint8 *iViewable);
|
|
1575 |
|
|
1576 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_clon (mng_handle hHandle,
|
|
1577 |
mng_handle hChunk,
|
|
1578 |
mng_uint16 *iSourceid,
|
|
1579 |
mng_uint16 *iCloneid,
|
|
1580 |
mng_uint8 *iClonetype,
|
|
1581 |
mng_uint8 *iDonotshow,
|
|
1582 |
mng_uint8 *iConcrete,
|
|
1583 |
mng_bool *bHasloca,
|
|
1584 |
mng_uint8 *iLocationtype,
|
|
1585 |
mng_int32 *iLocationx,
|
|
1586 |
mng_int32 *iLocationy);
|
|
1587 |
|
|
1588 |
#ifndef MNG_SKIPCHUNK_PAST
|
|
1589 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_past (mng_handle hHandle,
|
|
1590 |
mng_handle hChunk,
|
|
1591 |
mng_uint16 *iDestid,
|
|
1592 |
mng_uint8 *iTargettype,
|
|
1593 |
mng_int32 *iTargetx,
|
|
1594 |
mng_int32 *iTargety,
|
|
1595 |
mng_uint32 *iCount);
|
|
1596 |
|
|
1597 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_past_src (mng_handle hHandle,
|
|
1598 |
mng_handle hChunk,
|
|
1599 |
mng_uint32 iEntry,
|
|
1600 |
mng_uint16 *iSourceid,
|
|
1601 |
mng_uint8 *iComposition,
|
|
1602 |
mng_uint8 *iOrientation,
|
|
1603 |
mng_uint8 *iOffsettype,
|
|
1604 |
mng_int32 *iOffsetx,
|
|
1605 |
mng_int32 *iOffsety,
|
|
1606 |
mng_uint8 *iBoundarytype,
|
|
1607 |
mng_int32 *iBoundaryl,
|
|
1608 |
mng_int32 *iBoundaryr,
|
|
1609 |
mng_int32 *iBoundaryt,
|
|
1610 |
mng_int32 *iBoundaryb);
|
|
1611 |
#endif
|
|
1612 |
|
|
1613 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_disc (mng_handle hHandle,
|
|
1614 |
mng_handle hChunk,
|
|
1615 |
mng_uint32 *iCount,
|
|
1616 |
mng_uint16p *pObjectids);
|
|
1617 |
|
|
1618 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_back (mng_handle hHandle,
|
|
1619 |
mng_handle hChunk,
|
|
1620 |
mng_uint16 *iRed,
|
|
1621 |
mng_uint16 *iGreen,
|
|
1622 |
mng_uint16 *iBlue,
|
|
1623 |
mng_uint8 *iMandatory,
|
|
1624 |
mng_uint16 *iImageid,
|
|
1625 |
mng_uint8 *iTile);
|
|
1626 |
|
|
1627 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_fram (mng_handle hHandle,
|
|
1628 |
mng_handle hChunk,
|
|
1629 |
mng_bool *bEmpty,
|
|
1630 |
mng_uint8 *iMode,
|
|
1631 |
mng_uint32 *iNamesize,
|
|
1632 |
mng_pchar *zName,
|
|
1633 |
mng_uint8 *iChangedelay,
|
|
1634 |
mng_uint8 *iChangetimeout,
|
|
1635 |
mng_uint8 *iChangeclipping,
|
|
1636 |
mng_uint8 *iChangesyncid,
|
|
1637 |
mng_uint32 *iDelay,
|
|
1638 |
mng_uint32 *iTimeout,
|
|
1639 |
mng_uint8 *iBoundarytype,
|
|
1640 |
mng_int32 *iBoundaryl,
|
|
1641 |
mng_int32 *iBoundaryr,
|
|
1642 |
mng_int32 *iBoundaryt,
|
|
1643 |
mng_int32 *iBoundaryb,
|
|
1644 |
mng_uint32 *iCount,
|
|
1645 |
mng_uint32p *pSyncids);
|
|
1646 |
|
|
1647 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_move (mng_handle hHandle,
|
|
1648 |
mng_handle hChunk,
|
|
1649 |
mng_uint16 *iFirstid,
|
|
1650 |
mng_uint16 *iLastid,
|
|
1651 |
mng_uint8 *iMovetype,
|
|
1652 |
mng_int32 *iMovex,
|
|
1653 |
mng_int32 *iMovey);
|
|
1654 |
|
|
1655 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_clip (mng_handle hHandle,
|
|
1656 |
mng_handle hChunk,
|
|
1657 |
mng_uint16 *iFirstid,
|
|
1658 |
mng_uint16 *iLastid,
|
|
1659 |
mng_uint8 *iCliptype,
|
|
1660 |
mng_int32 *iClipl,
|
|
1661 |
mng_int32 *iClipr,
|
|
1662 |
mng_int32 *iClipt,
|
|
1663 |
mng_int32 *iClipb);
|
|
1664 |
|
|
1665 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_show (mng_handle hHandle,
|
|
1666 |
mng_handle hChunk,
|
|
1667 |
mng_bool *bEmpty,
|
|
1668 |
mng_uint16 *iFirstid,
|
|
1669 |
mng_uint16 *iLastid,
|
|
1670 |
mng_uint8 *iMode);
|
|
1671 |
|
|
1672 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_term (mng_handle hHandle,
|
|
1673 |
mng_handle hChunk,
|
|
1674 |
mng_uint8 *iTermaction,
|
|
1675 |
mng_uint8 *iIteraction,
|
|
1676 |
mng_uint32 *iDelay,
|
|
1677 |
mng_uint32 *iItermax);
|
|
1678 |
|
|
1679 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_save (mng_handle hHandle,
|
|
1680 |
mng_handle hChunk,
|
|
1681 |
mng_bool *bEmpty,
|
|
1682 |
mng_uint8 *iOffsettype,
|
|
1683 |
mng_uint32 *iCount);
|
|
1684 |
|
|
1685 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_save_entry (mng_handle hHandle,
|
|
1686 |
mng_handle hChunk,
|
|
1687 |
mng_uint32 iEntry,
|
|
1688 |
mng_uint8 *iEntrytype,
|
|
1689 |
mng_uint32arr2 *iOffset,
|
|
1690 |
mng_uint32arr2 *iStarttime,
|
|
1691 |
mng_uint32 *iLayernr,
|
|
1692 |
mng_uint32 *iFramenr,
|
|
1693 |
mng_uint32 *iNamesize,
|
|
1694 |
mng_pchar *zName);
|
|
1695 |
|
|
1696 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_seek (mng_handle hHandle,
|
|
1697 |
mng_handle hChunk,
|
|
1698 |
mng_uint32 *iNamesize,
|
|
1699 |
mng_pchar *zName);
|
|
1700 |
|
|
1701 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_expi (mng_handle hHandle,
|
|
1702 |
mng_handle hChunk,
|
|
1703 |
mng_uint16 *iSnapshotid,
|
|
1704 |
mng_uint32 *iNamesize,
|
|
1705 |
mng_pchar *zName);
|
|
1706 |
|
|
1707 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_fpri (mng_handle hHandle,
|
|
1708 |
mng_handle hChunk,
|
|
1709 |
mng_uint8 *iDeltatype,
|
|
1710 |
mng_uint8 *iPriority);
|
|
1711 |
|
|
1712 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_need (mng_handle hHandle,
|
|
1713 |
mng_handle hChunk,
|
|
1714 |
mng_uint32 *iKeywordssize,
|
|
1715 |
mng_pchar *zKeywords);
|
|
1716 |
|
|
1717 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_phyg (mng_handle hHandle,
|
|
1718 |
mng_handle hChunk,
|
|
1719 |
mng_bool *bEmpty,
|
|
1720 |
mng_uint32 *iSizex,
|
|
1721 |
mng_uint32 *iSizey,
|
|
1722 |
mng_uint8 *iUnit);
|
|
1723 |
|
|
1724 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_jhdr (mng_handle hHandle,
|
|
1725 |
mng_handle hChunk,
|
|
1726 |
mng_uint32 *iWidth,
|
|
1727 |
mng_uint32 *iHeight,
|
|
1728 |
mng_uint8 *iColortype,
|
|
1729 |
mng_uint8 *iImagesampledepth,
|
|
1730 |
mng_uint8 *iImagecompression,
|
|
1731 |
mng_uint8 *iImageinterlace,
|
|
1732 |
mng_uint8 *iAlphasampledepth,
|
|
1733 |
mng_uint8 *iAlphacompression,
|
|
1734 |
mng_uint8 *iAlphafilter,
|
|
1735 |
mng_uint8 *iAlphainterlace);
|
|
1736 |
|
|
1737 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_jdat (mng_handle hHandle,
|
|
1738 |
mng_handle hChunk,
|
|
1739 |
mng_uint32 *iRawlen,
|
|
1740 |
mng_ptr *pRawdata);
|
|
1741 |
|
|
1742 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_jdaa (mng_handle hHandle,
|
|
1743 |
mng_handle hChunk,
|
|
1744 |
mng_uint32 *iRawlen,
|
|
1745 |
mng_ptr *pRawdata);
|
|
1746 |
|
|
1747 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_dhdr (mng_handle hHandle,
|
|
1748 |
mng_handle hChunk,
|
|
1749 |
mng_uint16 *iObjectid,
|
|
1750 |
mng_uint8 *iImagetype,
|
|
1751 |
mng_uint8 *iDeltatype,
|
|
1752 |
mng_uint32 *iBlockwidth,
|
|
1753 |
mng_uint32 *iBlockheight,
|
|
1754 |
mng_uint32 *iBlockx,
|
|
1755 |
mng_uint32 *iBlocky);
|
|
1756 |
|
|
1757 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_prom (mng_handle hHandle,
|
|
1758 |
mng_handle hChunk,
|
|
1759 |
mng_uint8 *iColortype,
|
|
1760 |
mng_uint8 *iSampledepth,
|
|
1761 |
mng_uint8 *iFilltype);
|
|
1762 |
|
|
1763 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_pplt (mng_handle hHandle,
|
|
1764 |
mng_handle hChunk,
|
|
1765 |
mng_uint8 *iDeltatype,
|
|
1766 |
mng_uint32 *iCount);
|
|
1767 |
|
|
1768 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_pplt_entry (mng_handle hHandle,
|
|
1769 |
mng_handle hChunk,
|
|
1770 |
mng_uint32 iEntry,
|
|
1771 |
mng_uint16 *iRed,
|
|
1772 |
mng_uint16 *iGreen,
|
|
1773 |
mng_uint16 *iBlue,
|
|
1774 |
mng_uint16 *iAlpha,
|
|
1775 |
mng_bool *bUsed);
|
|
1776 |
|
|
1777 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_drop (mng_handle hHandle,
|
|
1778 |
mng_handle hChunk,
|
|
1779 |
mng_uint32 *iCount,
|
|
1780 |
mng_chunkidp *pChunknames);
|
|
1781 |
|
|
1782 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_dbyk (mng_handle hHandle,
|
|
1783 |
mng_handle hChunk,
|
|
1784 |
mng_chunkid *iChunkname,
|
|
1785 |
mng_uint8 *iPolarity,
|
|
1786 |
mng_uint32 *iKeywordssize,
|
|
1787 |
mng_pchar *zKeywords);
|
|
1788 |
|
|
1789 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_ordr (mng_handle hHandle,
|
|
1790 |
mng_handle hChunk,
|
|
1791 |
mng_uint32 *iCount);
|
|
1792 |
|
|
1793 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_ordr_entry (mng_handle hHandle,
|
|
1794 |
mng_handle hChunk,
|
|
1795 |
mng_uint32 iEntry,
|
|
1796 |
mng_chunkid *iChunkname,
|
|
1797 |
mng_uint8 *iOrdertype);
|
|
1798 |
|
|
1799 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_magn (mng_handle hHandle,
|
|
1800 |
mng_handle hChunk,
|
|
1801 |
mng_uint16 *iFirstid,
|
|
1802 |
mng_uint16 *iLastid,
|
|
1803 |
mng_uint16 *iMethodX,
|
|
1804 |
mng_uint16 *iMX,
|
|
1805 |
mng_uint16 *iMY,
|
|
1806 |
mng_uint16 *iML,
|
|
1807 |
mng_uint16 *iMR,
|
|
1808 |
mng_uint16 *iMT,
|
|
1809 |
mng_uint16 *iMB,
|
|
1810 |
mng_uint16 *iMethodY);
|
|
1811 |
|
|
1812 |
#ifdef MNG_INCLUDE_MPNG_PROPOSAL
|
|
1813 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_mpng (mng_handle hHandle,
|
|
1814 |
mng_handle hChunk,
|
|
1815 |
mng_uint32 *iFramewidth,
|
|
1816 |
mng_uint32 *iFrameheight,
|
|
1817 |
mng_uint16 *iNumplays,
|
|
1818 |
mng_uint16 *iTickspersec,
|
|
1819 |
mng_uint8 *iCompressionmethod,
|
|
1820 |
mng_uint32 *iCount);
|
|
1821 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_mpng_frame (mng_handle hHandle,
|
|
1822 |
mng_handle hChunk,
|
|
1823 |
mng_uint32 iEntry,
|
|
1824 |
mng_uint32 *iX,
|
|
1825 |
mng_uint32 *iY,
|
|
1826 |
mng_uint32 *iWidth,
|
|
1827 |
mng_uint32 *iHeight,
|
|
1828 |
mng_int32 *iXoffset,
|
|
1829 |
mng_int32 *iYoffset,
|
|
1830 |
mng_uint16 *iTicks);
|
|
1831 |
#endif
|
|
1832 |
|
|
1833 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_evnt (mng_handle hHandle,
|
|
1834 |
mng_handle hChunk,
|
|
1835 |
mng_uint32 *iCount);
|
|
1836 |
|
|
1837 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_evnt_entry (mng_handle hHandle,
|
|
1838 |
mng_handle hChunk,
|
|
1839 |
mng_uint32 iEntry,
|
|
1840 |
mng_uint8 *iEventtype,
|
|
1841 |
mng_uint8 *iMasktype,
|
|
1842 |
mng_int32 *iLeft,
|
|
1843 |
mng_int32 *iRight,
|
|
1844 |
mng_int32 *iTop,
|
|
1845 |
mng_int32 *iBottom,
|
|
1846 |
mng_uint16 *iObjectid,
|
|
1847 |
mng_uint8 *iIndex,
|
|
1848 |
mng_uint32 *iSegmentnamesize,
|
|
1849 |
mng_pchar *zSegmentname);
|
|
1850 |
|
|
1851 |
MNG_EXT mng_retcode MNG_DECL mng_getchunk_unknown (mng_handle hHandle,
|
|
1852 |
mng_handle hChunk,
|
|
1853 |
mng_chunkid *iChunkname,
|
|
1854 |
mng_uint32 *iRawlen,
|
|
1855 |
mng_ptr *pRawdata);
|
|
1856 |
|
|
1857 |
/* ************************************************************************** */
|
|
1858 |
|
|
1859 |
#ifdef MNG_INCLUDE_WRITE_PROCS
|
|
1860 |
|
|
1861 |
/* use these to create new chunks at the end of the chunk-list */
|
|
1862 |
/* requires at least MNG_ACCESS_CHUNKS (MNG_SUPPORT_WRITE may be nice too) */
|
|
1863 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_ihdr (mng_handle hHandle,
|
|
1864 |
mng_uint32 iWidth,
|
|
1865 |
mng_uint32 iHeight,
|
|
1866 |
mng_uint8 iBitdepth,
|
|
1867 |
mng_uint8 iColortype,
|
|
1868 |
mng_uint8 iCompression,
|
|
1869 |
mng_uint8 iFilter,
|
|
1870 |
mng_uint8 iInterlace);
|
|
1871 |
|
|
1872 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_plte (mng_handle hHandle,
|
|
1873 |
mng_uint32 iCount,
|
|
1874 |
mng_palette8 aPalette);
|
|
1875 |
|
|
1876 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_idat (mng_handle hHandle,
|
|
1877 |
mng_uint32 iRawlen,
|
|
1878 |
mng_ptr pRawdata);
|
|
1879 |
|
|
1880 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_iend (mng_handle hHandle);
|
|
1881 |
|
|
1882 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_trns (mng_handle hHandle,
|
|
1883 |
mng_bool bEmpty,
|
|
1884 |
mng_bool bGlobal,
|
|
1885 |
mng_uint8 iType,
|
|
1886 |
mng_uint32 iCount,
|
|
1887 |
mng_uint8arr aAlphas,
|
|
1888 |
mng_uint16 iGray,
|
|
1889 |
mng_uint16 iRed,
|
|
1890 |
mng_uint16 iGreen,
|
|
1891 |
mng_uint16 iBlue,
|
|
1892 |
mng_uint32 iRawlen,
|
|
1893 |
mng_uint8arr aRawdata);
|
|
1894 |
|
|
1895 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_gama (mng_handle hHandle,
|
|
1896 |
mng_bool bEmpty,
|
|
1897 |
mng_uint32 iGamma);
|
|
1898 |
|
|
1899 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_chrm (mng_handle hHandle,
|
|
1900 |
mng_bool bEmpty,
|
|
1901 |
mng_uint32 iWhitepointx,
|
|
1902 |
mng_uint32 iWhitepointy,
|
|
1903 |
mng_uint32 iRedx,
|
|
1904 |
mng_uint32 iRedy,
|
|
1905 |
mng_uint32 iGreenx,
|
|
1906 |
mng_uint32 iGreeny,
|
|
1907 |
mng_uint32 iBluex,
|
|
1908 |
mng_uint32 iBluey);
|
|
1909 |
|
|
1910 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_srgb (mng_handle hHandle,
|
|
1911 |
mng_bool bEmpty,
|
|
1912 |
mng_uint8 iRenderingintent);
|
|
1913 |
|
|
1914 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_iccp (mng_handle hHandle,
|
|
1915 |
mng_bool bEmpty,
|
|
1916 |
mng_uint32 iNamesize,
|
|
1917 |
mng_pchar zName,
|
|
1918 |
mng_uint8 iCompression,
|
|
1919 |
mng_uint32 iProfilesize,
|
|
1920 |
mng_ptr pProfile);
|
|
1921 |
|
|
1922 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_text (mng_handle hHandle,
|
|
1923 |
mng_uint32 iKeywordsize,
|
|
1924 |
mng_pchar zKeyword,
|
|
1925 |
mng_uint32 iTextsize,
|
|
1926 |
mng_pchar zText);
|
|
1927 |
|
|
1928 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_ztxt (mng_handle hHandle,
|
|
1929 |
mng_uint32 iKeywordsize,
|
|
1930 |
mng_pchar zKeyword,
|
|
1931 |
mng_uint8 iCompression,
|
|
1932 |
mng_uint32 iTextsize,
|
|
1933 |
mng_pchar zText);
|
|
1934 |
|
|
1935 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_itxt (mng_handle hHandle,
|
|
1936 |
mng_uint32 iKeywordsize,
|
|
1937 |
mng_pchar zKeyword,
|
|
1938 |
mng_uint8 iCompressionflag,
|
|
1939 |
mng_uint8 iCompressionmethod,
|
|
1940 |
mng_uint32 iLanguagesize,
|
|
1941 |
mng_pchar zLanguage,
|
|
1942 |
mng_uint32 iTranslationsize,
|
|
1943 |
mng_pchar zTranslation,
|
|
1944 |
mng_uint32 iTextsize,
|
|
1945 |
mng_pchar zText);
|
|
1946 |
|
|
1947 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_bkgd (mng_handle hHandle,
|
|
1948 |
mng_bool bEmpty,
|
|
1949 |
mng_uint8 iType,
|
|
1950 |
mng_uint8 iIndex,
|
|
1951 |
mng_uint16 iGray,
|
|
1952 |
mng_uint16 iRed,
|
|
1953 |
mng_uint16 iGreen,
|
|
1954 |
mng_uint16 iBlue);
|
|
1955 |
|
|
1956 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_phys (mng_handle hHandle,
|
|
1957 |
mng_bool bEmpty,
|
|
1958 |
mng_uint32 iSizex,
|
|
1959 |
mng_uint32 iSizey,
|
|
1960 |
mng_uint8 iUnit);
|
|
1961 |
|
|
1962 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_sbit (mng_handle hHandle,
|
|
1963 |
mng_bool bEmpty,
|
|
1964 |
mng_uint8 iType,
|
|
1965 |
mng_uint8arr4 aBits);
|
|
1966 |
|
|
1967 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_splt (mng_handle hHandle,
|
|
1968 |
mng_bool bEmpty,
|
|
1969 |
mng_uint32 iNamesize,
|
|
1970 |
mng_pchar zName,
|
|
1971 |
mng_uint8 iSampledepth,
|
|
1972 |
mng_uint32 iEntrycount,
|
|
1973 |
mng_ptr pEntries);
|
|
1974 |
|
|
1975 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_hist (mng_handle hHandle,
|
|
1976 |
mng_uint32 iEntrycount,
|
|
1977 |
mng_uint16arr aEntries);
|
|
1978 |
|
|
1979 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_time (mng_handle hHandle,
|
|
1980 |
mng_uint16 iYear,
|
|
1981 |
mng_uint8 iMonth,
|
|
1982 |
mng_uint8 iDay,
|
|
1983 |
mng_uint8 iHour,
|
|
1984 |
mng_uint8 iMinute,
|
|
1985 |
mng_uint8 iSecond);
|
|
1986 |
|
|
1987 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_mhdr (mng_handle hHandle,
|
|
1988 |
mng_uint32 iWidth,
|
|
1989 |
mng_uint32 iHeight,
|
|
1990 |
mng_uint32 iTicks,
|
|
1991 |
mng_uint32 iLayercount,
|
|
1992 |
mng_uint32 iFramecount,
|
|
1993 |
mng_uint32 iPlaytime,
|
|
1994 |
mng_uint32 iSimplicity);
|
|
1995 |
|
|
1996 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_mend (mng_handle hHandle);
|
|
1997 |
|
|
1998 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_loop (mng_handle hHandle,
|
|
1999 |
mng_uint8 iLevel,
|
|
2000 |
mng_uint32 iRepeat,
|
|
2001 |
mng_uint8 iTermination,
|
|
2002 |
mng_uint32 iItermin,
|
|
2003 |
mng_uint32 iItermax,
|
|
2004 |
mng_uint32 iCount,
|
|
2005 |
mng_uint32p pSignals);
|
|
2006 |
|
|
2007 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_endl (mng_handle hHandle,
|
|
2008 |
mng_uint8 iLevel);
|
|
2009 |
|
|
2010 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_defi (mng_handle hHandle,
|
|
2011 |
mng_uint16 iObjectid,
|
|
2012 |
mng_uint8 iDonotshow,
|
|
2013 |
mng_uint8 iConcrete,
|
|
2014 |
mng_bool bHasloca,
|
|
2015 |
mng_int32 iXlocation,
|
|
2016 |
mng_int32 iYlocation,
|
|
2017 |
mng_bool bHasclip,
|
|
2018 |
mng_int32 iLeftcb,
|
|
2019 |
mng_int32 iRightcb,
|
|
2020 |
mng_int32 iTopcb,
|
|
2021 |
mng_int32 iBottomcb);
|
|
2022 |
|
|
2023 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_basi (mng_handle hHandle,
|
|
2024 |
mng_uint32 iWidth,
|
|
2025 |
mng_uint32 iHeight,
|
|
2026 |
mng_uint8 iBitdepth,
|
|
2027 |
mng_uint8 iColortype,
|
|
2028 |
mng_uint8 iCompression,
|
|
2029 |
mng_uint8 iFilter,
|
|
2030 |
mng_uint8 iInterlace,
|
|
2031 |
mng_uint16 iRed,
|
|
2032 |
mng_uint16 iGreen,
|
|
2033 |
mng_uint16 iBlue,
|
|
2034 |
mng_uint16 iAlpha,
|
|
2035 |
mng_uint8 iViewable);
|
|
2036 |
|
|
2037 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_clon (mng_handle hHandle,
|
|
2038 |
mng_uint16 iSourceid,
|
|
2039 |
mng_uint16 iCloneid,
|
|
2040 |
mng_uint8 iClonetype,
|
|
2041 |
mng_uint8 iDonotshow,
|
|
2042 |
mng_uint8 iConcrete,
|
|
2043 |
mng_bool bHasloca,
|
|
2044 |
mng_uint8 iLocationtype,
|
|
2045 |
mng_int32 iLocationx,
|
|
2046 |
mng_int32 iLocationy);
|
|
2047 |
|
|
2048 |
#ifndef MNG_SKIPCHUNK_PAST
|
|
2049 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_past (mng_handle hHandle,
|
|
2050 |
mng_uint16 iDestid,
|
|
2051 |
mng_uint8 iTargettype,
|
|
2052 |
mng_int32 iTargetx,
|
|
2053 |
mng_int32 iTargety,
|
|
2054 |
mng_uint32 iCount);
|
|
2055 |
|
|
2056 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_past_src (mng_handle hHandle,
|
|
2057 |
mng_uint32 iEntry,
|
|
2058 |
mng_uint16 iSourceid,
|
|
2059 |
mng_uint8 iComposition,
|
|
2060 |
mng_uint8 iOrientation,
|
|
2061 |
mng_uint8 iOffsettype,
|
|
2062 |
mng_int32 iOffsetx,
|
|
2063 |
mng_int32 iOffsety,
|
|
2064 |
mng_uint8 iBoundarytype,
|
|
2065 |
mng_int32 iBoundaryl,
|
|
2066 |
mng_int32 iBoundaryr,
|
|
2067 |
mng_int32 iBoundaryt,
|
|
2068 |
mng_int32 iBoundaryb);
|
|
2069 |
#endif
|
|
2070 |
|
|
2071 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_disc (mng_handle hHandle,
|
|
2072 |
mng_uint32 iCount,
|
|
2073 |
mng_uint16p pObjectids);
|
|
2074 |
|
|
2075 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_back (mng_handle hHandle,
|
|
2076 |
mng_uint16 iRed,
|
|
2077 |
mng_uint16 iGreen,
|
|
2078 |
mng_uint16 iBlue,
|
|
2079 |
mng_uint8 iMandatory,
|
|
2080 |
mng_uint16 iImageid,
|
|
2081 |
mng_uint8 iTile);
|
|
2082 |
|
|
2083 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_fram (mng_handle hHandle,
|
|
2084 |
mng_bool bEmpty,
|
|
2085 |
mng_uint8 iMode,
|
|
2086 |
mng_uint32 iNamesize,
|
|
2087 |
mng_pchar zName,
|
|
2088 |
mng_uint8 iChangedelay,
|
|
2089 |
mng_uint8 iChangetimeout,
|
|
2090 |
mng_uint8 iChangeclipping,
|
|
2091 |
mng_uint8 iChangesyncid,
|
|
2092 |
mng_uint32 iDelay,
|
|
2093 |
mng_uint32 iTimeout,
|
|
2094 |
mng_uint8 iBoundarytype,
|
|
2095 |
mng_int32 iBoundaryl,
|
|
2096 |
mng_int32 iBoundaryr,
|
|
2097 |
mng_int32 iBoundaryt,
|
|
2098 |
mng_int32 iBoundaryb,
|
|
2099 |
mng_uint32 iCount,
|
|
2100 |
mng_uint32p pSyncids);
|
|
2101 |
|
|
2102 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_move (mng_handle hHandle,
|
|
2103 |
mng_uint16 iFirstid,
|
|
2104 |
mng_uint16 iLastid,
|
|
2105 |
mng_uint8 iMovetype,
|
|
2106 |
mng_int32 iMovex,
|
|
2107 |
mng_int32 iMovey);
|
|
2108 |
|
|
2109 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_clip (mng_handle hHandle,
|
|
2110 |
mng_uint16 iFirstid,
|
|
2111 |
mng_uint16 iLastid,
|
|
2112 |
mng_uint8 iCliptype,
|
|
2113 |
mng_int32 iClipl,
|
|
2114 |
mng_int32 iClipr,
|
|
2115 |
mng_int32 iClipt,
|
|
2116 |
mng_int32 iClipb);
|
|
2117 |
|
|
2118 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_show (mng_handle hHandle,
|
|
2119 |
mng_bool bEmpty,
|
|
2120 |
mng_uint16 iFirstid,
|
|
2121 |
mng_uint16 iLastid,
|
|
2122 |
mng_uint8 iMode);
|
|
2123 |
|
|
2124 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_term (mng_handle hHandle,
|
|
2125 |
mng_uint8 iTermaction,
|
|
2126 |
mng_uint8 iIteraction,
|
|
2127 |
mng_uint32 iDelay,
|
|
2128 |
mng_uint32 iItermax);
|
|
2129 |
|
|
2130 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_save (mng_handle hHandle,
|
|
2131 |
mng_bool bEmpty,
|
|
2132 |
mng_uint8 iOffsettype,
|
|
2133 |
mng_uint32 iCount);
|
|
2134 |
|
|
2135 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_save_entry (mng_handle hHandle,
|
|
2136 |
mng_uint32 iEntry,
|
|
2137 |
mng_uint8 iEntrytype,
|
|
2138 |
mng_uint32arr2 iOffset,
|
|
2139 |
mng_uint32arr2 iStarttime,
|
|
2140 |
mng_uint32 iLayernr,
|
|
2141 |
mng_uint32 iFramenr,
|
|
2142 |
mng_uint32 iNamesize,
|
|
2143 |
mng_pchar zName);
|
|
2144 |
|
|
2145 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_seek (mng_handle hHandle,
|
|
2146 |
mng_uint32 iNamesize,
|
|
2147 |
mng_pchar zName);
|
|
2148 |
|
|
2149 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_expi (mng_handle hHandle,
|
|
2150 |
mng_uint16 iSnapshotid,
|
|
2151 |
mng_uint32 iNamesize,
|
|
2152 |
mng_pchar zName);
|
|
2153 |
|
|
2154 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_fpri (mng_handle hHandle,
|
|
2155 |
mng_uint8 iDeltatype,
|
|
2156 |
mng_uint8 iPriority);
|
|
2157 |
|
|
2158 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_need (mng_handle hHandle,
|
|
2159 |
mng_uint32 iKeywordssize,
|
|
2160 |
mng_pchar zKeywords);
|
|
2161 |
|
|
2162 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_phyg (mng_handle hHandle,
|
|
2163 |
mng_bool bEmpty,
|
|
2164 |
mng_uint32 iSizex,
|
|
2165 |
mng_uint32 iSizey,
|
|
2166 |
mng_uint8 iUnit);
|
|
2167 |
|
|
2168 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_jhdr (mng_handle hHandle,
|
|
2169 |
mng_uint32 iWidth,
|
|
2170 |
mng_uint32 iHeight,
|
|
2171 |
mng_uint8 iColortype,
|
|
2172 |
mng_uint8 iImagesampledepth,
|
|
2173 |
mng_uint8 iImagecompression,
|
|
2174 |
mng_uint8 iImageinterlace,
|
|
2175 |
mng_uint8 iAlphasampledepth,
|
|
2176 |
mng_uint8 iAlphacompression,
|
|
2177 |
mng_uint8 iAlphafilter,
|
|
2178 |
mng_uint8 iAlphainterlace);
|
|
2179 |
|
|
2180 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_jdat (mng_handle hHandle,
|
|
2181 |
mng_uint32 iRawlen,
|
|
2182 |
mng_ptr pRawdata);
|
|
2183 |
|
|
2184 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_jdaa (mng_handle hHandle,
|
|
2185 |
mng_uint32 iRawlen,
|
|
2186 |
mng_ptr pRawdata);
|
|
2187 |
|
|
2188 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_jsep (mng_handle hHandle);
|
|
2189 |
|
|
2190 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_dhdr (mng_handle hHandle,
|
|
2191 |
mng_uint16 iObjectid,
|
|
2192 |
mng_uint8 iImagetype,
|
|
2193 |
mng_uint8 iDeltatype,
|
|
2194 |
mng_uint32 iBlockwidth,
|
|
2195 |
mng_uint32 iBlockheight,
|
|
2196 |
mng_uint32 iBlockx,
|
|
2197 |
mng_uint32 iBlocky);
|
|
2198 |
|
|
2199 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_prom (mng_handle hHandle,
|
|
2200 |
mng_uint8 iColortype,
|
|
2201 |
mng_uint8 iSampledepth,
|
|
2202 |
mng_uint8 iFilltype);
|
|
2203 |
|
|
2204 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_ipng (mng_handle hHandle);
|
|
2205 |
|
|
2206 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_pplt (mng_handle hHandle,
|
|
2207 |
mng_uint8 iDeltatype,
|
|
2208 |
mng_uint32 iCount);
|
|
2209 |
|
|
2210 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_pplt_entry (mng_handle hHandle,
|
|
2211 |
mng_uint32 iEntry,
|
|
2212 |
mng_uint16 iRed,
|
|
2213 |
mng_uint16 iGreen,
|
|
2214 |
mng_uint16 iBlue,
|
|
2215 |
mng_uint16 iAlpha);
|
|
2216 |
|
|
2217 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_jpng (mng_handle hHandle);
|
|
2218 |
|
|
2219 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_drop (mng_handle hHandle,
|
|
2220 |
mng_uint32 iCount,
|
|
2221 |
mng_chunkidp pChunknames);
|
|
2222 |
|
|
2223 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_dbyk (mng_handle hHandle,
|
|
2224 |
mng_chunkid iChunkname,
|
|
2225 |
mng_uint8 iPolarity,
|
|
2226 |
mng_uint32 iKeywordssize,
|
|
2227 |
mng_pchar zKeywords);
|
|
2228 |
|
|
2229 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_ordr (mng_handle hHandle,
|
|
2230 |
mng_uint32 iCount);
|
|
2231 |
|
|
2232 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_ordr_entry (mng_handle hHandle,
|
|
2233 |
mng_uint32 iEntry,
|
|
2234 |
mng_chunkid iChunkname,
|
|
2235 |
mng_uint8 iOrdertype);
|
|
2236 |
|
|
2237 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_magn (mng_handle hHandle,
|
|
2238 |
mng_uint16 iFirstid,
|
|
2239 |
mng_uint16 iLastid,
|
|
2240 |
mng_uint16 iMethodX,
|
|
2241 |
mng_uint16 iMX,
|
|
2242 |
mng_uint16 iMY,
|
|
2243 |
mng_uint16 iML,
|
|
2244 |
mng_uint16 iMR,
|
|
2245 |
mng_uint16 iMT,
|
|
2246 |
mng_uint16 iMB,
|
|
2247 |
mng_uint16 iMethodY);
|
|
2248 |
|
|
2249 |
#ifdef MNG_INCLUDE_MPNG_PROPOSAL
|
|
2250 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_mpng (mng_handle hHandle,
|
|
2251 |
mng_uint32 iFramewidth,
|
|
2252 |
mng_uint32 iFrameheight,
|
|
2253 |
mng_uint16 iNumplays,
|
|
2254 |
mng_uint16 iTickspersec,
|
|
2255 |
mng_uint8 iCompressionmethod,
|
|
2256 |
mng_uint32 iCount);
|
|
2257 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_mpng_frame (mng_handle hHandle,
|
|
2258 |
mng_uint32 iEntry,
|
|
2259 |
mng_uint32 iX,
|
|
2260 |
mng_uint32 iY,
|
|
2261 |
mng_uint32 iWidth,
|
|
2262 |
mng_uint32 iHeight,
|
|
2263 |
mng_int32 iXoffset,
|
|
2264 |
mng_int32 iYoffset,
|
|
2265 |
mng_uint16 iTicks);
|
|
2266 |
#endif
|
|
2267 |
|
|
2268 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_evnt (mng_handle hHandle,
|
|
2269 |
mng_uint32 iCount);
|
|
2270 |
|
|
2271 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_evnt_entry (mng_handle hHandle,
|
|
2272 |
mng_uint32 iEntry,
|
|
2273 |
mng_uint8 iEventtype,
|
|
2274 |
mng_uint8 iMasktype,
|
|
2275 |
mng_int32 iLeft,
|
|
2276 |
mng_int32 iRight,
|
|
2277 |
mng_int32 iTop,
|
|
2278 |
mng_int32 iBottom,
|
|
2279 |
mng_uint16 iObjectid,
|
|
2280 |
mng_uint8 iIndex,
|
|
2281 |
mng_uint32 iSegmentnamesize,
|
|
2282 |
mng_pchar zSegmentname);
|
|
2283 |
|
|
2284 |
MNG_EXT mng_retcode MNG_DECL mng_putchunk_unknown (mng_handle hHandle,
|
|
2285 |
mng_chunkid iChunkname,
|
|
2286 |
mng_uint32 iRawlen,
|
|
2287 |
mng_ptr pRawdata);
|
|
2288 |
|
|
2289 |
#endif /* MNG_INCLUDE_WRITE_PROCS */
|
|
2290 |
|
|
2291 |
/* ************************************************************************** */
|
|
2292 |
|
|
2293 |
/* use these functions to access the actual image-data in stored chunks,
|
|
2294 |
as opposed to the IDAT/JDAT data */
|
|
2295 |
/* to get accurate pixel-data the canvasstyle should seriously reflect the
|
|
2296 |
bitdepth/colortype combination of the preceding IHDR/JHDR/BASI/DHDR;
|
|
2297 |
all input can be converted to rgb(a)8 (rgb(a)16 for 16-bit images), but
|
|
2298 |
there are only limited conversions back (see below for putimgdata) */
|
|
2299 |
|
|
2300 |
/* call this function if you want to extract the nth image from the list;
|
|
2301 |
the first image is designated seqnr 0! */
|
|
2302 |
/* this function finds the IHDR/JHDR/BASI/DHDR with the appropriate seqnr,
|
|
2303 |
starting from the beginning of the chunk-list; this may tend to get a little
|
|
2304 |
slow for animations with a large number of chunks for images near the end */
|
|
2305 |
/* supplying a seqnr past the last image in the animation will return with
|
|
2306 |
an errorcode */
|
|
2307 |
MNG_EXT mng_retcode MNG_DECL mng_getimgdata_seq (mng_handle hHandle,
|
|
2308 |
mng_uint32 iSeqnr,
|
|
2309 |
mng_uint32 iCanvasstyle,
|
|
2310 |
mng_getcanvasline fGetcanvasline);
|
|
2311 |
|
|
2312 |
/* both the following functions will search forward to find the first IDAT/JDAT,
|
|
2313 |
and then traverse back to find the start of the image (IHDR,JHDR,DHDR,BASI);
|
|
2314 |
note that this is very fast compared to decoding the IDAT/JDAT, so there's
|
|
2315 |
not really a need for optimization; either can be called from the
|
|
2316 |
iterate_chunks callback when a IHDR/JHDR is encountered; for BASI/DHDR there
|
|
2317 |
may not be real image-data so it's wisest to keep iterating till the IEND,
|
|
2318 |
and then call either of these functions if necessary (remember the correct seqnr!) */
|
|
2319 |
|
|
2320 |
/* call this function if you want to extract the image starting at or after the nth
|
|
2321 |
position in the chunk-list; this number is returned in the iterate_chunks callback */
|
|
2322 |
MNG_EXT mng_retcode MNG_DECL mng_getimgdata_chunkseq (mng_handle hHandle,
|
|
2323 |
mng_uint32 iSeqnr,
|
|
2324 |
mng_uint32 iCanvasstyle,
|
|
2325 |
mng_getcanvasline fGetcanvasline);
|
|
2326 |
|
|
2327 |
/* call this function if you want to extract the image starting at or after the
|
|
2328 |
indicated chunk; the handle of a chunk is returned in the iterate_chunks callback */
|
|
2329 |
MNG_EXT mng_retcode MNG_DECL mng_getimgdata_chunk (mng_handle hHandle,
|
|
2330 |
mng_handle hChunk,
|
|
2331 |
mng_uint32 iCanvasstyle,
|
|
2332 |
mng_getcanvasline fGetcanvasline);
|
|
2333 |
|
|
2334 |
/* ************************************************************************** */
|
|
2335 |
|
|
2336 |
#ifdef MNG_INCLUDE_WRITE_PROCS
|
|
2337 |
|
|
2338 |
/* use the following functions to add image-data to the list of stored chunks */
|
|
2339 |
/* note that this only adds the IDAT or JDAT chunks and no others; you must call
|
|
2340 |
one of these functions after you 'put' the initial chunks of the image and
|
|
2341 |
before you 'put' the closing chunks */
|
|
2342 |
/* the canvasstyle should seriously reflect the bitdepth/colortype combination;
|
|
2343 |
eg. bitdepth=16 would expect a 16-bit canvasstyle,
|
|
2344 |
colortype=g or ga would expect a gray or gray+alpha style respectively
|
|
2345 |
and so on, and so forth ...
|
|
2346 |
(nb. the number of conversions will be extremely limited for the moment!) */
|
|
2347 |
|
|
2348 |
MNG_EXT mng_retcode MNG_DECL mng_putimgdata_ihdr (mng_handle hHandle,
|
|
2349 |
mng_uint32 iWidth,
|
|
2350 |
mng_uint32 iHeight,
|
|
2351 |
mng_uint8 iColortype,
|
|
2352 |
mng_uint8 iBitdepth,
|
|
2353 |
mng_uint8 iCompression,
|
|
2354 |
mng_uint8 iFilter,
|
|
2355 |
mng_uint8 iInterlace,
|
|
2356 |
mng_uint32 iCanvasstyle,
|
|
2357 |
mng_getcanvasline fGetcanvasline);
|
|
2358 |
|
|
2359 |
MNG_EXT mng_retcode MNG_DECL mng_putimgdata_jhdr (mng_handle hHandle,
|
|
2360 |
mng_uint32 iWidth,
|
|
2361 |
mng_uint32 iHeight,
|
|
2362 |
mng_uint8 iColortype,
|
|
2363 |
mng_uint8 iBitdepth,
|
|
2364 |
mng_uint8 iCompression,
|
|
2365 |
mng_uint8 iInterlace,
|
|
2366 |
mng_uint8 iAlphaBitdepth,
|
|
2367 |
mng_uint8 iAlphaCompression,
|
|
2368 |
mng_uint8 iAlphaFilter,
|
|
2369 |
mng_uint8 iAlphaInterlace,
|
|
2370 |
mng_uint32 iCanvasstyle,
|
|
2371 |
mng_getcanvasline fGetcanvasline);
|
|
2372 |
|
|
2373 |
/* ************************************************************************** */
|
|
2374 |
|
|
2375 |
/* use the following functions to set the framecount/layercount/playtime or
|
|
2376 |
simplicity of an animation you are creating; this may be useful if these
|
|
2377 |
variables are calculated during the creation-process */
|
|
2378 |
|
|
2379 |
MNG_EXT mng_retcode MNG_DECL mng_updatemngheader (mng_handle hHandle,
|
|
2380 |
mng_uint32 iFramecount,
|
|
2381 |
mng_uint32 iLayercount,
|
|
2382 |
mng_uint32 iPlaytime);
|
|
2383 |
|
|
2384 |
MNG_EXT mng_retcode MNG_DECL mng_updatemngsimplicity (mng_handle hHandle,
|
|
2385 |
mng_uint32 iSimplicity);
|
|
2386 |
|
|
2387 |
/* ************************************************************************** */
|
|
2388 |
|
|
2389 |
#endif /* MNG_INCLUDE_WRITE_PROCS */
|
|
2390 |
|
|
2391 |
#endif /* MNG_ACCESS_CHUNKS */
|
|
2392 |
|
|
2393 |
/* ************************************************************************** */
|
|
2394 |
/* * * */
|
|
2395 |
/* * Error-code structure * */
|
|
2396 |
/* * * */
|
|
2397 |
/* * 0b0000 00xx xxxx xxxx - basic errors; severity 9 (environment) * */
|
|
2398 |
/* * 0b0000 01xx xxxx xxxx - chunk errors; severity 9 (image induced) * */
|
|
2399 |
/* * 0b0000 10xx xxxx xxxx - severity 5 errors (application induced) * */
|
|
2400 |
/* * 0b0001 00xx xxxx xxxx - severity 2 warnings (recoverable) * */
|
|
2401 |
/* * 0b0010 00xx xxxx xxxx - severity 1 warnings (recoverable) * */
|
|
2402 |
/* * * */
|
|
2403 |
/* ************************************************************************** */
|
|
2404 |
|
|
2405 |
#define MNG_NOERROR (mng_retcode)0 /* er.. indicates all's well */
|
|
2406 |
|
|
2407 |
#define MNG_OUTOFMEMORY (mng_retcode)1 /* oops, buy some megabytes! */
|
|
2408 |
#define MNG_INVALIDHANDLE (mng_retcode)2 /* call mng_initialize first */
|
|
2409 |
#define MNG_NOCALLBACK (mng_retcode)3 /* set the callbacks please */
|
|
2410 |
#define MNG_UNEXPECTEDEOF (mng_retcode)4 /* what'd ya do with the data? */
|
|
2411 |
#define MNG_ZLIBERROR (mng_retcode)5 /* zlib burped */
|
|
2412 |
#define MNG_JPEGERROR (mng_retcode)6 /* jpglib complained */
|
|
2413 |
#define MNG_LCMSERROR (mng_retcode)7 /* little cms stressed out */
|
|
2414 |
#define MNG_NOOUTPUTPROFILE (mng_retcode)8 /* no output-profile defined */
|
|
2415 |
#define MNG_NOSRGBPROFILE (mng_retcode)9 /* no sRGB-profile defined */
|
|
2416 |
#define MNG_BUFOVERFLOW (mng_retcode)10 /* zlib output-buffer overflow */
|
|
2417 |
#define MNG_FUNCTIONINVALID (mng_retcode)11 /* ay, totally inappropriate */
|
|
2418 |
#define MNG_OUTPUTERROR (mng_retcode)12 /* disk full ? */
|
|
2419 |
#define MNG_JPEGBUFTOOSMALL (mng_retcode)13 /* can't handle buffer overflow*/
|
|
2420 |
#define MNG_NEEDMOREDATA (mng_retcode)14 /* I'm hungry, give me more */
|
|
2421 |
#define MNG_NEEDTIMERWAIT (mng_retcode)15 /* Sleep a while then wake me */
|
|
2422 |
#define MNG_NEEDSECTIONWAIT (mng_retcode)16 /* just processed a SEEK */
|
|
2423 |
#define MNG_LOOPWITHCACHEOFF (mng_retcode)17 /* LOOP when playback info off */
|
|
2424 |
|
|
2425 |
#define MNG_DLLNOTLOADED (mng_retcode)99 /* late binding failed */
|
|
2426 |
|
|
2427 |
#define MNG_APPIOERROR (mng_retcode)901 /* application I/O error */
|
|
2428 |
#define MNG_APPTIMERERROR (mng_retcode)902 /* application timing error */
|
|
2429 |
#define MNG_APPCMSERROR (mng_retcode)903 /* application CMS error */
|
|
2430 |
#define MNG_APPMISCERROR (mng_retcode)904 /* application other error */
|
|
2431 |
#define MNG_APPTRACEABORT (mng_retcode)905 /* application aborts on trace */
|
|
2432 |
|
|
2433 |
#define MNG_INTERNALERROR (mng_retcode)999 /* internal inconsistancy */
|
|
2434 |
|
|
2435 |
#define MNG_INVALIDSIG (mng_retcode)1025 /* invalid graphics file */
|
|
2436 |
#define MNG_INVALIDCRC (mng_retcode)1027 /* crc check failed */
|
|
2437 |
#define MNG_INVALIDLENGTH (mng_retcode)1028 /* chunklength mystifies me */
|
|
2438 |
#define MNG_SEQUENCEERROR (mng_retcode)1029 /* invalid chunk sequence */
|
|
2439 |
#define MNG_CHUNKNOTALLOWED (mng_retcode)1030 /* completely out-of-place */
|
|
2440 |
#define MNG_MULTIPLEERROR (mng_retcode)1031 /* only one occurence allowed */
|
|
2441 |
#define MNG_PLTEMISSING (mng_retcode)1032 /* indexed-color requires PLTE */
|
|
2442 |
#define MNG_IDATMISSING (mng_retcode)1033 /* IHDR-block requires IDAT */
|
|
2443 |
#define MNG_CANNOTBEEMPTY (mng_retcode)1034 /* must contain some data */
|
|
2444 |
#define MNG_GLOBALLENGTHERR (mng_retcode)1035 /* global data incorrect */
|
|
2445 |
#define MNG_INVALIDBITDEPTH (mng_retcode)1036 /* bitdepth out-of-range */
|
|
2446 |
#define MNG_INVALIDCOLORTYPE (mng_retcode)1037 /* colortype out-of-range */
|
|
2447 |
#define MNG_INVALIDCOMPRESS (mng_retcode)1038 /* compression method invalid */
|
|
2448 |
#define MNG_INVALIDFILTER (mng_retcode)1039 /* filter method invalid */
|
|
2449 |
#define MNG_INVALIDINTERLACE (mng_retcode)1040 /* interlace method invalid */
|
|
2450 |
#define MNG_NOTENOUGHIDAT (mng_retcode)1041 /* ran out of compressed data */
|
|
2451 |
#define MNG_PLTEINDEXERROR (mng_retcode)1042 /* palette-index out-of-range */
|
|
2452 |
#define MNG_NULLNOTFOUND (mng_retcode)1043 /* couldn't find null-separator*/
|
|
2453 |
#define MNG_KEYWORDNULL (mng_retcode)1044 /* keyword cannot be empty */
|
|
2454 |
#define MNG_OBJECTUNKNOWN (mng_retcode)1045 /* the object can't be found */
|
|
2455 |
#define MNG_OBJECTEXISTS (mng_retcode)1046 /* the object already exists */
|
|
2456 |
#define MNG_TOOMUCHIDAT (mng_retcode)1047 /* got too much compressed data*/
|
|
2457 |
#define MNG_INVSAMPLEDEPTH (mng_retcode)1048 /* sampledepth out-of-range */
|
|
2458 |
#define MNG_INVOFFSETSIZE (mng_retcode)1049 /* invalid offset-size */
|
|
2459 |
#define MNG_INVENTRYTYPE (mng_retcode)1050 /* invalid entry-type */
|
|
2460 |
#define MNG_ENDWITHNULL (mng_retcode)1051 /* may not end with NULL */
|
|
2461 |
#define MNG_INVIMAGETYPE (mng_retcode)1052 /* invalid image_type */
|
|
2462 |
#define MNG_INVDELTATYPE (mng_retcode)1053 /* invalid delta_type */
|
|
2463 |
#define MNG_INVALIDINDEX (mng_retcode)1054 /* index-value invalid */
|
|
2464 |
#define MNG_TOOMUCHJDAT (mng_retcode)1055 /* got too much compressed data*/
|
|
2465 |
#define MNG_JPEGPARMSERR (mng_retcode)1056 /* JHDR/JPEG parms do not match*/
|
|
2466 |
#define MNG_INVFILLMETHOD (mng_retcode)1057 /* invalid fill_method */
|
|
2467 |
#define MNG_OBJNOTCONCRETE (mng_retcode)1058 /* object must be concrete */
|
|
2468 |
#define MNG_TARGETNOALPHA (mng_retcode)1059 /* object has no alpha-channel */
|
|
2469 |
#define MNG_MNGTOOCOMPLEX (mng_retcode)1060 /* can't handle complexity */
|
|
2470 |
#define MNG_UNKNOWNCRITICAL (mng_retcode)1061 /* unknown critical chunk found*/
|
|
2471 |
#define MNG_UNSUPPORTEDNEED (mng_retcode)1062 /* nEED requirement unsupported*/
|
|
2472 |
#define MNG_INVALIDDELTA (mng_retcode)1063 /* Delta operation illegal */
|
|
2473 |
#define MNG_INVALIDMETHOD (mng_retcode)1064 /* invalid MAGN method */
|
|
2474 |
#define MNG_IMPROBABLELENGTH (mng_retcode)1065 /* impropable chunk length */
|
|
2475 |
#define MNG_INVALIDBLOCK (mng_retcode)1066 /* invalid delta block */
|
|
2476 |
#define MNG_INVALIDEVENT (mng_retcode)1067 /* invalid event_type */
|
|
2477 |
#define MNG_INVALIDMASK (mng_retcode)1068 /* invalid mask_type */
|
|
2478 |
#define MNG_NOMATCHINGLOOP (mng_retcode)1069 /* ENDL without matching LOOP */
|
|
2479 |
#define MNG_SEEKNOTFOUND (mng_retcode)1070 /* EvNT points to unknown SEEK */
|
|
2480 |
#define MNG_OBJNOTABSTRACT (mng_retcode)1071 /* object must be abstract */
|
|
2481 |
#define MNG_TERMSEQERROR (mng_retcode)1072 /* TERM in wrong place */
|
|
2482 |
#define MNG_INVALIDFIELDVAL (mng_retcode)1073 /* invalid fieldvalue (generic)*/
|
|
2483 |
#define MNG_INVALIDWIDTH (mng_retcode)1074 /* invalid frame/image width */
|
|
2484 |
#define MNG_INVALIDHEIGHT (mng_retcode)1075 /* invalid frame/image height */
|
|
2485 |
|
|
2486 |
#define MNG_INVALIDCNVSTYLE (mng_retcode)2049 /* can't make anything of this */
|
|
2487 |
#define MNG_WRONGCHUNK (mng_retcode)2050 /* accessing the wrong chunk */
|
|
2488 |
#define MNG_INVALIDENTRYIX (mng_retcode)2051 /* accessing the wrong entry */
|
|
2489 |
#define MNG_NOHEADER (mng_retcode)2052 /* must have had header first */
|
|
2490 |
#define MNG_NOCORRCHUNK (mng_retcode)2053 /* can't find parent chunk */
|
|
2491 |
#define MNG_NOMHDR (mng_retcode)2054 /* no MNG header available */
|
|
2492 |
|
|
2493 |
#define MNG_IMAGETOOLARGE (mng_retcode)4097 /* input-image way too big */
|
|
2494 |
#define MNG_NOTANANIMATION (mng_retcode)4098 /* file not a MNG */
|
|
2495 |
#define MNG_FRAMENRTOOHIGH (mng_retcode)4099 /* frame-nr out-of-range */
|
|
2496 |
#define MNG_LAYERNRTOOHIGH (mng_retcode)4100 /* layer-nr out-of-range */
|
|
2497 |
#define MNG_PLAYTIMETOOHIGH (mng_retcode)4101 /* playtime out-of-range */
|
|
2498 |
#define MNG_FNNOTIMPLEMENTED (mng_retcode)4102 /* function not yet available */
|
|
2499 |
|
|
2500 |
#define MNG_IMAGEFROZEN (mng_retcode)8193 /* stopped displaying */
|
|
2501 |
|
|
2502 |
#define MNG_LCMS_NOHANDLE 1 /* LCMS returned NULL handle */
|
|
2503 |
#define MNG_LCMS_NOMEM 2 /* LCMS returned NULL gammatab */
|
|
2504 |
#define MNG_LCMS_NOTRANS 3 /* LCMS returned NULL transform*/
|
|
2505 |
|
|
2506 |
/* ************************************************************************** */
|
|
2507 |
/* * * */
|
|
2508 |
/* * Canvas styles * */
|
|
2509 |
/* * * */
|
|
2510 |
/* * Note that the intentions are pretty darn good, but that the focus * */
|
|
2511 |
/* * is currently on 8-bit color support * */
|
|
2512 |
/* * * */
|
|
2513 |
/* * The RGB8_A8 style is defined for apps that require a separate * */
|
|
2514 |
/* * canvas for the color-planes and the alpha-plane (eg. mozilla) * */
|
|
2515 |
/* * This requires for the app to supply the "getalphaline" callback!!! * */
|
|
2516 |
/* * * */
|
|
2517 |
/* ************************************************************************** */
|
|
2518 |
|
|
2519 |
#define MNG_CANVAS_RGB8 0x00000000L
|
|
2520 |
#define MNG_CANVAS_RGBA8 0x00001000L
|
|
2521 |
#define MNG_CANVAS_RGBA8_PM 0x00009000L
|
|
2522 |
#define MNG_CANVAS_ARGB8 0x00003000L
|
|
2523 |
#define MNG_CANVAS_ARGB8_PM 0x0000B000L
|
|
2524 |
#define MNG_CANVAS_RGB8_A8 0x00005000L
|
|
2525 |
#define MNG_CANVAS_BGR8 0x00000001L
|
|
2526 |
#define MNG_CANVAS_BGRX8 0x00010001L
|
|
2527 |
#define MNG_CANVAS_BGRA8 0x00001001L
|
|
2528 |
#define MNG_CANVAS_BGRA8PM 0x00009001L /* backward compatibility */
|
|
2529 |
#define MNG_CANVAS_BGRA8_PM 0x00009001L
|
|
2530 |
#define MNG_CANVAS_ABGR8 0x00003001L
|
|
2531 |
#define MNG_CANVAS_ABGR8_PM 0x0000B001L
|
|
2532 |
#define MNG_CANVAS_RGB16 0x00000100L /* not supported yet */
|
|
2533 |
#define MNG_CANVAS_RGBA16 0x00001100L /* not supported yet */
|
|
2534 |
#define MNG_CANVAS_ARGB16 0x00003100L /* not supported yet */
|
|
2535 |
#define MNG_CANVAS_BGR16 0x00000101L /* not supported yet */
|
|
2536 |
#define MNG_CANVAS_BGRA16 0x00001101L /* not supported yet */
|
|
2537 |
#define MNG_CANVAS_ABGR16 0x00003101L /* not supported yet */
|
|
2538 |
#define MNG_CANVAS_GRAY8 0x00000002L /* not supported yet */
|
|
2539 |
#define MNG_CANVAS_GRAY16 0x00000102L /* not supported yet */
|
|
2540 |
#define MNG_CANVAS_GRAYA8 0x00001002L /* not supported yet */
|
|
2541 |
#define MNG_CANVAS_GRAYA16 0x00001102L /* not supported yet */
|
|
2542 |
#define MNG_CANVAS_AGRAY8 0x00003002L /* not supported yet */
|
|
2543 |
#define MNG_CANVAS_AGRAY16 0x00003102L /* not supported yet */
|
|
2544 |
#define MNG_CANVAS_DX15 0x00000003L /* not supported yet */
|
|
2545 |
#define MNG_CANVAS_DX16 0x00000004L /* not supported yet */
|
|
2546 |
|
|
2547 |
#define MNG_CANVAS_RGB565 0x00000005L
|
|
2548 |
#define MNG_CANVAS_RGBA565 0x00001005L
|
|
2549 |
#define MNG_CANVAS_BGR565 0x00000006L
|
|
2550 |
#define MNG_CANVAS_BGRA565 0x00001006L
|
|
2551 |
#define MNG_CANVAS_BGR565_A8 0x00004006L
|
|
2552 |
|
|
2553 |
#define MNG_CANVAS_RGB555 0x00000007L
|
|
2554 |
#define MNG_CANVAS_BGR555 0x00000008L
|
|
2555 |
|
|
2556 |
#define MNG_CANVAS_PIXELTYPE(C) (C & 0x000000FFL)
|
|
2557 |
#define MNG_CANVAS_BITDEPTH(C) (C & 0x00000100L)
|
|
2558 |
#define MNG_CANVAS_HASALPHA(C) (C & 0x00001000L)
|
|
2559 |
#define MNG_CANVAS_ALPHAFIRST(C) (C & 0x00002000L)
|
|
2560 |
#define MNG_CANVAS_ALPHASEPD(C) (C & 0x00004000L)
|
|
2561 |
#define MNG_CANVAS_ALPHAPM(C) (C & 0x00008000L)
|
|
2562 |
#define MNG_CANVAS_HASFILLER(C) (C & 0x00010000L)
|
|
2563 |
|
|
2564 |
#define MNG_CANVAS_RGB(C) (MNG_CANVAS_PIXELTYPE (C) == 0)
|
|
2565 |
#define MNG_CANVAS_BGR(C) (MNG_CANVAS_PIXELTYPE (C) == 1)
|
|
2566 |
#define MNG_CANVAS_GRAY(C) (MNG_CANVAS_PIXELTYPE (C) == 2)
|
|
2567 |
#define MNG_CANVAS_DIRECTX15(C) (MNG_CANVAS_PIXELTYPE (C) == 3)
|
|
2568 |
#define MNG_CANVAS_DIRECTX16(C) (MNG_CANVAS_PIXELTYPE (C) == 4)
|
|
2569 |
#define MNG_CANVAS_RGB_565(C) (MNG_CANVAS_PIXELTYPE (C) == 5)
|
|
2570 |
#define MNG_CANVAS_BGR_565(C) (MNG_CANVAS_PIXELTYPE (C) == 6)
|
|
2571 |
#define MNG_CANVAS_8BIT(C) (!MNG_CANVAS_BITDEPTH (C))
|
|
2572 |
#define MNG_CANVAS_16BIT(C) (MNG_CANVAS_BITDEPTH (C))
|
|
2573 |
#define MNG_CANVAS_PIXELFIRST(C) (!MNG_CANVAS_ALPHAFIRST (C))
|
|
2574 |
|
|
2575 |
/* ************************************************************************** */
|
|
2576 |
/* * * */
|
|
2577 |
/* * Chunk names (idea adapted from libpng 1.1.0 - png.h) * */
|
|
2578 |
/* * * */
|
|
2579 |
/* ************************************************************************** */
|
|
2580 |
|
|
2581 |
#define MNG_UINT_HUH 0x40404040L
|
|
2582 |
|
|
2583 |
#define MNG_UINT_BACK 0x4241434bL
|
|
2584 |
#define MNG_UINT_BASI 0x42415349L
|
|
2585 |
#define MNG_UINT_CLIP 0x434c4950L
|
|
2586 |
#define MNG_UINT_CLON 0x434c4f4eL
|
|
2587 |
#define MNG_UINT_DBYK 0x4442594bL
|
|
2588 |
#define MNG_UINT_DEFI 0x44454649L
|
|
2589 |
#define MNG_UINT_DHDR 0x44484452L
|
|
2590 |
#define MNG_UINT_DISC 0x44495343L
|
|
2591 |
#define MNG_UINT_DROP 0x44524f50L
|
|
2592 |
#define MNG_UINT_ENDL 0x454e444cL
|
|
2593 |
#define MNG_UINT_FRAM 0x4652414dL
|
|
2594 |
#define MNG_UINT_IDAT 0x49444154L
|
|
2595 |
#define MNG_UINT_IEND 0x49454e44L
|
|
2596 |
#define MNG_UINT_IHDR 0x49484452L
|
|
2597 |
#define MNG_UINT_IJNG 0x494a4e47L
|
|
2598 |
#define MNG_UINT_IPNG 0x49504e47L
|
|
2599 |
#define MNG_UINT_JDAA 0x4a444141L
|
|
2600 |
#define MNG_UINT_JDAT 0x4a444154L
|
|
2601 |
#define MNG_UINT_JHDR 0x4a484452L
|
|
2602 |
#define MNG_UINT_JSEP 0x4a534550L
|
|
2603 |
#define MNG_UINT_JdAA 0x4a644141L
|
|
2604 |
#define MNG_UINT_LOOP 0x4c4f4f50L
|
|
2605 |
#define MNG_UINT_MAGN 0x4d41474eL
|
|
2606 |
#define MNG_UINT_MEND 0x4d454e44L
|
|
2607 |
#define MNG_UINT_MHDR 0x4d484452L
|
|
2608 |
#define MNG_UINT_MOVE 0x4d4f5645L
|
|
2609 |
#define MNG_UINT_ORDR 0x4f524452L
|
|
2610 |
#define MNG_UINT_PAST 0x50415354L
|
|
2611 |
#define MNG_UINT_PLTE 0x504c5445L
|
|
2612 |
#define MNG_UINT_PPLT 0x50504c54L
|
|
2613 |
#define MNG_UINT_PROM 0x50524f4dL
|
|
2614 |
#define MNG_UINT_SAVE 0x53415645L
|
|
2615 |
#define MNG_UINT_SEEK 0x5345454bL
|
|
2616 |
#define MNG_UINT_SHOW 0x53484f57L
|
|
2617 |
#define MNG_UINT_TERM 0x5445524dL
|
|
2618 |
#define MNG_UINT_adAT 0x61644154L
|
|
2619 |
#define MNG_UINT_ahDR 0x61684452L
|
|
2620 |
#define MNG_UINT_bKGD 0x624b4744L
|
|
2621 |
#define MNG_UINT_cHRM 0x6348524dL
|
|
2622 |
#define MNG_UINT_eXPI 0x65585049L
|
|
2623 |
#define MNG_UINT_evNT 0x65764e54L
|
|
2624 |
#define MNG_UINT_fPRI 0x66505249L
|
|
2625 |
#define MNG_UINT_gAMA 0x67414d41L
|
|
2626 |
#define MNG_UINT_hIST 0x68495354L
|
|
2627 |
#define MNG_UINT_iCCP 0x69434350L
|
|
2628 |
#define MNG_UINT_iTXt 0x69545874L
|
|
2629 |
#define MNG_UINT_mpNG 0x6d704e47L
|
|
2630 |
#define MNG_UINT_nEED 0x6e454544L
|
|
2631 |
#define MNG_UINT_oFFs 0x6f464673L
|
|
2632 |
#define MNG_UINT_pCAL 0x7043414cL
|
|
2633 |
#define MNG_UINT_pHYg 0x70444167L
|
|
2634 |
#define MNG_UINT_pHYs 0x70485973L
|
|
2635 |
#define MNG_UINT_sBIT 0x73424954L
|
|
2636 |
#define MNG_UINT_sCAL 0x7343414cL
|
|
2637 |
#define MNG_UINT_sPLT 0x73504c54L
|
|
2638 |
#define MNG_UINT_sRGB 0x73524742L
|
|
2639 |
#define MNG_UINT_tEXt 0x74455874L
|
|
2640 |
#define MNG_UINT_tIME 0x74494d45L
|
|
2641 |
#define MNG_UINT_tRNS 0x74524e53L
|
|
2642 |
#define MNG_UINT_zTXt 0x7a545874L
|
|
2643 |
|
|
2644 |
/* ************************************************************************** */
|
|
2645 |
/* * * */
|
|
2646 |
/* * Chunk property values * */
|
|
2647 |
/* * * */
|
|
2648 |
/* ************************************************************************** */
|
|
2649 |
|
|
2650 |
#define MNG_BITDEPTH_1 1 /* IHDR, BASI, JHDR, PROM */
|
|
2651 |
#define MNG_BITDEPTH_2 2
|
|
2652 |
#define MNG_BITDEPTH_4 4
|
|
2653 |
#define MNG_BITDEPTH_8 8 /* sPLT */
|
|
2654 |
#define MNG_BITDEPTH_16 16
|
|
2655 |
|
|
2656 |
#define MNG_COLORTYPE_GRAY 0 /* IHDR, BASI, PROM */
|
|
2657 |
#define MNG_COLORTYPE_RGB 2
|
|
2658 |
#define MNG_COLORTYPE_INDEXED 3
|
|
2659 |
#define MNG_COLORTYPE_GRAYA 4
|
|
2660 |
#define MNG_COLORTYPE_RGBA 6
|
|
2661 |
|
|
2662 |
#define MNG_COMPRESSION_DEFLATE 0 /* IHDR, zTXt, iTXt, iCCP,
|
|
2663 |
BASI, JHDR */
|
|
2664 |
|
|
2665 |
#define MNG_FILTER_ADAPTIVE 0 /* IHDR, BASI, JHDR */
|
|
2666 |
/* #define MNG_FILTER_NO_ADAPTIVE 1
|
|
2667 |
#define MNG_FILTER_NO_DIFFERING 0
|
|
2668 |
#define MNG_FILTER_DIFFERING 0x40
|
|
2669 |
#define MNG_FILTER_MASK (MNG_FILTER_NO_ADAPTIVE | MNG_FILTER_DIFFERING) */
|
|
2670 |
#ifdef FILTER192
|
|
2671 |
#define MNG_FILTER_DIFFERING 0xC0
|
|
2672 |
#endif
|
|
2673 |
#ifdef FILTER193
|
|
2674 |
#define MNG_FILTER_NOFILTER 0xC1
|
|
2675 |
#endif
|
|
2676 |
|
|
2677 |
#define MNG_INTERLACE_NONE 0 /* IHDR, BASI, JHDR */
|
|
2678 |
#define MNG_INTERLACE_ADAM7 1
|
|
2679 |
|
|
2680 |
#define MNG_FILTER_NONE 0 /* IDAT */
|
|
2681 |
#define MNG_FILTER_SUB 1
|
|
2682 |
#define MNG_FILTER_UP 2
|
|
2683 |
#define MNG_FILTER_AVERAGE 3
|
|
2684 |
#define MNG_FILTER_PAETH 4
|
|
2685 |
|
|
2686 |
#define MNG_INTENT_PERCEPTUAL 0 /* sRGB */
|
|
2687 |
#define MNG_INTENT_RELATIVECOLORIMETRIC 1
|
|
2688 |
#define MNG_INTENT_SATURATION 2
|
|
2689 |
#define MNG_INTENT_ABSOLUTECOLORIMETRIC 3
|
|
2690 |
/* tEXt, zTXt, iTXt */
|
|
2691 |
#define MNG_TEXT_TITLE "Title"
|
|
2692 |
#define MNG_TEXT_AUTHOR "Author"
|
|
2693 |
#define MNG_TEXT_DESCRIPTION "Description"
|
|
2694 |
#define MNG_TEXT_COPYRIGHT "Copyright"
|
|
2695 |
#define MNG_TEXT_CREATIONTIME "Creation Time"
|
|
2696 |
#define MNG_TEXT_SOFTWARE "Software"
|
|
2697 |
#define MNG_TEXT_DISCLAIMER "Disclaimer"
|
|
2698 |
#define MNG_TEXT_WARNING "Warning"
|
|
2699 |
#define MNG_TEXT_SOURCE "Source"
|
|
2700 |
#define MNG_TEXT_COMMENT "Comment"
|
|
2701 |
|
|
2702 |
#define MNG_FLAG_UNCOMPRESSED 0 /* iTXt */
|
|
2703 |
#define MNG_FLAG_COMPRESSED 1
|
|
2704 |
|
|
2705 |
#define MNG_UNIT_UNKNOWN 0 /* pHYs, pHYg */
|
|
2706 |
#define MNG_UNIT_METER 1
|
|
2707 |
/* MHDR */
|
|
2708 |
#define MNG_SIMPLICITY_VALID 0x00000001
|
|
2709 |
#define MNG_SIMPLICITY_SIMPLEFEATURES 0x00000002
|
|
2710 |
#define MNG_SIMPLICITY_COMPLEXFEATURES 0x00000004
|
|
2711 |
#define MNG_SIMPLICITY_TRANSPARENCY 0x00000008
|
|
2712 |
#define MNG_SIMPLICITY_JNG 0x00000010
|
|
2713 |
#define MNG_SIMPLICITY_DELTAPNG 0x00000020
|
|
2714 |
|
|
2715 |
#define MNG_TERMINATION_DECODER_NC 0 /* LOOP */
|
|
2716 |
#define MNG_TERMINATION_USER_NC 1
|
|
2717 |
#define MNG_TERMINATION_EXTERNAL_NC 2
|
|
2718 |
#define MNG_TERMINATION_DETERMINISTIC_NC 3
|
|
2719 |
#define MNG_TERMINATION_DECODER_C 4
|
|
2720 |
#define MNG_TERMINATION_USER_C 5
|
|
2721 |
#define MNG_TERMINATION_EXTERNAL_C 6
|
|
2722 |
#define MNG_TERMINATION_DETERMINISTIC_C 7
|
|
2723 |
|
|
2724 |
#define MNG_DONOTSHOW_VISIBLE 0 /* DEFI */
|
|
2725 |
#define MNG_DONOTSHOW_NOTVISIBLE 1
|
|
2726 |
|
|
2727 |
#define MNG_ABSTRACT 0 /* DEFI */
|
|
2728 |
#define MNG_CONCRETE 1
|
|
2729 |
|
|
2730 |
#define MNG_NOTVIEWABLE 0 /* BASI */
|
|
2731 |
#define MNG_VIEWABLE 1
|
|
2732 |
|
|
2733 |
#define MNG_FULL_CLONE 0 /* CLON */
|
|
2734 |
#define MNG_PARTIAL_CLONE 1
|
|
2735 |
#define MNG_RENUMBER 2
|
|
2736 |
|
|
2737 |
#define MNG_CONCRETE_ASPARENT 0 /* CLON */
|
|
2738 |
#define MNG_CONCRETE_MAKEABSTRACT 1
|
|
2739 |
|
|
2740 |
#define MNG_LOCATION_ABSOLUTE 0 /* CLON, MOVE */
|
|
2741 |
#define MNG_LOCATION_RELATIVE 1
|
|
2742 |
|
|
2743 |
#ifndef MNG_SKIPCHUNK_PAST
|
|
2744 |
#define MNG_TARGET_ABSOLUTE 0 /* PAST */
|
|
2745 |
#define MNG_TARGET_RELATIVE_SAMEPAST 1
|
|
2746 |
#define MNG_TARGET_RELATIVE_PREVPAST 2
|
|
2747 |
|
|
2748 |
#define MNG_COMPOSITE_OVER 0 /* PAST */
|
|
2749 |
#define MNG_COMPOSITE_REPLACE 1
|
|
2750 |
#define MNG_COMPOSITE_UNDER 2
|
|
2751 |
|
|
2752 |
#define MNG_ORIENTATION_SAME 0 /* PAST */
|
|
2753 |
#define MNG_ORIENTATION_180DEG 2
|
|
2754 |
#define MNG_ORIENTATION_FLIPHORZ 4
|
|
2755 |
#define MNG_ORIENTATION_FLIPVERT 6
|
|
2756 |
#define MNG_ORIENTATION_TILED 8
|
|
2757 |
|
|
2758 |
#define MNG_OFFSET_ABSOLUTE 0 /* PAST */
|
|
2759 |
#define MNG_OFFSET_RELATIVE 1
|
|
2760 |
#endif
|
|
2761 |
|
|
2762 |
#define MNG_BOUNDARY_ABSOLUTE 0 /* PAST, FRAM */
|
|
2763 |
#define MNG_BOUNDARY_RELATIVE 1
|
|
2764 |
|
|
2765 |
#define MNG_BACKGROUNDCOLOR_MANDATORY 0x01 /* BACK */
|
|
2766 |
#define MNG_BACKGROUNDIMAGE_MANDATORY 0x02 /* BACK */
|
|
2767 |
|
|
2768 |
#define MNG_BACKGROUNDIMAGE_NOTILE 0 /* BACK */
|
|
2769 |
#define MNG_BACKGROUNDIMAGE_TILE 1
|
|
2770 |
|
|
2771 |
#define MNG_FRAMINGMODE_NOCHANGE 0 /* FRAM */
|
|
2772 |
#define MNG_FRAMINGMODE_1 1
|
|
2773 |
#define MNG_FRAMINGMODE_2 2
|
|
2774 |
#define MNG_FRAMINGMODE_3 3
|
|
2775 |
#define MNG_FRAMINGMODE_4 4
|
|
2776 |
|
|
2777 |
#define MNG_CHANGEDELAY_NO 0 /* FRAM */
|
|
2778 |
#define MNG_CHANGEDELAY_NEXTSUBFRAME 1
|
|
2779 |
#define MNG_CHANGEDELAY_DEFAULT 2
|
|
2780 |
|
|
2781 |
#define MNG_CHANGETIMOUT_NO 0 /* FRAM */
|
|
2782 |
#define MNG_CHANGETIMOUT_DETERMINISTIC_1 1
|
|
2783 |
#define MNG_CHANGETIMOUT_DETERMINISTIC_2 2
|
|
2784 |
#define MNG_CHANGETIMOUT_DECODER_1 3
|
|
2785 |
#define MNG_CHANGETIMOUT_DECODER_2 4
|
|
2786 |
#define MNG_CHANGETIMOUT_USER_1 5
|
|
2787 |
#define MNG_CHANGETIMOUT_USER_2 6
|
|
2788 |
#define MNG_CHANGETIMOUT_EXTERNAL_1 7
|
|
2789 |
#define MNG_CHANGETIMOUT_EXTERNAL_2 8
|
|
2790 |
|
|
2791 |
#define MNG_CHANGECLIPPING_NO 0 /* FRAM */
|
|
2792 |
#define MNG_CHANGECLIPPING_NEXTSUBFRAME 1
|
|
2793 |
#define MNG_CHANGECLIPPING_DEFAULT 2
|
|
2794 |
|
|
2795 |
#define MNG_CHANGESYNCID_NO 0 /* FRAM */
|
|
2796 |
#define MNG_CHANGESYNCID_NEXTSUBFRAME 1
|
|
2797 |
#define MNG_CHANGESYNCID_DEFAULT 2
|
|
2798 |
|
|
2799 |
#define MNG_CLIPPING_ABSOLUTE 0 /* CLIP */
|
|
2800 |
#define MNG_CLIPPING_RELATIVE 1
|
|
2801 |
|
|
2802 |
#define MNG_SHOWMODE_0 0 /* SHOW */
|
|
2803 |
#define MNG_SHOWMODE_1 1
|
|
2804 |
#define MNG_SHOWMODE_2 2
|
|
2805 |
#define MNG_SHOWMODE_3 3
|
|
2806 |
#define MNG_SHOWMODE_4 4
|
|
2807 |
#define MNG_SHOWMODE_5 5
|
|
2808 |
#define MNG_SHOWMODE_6 6
|
|
2809 |
#define MNG_SHOWMODE_7 7
|
|
2810 |
|
|
2811 |
#define MNG_TERMACTION_LASTFRAME 0 /* TERM */
|
|
2812 |
#define MNG_TERMACTION_CLEAR 1
|
|
2813 |
#define MNG_TERMACTION_FIRSTFRAME 2
|
|
2814 |
#define MNG_TERMACTION_REPEAT 3
|
|
2815 |
|
|
2816 |
#define MNG_ITERACTION_LASTFRAME 0 /* TERM */
|
|
2817 |
#define MNG_ITERACTION_CLEAR 1
|
|
2818 |
#define MNG_ITERACTION_FIRSTFRAME 2
|
|
2819 |
|
|
2820 |
#define MNG_SAVEOFFSET_4BYTE 4 /* SAVE */
|
|
2821 |
#define MNG_SAVEOFFSET_8BYTE 8
|
|
2822 |
|
|
2823 |
#define MNG_SAVEENTRY_SEGMENTFULL 0 /* SAVE */
|
|
2824 |
#define MNG_SAVEENTRY_SEGMENT 1
|
|
2825 |
#define MNG_SAVEENTRY_SUBFRAME 2
|
|
2826 |
#define MNG_SAVEENTRY_EXPORTEDIMAGE 3
|
|
2827 |
|
|
2828 |
#define MNG_PRIORITY_ABSOLUTE 0 /* fPRI */
|
|
2829 |
#define MNG_PRIORITY_RELATIVE 1
|
|
2830 |
|
|
2831 |
#ifdef MNG_INCLUDE_JNG
|
|
2832 |
#define MNG_COLORTYPE_JPEGGRAY 8 /* JHDR */
|
|
2833 |
#define MNG_COLORTYPE_JPEGCOLOR 10
|
|
2834 |
#define MNG_COLORTYPE_JPEGGRAYA 12
|
|
2835 |
#define MNG_COLORTYPE_JPEGCOLORA 14
|
|
2836 |
|
|
2837 |
#define MNG_BITDEPTH_JPEG8 8 /* JHDR */
|
|
2838 |
#define MNG_BITDEPTH_JPEG12 12
|
|
2839 |
#define MNG_BITDEPTH_JPEG8AND12 20
|
|
2840 |
|
|
2841 |
#define MNG_COMPRESSION_BASELINEJPEG 8 /* JHDR */
|
|
2842 |
|
|
2843 |
#define MNG_INTERLACE_SEQUENTIAL 0 /* JHDR */
|
|
2844 |
#define MNG_INTERLACE_PROGRESSIVE 8
|
|
2845 |
#endif /* MNG_INCLUDE_JNG */
|
|
2846 |
|
|
2847 |
#define MNG_IMAGETYPE_UNKNOWN 0 /* DHDR */
|
|
2848 |
#define MNG_IMAGETYPE_PNG 1
|
|
2849 |
#define MNG_IMAGETYPE_JNG 2
|
|
2850 |
|
|
2851 |
#define MNG_DELTATYPE_REPLACE 0 /* DHDR */
|
|
2852 |
#define MNG_DELTATYPE_BLOCKPIXELADD 1
|
|
2853 |
#define MNG_DELTATYPE_BLOCKALPHAADD 2
|
|
2854 |
#define MNG_DELTATYPE_BLOCKCOLORADD 3
|
|
2855 |
#define MNG_DELTATYPE_BLOCKPIXELREPLACE 4
|
|
2856 |
#define MNG_DELTATYPE_BLOCKALPHAREPLACE 5
|
|
2857 |
#define MNG_DELTATYPE_BLOCKCOLORREPLACE 6
|
|
2858 |
#define MNG_DELTATYPE_NOCHANGE 7
|
|
2859 |
|
|
2860 |
#define MNG_FILLMETHOD_LEFTBITREPLICATE 0 /* PROM */
|
|
2861 |
#define MNG_FILLMETHOD_ZEROFILL 1
|
|
2862 |
|
|
2863 |
#define MNG_DELTATYPE_REPLACERGB 0 /* PPLT */
|
|
2864 |
#define MNG_DELTATYPE_DELTARGB 1
|
|
2865 |
#define MNG_DELTATYPE_REPLACEALPHA 2
|
|
2866 |
#define MNG_DELTATYPE_DELTAALPHA 3
|
|
2867 |
#define MNG_DELTATYPE_REPLACERGBA 4
|
|
2868 |
#define MNG_DELTATYPE_DELTARGBA 5
|
|
2869 |
|
|
2870 |
#define MNG_POLARITY_ONLY 0 /* DBYK */
|
|
2871 |
#define MNG_POLARITY_ALLBUT 1
|
|
2872 |
|
|
2873 |
#define MNG_EVENT_NONE 0 /* evNT */
|
|
2874 |
#define MNG_EVENT_MOUSEENTER 1
|
|
2875 |
#define MNG_EVENT_MOUSEMOVE 2
|
|
2876 |
#define MNG_EVENT_MOUSEEXIT 3
|
|
2877 |
#define MNG_EVENT_MOUSEDOWN 4
|
|
2878 |
#define MNG_EVENT_MOUSEUP 5
|
|
2879 |
|
|
2880 |
#define MNG_MASK_NONE 0 /* evNT */
|
|
2881 |
#define MNG_MASK_BOX 1
|
|
2882 |
#define MNG_MASK_OBJECT 2
|
|
2883 |
#define MNG_MASK_OBJECTIX 3
|
|
2884 |
#define MNG_MASK_BOXOBJECT 4
|
|
2885 |
#define MNG_MASK_BOXOBJECTIX 5
|
|
2886 |
|
|
2887 |
/* ************************************************************************** */
|
|
2888 |
/* * * */
|
|
2889 |
/* * Processtext callback types * */
|
|
2890 |
/* * * */
|
|
2891 |
/* ************************************************************************** */
|
|
2892 |
|
|
2893 |
#define MNG_TYPE_TEXT 0
|
|
2894 |
#define MNG_TYPE_ZTXT 1
|
|
2895 |
#define MNG_TYPE_ITXT 2
|
|
2896 |
|
|
2897 |
/* ************************************************************************** */
|
|
2898 |
/* * * */
|
|
2899 |
/* * CRC processing masks * */
|
|
2900 |
/* * * */
|
|
2901 |
/* ************************************************************************** */
|
|
2902 |
|
|
2903 |
#define MNG_CRC_INPUT 0x0000000f
|
|
2904 |
#define MNG_CRC_INPUT_NONE 0x00000000
|
|
2905 |
#define MNG_CRC_INPUT_PRESENT 0x00000001
|
|
2906 |
#define MNG_CRC_OUTPUT 0x000000f0
|
|
2907 |
#define MNG_CRC_OUTPUT_NONE 0x00000000
|
|
2908 |
#define MNG_CRC_OUTPUT_GENERATE 0x00000020
|
|
2909 |
#define MNG_CRC_OUTPUT_DUMMY 0x00000040
|
|
2910 |
#define MNG_CRC_ANCILLARY 0x00000f00
|
|
2911 |
#define MNG_CRC_ANCILLARY_IGNORE 0x00000000
|
|
2912 |
#define MNG_CRC_ANCILLARY_DISCARD 0x00000100
|
|
2913 |
#define MNG_CRC_ANCILLARY_WARNING 0x00000200
|
|
2914 |
#define MNG_CRC_ANCILLARY_ERROR 0x00000300
|
|
2915 |
#define MNG_CRC_CRITICAL 0x0000f000
|
|
2916 |
#define MNG_CRC_CRITICAL_IGNORE 0x00000000
|
|
2917 |
#define MNG_CRC_CRITICAL_WARNING 0x00002000
|
|
2918 |
#define MNG_CRC_CRITICAL_ERROR 0x00003000
|
|
2919 |
#define MNG_CRC_DEFAULT 0x00002121
|
|
2920 |
|
|
2921 |
/* ************************************************************************** */
|
|
2922 |
|
|
2923 |
#ifdef __cplusplus
|
|
2924 |
}
|
|
2925 |
#endif
|
|
2926 |
|
|
2927 |
#endif /* _libmng_h_ */
|
|
2928 |
|
|
2929 |
/* ************************************************************************** */
|
|
2930 |
/* * end of file * */
|
|
2931 |
/* ************************************************************************** */
|
|
2932 |
|