src/3rdparty/libmng/libmng.h
changeset 0 1918ee327afb
equal deleted inserted replaced
-1:000000000000 0:1918ee327afb
       
     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