Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

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