| 1 |  | 
|---|
| 2 | /* pngconf.h - machine configurable file for libpng | 
|---|
| 3 | * | 
|---|
| 4 | * libpng version 1.6.34, September 29, 2017 | 
|---|
| 5 | * | 
|---|
| 6 | * Copyright (c) 1998-2002,2004,2006-2016 Glenn Randers-Pehrson | 
|---|
| 7 | * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) | 
|---|
| 8 | * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) | 
|---|
| 9 | * | 
|---|
| 10 | * This code is released under the libpng license. | 
|---|
| 11 | * For conditions of distribution and use, see the disclaimer | 
|---|
| 12 | * and license in png.h | 
|---|
| 13 | * | 
|---|
| 14 | * Any machine specific code is near the front of this file, so if you | 
|---|
| 15 | * are configuring libpng for a machine, you may want to read the section | 
|---|
| 16 | * starting here down to where it starts to typedef png_color, png_text, | 
|---|
| 17 | * and png_info. | 
|---|
| 18 | */ | 
|---|
| 19 |  | 
|---|
| 20 | #ifndef PNGCONF_H | 
|---|
| 21 | #define PNGCONF_H | 
|---|
| 22 |  | 
|---|
| 23 | #ifndef PNG_BUILDING_SYMBOL_TABLE /* else includes may cause problems */ | 
|---|
| 24 |  | 
|---|
| 25 | /* From libpng 1.6.0 libpng requires an ANSI X3.159-1989 ("ISOC90") compliant C | 
|---|
| 26 | * compiler for correct compilation.  The following header files are required by | 
|---|
| 27 | * the standard.  If your compiler doesn't provide these header files, or they | 
|---|
| 28 | * do not match the standard, you will need to provide/improve them. | 
|---|
| 29 | */ | 
|---|
| 30 | #include <limits.h> | 
|---|
| 31 | #include <stddef.h> | 
|---|
| 32 |  | 
|---|
| 33 | /* Library header files.  These header files are all defined by ISOC90; libpng | 
|---|
| 34 | * expects conformant implementations, however, an ISOC90 conformant system need | 
|---|
| 35 | * not provide these header files if the functionality cannot be implemented. | 
|---|
| 36 | * In this case it will be necessary to disable the relevant parts of libpng in | 
|---|
| 37 | * the build of pnglibconf.h. | 
|---|
| 38 | * | 
|---|
| 39 | * Prior to 1.6.0 string.h was included here; the API changes in 1.6.0 to not | 
|---|
| 40 | * include this unnecessary header file. | 
|---|
| 41 | */ | 
|---|
| 42 |  | 
|---|
| 43 | #ifdef PNG_STDIO_SUPPORTED | 
|---|
| 44 | /* Required for the definition of FILE: */ | 
|---|
| 45 | #  include <stdio.h> | 
|---|
| 46 | #endif | 
|---|
| 47 |  | 
|---|
| 48 | #ifdef PNG_SETJMP_SUPPORTED | 
|---|
| 49 | /* Required for the definition of jmp_buf and the declaration of longjmp: */ | 
|---|
| 50 | #  include <setjmp.h> | 
|---|
| 51 | #endif | 
|---|
| 52 |  | 
|---|
| 53 | #ifdef PNG_CONVERT_tIME_SUPPORTED | 
|---|
| 54 | /* Required for struct tm: */ | 
|---|
| 55 | #  include <time.h> | 
|---|
| 56 | #endif | 
|---|
| 57 |  | 
|---|
| 58 | #endif /* PNG_BUILDING_SYMBOL_TABLE */ | 
|---|
| 59 |  | 
|---|
| 60 | /* Prior to 1.6.0 it was possible to turn off 'const' in declarations using | 
|---|
| 61 | * PNG_NO_CONST; this is no longer supported except for data declarations which | 
|---|
| 62 | * apparently still cause problems in 2011 on some compilers. | 
|---|
| 63 | */ | 
|---|
| 64 | #define PNG_CONST const /* backward compatibility only */ | 
|---|
| 65 |  | 
|---|
| 66 | /* This controls optimization of the reading of 16-bit and 32-bit values | 
|---|
| 67 | * from PNG files.  It can be set on a per-app-file basis - it | 
|---|
| 68 | * just changes whether a macro is used when the function is called. | 
|---|
| 69 | * The library builder sets the default; if read functions are not | 
|---|
| 70 | * built into the library the macro implementation is forced on. | 
|---|
| 71 | */ | 
|---|
| 72 | #ifndef PNG_READ_INT_FUNCTIONS_SUPPORTED | 
|---|
| 73 | #  define PNG_USE_READ_MACROS | 
|---|
| 74 | #endif | 
|---|
| 75 | #if !defined(PNG_NO_USE_READ_MACROS) && !defined(PNG_USE_READ_MACROS) | 
|---|
| 76 | #  if PNG_DEFAULT_READ_MACROS | 
|---|
| 77 | #    define PNG_USE_READ_MACROS | 
|---|
| 78 | #  endif | 
|---|
| 79 | #endif | 
|---|
| 80 |  | 
|---|
| 81 | /* COMPILER SPECIFIC OPTIONS. | 
|---|
| 82 | * | 
|---|
| 83 | * These options are provided so that a variety of difficult compilers | 
|---|
| 84 | * can be used.  Some are fixed at build time (e.g. PNG_API_RULE | 
|---|
| 85 | * below) but still have compiler specific implementations, others | 
|---|
| 86 | * may be changed on a per-file basis when compiling against libpng. | 
|---|
| 87 | */ | 
|---|
| 88 |  | 
|---|
| 89 | /* The PNGARG macro was used in versions of libpng prior to 1.6.0 to protect | 
|---|
| 90 | * against legacy (pre ISOC90) compilers that did not understand function | 
|---|
| 91 | * prototypes.  It is not required for modern C compilers. | 
|---|
| 92 | */ | 
|---|
| 93 | #ifndef PNGARG | 
|---|
| 94 | #  define PNGARG(arglist) arglist | 
|---|
| 95 | #endif | 
|---|
| 96 |  | 
|---|
| 97 | /* Function calling conventions. | 
|---|
| 98 | * ============================= | 
|---|
| 99 | * Normally it is not necessary to specify to the compiler how to call | 
|---|
| 100 | * a function - it just does it - however on x86 systems derived from | 
|---|
| 101 | * Microsoft and Borland C compilers ('IBM PC', 'DOS', 'Windows' systems | 
|---|
| 102 | * and some others) there are multiple ways to call a function and the | 
|---|
| 103 | * default can be changed on the compiler command line.  For this reason | 
|---|
| 104 | * libpng specifies the calling convention of every exported function and | 
|---|
| 105 | * every function called via a user supplied function pointer.  This is | 
|---|
| 106 | * done in this file by defining the following macros: | 
|---|
| 107 | * | 
|---|
| 108 | * PNGAPI    Calling convention for exported functions. | 
|---|
| 109 | * PNGCBAPI  Calling convention for user provided (callback) functions. | 
|---|
| 110 | * PNGCAPI   Calling convention used by the ANSI-C library (required | 
|---|
| 111 | *           for longjmp callbacks and sometimes used internally to | 
|---|
| 112 | *           specify the calling convention for zlib). | 
|---|
| 113 | * | 
|---|
| 114 | * These macros should never be overridden.  If it is necessary to | 
|---|
| 115 | * change calling convention in a private build this can be done | 
|---|
| 116 | * by setting PNG_API_RULE (which defaults to 0) to one of the values | 
|---|
| 117 | * below to select the correct 'API' variants. | 
|---|
| 118 | * | 
|---|
| 119 | * PNG_API_RULE=0 Use PNGCAPI - the 'C' calling convention - throughout. | 
|---|
| 120 | *                This is correct in every known environment. | 
|---|
| 121 | * PNG_API_RULE=1 Use the operating system convention for PNGAPI and | 
|---|
| 122 | *                the 'C' calling convention (from PNGCAPI) for | 
|---|
| 123 | *                callbacks (PNGCBAPI).  This is no longer required | 
|---|
| 124 | *                in any known environment - if it has to be used | 
|---|
| 125 | *                please post an explanation of the problem to the | 
|---|
| 126 | *                libpng mailing list. | 
|---|
| 127 | * | 
|---|
| 128 | * These cases only differ if the operating system does not use the C | 
|---|
| 129 | * calling convention, at present this just means the above cases | 
|---|
| 130 | * (x86 DOS/Windows sytems) and, even then, this does not apply to | 
|---|
| 131 | * Cygwin running on those systems. | 
|---|
| 132 | * | 
|---|
| 133 | * Note that the value must be defined in pnglibconf.h so that what | 
|---|
| 134 | * the application uses to call the library matches the conventions | 
|---|
| 135 | * set when building the library. | 
|---|
| 136 | */ | 
|---|
| 137 |  | 
|---|
| 138 | /* Symbol export | 
|---|
| 139 | * ============= | 
|---|
| 140 | * When building a shared library it is almost always necessary to tell | 
|---|
| 141 | * the compiler which symbols to export.  The png.h macro 'PNG_EXPORT' | 
|---|
| 142 | * is used to mark the symbols.  On some systems these symbols can be | 
|---|
| 143 | * extracted at link time and need no special processing by the compiler, | 
|---|
| 144 | * on other systems the symbols are flagged by the compiler and just | 
|---|
| 145 | * the declaration requires a special tag applied (unfortunately) in a | 
|---|
| 146 | * compiler dependent way.  Some systems can do either. | 
|---|
| 147 | * | 
|---|
| 148 | * A small number of older systems also require a symbol from a DLL to | 
|---|
| 149 | * be flagged to the program that calls it.  This is a problem because | 
|---|
| 150 | * we do not know in the header file included by application code that | 
|---|
| 151 | * the symbol will come from a shared library, as opposed to a statically | 
|---|
| 152 | * linked one.  For this reason the application must tell us by setting | 
|---|
| 153 | * the magic flag PNG_USE_DLL to turn on the special processing before | 
|---|
| 154 | * it includes png.h. | 
|---|
| 155 | * | 
|---|
| 156 | * Four additional macros are used to make this happen: | 
|---|
| 157 | * | 
|---|
| 158 | * PNG_IMPEXP The magic (if any) to cause a symbol to be exported from | 
|---|
| 159 | *            the build or imported if PNG_USE_DLL is set - compiler | 
|---|
| 160 | *            and system specific. | 
|---|
| 161 | * | 
|---|
| 162 | * PNG_EXPORT_TYPE(type) A macro that pre or appends PNG_IMPEXP to | 
|---|
| 163 | *                       'type', compiler specific. | 
|---|
| 164 | * | 
|---|
| 165 | * PNG_DLL_EXPORT Set to the magic to use during a libpng build to | 
|---|
| 166 | *                make a symbol exported from the DLL.  Not used in the | 
|---|
| 167 | *                public header files; see pngpriv.h for how it is used | 
|---|
| 168 | *                in the libpng build. | 
|---|
| 169 | * | 
|---|
| 170 | * PNG_DLL_IMPORT Set to the magic to force the libpng symbols to come | 
|---|
| 171 | *                from a DLL - used to define PNG_IMPEXP when | 
|---|
| 172 | *                PNG_USE_DLL is set. | 
|---|
| 173 | */ | 
|---|
| 174 |  | 
|---|
| 175 | /* System specific discovery. | 
|---|
| 176 | * ========================== | 
|---|
| 177 | * This code is used at build time to find PNG_IMPEXP, the API settings | 
|---|
| 178 | * and PNG_EXPORT_TYPE(), it may also set a macro to indicate the DLL | 
|---|
| 179 | * import processing is possible.  On Windows systems it also sets | 
|---|
| 180 | * compiler-specific macros to the values required to change the calling | 
|---|
| 181 | * conventions of the various functions. | 
|---|
| 182 | */ | 
|---|
| 183 | #if defined(_Windows) || defined(_WINDOWS) || defined(WIN32) ||\ | 
|---|
| 184 | defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) | 
|---|
| 185 | /* Windows system (DOS doesn't support DLLs).  Includes builds under Cygwin or | 
|---|
| 186 | * MinGW on any architecture currently supported by Windows.  Also includes | 
|---|
| 187 | * Watcom builds but these need special treatment because they are not | 
|---|
| 188 | * compatible with GCC or Visual C because of different calling conventions. | 
|---|
| 189 | */ | 
|---|
| 190 | #  if PNG_API_RULE == 2 | 
|---|
| 191 | /* If this line results in an error, either because __watcall is not | 
|---|
| 192 | * understood or because of a redefine just below you cannot use *this* | 
|---|
| 193 | * build of the library with the compiler you are using.  *This* build was | 
|---|
| 194 | * build using Watcom and applications must also be built using Watcom! | 
|---|
| 195 | */ | 
|---|
| 196 | #    define PNGCAPI __watcall | 
|---|
| 197 | #  endif | 
|---|
| 198 |  | 
|---|
| 199 | #  if defined(__GNUC__) || (defined(_MSC_VER) && (_MSC_VER >= 800)) | 
|---|
| 200 | #    define PNGCAPI __cdecl | 
|---|
| 201 | #    if PNG_API_RULE == 1 | 
|---|
| 202 | /* If this line results in an error __stdcall is not understood and | 
|---|
| 203 | * PNG_API_RULE should not have been set to '1'. | 
|---|
| 204 | */ | 
|---|
| 205 | #      define PNGAPI __stdcall | 
|---|
| 206 | #    endif | 
|---|
| 207 | #  else | 
|---|
| 208 | /* An older compiler, or one not detected (erroneously) above, | 
|---|
| 209 | * if necessary override on the command line to get the correct | 
|---|
| 210 | * variants for the compiler. | 
|---|
| 211 | */ | 
|---|
| 212 | #    ifndef PNGCAPI | 
|---|
| 213 | #      define PNGCAPI _cdecl | 
|---|
| 214 | #    endif | 
|---|
| 215 | #    if PNG_API_RULE == 1 && !defined(PNGAPI) | 
|---|
| 216 | #      define PNGAPI _stdcall | 
|---|
| 217 | #    endif | 
|---|
| 218 | #  endif /* compiler/api */ | 
|---|
| 219 |  | 
|---|
| 220 | /* NOTE: PNGCBAPI always defaults to PNGCAPI. */ | 
|---|
| 221 |  | 
|---|
| 222 | #  if defined(PNGAPI) && !defined(PNG_USER_PRIVATEBUILD) | 
|---|
| 223 | #     error "PNG_USER_PRIVATEBUILD must be defined if PNGAPI is changed" | 
|---|
| 224 | #  endif | 
|---|
| 225 |  | 
|---|
| 226 | #  if (defined(_MSC_VER) && _MSC_VER < 800) ||\ | 
|---|
| 227 | (defined(__BORLANDC__) && __BORLANDC__ < 0x500) | 
|---|
| 228 | /* older Borland and MSC | 
|---|
| 229 | * compilers used '__export' and required this to be after | 
|---|
| 230 | * the type. | 
|---|
| 231 | */ | 
|---|
| 232 | #    ifndef PNG_EXPORT_TYPE | 
|---|
| 233 | #      define PNG_EXPORT_TYPE(type) type PNG_IMPEXP | 
|---|
| 234 | #    endif | 
|---|
| 235 | #    define PNG_DLL_EXPORT __export | 
|---|
| 236 | #  else /* newer compiler */ | 
|---|
| 237 | #    define PNG_DLL_EXPORT __declspec(dllexport) | 
|---|
| 238 | #    ifndef PNG_DLL_IMPORT | 
|---|
| 239 | #      define PNG_DLL_IMPORT __declspec(dllimport) | 
|---|
| 240 | #    endif | 
|---|
| 241 | #  endif /* compiler */ | 
|---|
| 242 |  | 
|---|
| 243 | #else /* !Windows */ | 
|---|
| 244 | #  if (defined(__IBMC__) || defined(__IBMCPP__)) && defined(__OS2__) | 
|---|
| 245 | #    define PNGAPI _System | 
|---|
| 246 | #  else /* !Windows/x86 && !OS/2 */ | 
|---|
| 247 | /* Use the defaults, or define PNG*API on the command line (but | 
|---|
| 248 | * this will have to be done for every compile!) | 
|---|
| 249 | */ | 
|---|
| 250 | #  endif /* other system, !OS/2 */ | 
|---|
| 251 | #endif /* !Windows/x86 */ | 
|---|
| 252 |  | 
|---|
| 253 | /* Now do all the defaulting . */ | 
|---|
| 254 | #ifndef PNGCAPI | 
|---|
| 255 | #  define PNGCAPI | 
|---|
| 256 | #endif | 
|---|
| 257 | #ifndef PNGCBAPI | 
|---|
| 258 | #  define PNGCBAPI PNGCAPI | 
|---|
| 259 | #endif | 
|---|
| 260 | #ifndef PNGAPI | 
|---|
| 261 | #  define PNGAPI PNGCAPI | 
|---|
| 262 | #endif | 
|---|
| 263 |  | 
|---|
| 264 | /* PNG_IMPEXP may be set on the compilation system command line or (if not set) | 
|---|
| 265 | * then in an internal header file when building the library, otherwise (when | 
|---|
| 266 | * using the library) it is set here. | 
|---|
| 267 | */ | 
|---|
| 268 | #ifndef PNG_IMPEXP | 
|---|
| 269 | #  if defined(PNG_USE_DLL) && defined(PNG_DLL_IMPORT) | 
|---|
| 270 | /* This forces use of a DLL, disallowing static linking */ | 
|---|
| 271 | #    define PNG_IMPEXP PNG_DLL_IMPORT | 
|---|
| 272 | #  endif | 
|---|
| 273 |  | 
|---|
| 274 | #  ifndef PNG_IMPEXP | 
|---|
| 275 | #    define PNG_IMPEXP | 
|---|
| 276 | #  endif | 
|---|
| 277 | #endif | 
|---|
| 278 |  | 
|---|
| 279 | /* In 1.5.2 the definition of PNG_FUNCTION has been changed to always treat | 
|---|
| 280 | * 'attributes' as a storage class - the attributes go at the start of the | 
|---|
| 281 | * function definition, and attributes are always appended regardless of the | 
|---|
| 282 | * compiler.  This considerably simplifies these macros but may cause problems | 
|---|
| 283 | * if any compilers both need function attributes and fail to handle them as | 
|---|
| 284 | * a storage class (this is unlikely.) | 
|---|
| 285 | */ | 
|---|
| 286 | #ifndef PNG_FUNCTION | 
|---|
| 287 | #  define PNG_FUNCTION(type, name, args, attributes) attributes type name args | 
|---|
| 288 | #endif | 
|---|
| 289 |  | 
|---|
| 290 | #ifndef PNG_EXPORT_TYPE | 
|---|
| 291 | #  define PNG_EXPORT_TYPE(type) PNG_IMPEXP type | 
|---|
| 292 | #endif | 
|---|
| 293 |  | 
|---|
| 294 | /* The ordinal value is only relevant when preprocessing png.h for symbol | 
|---|
| 295 | * table entries, so we discard it here.  See the .dfn files in the | 
|---|
| 296 | * scripts directory. | 
|---|
| 297 | */ | 
|---|
| 298 |  | 
|---|
| 299 | #ifndef PNG_EXPORTA | 
|---|
| 300 | #  define PNG_EXPORTA(ordinal, type, name, args, attributes) \ | 
|---|
| 301 | PNG_FUNCTION(PNG_EXPORT_TYPE(type), (PNGAPI name), PNGARG(args), \ | 
|---|
| 302 | PNG_LINKAGE_API attributes) | 
|---|
| 303 | #endif | 
|---|
| 304 |  | 
|---|
| 305 | /* ANSI-C (C90) does not permit a macro to be invoked with an empty argument, | 
|---|
| 306 | * so make something non-empty to satisfy the requirement: | 
|---|
| 307 | */ | 
|---|
| 308 | #define PNG_EMPTY /*empty list*/ | 
|---|
| 309 |  | 
|---|
| 310 | #define PNG_EXPORT(ordinal, type, name, args) \ | 
|---|
| 311 | PNG_EXPORTA(ordinal, type, name, args, PNG_EMPTY) | 
|---|
| 312 |  | 
|---|
| 313 | /* Use PNG_REMOVED to comment out a removed interface. */ | 
|---|
| 314 | #ifndef PNG_REMOVED | 
|---|
| 315 | #  define PNG_REMOVED(ordinal, type, name, args, attributes) | 
|---|
| 316 | #endif | 
|---|
| 317 |  | 
|---|
| 318 | #ifndef PNG_CALLBACK | 
|---|
| 319 | #  define PNG_CALLBACK(type, name, args) type (PNGCBAPI name) PNGARG(args) | 
|---|
| 320 | #endif | 
|---|
| 321 |  | 
|---|
| 322 | /* Support for compiler specific function attributes.  These are used | 
|---|
| 323 | * so that where compiler support is available incorrect use of API | 
|---|
| 324 | * functions in png.h will generate compiler warnings. | 
|---|
| 325 | * | 
|---|
| 326 | * Added at libpng-1.2.41. | 
|---|
| 327 | */ | 
|---|
| 328 |  | 
|---|
| 329 | #ifndef PNG_NO_PEDANTIC_WARNINGS | 
|---|
| 330 | #  ifndef PNG_PEDANTIC_WARNINGS_SUPPORTED | 
|---|
| 331 | #    define PNG_PEDANTIC_WARNINGS_SUPPORTED | 
|---|
| 332 | #  endif | 
|---|
| 333 | #endif | 
|---|
| 334 |  | 
|---|
| 335 | #ifdef PNG_PEDANTIC_WARNINGS_SUPPORTED | 
|---|
| 336 | /* Support for compiler specific function attributes.  These are used | 
|---|
| 337 | * so that where compiler support is available, incorrect use of API | 
|---|
| 338 | * functions in png.h will generate compiler warnings.  Added at libpng | 
|---|
| 339 | * version 1.2.41.  Disabling these removes the warnings but may also produce | 
|---|
| 340 | * less efficient code. | 
|---|
| 341 | */ | 
|---|
| 342 | #  if defined(__clang__) && defined(__has_attribute) | 
|---|
| 343 | /* Clang defines both __clang__ and __GNUC__. Check __clang__ first. */ | 
|---|
| 344 | #    if !defined(PNG_USE_RESULT) && __has_attribute(__warn_unused_result__) | 
|---|
| 345 | #      define PNG_USE_RESULT __attribute__((__warn_unused_result__)) | 
|---|
| 346 | #    endif | 
|---|
| 347 | #    if !defined(PNG_NORETURN) && __has_attribute(__noreturn__) | 
|---|
| 348 | #      define PNG_NORETURN __attribute__((__noreturn__)) | 
|---|
| 349 | #    endif | 
|---|
| 350 | #    if !defined(PNG_ALLOCATED) && __has_attribute(__malloc__) | 
|---|
| 351 | #      define PNG_ALLOCATED __attribute__((__malloc__)) | 
|---|
| 352 | #    endif | 
|---|
| 353 | #    if !defined(PNG_DEPRECATED) && __has_attribute(__deprecated__) | 
|---|
| 354 | #      define PNG_DEPRECATED __attribute__((__deprecated__)) | 
|---|
| 355 | #    endif | 
|---|
| 356 | #    if !defined(PNG_PRIVATE) | 
|---|
| 357 | #      ifdef __has_extension | 
|---|
| 358 | #        if __has_extension(attribute_unavailable_with_message) | 
|---|
| 359 | #          define PNG_PRIVATE __attribute__((__unavailable__(\ | 
|---|
| 360 | "This function is not exported by libpng."))) | 
|---|
| 361 | #        endif | 
|---|
| 362 | #      endif | 
|---|
| 363 | #    endif | 
|---|
| 364 | #    ifndef PNG_RESTRICT | 
|---|
| 365 | #      define PNG_RESTRICT __restrict | 
|---|
| 366 | #    endif | 
|---|
| 367 |  | 
|---|
| 368 | #  elif defined(__GNUC__) | 
|---|
| 369 | #    ifndef PNG_USE_RESULT | 
|---|
| 370 | #      define PNG_USE_RESULT __attribute__((__warn_unused_result__)) | 
|---|
| 371 | #    endif | 
|---|
| 372 | #    ifndef PNG_NORETURN | 
|---|
| 373 | #      define PNG_NORETURN   __attribute__((__noreturn__)) | 
|---|
| 374 | #    endif | 
|---|
| 375 | #    if __GNUC__ >= 3 | 
|---|
| 376 | #      ifndef PNG_ALLOCATED | 
|---|
| 377 | #        define PNG_ALLOCATED  __attribute__((__malloc__)) | 
|---|
| 378 | #      endif | 
|---|
| 379 | #      ifndef PNG_DEPRECATED | 
|---|
| 380 | #        define PNG_DEPRECATED __attribute__((__deprecated__)) | 
|---|
| 381 | #      endif | 
|---|
| 382 | #      ifndef PNG_PRIVATE | 
|---|
| 383 | #        if 0 /* Doesn't work so we use deprecated instead*/ | 
|---|
| 384 | #          define PNG_PRIVATE \ | 
|---|
| 385 | __attribute__((warning("This function is not exported by libpng."))) | 
|---|
| 386 | #        else | 
|---|
| 387 | #          define PNG_PRIVATE \ | 
|---|
| 388 | __attribute__((__deprecated__)) | 
|---|
| 389 | #        endif | 
|---|
| 390 | #      endif | 
|---|
| 391 | #      if ((__GNUC__ > 3) || !defined(__GNUC_MINOR__) || (__GNUC_MINOR__ >= 1)) | 
|---|
| 392 | #        ifndef PNG_RESTRICT | 
|---|
| 393 | #          define PNG_RESTRICT __restrict | 
|---|
| 394 | #        endif | 
|---|
| 395 | #      endif /* __GNUC__.__GNUC_MINOR__ > 3.0 */ | 
|---|
| 396 | #    endif /* __GNUC__ >= 3 */ | 
|---|
| 397 |  | 
|---|
| 398 | #  elif defined(_MSC_VER)  && (_MSC_VER >= 1300) | 
|---|
| 399 | #    ifndef PNG_USE_RESULT | 
|---|
| 400 | #      define PNG_USE_RESULT /* not supported */ | 
|---|
| 401 | #    endif | 
|---|
| 402 | #    ifndef PNG_NORETURN | 
|---|
| 403 | #      define PNG_NORETURN   __declspec(noreturn) | 
|---|
| 404 | #    endif | 
|---|
| 405 | #    ifndef PNG_ALLOCATED | 
|---|
| 406 | #      if (_MSC_VER >= 1400) | 
|---|
| 407 | #        define PNG_ALLOCATED __declspec(restrict) | 
|---|
| 408 | #      endif | 
|---|
| 409 | #    endif | 
|---|
| 410 | #    ifndef PNG_DEPRECATED | 
|---|
| 411 | #      define PNG_DEPRECATED __declspec(deprecated) | 
|---|
| 412 | #    endif | 
|---|
| 413 | #    ifndef PNG_PRIVATE | 
|---|
| 414 | #      define PNG_PRIVATE __declspec(deprecated) | 
|---|
| 415 | #    endif | 
|---|
| 416 | #    ifndef PNG_RESTRICT | 
|---|
| 417 | #      if (_MSC_VER >= 1400) | 
|---|
| 418 | #        define PNG_RESTRICT __restrict | 
|---|
| 419 | #      endif | 
|---|
| 420 | #    endif | 
|---|
| 421 |  | 
|---|
| 422 | #  elif defined(__WATCOMC__) | 
|---|
| 423 | #    ifndef PNG_RESTRICT | 
|---|
| 424 | #      define PNG_RESTRICT __restrict | 
|---|
| 425 | #    endif | 
|---|
| 426 | #  endif | 
|---|
| 427 | #endif /* PNG_PEDANTIC_WARNINGS */ | 
|---|
| 428 |  | 
|---|
| 429 | #ifndef PNG_DEPRECATED | 
|---|
| 430 | #  define PNG_DEPRECATED  /* Use of this function is deprecated */ | 
|---|
| 431 | #endif | 
|---|
| 432 | #ifndef PNG_USE_RESULT | 
|---|
| 433 | #  define PNG_USE_RESULT  /* The result of this function must be checked */ | 
|---|
| 434 | #endif | 
|---|
| 435 | #ifndef PNG_NORETURN | 
|---|
| 436 | #  define PNG_NORETURN    /* This function does not return */ | 
|---|
| 437 | #endif | 
|---|
| 438 | #ifndef PNG_ALLOCATED | 
|---|
| 439 | #  define PNG_ALLOCATED   /* The result of the function is new memory */ | 
|---|
| 440 | #endif | 
|---|
| 441 | #ifndef PNG_PRIVATE | 
|---|
| 442 | #  define PNG_PRIVATE     /* This is a private libpng function */ | 
|---|
| 443 | #endif | 
|---|
| 444 | #ifndef PNG_RESTRICT | 
|---|
| 445 | #  define PNG_RESTRICT    /* The C99 "restrict" feature */ | 
|---|
| 446 | #endif | 
|---|
| 447 |  | 
|---|
| 448 | #ifndef PNG_FP_EXPORT     /* A floating point API. */ | 
|---|
| 449 | #  ifdef PNG_FLOATING_POINT_SUPPORTED | 
|---|
| 450 | #     define PNG_FP_EXPORT(ordinal, type, name, args)\ | 
|---|
| 451 | PNG_EXPORT(ordinal, type, name, args); | 
|---|
| 452 | #  else                   /* No floating point APIs */ | 
|---|
| 453 | #     define PNG_FP_EXPORT(ordinal, type, name, args) | 
|---|
| 454 | #  endif | 
|---|
| 455 | #endif | 
|---|
| 456 | #ifndef PNG_FIXED_EXPORT  /* A fixed point API. */ | 
|---|
| 457 | #  ifdef PNG_FIXED_POINT_SUPPORTED | 
|---|
| 458 | #     define PNG_FIXED_EXPORT(ordinal, type, name, args)\ | 
|---|
| 459 | PNG_EXPORT(ordinal, type, name, args); | 
|---|
| 460 | #  else                   /* No fixed point APIs */ | 
|---|
| 461 | #     define PNG_FIXED_EXPORT(ordinal, type, name, args) | 
|---|
| 462 | #  endif | 
|---|
| 463 | #endif | 
|---|
| 464 |  | 
|---|
| 465 | #ifndef PNG_BUILDING_SYMBOL_TABLE | 
|---|
| 466 | /* Some typedefs to get us started.  These should be safe on most of the common | 
|---|
| 467 | * platforms. | 
|---|
| 468 | * | 
|---|
| 469 | * png_uint_32 and png_int_32 may, currently, be larger than required to hold a | 
|---|
| 470 | * 32-bit value however this is not normally advisable. | 
|---|
| 471 | * | 
|---|
| 472 | * png_uint_16 and png_int_16 should always be two bytes in size - this is | 
|---|
| 473 | * verified at library build time. | 
|---|
| 474 | * | 
|---|
| 475 | * png_byte must always be one byte in size. | 
|---|
| 476 | * | 
|---|
| 477 | * The checks below use constants from limits.h, as defined by the ISOC90 | 
|---|
| 478 | * standard. | 
|---|
| 479 | */ | 
|---|
| 480 | #if CHAR_BIT == 8 && UCHAR_MAX == 255 | 
|---|
| 481 | typedef unsigned char png_byte; | 
|---|
| 482 | #else | 
|---|
| 483 | #  error "libpng requires 8-bit bytes" | 
|---|
| 484 | #endif | 
|---|
| 485 |  | 
|---|
| 486 | #if INT_MIN == -32768 && INT_MAX == 32767 | 
|---|
| 487 | typedef int png_int_16; | 
|---|
| 488 | #elif SHRT_MIN == -32768 && SHRT_MAX == 32767 | 
|---|
| 489 | typedef short png_int_16; | 
|---|
| 490 | #else | 
|---|
| 491 | #  error "libpng requires a signed 16-bit type" | 
|---|
| 492 | #endif | 
|---|
| 493 |  | 
|---|
| 494 | #if UINT_MAX == 65535 | 
|---|
| 495 | typedef unsigned int png_uint_16; | 
|---|
| 496 | #elif USHRT_MAX == 65535 | 
|---|
| 497 | typedef unsigned short png_uint_16; | 
|---|
| 498 | #else | 
|---|
| 499 | #  error "libpng requires an unsigned 16-bit type" | 
|---|
| 500 | #endif | 
|---|
| 501 |  | 
|---|
| 502 | #if INT_MIN < -2147483646 && INT_MAX > 2147483646 | 
|---|
| 503 | typedef int png_int_32; | 
|---|
| 504 | #elif LONG_MIN < -2147483646 && LONG_MAX > 2147483646 | 
|---|
| 505 | typedef long int png_int_32; | 
|---|
| 506 | #else | 
|---|
| 507 | #  error "libpng requires a signed 32-bit (or more) type" | 
|---|
| 508 | #endif | 
|---|
| 509 |  | 
|---|
| 510 | #if UINT_MAX > 4294967294U | 
|---|
| 511 | typedef unsigned int png_uint_32; | 
|---|
| 512 | #elif ULONG_MAX > 4294967294U | 
|---|
| 513 | typedef unsigned long int png_uint_32; | 
|---|
| 514 | #else | 
|---|
| 515 | #  error "libpng requires an unsigned 32-bit (or more) type" | 
|---|
| 516 | #endif | 
|---|
| 517 |  | 
|---|
| 518 | /* Prior to 1.6.0 it was possible to disable the use of size_t, 1.6.0, however, | 
|---|
| 519 | * requires an ISOC90 compiler and relies on consistent behavior of sizeof. | 
|---|
| 520 | */ | 
|---|
| 521 | typedef size_t png_size_t; | 
|---|
| 522 | typedef ptrdiff_t png_ptrdiff_t; | 
|---|
| 523 |  | 
|---|
| 524 | /* libpng needs to know the maximum value of 'size_t' and this controls the | 
|---|
| 525 | * definition of png_alloc_size_t, below.  This maximum value of size_t limits | 
|---|
| 526 | * but does not control the maximum allocations the library makes - there is | 
|---|
| 527 | * direct application control of this through png_set_user_limits(). | 
|---|
| 528 | */ | 
|---|
| 529 | #ifndef PNG_SMALL_SIZE_T | 
|---|
| 530 | /* Compiler specific tests for systems where size_t is known to be less than | 
|---|
| 531 | * 32 bits (some of these systems may no longer work because of the lack of | 
|---|
| 532 | * 'far' support; see above.) | 
|---|
| 533 | */ | 
|---|
| 534 | #  if (defined(__TURBOC__) && !defined(__FLAT__)) ||\ | 
|---|
| 535 | (defined(_MSC_VER) && defined(MAXSEG_64K)) | 
|---|
| 536 | #     define PNG_SMALL_SIZE_T | 
|---|
| 537 | #  endif | 
|---|
| 538 | #endif | 
|---|
| 539 |  | 
|---|
| 540 | /* png_alloc_size_t is guaranteed to be no smaller than png_size_t, and no | 
|---|
| 541 | * smaller than png_uint_32.  Casts from png_size_t or png_uint_32 to | 
|---|
| 542 | * png_alloc_size_t are not necessary; in fact, it is recommended not to use | 
|---|
| 543 | * them at all so that the compiler can complain when something turns out to be | 
|---|
| 544 | * problematic. | 
|---|
| 545 | * | 
|---|
| 546 | * Casts in the other direction (from png_alloc_size_t to png_size_t or | 
|---|
| 547 | * png_uint_32) should be explicitly applied; however, we do not expect to | 
|---|
| 548 | * encounter practical situations that require such conversions. | 
|---|
| 549 | * | 
|---|
| 550 | * PNG_SMALL_SIZE_T must be defined if the maximum value of size_t is less than | 
|---|
| 551 | * 4294967295 - i.e. less than the maximum value of png_uint_32. | 
|---|
| 552 | */ | 
|---|
| 553 | #ifdef PNG_SMALL_SIZE_T | 
|---|
| 554 | typedef png_uint_32 png_alloc_size_t; | 
|---|
| 555 | #else | 
|---|
| 556 | typedef png_size_t png_alloc_size_t; | 
|---|
| 557 | #endif | 
|---|
| 558 |  | 
|---|
| 559 | /* Prior to 1.6.0 libpng offered limited support for Microsoft C compiler | 
|---|
| 560 | * implementations of Intel CPU specific support of user-mode segmented address | 
|---|
| 561 | * spaces, where 16-bit pointers address more than 65536 bytes of memory using | 
|---|
| 562 | * separate 'segment' registers.  The implementation requires two different | 
|---|
| 563 | * types of pointer (only one of which includes the segment value.) | 
|---|
| 564 | * | 
|---|
| 565 | * If required this support is available in version 1.2 of libpng and may be | 
|---|
| 566 | * available in versions through 1.5, although the correctness of the code has | 
|---|
| 567 | * not been verified recently. | 
|---|
| 568 | */ | 
|---|
| 569 |  | 
|---|
| 570 | /* Typedef for floating-point numbers that are converted to fixed-point with a | 
|---|
| 571 | * multiple of 100,000, e.g., gamma | 
|---|
| 572 | */ | 
|---|
| 573 | typedef png_int_32 png_fixed_point; | 
|---|
| 574 |  | 
|---|
| 575 | /* Add typedefs for pointers */ | 
|---|
| 576 | typedef void                  * png_voidp; | 
|---|
| 577 | typedef const void            * png_const_voidp; | 
|---|
| 578 | typedef png_byte              * png_bytep; | 
|---|
| 579 | typedef const png_byte        * png_const_bytep; | 
|---|
| 580 | typedef png_uint_32           * png_uint_32p; | 
|---|
| 581 | typedef const png_uint_32     * png_const_uint_32p; | 
|---|
| 582 | typedef png_int_32            * png_int_32p; | 
|---|
| 583 | typedef const png_int_32      * png_const_int_32p; | 
|---|
| 584 | typedef png_uint_16           * png_uint_16p; | 
|---|
| 585 | typedef const png_uint_16     * png_const_uint_16p; | 
|---|
| 586 | typedef png_int_16            * png_int_16p; | 
|---|
| 587 | typedef const png_int_16      * png_const_int_16p; | 
|---|
| 588 | typedef char                  * png_charp; | 
|---|
| 589 | typedef const char            * png_const_charp; | 
|---|
| 590 | typedef png_fixed_point       * png_fixed_point_p; | 
|---|
| 591 | typedef const png_fixed_point * png_const_fixed_point_p; | 
|---|
| 592 | typedef png_size_t            * png_size_tp; | 
|---|
| 593 | typedef const png_size_t      * png_const_size_tp; | 
|---|
| 594 |  | 
|---|
| 595 | #ifdef PNG_STDIO_SUPPORTED | 
|---|
| 596 | typedef FILE            * png_FILE_p; | 
|---|
| 597 | #endif | 
|---|
| 598 |  | 
|---|
| 599 | #ifdef PNG_FLOATING_POINT_SUPPORTED | 
|---|
| 600 | typedef double       * png_doublep; | 
|---|
| 601 | typedef const double * png_const_doublep; | 
|---|
| 602 | #endif | 
|---|
| 603 |  | 
|---|
| 604 | /* Pointers to pointers; i.e. arrays */ | 
|---|
| 605 | typedef png_byte        * * png_bytepp; | 
|---|
| 606 | typedef png_uint_32     * * png_uint_32pp; | 
|---|
| 607 | typedef png_int_32      * * png_int_32pp; | 
|---|
| 608 | typedef png_uint_16     * * png_uint_16pp; | 
|---|
| 609 | typedef png_int_16      * * png_int_16pp; | 
|---|
| 610 | typedef const char      * * png_const_charpp; | 
|---|
| 611 | typedef char            * * png_charpp; | 
|---|
| 612 | typedef png_fixed_point * * png_fixed_point_pp; | 
|---|
| 613 | #ifdef PNG_FLOATING_POINT_SUPPORTED | 
|---|
| 614 | typedef double          * * png_doublepp; | 
|---|
| 615 | #endif | 
|---|
| 616 |  | 
|---|
| 617 | /* Pointers to pointers to pointers; i.e., pointer to array */ | 
|---|
| 618 | typedef char            * * * png_charppp; | 
|---|
| 619 |  | 
|---|
| 620 | #endif /* PNG_BUILDING_SYMBOL_TABLE */ | 
|---|
| 621 |  | 
|---|
| 622 | #endif /* PNGCONF_H */ | 
|---|
| 623 |  | 
|---|