pngconf.h revision 4ce0ee15f268e0161438b4133936cb2826f7fd50
1 2/* pngconf.h - machine configurable file for libpng 3 * 4 * libpng version 1.2.44 - June 26, 2010 5 * Copyright (c) 1998-2010 Glenn Randers-Pehrson 6 * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) 7 * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) 8 * 9 * This code is released under the libpng license. 10 * For conditions of distribution and use, see the disclaimer 11 * and license in png.h 12 */ 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#define PNG_1_2_X 24 25#ifndef PNG_NO_INDEX_SUPPORTED 26# define PNG_INDEX_SUPPORTED 27#endif 28 29/* 30 * PNG_USER_CONFIG has to be defined on the compiler command line. This 31 * includes the resource compiler for Windows DLL configurations. 32 */ 33#ifdef PNG_USER_CONFIG 34# ifndef PNG_USER_PRIVATEBUILD 35# define PNG_USER_PRIVATEBUILD 36# endif 37#include "pngusr.h" 38#endif 39 40/* PNG_CONFIGURE_LIBPNG is set by the "configure" script. */ 41#ifdef PNG_CONFIGURE_LIBPNG 42#ifdef HAVE_CONFIG_H 43#include "config.h" 44#endif 45#endif 46 47/* 48 * Added at libpng-1.2.8 49 * 50 * If you create a private DLL you need to define in "pngusr.h" the followings: 51 * #define PNG_USER_PRIVATEBUILD <Describes by whom and why this version of 52 * the DLL was built> 53 * e.g. #define PNG_USER_PRIVATEBUILD "Build by MyCompany for xyz reasons." 54 * #define PNG_USER_DLLFNAME_POSTFIX <two-letter postfix that serve to 55 * distinguish your DLL from those of the official release. These 56 * correspond to the trailing letters that come after the version 57 * number and must match your private DLL name> 58 * e.g. // private DLL "libpng13gx.dll" 59 * #define PNG_USER_DLLFNAME_POSTFIX "gx" 60 * 61 * The following macros are also at your disposal if you want to complete the 62 * DLL VERSIONINFO structure. 63 * - PNG_USER_VERSIONINFO_COMMENTS 64 * - PNG_USER_VERSIONINFO_COMPANYNAME 65 * - PNG_USER_VERSIONINFO_LEGALTRADEMARKS 66 */ 67 68#ifdef __STDC__ 69#ifdef SPECIALBUILD 70# pragma message("PNG_LIBPNG_SPECIALBUILD (and deprecated SPECIALBUILD)\ 71 are now LIBPNG reserved macros. Use PNG_USER_PRIVATEBUILD instead.") 72#endif 73 74#ifdef PRIVATEBUILD 75# pragma message("PRIVATEBUILD is deprecated.\ 76 Use PNG_USER_PRIVATEBUILD instead.") 77# define PNG_USER_PRIVATEBUILD PRIVATEBUILD 78#endif 79#endif /* __STDC__ */ 80 81#ifndef PNG_VERSION_INFO_ONLY 82 83/* End of material added to libpng-1.2.8 */ 84 85/* Added at libpng-1.2.19, removed at libpng-1.2.20 because it caused trouble 86 Restored at libpng-1.2.21 */ 87#if !defined(PNG_NO_WARN_UNINITIALIZED_ROW) && \ 88 !defined(PNG_WARN_UNINITIALIZED_ROW) 89# define PNG_WARN_UNINITIALIZED_ROW 1 90#endif 91/* End of material added at libpng-1.2.19/1.2.21 */ 92 93/* This is the size of the compression buffer, and thus the size of 94 * an IDAT chunk. Make this whatever size you feel is best for your 95 * machine. One of these will be allocated per png_struct. When this 96 * is full, it writes the data to the disk, and does some other 97 * calculations. Making this an extremely small size will slow 98 * the library down, but you may want to experiment to determine 99 * where it becomes significant, if you are concerned with memory 100 * usage. Note that zlib allocates at least 32Kb also. For readers, 101 * this describes the size of the buffer available to read the data in. 102 * Unless this gets smaller than the size of a row (compressed), 103 * it should not make much difference how big this is. 104 */ 105 106#ifndef PNG_ZBUF_SIZE 107# define PNG_ZBUF_SIZE 8192 108#endif 109 110/* Enable if you want a write-only libpng */ 111 112#ifndef PNG_NO_READ_SUPPORTED 113# define PNG_READ_SUPPORTED 114#endif 115 116/* Enable if you want a read-only libpng */ 117 118#ifndef PNG_NO_WRITE_SUPPORTED 119# define PNG_WRITE_SUPPORTED 120#endif 121 122/* Enabled in 1.2.41. */ 123#ifdef PNG_ALLOW_BENIGN_ERRORS 124# define png_benign_error png_warning 125# define png_chunk_benign_error png_chunk_warning 126#else 127# ifndef PNG_BENIGN_ERRORS_SUPPORTED 128# define png_benign_error png_error 129# define png_chunk_benign_error png_chunk_error 130# endif 131#endif 132 133/* Added in libpng-1.2.41 */ 134#if !defined(PNG_NO_WARNINGS) && !defined(PNG_WARNINGS_SUPPORTED) 135# define PNG_WARNINGS_SUPPORTED 136#endif 137 138#if !defined(PNG_NO_ERROR_TEXT) && !defined(PNG_ERROR_TEXT_SUPPORTED) 139# define PNG_ERROR_TEXT_SUPPORTED 140#endif 141 142#if !defined(PNG_NO_CHECK_cHRM) && !defined(PNG_CHECK_cHRM_SUPPORTED) 143# define PNG_CHECK_cHRM_SUPPORTED 144#endif 145 146/* Enabled by default in 1.2.0. You can disable this if you don't need to 147 * support PNGs that are embedded in MNG datastreams 148 */ 149#if !defined(PNG_1_0_X) && !defined(PNG_NO_MNG_FEATURES) 150# ifndef PNG_MNG_FEATURES_SUPPORTED 151# define PNG_MNG_FEATURES_SUPPORTED 152# endif 153#endif 154 155#ifndef PNG_NO_FLOATING_POINT_SUPPORTED 156# ifndef PNG_FLOATING_POINT_SUPPORTED 157# define PNG_FLOATING_POINT_SUPPORTED 158# endif 159#endif 160 161/* If you are running on a machine where you cannot allocate more 162 * than 64K of memory at once, uncomment this. While libpng will not 163 * normally need that much memory in a chunk (unless you load up a very 164 * large file), zlib needs to know how big of a chunk it can use, and 165 * libpng thus makes sure to check any memory allocation to verify it 166 * will fit into memory. 167#define PNG_MAX_MALLOC_64K 168 */ 169#if defined(MAXSEG_64K) && !defined(PNG_MAX_MALLOC_64K) 170# define PNG_MAX_MALLOC_64K 171#endif 172 173/* Special munging to support doing things the 'cygwin' way: 174 * 'Normal' png-on-win32 defines/defaults: 175 * PNG_BUILD_DLL -- building dll 176 * PNG_USE_DLL -- building an application, linking to dll 177 * (no define) -- building static library, or building an 178 * application and linking to the static lib 179 * 'Cygwin' defines/defaults: 180 * PNG_BUILD_DLL -- (ignored) building the dll 181 * (no define) -- (ignored) building an application, linking to the dll 182 * PNG_STATIC -- (ignored) building the static lib, or building an 183 * application that links to the static lib. 184 * ALL_STATIC -- (ignored) building various static libs, or building an 185 * application that links to the static libs. 186 * Thus, 187 * a cygwin user should define either PNG_BUILD_DLL or PNG_STATIC, and 188 * this bit of #ifdefs will define the 'correct' config variables based on 189 * that. If a cygwin user *wants* to define 'PNG_USE_DLL' that's okay, but 190 * unnecessary. 191 * 192 * Also, the precedence order is: 193 * ALL_STATIC (since we can't #undef something outside our namespace) 194 * PNG_BUILD_DLL 195 * PNG_STATIC 196 * (nothing) == PNG_USE_DLL 197 * 198 * CYGWIN (2002-01-20): The preceding is now obsolete. With the advent 199 * of auto-import in binutils, we no longer need to worry about 200 * __declspec(dllexport) / __declspec(dllimport) and friends. Therefore, 201 * we don't need to worry about PNG_STATIC or ALL_STATIC when it comes 202 * to __declspec() stuff. However, we DO need to worry about 203 * PNG_BUILD_DLL and PNG_STATIC because those change some defaults 204 * such as CONSOLE_IO and whether GLOBAL_ARRAYS are allowed. 205 */ 206#ifdef __CYGWIN__ 207# ifdef ALL_STATIC 208# ifdef PNG_BUILD_DLL 209# undef PNG_BUILD_DLL 210# endif 211# ifdef PNG_USE_DLL 212# undef PNG_USE_DLL 213# endif 214# ifdef PNG_DLL 215# undef PNG_DLL 216# endif 217# ifndef PNG_STATIC 218# define PNG_STATIC 219# endif 220# else 221# ifdef PNG_BUILD_DLL 222# ifdef PNG_STATIC 223# undef PNG_STATIC 224# endif 225# ifdef PNG_USE_DLL 226# undef PNG_USE_DLL 227# endif 228# ifndef PNG_DLL 229# define PNG_DLL 230# endif 231# else 232# ifdef PNG_STATIC 233# ifdef PNG_USE_DLL 234# undef PNG_USE_DLL 235# endif 236# ifdef PNG_DLL 237# undef PNG_DLL 238# endif 239# else 240# ifndef PNG_USE_DLL 241# define PNG_USE_DLL 242# endif 243# ifndef PNG_DLL 244# define PNG_DLL 245# endif 246# endif 247# endif 248# endif 249#endif 250 251/* This protects us against compilers that run on a windowing system 252 * and thus don't have or would rather us not use the stdio types: 253 * stdin, stdout, and stderr. The only one currently used is stderr 254 * in png_error() and png_warning(). #defining PNG_NO_CONSOLE_IO will 255 * prevent these from being compiled and used. #defining PNG_NO_STDIO 256 * will also prevent these, plus will prevent the entire set of stdio 257 * macros and functions (FILE *, printf, etc.) from being compiled and used, 258 * unless (PNG_DEBUG > 0) has been #defined. 259 * 260 * #define PNG_NO_CONSOLE_IO 261 * #define PNG_NO_STDIO 262 */ 263 264#if !defined(PNG_NO_STDIO) && !defined(PNG_STDIO_SUPPORTED) 265# define PNG_STDIO_SUPPORTED 266#endif 267 268#ifdef _WIN32_WCE 269# include <windows.h> 270 /* Console I/O functions are not supported on WindowsCE */ 271# define PNG_NO_CONSOLE_IO 272 /* abort() may not be supported on some/all Windows CE platforms */ 273# define PNG_ABORT() exit(-1) 274# ifdef PNG_DEBUG 275# undef PNG_DEBUG 276# endif 277#endif 278 279#ifdef PNG_BUILD_DLL 280# ifndef PNG_CONSOLE_IO_SUPPORTED 281# ifndef PNG_NO_CONSOLE_IO 282# define PNG_NO_CONSOLE_IO 283# endif 284# endif 285#endif 286 287# ifdef PNG_NO_STDIO 288# ifndef PNG_NO_CONSOLE_IO 289# define PNG_NO_CONSOLE_IO 290# endif 291# ifdef PNG_DEBUG 292# if (PNG_DEBUG > 0) 293# include <stdio.h> 294# endif 295# endif 296# else 297# ifndef _WIN32_WCE 298/* "stdio.h" functions are not supported on WindowsCE */ 299# include <stdio.h> 300# endif 301# endif 302 303#if !(defined PNG_NO_CONSOLE_IO) && !defined(PNG_CONSOLE_IO_SUPPORTED) 304# define PNG_CONSOLE_IO_SUPPORTED 305#endif 306 307/* This macro protects us against machines that don't have function 308 * prototypes (ie K&R style headers). If your compiler does not handle 309 * function prototypes, define this macro and use the included ansi2knr. 310 * I've always been able to use _NO_PROTO as the indicator, but you may 311 * need to drag the empty declaration out in front of here, or change the 312 * ifdef to suit your own needs. 313 */ 314#ifndef PNGARG 315 316#ifdef OF /* zlib prototype munger */ 317# define PNGARG(arglist) OF(arglist) 318#else 319 320#ifdef _NO_PROTO 321# define PNGARG(arglist) () 322# ifndef PNG_TYPECAST_NULL 323# define PNG_TYPECAST_NULL 324# endif 325#else 326# define PNGARG(arglist) arglist 327#endif /* _NO_PROTO */ 328 329 330#endif /* OF */ 331 332#endif /* PNGARG */ 333 334/* Try to determine if we are compiling on a Mac. Note that testing for 335 * just __MWERKS__ is not good enough, because the Codewarrior is now used 336 * on non-Mac platforms. 337 */ 338#ifndef MACOS 339# if (defined(__MWERKS__) && defined(macintosh)) || defined(applec) || \ 340 defined(THINK_C) || defined(__SC__) || defined(TARGET_OS_MAC) 341# define MACOS 342# endif 343#endif 344 345/* enough people need this for various reasons to include it here */ 346#if !defined(MACOS) && !defined(RISCOS) && !defined(_WIN32_WCE) 347# include <sys/types.h> 348#endif 349 350#if !defined(PNG_SETJMP_NOT_SUPPORTED) && !defined(PNG_NO_SETJMP_SUPPORTED) 351# define PNG_SETJMP_SUPPORTED 352#endif 353 354#ifdef PNG_SETJMP_SUPPORTED 355/* This is an attempt to force a single setjmp behaviour on Linux. If 356 * the X config stuff didn't define _BSD_SOURCE we wouldn't need this. 357 * 358 * You can bypass this test if you know that your application uses exactly 359 * the same setjmp.h that was included when libpng was built. Only define 360 * PNG_SKIP_SETJMP_CHECK while building your application, prior to the 361 * application's '#include "png.h"'. Don't define PNG_SKIP_SETJMP_CHECK 362 * while building a separate libpng library for general use. 363 */ 364 365# ifndef PNG_SKIP_SETJMP_CHECK 366# ifdef __linux__ 367# ifdef _BSD_SOURCE 368# define PNG_SAVE_BSD_SOURCE 369# undef _BSD_SOURCE 370# endif 371# ifdef _SETJMP_H 372 /* If you encounter a compiler error here, see the explanation 373 * near the end of INSTALL. 374 */ 375 __pngconf.h__ in libpng already includes setjmp.h; 376 __dont__ include it again.; 377# endif 378# endif /* __linux__ */ 379# endif /* PNG_SKIP_SETJMP_CHECK */ 380 381 /* include setjmp.h for error handling */ 382# include <setjmp.h> 383 384# ifdef __linux__ 385# ifdef PNG_SAVE_BSD_SOURCE 386# ifndef _BSD_SOURCE 387# define _BSD_SOURCE 388# endif 389# undef PNG_SAVE_BSD_SOURCE 390# endif 391# endif /* __linux__ */ 392#endif /* PNG_SETJMP_SUPPORTED */ 393 394#ifdef BSD 395# include <strings.h> 396#else 397# include <string.h> 398#endif 399 400/* Other defines for things like memory and the like can go here. */ 401#ifdef PNG_INTERNAL 402 403#include <stdlib.h> 404 405/* The functions exported by PNG_EXTERN are PNG_INTERNAL functions, which 406 * aren't usually used outside the library (as far as I know), so it is 407 * debatable if they should be exported at all. In the future, when it is 408 * possible to have run-time registry of chunk-handling functions, some of 409 * these will be made available again. 410#define PNG_EXTERN extern 411 */ 412#define PNG_EXTERN 413 414/* Other defines specific to compilers can go here. Try to keep 415 * them inside an appropriate ifdef/endif pair for portability. 416 */ 417 418#ifdef PNG_FLOATING_POINT_SUPPORTED 419# ifdef MACOS 420 /* We need to check that <math.h> hasn't already been included earlier 421 * as it seems it doesn't agree with <fp.h>, yet we should really use 422 * <fp.h> if possible. 423 */ 424# if !defined(__MATH_H__) && !defined(__MATH_H) && !defined(__cmath__) 425# include <fp.h> 426# endif 427# else 428# include <math.h> 429# endif 430# if defined(_AMIGA) && defined(__SASC) && defined(_M68881) 431 /* Amiga SAS/C: We must include builtin FPU functions when compiling using 432 * MATH=68881 433 */ 434# include <m68881.h> 435# endif 436#endif 437 438/* Codewarrior on NT has linking problems without this. */ 439#if (defined(__MWERKS__) && defined(WIN32)) || defined(__STDC__) 440# define PNG_ALWAYS_EXTERN 441#endif 442 443/* This provides the non-ANSI (far) memory allocation routines. */ 444#if defined(__TURBOC__) && defined(__MSDOS__) 445# include <mem.h> 446# include <alloc.h> 447#endif 448 449/* I have no idea why is this necessary... */ 450#if defined(_MSC_VER) && (defined(WIN32) || defined(_Windows) || \ 451 defined(_WINDOWS) || defined(_WIN32) || defined(__WIN32__)) 452# include <malloc.h> 453#endif 454 455/* This controls how fine the dithering gets. As this allocates 456 * a largish chunk of memory (32K), those who are not as concerned 457 * with dithering quality can decrease some or all of these. 458 */ 459#ifndef PNG_DITHER_RED_BITS 460# define PNG_DITHER_RED_BITS 5 461#endif 462#ifndef PNG_DITHER_GREEN_BITS 463# define PNG_DITHER_GREEN_BITS 5 464#endif 465#ifndef PNG_DITHER_BLUE_BITS 466# define PNG_DITHER_BLUE_BITS 5 467#endif 468 469/* This controls how fine the gamma correction becomes when you 470 * are only interested in 8 bits anyway. Increasing this value 471 * results in more memory being used, and more pow() functions 472 * being called to fill in the gamma tables. Don't set this value 473 * less then 8, and even that may not work (I haven't tested it). 474 */ 475 476#ifndef PNG_MAX_GAMMA_8 477# define PNG_MAX_GAMMA_8 11 478#endif 479 480/* This controls how much a difference in gamma we can tolerate before 481 * we actually start doing gamma conversion. 482 */ 483#ifndef PNG_GAMMA_THRESHOLD 484# define PNG_GAMMA_THRESHOLD 0.05 485#endif 486 487#endif /* PNG_INTERNAL */ 488 489/* The following uses const char * instead of char * for error 490 * and warning message functions, so some compilers won't complain. 491 * If you do not want to use const, define PNG_NO_CONST here. 492 */ 493 494#ifndef PNG_NO_CONST 495# define PNG_CONST const 496#else 497# define PNG_CONST 498#endif 499 500/* The following defines give you the ability to remove code from the 501 * library that you will not be using. I wish I could figure out how to 502 * automate this, but I can't do that without making it seriously hard 503 * on the users. So if you are not using an ability, change the #define 504 * to and #undef, and that part of the library will not be compiled. If 505 * your linker can't find a function, you may want to make sure the 506 * ability is defined here. Some of these depend upon some others being 507 * defined. I haven't figured out all the interactions here, so you may 508 * have to experiment awhile to get everything to compile. If you are 509 * creating or using a shared library, you probably shouldn't touch this, 510 * as it will affect the size of the structures, and this will cause bad 511 * things to happen if the library and/or application ever change. 512 */ 513 514/* Any features you will not be using can be undef'ed here */ 515 516/* GR-P, 0.96a: Set "*TRANSFORMS_SUPPORTED as default but allow user 517 * to turn it off with "*TRANSFORMS_NOT_SUPPORTED" or *PNG_NO_*_TRANSFORMS 518 * on the compile line, then pick and choose which ones to define without 519 * having to edit this file. It is safe to use the *TRANSFORMS_NOT_SUPPORTED 520 * if you only want to have a png-compliant reader/writer but don't need 521 * any of the extra transformations. This saves about 80 kbytes in a 522 * typical installation of the library. (PNG_NO_* form added in version 523 * 1.0.1c, for consistency) 524 */ 525 526/* The size of the png_text structure changed in libpng-1.0.6 when 527 * iTXt support was added. iTXt support was turned off by default through 528 * libpng-1.2.x, to support old apps that malloc the png_text structure 529 * instead of calling png_set_text() and letting libpng malloc it. It 530 * will be turned on by default in libpng-1.4.0. 531 */ 532 533#if defined(PNG_1_0_X) || defined (PNG_1_2_X) 534# ifndef PNG_NO_iTXt_SUPPORTED 535# define PNG_NO_iTXt_SUPPORTED 536# endif 537# ifndef PNG_NO_READ_iTXt 538# define PNG_NO_READ_iTXt 539# endif 540# ifndef PNG_NO_WRITE_iTXt 541# define PNG_NO_WRITE_iTXt 542# endif 543#endif 544 545#if !defined(PNG_NO_iTXt_SUPPORTED) 546# if !defined(PNG_READ_iTXt_SUPPORTED) && !defined(PNG_NO_READ_iTXt) 547# define PNG_READ_iTXt 548# endif 549# if !defined(PNG_WRITE_iTXt_SUPPORTED) && !defined(PNG_NO_WRITE_iTXt) 550# define PNG_WRITE_iTXt 551# endif 552#endif 553 554/* The following support, added after version 1.0.0, can be turned off here en 555 * masse by defining PNG_LEGACY_SUPPORTED in case you need binary compatibility 556 * with old applications that require the length of png_struct and png_info 557 * to remain unchanged. 558 */ 559 560#ifdef PNG_LEGACY_SUPPORTED 561# define PNG_NO_FREE_ME 562# define PNG_NO_READ_UNKNOWN_CHUNKS 563# define PNG_NO_WRITE_UNKNOWN_CHUNKS 564# define PNG_NO_HANDLE_AS_UNKNOWN 565# define PNG_NO_READ_USER_CHUNKS 566# define PNG_NO_READ_iCCP 567# define PNG_NO_WRITE_iCCP 568# define PNG_NO_READ_iTXt 569# define PNG_NO_WRITE_iTXt 570# define PNG_NO_READ_sCAL 571# define PNG_NO_WRITE_sCAL 572# define PNG_NO_READ_sPLT 573# define PNG_NO_WRITE_sPLT 574# define PNG_NO_INFO_IMAGE 575# define PNG_NO_READ_RGB_TO_GRAY 576# define PNG_NO_READ_USER_TRANSFORM 577# define PNG_NO_WRITE_USER_TRANSFORM 578# define PNG_NO_USER_MEM 579# define PNG_NO_READ_EMPTY_PLTE 580# define PNG_NO_MNG_FEATURES 581# define PNG_NO_FIXED_POINT_SUPPORTED 582#endif 583 584/* Ignore attempt to turn off both floating and fixed point support */ 585#if !defined(PNG_FLOATING_POINT_SUPPORTED) || \ 586 !defined(PNG_NO_FIXED_POINT_SUPPORTED) 587# define PNG_FIXED_POINT_SUPPORTED 588#endif 589 590#ifndef PNG_NO_FREE_ME 591# define PNG_FREE_ME_SUPPORTED 592#endif 593 594#ifdef PNG_READ_SUPPORTED 595 596#if !defined(PNG_READ_TRANSFORMS_NOT_SUPPORTED) && \ 597 !defined(PNG_NO_READ_TRANSFORMS) 598# define PNG_READ_TRANSFORMS_SUPPORTED 599#endif 600 601#ifdef PNG_READ_TRANSFORMS_SUPPORTED 602# ifndef PNG_NO_READ_EXPAND 603# define PNG_READ_EXPAND_SUPPORTED 604# endif 605# ifndef PNG_NO_READ_SHIFT 606# define PNG_READ_SHIFT_SUPPORTED 607# endif 608# ifndef PNG_NO_READ_PACK 609# define PNG_READ_PACK_SUPPORTED 610# endif 611# ifndef PNG_NO_READ_BGR 612# define PNG_READ_BGR_SUPPORTED 613# endif 614# ifndef PNG_NO_READ_SWAP 615# define PNG_READ_SWAP_SUPPORTED 616# endif 617# ifndef PNG_NO_READ_PACKSWAP 618# define PNG_READ_PACKSWAP_SUPPORTED 619# endif 620# ifndef PNG_NO_READ_INVERT 621# define PNG_READ_INVERT_SUPPORTED 622# endif 623# ifndef PNG_NO_READ_DITHER 624# define PNG_READ_DITHER_SUPPORTED 625# endif 626# ifndef PNG_NO_READ_BACKGROUND 627# define PNG_READ_BACKGROUND_SUPPORTED 628# endif 629# ifndef PNG_NO_READ_16_TO_8 630# define PNG_READ_16_TO_8_SUPPORTED 631# endif 632# ifndef PNG_NO_READ_FILLER 633# define PNG_READ_FILLER_SUPPORTED 634# endif 635# ifndef PNG_NO_READ_GAMMA 636# define PNG_READ_GAMMA_SUPPORTED 637# endif 638# ifndef PNG_NO_READ_GRAY_TO_RGB 639# define PNG_READ_GRAY_TO_RGB_SUPPORTED 640# endif 641# ifndef PNG_NO_READ_SWAP_ALPHA 642# define PNG_READ_SWAP_ALPHA_SUPPORTED 643# endif 644# ifndef PNG_NO_READ_INVERT_ALPHA 645# define PNG_READ_INVERT_ALPHA_SUPPORTED 646# endif 647# ifndef PNG_NO_READ_STRIP_ALPHA 648# define PNG_READ_STRIP_ALPHA_SUPPORTED 649# endif 650# ifndef PNG_NO_READ_USER_TRANSFORM 651# define PNG_READ_USER_TRANSFORM_SUPPORTED 652# endif 653# ifndef PNG_NO_READ_RGB_TO_GRAY 654# define PNG_READ_RGB_TO_GRAY_SUPPORTED 655# endif 656#endif /* PNG_READ_TRANSFORMS_SUPPORTED */ 657 658/* PNG_PROGRESSIVE_READ_NOT_SUPPORTED is deprecated. */ 659#if !defined(PNG_NO_PROGRESSIVE_READ) && \ 660 !defined(PNG_PROGRESSIVE_READ_NOT_SUPPORTED) /* if you don't do progressive */ 661# define PNG_PROGRESSIVE_READ_SUPPORTED /* reading. This is not talking */ 662#endif /* about interlacing capability! You'll */ 663 /* still have interlacing unless you change the following define: */ 664#define PNG_READ_INTERLACING_SUPPORTED /* required for PNG-compliant decoders */ 665 666/* PNG_NO_SEQUENTIAL_READ_SUPPORTED is deprecated. */ 667#if !defined(PNG_NO_SEQUENTIAL_READ) && \ 668 !defined(PNG_SEQUENTIAL_READ_SUPPORTED) && \ 669 !defined(PNG_NO_SEQUENTIAL_READ_SUPPORTED) 670# define PNG_SEQUENTIAL_READ_SUPPORTED 671#endif 672 673#define PNG_READ_INTERLACING_SUPPORTED /* required in PNG-compliant decoders */ 674 675#ifndef PNG_NO_READ_COMPOSITE_NODIV 676# ifndef PNG_NO_READ_COMPOSITED_NODIV /* libpng-1.0.x misspelling */ 677# define PNG_READ_COMPOSITE_NODIV_SUPPORTED /* well tested on Intel, SGI */ 678# endif 679#endif 680 681#if defined(PNG_1_0_X) || defined (PNG_1_2_X) 682/* Deprecated, will be removed from version 2.0.0. 683 Use PNG_MNG_FEATURES_SUPPORTED instead. */ 684#ifndef PNG_NO_READ_EMPTY_PLTE 685# define PNG_READ_EMPTY_PLTE_SUPPORTED 686#endif 687#endif 688 689#endif /* PNG_READ_SUPPORTED */ 690 691#ifdef PNG_WRITE_SUPPORTED 692 693# if !defined(PNG_WRITE_TRANSFORMS_NOT_SUPPORTED) && \ 694 !defined(PNG_NO_WRITE_TRANSFORMS) 695# define PNG_WRITE_TRANSFORMS_SUPPORTED 696#endif 697 698#ifdef PNG_WRITE_TRANSFORMS_SUPPORTED 699# ifndef PNG_NO_WRITE_SHIFT 700# define PNG_WRITE_SHIFT_SUPPORTED 701# endif 702# ifndef PNG_NO_WRITE_PACK 703# define PNG_WRITE_PACK_SUPPORTED 704# endif 705# ifndef PNG_NO_WRITE_BGR 706# define PNG_WRITE_BGR_SUPPORTED 707# endif 708# ifndef PNG_NO_WRITE_SWAP 709# define PNG_WRITE_SWAP_SUPPORTED 710# endif 711# ifndef PNG_NO_WRITE_PACKSWAP 712# define PNG_WRITE_PACKSWAP_SUPPORTED 713# endif 714# ifndef PNG_NO_WRITE_INVERT 715# define PNG_WRITE_INVERT_SUPPORTED 716# endif 717# ifndef PNG_NO_WRITE_FILLER 718# define PNG_WRITE_FILLER_SUPPORTED /* same as WRITE_STRIP_ALPHA */ 719# endif 720# ifndef PNG_NO_WRITE_SWAP_ALPHA 721# define PNG_WRITE_SWAP_ALPHA_SUPPORTED 722# endif 723#ifndef PNG_1_0_X 724# ifndef PNG_NO_WRITE_INVERT_ALPHA 725# define PNG_WRITE_INVERT_ALPHA_SUPPORTED 726# endif 727#endif 728# ifndef PNG_NO_WRITE_USER_TRANSFORM 729# define PNG_WRITE_USER_TRANSFORM_SUPPORTED 730# endif 731#endif /* PNG_WRITE_TRANSFORMS_SUPPORTED */ 732 733#if !defined(PNG_NO_WRITE_INTERLACING_SUPPORTED) && \ 734 !defined(PNG_WRITE_INTERLACING_SUPPORTED) 735#define PNG_WRITE_INTERLACING_SUPPORTED /* not required for PNG-compliant 736 encoders, but can cause trouble 737 if left undefined */ 738#endif 739 740#if !defined(PNG_NO_WRITE_WEIGHTED_FILTER) && \ 741 !defined(PNG_WRITE_WEIGHTED_FILTER) && \ 742 defined(PNG_FLOATING_POINT_SUPPORTED) 743# define PNG_WRITE_WEIGHTED_FILTER_SUPPORTED 744#endif 745 746#ifndef PNG_NO_WRITE_FLUSH 747# define PNG_WRITE_FLUSH_SUPPORTED 748#endif 749 750#if defined(PNG_1_0_X) || defined (PNG_1_2_X) 751/* Deprecated, see PNG_MNG_FEATURES_SUPPORTED, above */ 752#ifndef PNG_NO_WRITE_EMPTY_PLTE 753# define PNG_WRITE_EMPTY_PLTE_SUPPORTED 754#endif 755#endif 756 757#endif /* PNG_WRITE_SUPPORTED */ 758 759#ifndef PNG_1_0_X 760# ifndef PNG_NO_ERROR_NUMBERS 761# define PNG_ERROR_NUMBERS_SUPPORTED 762# endif 763#endif /* PNG_1_0_X */ 764 765#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ 766 defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) 767# ifndef PNG_NO_USER_TRANSFORM_PTR 768# define PNG_USER_TRANSFORM_PTR_SUPPORTED 769# endif 770#endif 771 772#ifndef PNG_NO_STDIO 773# define PNG_TIME_RFC1123_SUPPORTED 774#endif 775 776/* This adds extra functions in pngget.c for accessing data from the 777 * info pointer (added in version 0.99) 778 * png_get_image_width() 779 * png_get_image_height() 780 * png_get_bit_depth() 781 * png_get_color_type() 782 * png_get_compression_type() 783 * png_get_filter_type() 784 * png_get_interlace_type() 785 * png_get_pixel_aspect_ratio() 786 * png_get_pixels_per_meter() 787 * png_get_x_offset_pixels() 788 * png_get_y_offset_pixels() 789 * png_get_x_offset_microns() 790 * png_get_y_offset_microns() 791 */ 792#if !defined(PNG_NO_EASY_ACCESS) && !defined(PNG_EASY_ACCESS_SUPPORTED) 793# define PNG_EASY_ACCESS_SUPPORTED 794#endif 795 796/* PNG_ASSEMBLER_CODE was enabled by default in version 1.2.0 797 * and removed from version 1.2.20. The following will be removed 798 * from libpng-1.4.0 799*/ 800 801#if defined(PNG_READ_SUPPORTED) && !defined(PNG_NO_OPTIMIZED_CODE) 802# ifndef PNG_OPTIMIZED_CODE_SUPPORTED 803# define PNG_OPTIMIZED_CODE_SUPPORTED 804# endif 805#endif 806 807#if defined(PNG_READ_SUPPORTED) && !defined(PNG_NO_ASSEMBLER_CODE) 808# ifndef PNG_ASSEMBLER_CODE_SUPPORTED 809# define PNG_ASSEMBLER_CODE_SUPPORTED 810# endif 811 812# if defined(__GNUC__) && defined(__x86_64__) && (__GNUC__ < 4) 813 /* work around 64-bit gcc compiler bugs in gcc-3.x */ 814# if !defined(PNG_MMX_CODE_SUPPORTED) && !defined(PNG_NO_MMX_CODE) 815# define PNG_NO_MMX_CODE 816# endif 817# endif 818 819# ifdef __APPLE__ 820# if !defined(PNG_MMX_CODE_SUPPORTED) && !defined(PNG_NO_MMX_CODE) 821# define PNG_NO_MMX_CODE 822# endif 823# endif 824 825# if (defined(__MWERKS__) && ((__MWERKS__ < 0x0900) || macintosh)) 826# if !defined(PNG_MMX_CODE_SUPPORTED) && !defined(PNG_NO_MMX_CODE) 827# define PNG_NO_MMX_CODE 828# endif 829# endif 830 831# if !defined(PNG_MMX_CODE_SUPPORTED) && !defined(PNG_NO_MMX_CODE) 832# define PNG_MMX_CODE_SUPPORTED 833# endif 834 835#endif 836/* end of obsolete code to be removed from libpng-1.4.0 */ 837 838/* Added at libpng-1.2.0 */ 839#ifndef PNG_1_0_X 840#if !defined(PNG_NO_USER_MEM) && !defined(PNG_USER_MEM_SUPPORTED) 841# define PNG_USER_MEM_SUPPORTED 842#endif 843#endif /* PNG_1_0_X */ 844 845/* Added at libpng-1.2.6 */ 846#ifndef PNG_1_0_X 847# ifndef PNG_SET_USER_LIMITS_SUPPORTED 848# ifndef PNG_NO_SET_USER_LIMITS 849# define PNG_SET_USER_LIMITS_SUPPORTED 850# endif 851# endif 852#endif /* PNG_1_0_X */ 853 854/* Added at libpng-1.0.53 and 1.2.43 */ 855#ifndef PNG_USER_LIMITS_SUPPORTED 856# ifndef PNG_NO_USER_LIMITS 857# define PNG_USER_LIMITS_SUPPORTED 858# endif 859#endif 860 861/* Added at libpng-1.0.16 and 1.2.6. To accept all valid PNGS no matter 862 * how large, set these limits to 0x7fffffffL 863 */ 864#ifndef PNG_USER_WIDTH_MAX 865# define PNG_USER_WIDTH_MAX 1000000L 866#endif 867#ifndef PNG_USER_HEIGHT_MAX 868# define PNG_USER_HEIGHT_MAX 1000000L 869#endif 870 871/* Added at libpng-1.2.43. To accept all valid PNGs no matter 872 * how large, set these two limits to 0. 873 */ 874#ifndef PNG_USER_CHUNK_CACHE_MAX 875# define PNG_USER_CHUNK_CACHE_MAX 0 876#endif 877 878/* Added at libpng-1.2.43 */ 879#ifndef PNG_USER_CHUNK_MALLOC_MAX 880# define PNG_USER_CHUNK_MALLOC_MAX 0 881#endif 882 883#ifndef PNG_LITERAL_SHARP 884# define PNG_LITERAL_SHARP 0x23 885#endif 886#ifndef PNG_LITERAL_LEFT_SQUARE_BRACKET 887# define PNG_LITERAL_LEFT_SQUARE_BRACKET 0x5b 888#endif 889#ifndef PNG_LITERAL_RIGHT_SQUARE_BRACKET 890# define PNG_LITERAL_RIGHT_SQUARE_BRACKET 0x5d 891#endif 892 893/* Added at libpng-1.2.34 */ 894#ifndef PNG_STRING_NEWLINE 895#define PNG_STRING_NEWLINE "\n" 896#endif 897 898/* These are currently experimental features, define them if you want */ 899 900/* very little testing */ 901/* 902#ifdef PNG_READ_SUPPORTED 903# ifndef PNG_READ_16_TO_8_ACCURATE_SCALE_SUPPORTED 904# define PNG_READ_16_TO_8_ACCURATE_SCALE_SUPPORTED 905# endif 906#endif 907*/ 908 909/* This is only for PowerPC big-endian and 680x0 systems */ 910/* some testing */ 911/* 912#ifndef PNG_READ_BIG_ENDIAN_SUPPORTED 913# define PNG_READ_BIG_ENDIAN_SUPPORTED 914#endif 915*/ 916 917/* Buggy compilers (e.g., gcc 2.7.2.2) need this */ 918/* 919#define PNG_NO_POINTER_INDEXING 920*/ 921 922#if !defined(PNG_NO_POINTER_INDEXING) && \ 923 !defined(PNG_POINTER_INDEXING_SUPPORTED) 924# define PNG_POINTER_INDEXING_SUPPORTED 925#endif 926 927/* These functions are turned off by default, as they will be phased out. */ 928/* 929#define PNG_USELESS_TESTS_SUPPORTED 930#define PNG_CORRECT_PALETTE_SUPPORTED 931*/ 932 933/* Any chunks you are not interested in, you can undef here. The 934 * ones that allocate memory may be expecially important (hIST, 935 * tEXt, zTXt, tRNS, pCAL). Others will just save time and make png_info 936 * a bit smaller. 937 */ 938 939#if defined(PNG_READ_SUPPORTED) && \ 940 !defined(PNG_READ_ANCILLARY_CHUNKS_NOT_SUPPORTED) && \ 941 !defined(PNG_NO_READ_ANCILLARY_CHUNKS) 942# define PNG_READ_ANCILLARY_CHUNKS_SUPPORTED 943#endif 944 945#if defined(PNG_WRITE_SUPPORTED) && \ 946 !defined(PNG_WRITE_ANCILLARY_CHUNKS_NOT_SUPPORTED) && \ 947 !defined(PNG_NO_WRITE_ANCILLARY_CHUNKS) 948# define PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED 949#endif 950 951#ifdef PNG_READ_ANCILLARY_CHUNKS_SUPPORTED 952 953#ifdef PNG_NO_READ_TEXT 954# define PNG_NO_READ_iTXt 955# define PNG_NO_READ_tEXt 956# define PNG_NO_READ_zTXt 957#endif 958#ifndef PNG_NO_READ_bKGD 959# define PNG_READ_bKGD_SUPPORTED 960# define PNG_bKGD_SUPPORTED 961#endif 962#ifndef PNG_NO_READ_cHRM 963# define PNG_READ_cHRM_SUPPORTED 964# define PNG_cHRM_SUPPORTED 965#endif 966#ifndef PNG_NO_READ_gAMA 967# define PNG_READ_gAMA_SUPPORTED 968# define PNG_gAMA_SUPPORTED 969#endif 970#ifndef PNG_NO_READ_hIST 971# define PNG_READ_hIST_SUPPORTED 972# define PNG_hIST_SUPPORTED 973#endif 974#ifndef PNG_NO_READ_iCCP 975# define PNG_READ_iCCP_SUPPORTED 976# define PNG_iCCP_SUPPORTED 977#endif 978#ifndef PNG_NO_READ_iTXt 979# ifndef PNG_READ_iTXt_SUPPORTED 980# define PNG_READ_iTXt_SUPPORTED 981# endif 982# ifndef PNG_iTXt_SUPPORTED 983# define PNG_iTXt_SUPPORTED 984# endif 985#endif 986#ifndef PNG_NO_READ_oFFs 987# define PNG_READ_oFFs_SUPPORTED 988# define PNG_oFFs_SUPPORTED 989#endif 990#ifndef PNG_NO_READ_pCAL 991# define PNG_READ_pCAL_SUPPORTED 992# define PNG_pCAL_SUPPORTED 993#endif 994#ifndef PNG_NO_READ_sCAL 995# define PNG_READ_sCAL_SUPPORTED 996# define PNG_sCAL_SUPPORTED 997#endif 998#ifndef PNG_NO_READ_pHYs 999# define PNG_READ_pHYs_SUPPORTED 1000# define PNG_pHYs_SUPPORTED 1001#endif 1002#ifndef PNG_NO_READ_sBIT 1003# define PNG_READ_sBIT_SUPPORTED 1004# define PNG_sBIT_SUPPORTED 1005#endif 1006#ifndef PNG_NO_READ_sPLT 1007# define PNG_READ_sPLT_SUPPORTED 1008# define PNG_sPLT_SUPPORTED 1009#endif 1010#ifndef PNG_NO_READ_sRGB 1011# define PNG_READ_sRGB_SUPPORTED 1012# define PNG_sRGB_SUPPORTED 1013#endif 1014#ifndef PNG_NO_READ_tEXt 1015# define PNG_READ_tEXt_SUPPORTED 1016# define PNG_tEXt_SUPPORTED 1017#endif 1018#ifndef PNG_NO_READ_tIME 1019# define PNG_READ_tIME_SUPPORTED 1020# define PNG_tIME_SUPPORTED 1021#endif 1022#ifndef PNG_NO_READ_tRNS 1023# define PNG_READ_tRNS_SUPPORTED 1024# define PNG_tRNS_SUPPORTED 1025#endif 1026#ifndef PNG_NO_READ_zTXt 1027# define PNG_READ_zTXt_SUPPORTED 1028# define PNG_zTXt_SUPPORTED 1029#endif 1030#ifndef PNG_NO_READ_OPT_PLTE 1031# define PNG_READ_OPT_PLTE_SUPPORTED /* only affects support of the */ 1032#endif /* optional PLTE chunk in RGB and RGBA images */ 1033#if defined(PNG_READ_iTXt_SUPPORTED) || defined(PNG_READ_tEXt_SUPPORTED) || \ 1034 defined(PNG_READ_zTXt_SUPPORTED) 1035# define PNG_READ_TEXT_SUPPORTED 1036# define PNG_TEXT_SUPPORTED 1037#endif 1038 1039#endif /* PNG_READ_ANCILLARY_CHUNKS_SUPPORTED */ 1040 1041#ifndef PNG_NO_READ_UNKNOWN_CHUNKS 1042# define PNG_READ_UNKNOWN_CHUNKS_SUPPORTED 1043# ifndef PNG_UNKNOWN_CHUNKS_SUPPORTED 1044# define PNG_UNKNOWN_CHUNKS_SUPPORTED 1045# endif 1046#endif 1047#if !defined(PNG_NO_READ_USER_CHUNKS) && \ 1048 defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED) 1049# define PNG_READ_USER_CHUNKS_SUPPORTED 1050# define PNG_USER_CHUNKS_SUPPORTED 1051# ifdef PNG_NO_READ_UNKNOWN_CHUNKS 1052# undef PNG_NO_READ_UNKNOWN_CHUNKS 1053# endif 1054# ifdef PNG_NO_HANDLE_AS_UNKNOWN 1055# undef PNG_NO_HANDLE_AS_UNKNOWN 1056# endif 1057#endif 1058 1059#ifndef PNG_NO_HANDLE_AS_UNKNOWN 1060# ifndef PNG_HANDLE_AS_UNKNOWN_SUPPORTED 1061# define PNG_HANDLE_AS_UNKNOWN_SUPPORTED 1062# endif 1063#endif 1064 1065#ifdef PNG_WRITE_SUPPORTED 1066#ifdef PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED 1067 1068#ifdef PNG_NO_WRITE_TEXT 1069# define PNG_NO_WRITE_iTXt 1070# define PNG_NO_WRITE_tEXt 1071# define PNG_NO_WRITE_zTXt 1072#endif 1073#ifndef PNG_NO_WRITE_bKGD 1074# define PNG_WRITE_bKGD_SUPPORTED 1075# ifndef PNG_bKGD_SUPPORTED 1076# define PNG_bKGD_SUPPORTED 1077# endif 1078#endif 1079#ifndef PNG_NO_WRITE_cHRM 1080# define PNG_WRITE_cHRM_SUPPORTED 1081# ifndef PNG_cHRM_SUPPORTED 1082# define PNG_cHRM_SUPPORTED 1083# endif 1084#endif 1085#ifndef PNG_NO_WRITE_gAMA 1086# define PNG_WRITE_gAMA_SUPPORTED 1087# ifndef PNG_gAMA_SUPPORTED 1088# define PNG_gAMA_SUPPORTED 1089# endif 1090#endif 1091#ifndef PNG_NO_WRITE_hIST 1092# define PNG_WRITE_hIST_SUPPORTED 1093# ifndef PNG_hIST_SUPPORTED 1094# define PNG_hIST_SUPPORTED 1095# endif 1096#endif 1097#ifndef PNG_NO_WRITE_iCCP 1098# define PNG_WRITE_iCCP_SUPPORTED 1099# ifndef PNG_iCCP_SUPPORTED 1100# define PNG_iCCP_SUPPORTED 1101# endif 1102#endif 1103#ifndef PNG_NO_WRITE_iTXt 1104# ifndef PNG_WRITE_iTXt_SUPPORTED 1105# define PNG_WRITE_iTXt_SUPPORTED 1106# endif 1107# ifndef PNG_iTXt_SUPPORTED 1108# define PNG_iTXt_SUPPORTED 1109# endif 1110#endif 1111#ifndef PNG_NO_WRITE_oFFs 1112# define PNG_WRITE_oFFs_SUPPORTED 1113# ifndef PNG_oFFs_SUPPORTED 1114# define PNG_oFFs_SUPPORTED 1115# endif 1116#endif 1117#ifndef PNG_NO_WRITE_pCAL 1118# define PNG_WRITE_pCAL_SUPPORTED 1119# ifndef PNG_pCAL_SUPPORTED 1120# define PNG_pCAL_SUPPORTED 1121# endif 1122#endif 1123#ifndef PNG_NO_WRITE_sCAL 1124# define PNG_WRITE_sCAL_SUPPORTED 1125# ifndef PNG_sCAL_SUPPORTED 1126# define PNG_sCAL_SUPPORTED 1127# endif 1128#endif 1129#ifndef PNG_NO_WRITE_pHYs 1130# define PNG_WRITE_pHYs_SUPPORTED 1131# ifndef PNG_pHYs_SUPPORTED 1132# define PNG_pHYs_SUPPORTED 1133# endif 1134#endif 1135#ifndef PNG_NO_WRITE_sBIT 1136# define PNG_WRITE_sBIT_SUPPORTED 1137# ifndef PNG_sBIT_SUPPORTED 1138# define PNG_sBIT_SUPPORTED 1139# endif 1140#endif 1141#ifndef PNG_NO_WRITE_sPLT 1142# define PNG_WRITE_sPLT_SUPPORTED 1143# ifndef PNG_sPLT_SUPPORTED 1144# define PNG_sPLT_SUPPORTED 1145# endif 1146#endif 1147#ifndef PNG_NO_WRITE_sRGB 1148# define PNG_WRITE_sRGB_SUPPORTED 1149# ifndef PNG_sRGB_SUPPORTED 1150# define PNG_sRGB_SUPPORTED 1151# endif 1152#endif 1153#ifndef PNG_NO_WRITE_tEXt 1154# define PNG_WRITE_tEXt_SUPPORTED 1155# ifndef PNG_tEXt_SUPPORTED 1156# define PNG_tEXt_SUPPORTED 1157# endif 1158#endif 1159#ifndef PNG_NO_WRITE_tIME 1160# define PNG_WRITE_tIME_SUPPORTED 1161# ifndef PNG_tIME_SUPPORTED 1162# define PNG_tIME_SUPPORTED 1163# endif 1164#endif 1165#ifndef PNG_NO_WRITE_tRNS 1166# define PNG_WRITE_tRNS_SUPPORTED 1167# ifndef PNG_tRNS_SUPPORTED 1168# define PNG_tRNS_SUPPORTED 1169# endif 1170#endif 1171#ifndef PNG_NO_WRITE_zTXt 1172# define PNG_WRITE_zTXt_SUPPORTED 1173# ifndef PNG_zTXt_SUPPORTED 1174# define PNG_zTXt_SUPPORTED 1175# endif 1176#endif 1177#if defined(PNG_WRITE_iTXt_SUPPORTED) || defined(PNG_WRITE_tEXt_SUPPORTED) || \ 1178 defined(PNG_WRITE_zTXt_SUPPORTED) 1179# define PNG_WRITE_TEXT_SUPPORTED 1180# ifndef PNG_TEXT_SUPPORTED 1181# define PNG_TEXT_SUPPORTED 1182# endif 1183#endif 1184 1185#ifdef PNG_WRITE_tIME_SUPPORTED 1186# ifndef PNG_NO_CONVERT_tIME 1187# ifndef _WIN32_WCE 1188/* The "tm" structure is not supported on WindowsCE */ 1189# ifndef PNG_CONVERT_tIME_SUPPORTED 1190# define PNG_CONVERT_tIME_SUPPORTED 1191# endif 1192# endif 1193# endif 1194#endif 1195 1196#endif /* PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED */ 1197 1198#if !defined(PNG_NO_WRITE_FILTER) && !defined(PNG_WRITE_FILTER_SUPPORTED) 1199# define PNG_WRITE_FILTER_SUPPORTED 1200#endif 1201 1202#ifndef PNG_NO_WRITE_UNKNOWN_CHUNKS 1203# define PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED 1204# ifndef PNG_UNKNOWN_CHUNKS_SUPPORTED 1205# define PNG_UNKNOWN_CHUNKS_SUPPORTED 1206# endif 1207#endif 1208 1209#ifndef PNG_NO_HANDLE_AS_UNKNOWN 1210# ifndef PNG_HANDLE_AS_UNKNOWN_SUPPORTED 1211# define PNG_HANDLE_AS_UNKNOWN_SUPPORTED 1212# endif 1213#endif 1214#endif /* PNG_WRITE_SUPPORTED */ 1215 1216/* Turn this off to disable png_read_png() and 1217 * png_write_png() and leave the row_pointers member 1218 * out of the info structure. 1219 */ 1220#ifndef PNG_NO_INFO_IMAGE 1221# define PNG_INFO_IMAGE_SUPPORTED 1222#endif 1223 1224/* Need the time information for converting tIME chunks */ 1225#ifdef PNG_CONVERT_tIME_SUPPORTED 1226 /* "time.h" functions are not supported on WindowsCE */ 1227# include <time.h> 1228#endif 1229 1230/* Some typedefs to get us started. These should be safe on most of the 1231 * common platforms. The typedefs should be at least as large as the 1232 * numbers suggest (a png_uint_32 must be at least 32 bits long), but they 1233 * don't have to be exactly that size. Some compilers dislike passing 1234 * unsigned shorts as function parameters, so you may be better off using 1235 * unsigned int for png_uint_16. Likewise, for 64-bit systems, you may 1236 * want to have unsigned int for png_uint_32 instead of unsigned long. 1237 */ 1238 1239typedef unsigned long png_uint_32; 1240typedef long png_int_32; 1241typedef unsigned short png_uint_16; 1242typedef short png_int_16; 1243typedef unsigned char png_byte; 1244 1245/* This is usually size_t. It is typedef'ed just in case you need it to 1246 change (I'm not sure if you will or not, so I thought I'd be safe) */ 1247#ifdef PNG_SIZE_T 1248 typedef PNG_SIZE_T png_size_t; 1249# define png_sizeof(x) png_convert_size(sizeof(x)) 1250#else 1251 typedef size_t png_size_t; 1252# define png_sizeof(x) sizeof(x) 1253#endif 1254 1255/* The following is needed for medium model support. It cannot be in the 1256 * PNG_INTERNAL section. Needs modification for other compilers besides 1257 * MSC. Model independent support declares all arrays and pointers to be 1258 * large using the far keyword. The zlib version used must also support 1259 * model independent data. As of version zlib 1.0.4, the necessary changes 1260 * have been made in zlib. The USE_FAR_KEYWORD define triggers other 1261 * changes that are needed. (Tim Wegner) 1262 */ 1263 1264/* Separate compiler dependencies (problem here is that zlib.h always 1265 defines FAR. (SJT) */ 1266#ifdef __BORLANDC__ 1267# if defined(__LARGE__) || defined(__HUGE__) || defined(__COMPACT__) 1268# define LDATA 1 1269# else 1270# define LDATA 0 1271# endif 1272 /* GRR: why is Cygwin in here? Cygwin is not Borland C... */ 1273# if !defined(__WIN32__) && !defined(__FLAT__) && !defined(__CYGWIN__) 1274# define PNG_MAX_MALLOC_64K 1275# if (LDATA != 1) 1276# ifndef FAR 1277# define FAR __far 1278# endif 1279# define USE_FAR_KEYWORD 1280# endif /* LDATA != 1 */ 1281 /* Possibly useful for moving data out of default segment. 1282 * Uncomment it if you want. Could also define FARDATA as 1283 * const if your compiler supports it. (SJT) 1284# define FARDATA FAR 1285 */ 1286# endif /* __WIN32__, __FLAT__, __CYGWIN__ */ 1287#endif /* __BORLANDC__ */ 1288 1289 1290/* Suggest testing for specific compiler first before testing for 1291 * FAR. The Watcom compiler defines both __MEDIUM__ and M_I86MM, 1292 * making reliance oncertain keywords suspect. (SJT) 1293 */ 1294 1295/* MSC Medium model */ 1296#ifdef FAR 1297# ifdef M_I86MM 1298# define USE_FAR_KEYWORD 1299# define FARDATA FAR 1300# include <dos.h> 1301# endif 1302#endif 1303 1304/* SJT: default case */ 1305#ifndef FAR 1306# define FAR 1307#endif 1308 1309/* At this point FAR is always defined */ 1310#ifndef FARDATA 1311# define FARDATA 1312#endif 1313 1314/* Typedef for floating-point numbers that are converted 1315 to fixed-point with a multiple of 100,000, e.g., int_gamma */ 1316typedef png_int_32 png_fixed_point; 1317 1318/* Add typedefs for pointers */ 1319typedef void FAR * png_voidp; 1320typedef png_byte FAR * png_bytep; 1321typedef png_uint_32 FAR * png_uint_32p; 1322typedef png_int_32 FAR * png_int_32p; 1323typedef png_uint_16 FAR * png_uint_16p; 1324typedef png_int_16 FAR * png_int_16p; 1325typedef PNG_CONST char FAR * png_const_charp; 1326typedef char FAR * png_charp; 1327typedef png_fixed_point FAR * png_fixed_point_p; 1328 1329#ifndef PNG_NO_STDIO 1330#ifdef _WIN32_WCE 1331typedef HANDLE png_FILE_p; 1332#else 1333typedef FILE * png_FILE_p; 1334#endif 1335#endif 1336 1337#ifdef PNG_FLOATING_POINT_SUPPORTED 1338typedef double FAR * png_doublep; 1339#endif 1340 1341/* Pointers to pointers; i.e. arrays */ 1342typedef png_byte FAR * FAR * png_bytepp; 1343typedef png_uint_32 FAR * FAR * png_uint_32pp; 1344typedef png_int_32 FAR * FAR * png_int_32pp; 1345typedef png_uint_16 FAR * FAR * png_uint_16pp; 1346typedef png_int_16 FAR * FAR * png_int_16pp; 1347typedef PNG_CONST char FAR * FAR * png_const_charpp; 1348typedef char FAR * FAR * png_charpp; 1349typedef png_fixed_point FAR * FAR * png_fixed_point_pp; 1350#ifdef PNG_FLOATING_POINT_SUPPORTED 1351typedef double FAR * FAR * png_doublepp; 1352#endif 1353 1354/* Pointers to pointers to pointers; i.e., pointer to array */ 1355typedef char FAR * FAR * FAR * png_charppp; 1356 1357#if defined(PNG_1_0_X) || defined(PNG_1_2_X) 1358/* SPC - Is this stuff deprecated? */ 1359/* It'll be removed as of libpng-1.4.0 - GR-P */ 1360/* libpng typedefs for types in zlib. If zlib changes 1361 * or another compression library is used, then change these. 1362 * Eliminates need to change all the source files. 1363 */ 1364typedef charf * png_zcharp; 1365typedef charf * FAR * png_zcharpp; 1366typedef z_stream FAR * png_zstreamp; 1367#endif /* (PNG_1_0_X) || defined(PNG_1_2_X) */ 1368 1369/* 1370 * Define PNG_BUILD_DLL if the module being built is a Windows 1371 * LIBPNG DLL. 1372 * 1373 * Define PNG_USE_DLL if you want to *link* to the Windows LIBPNG DLL. 1374 * It is equivalent to Microsoft predefined macro _DLL that is 1375 * automatically defined when you compile using the share 1376 * version of the CRT (C Run-Time library) 1377 * 1378 * The cygwin mods make this behavior a little different: 1379 * Define PNG_BUILD_DLL if you are building a dll for use with cygwin 1380 * Define PNG_STATIC if you are building a static library for use with cygwin, 1381 * -or- if you are building an application that you want to link to the 1382 * static library. 1383 * PNG_USE_DLL is defined by default (no user action needed) unless one of 1384 * the other flags is defined. 1385 */ 1386 1387#if !defined(PNG_DLL) && (defined(PNG_BUILD_DLL) || defined(PNG_USE_DLL)) 1388# define PNG_DLL 1389#endif 1390/* If CYGWIN, then disallow GLOBAL ARRAYS unless building a static lib. 1391 * When building a static lib, default to no GLOBAL ARRAYS, but allow 1392 * command-line override 1393 */ 1394#ifdef __CYGWIN__ 1395# ifndef PNG_STATIC 1396# ifdef PNG_USE_GLOBAL_ARRAYS 1397# undef PNG_USE_GLOBAL_ARRAYS 1398# endif 1399# ifndef PNG_USE_LOCAL_ARRAYS 1400# define PNG_USE_LOCAL_ARRAYS 1401# endif 1402# else 1403# if defined(PNG_USE_LOCAL_ARRAYS) || defined(PNG_NO_GLOBAL_ARRAYS) 1404# ifdef PNG_USE_GLOBAL_ARRAYS 1405# undef PNG_USE_GLOBAL_ARRAYS 1406# endif 1407# endif 1408# endif 1409# if !defined(PNG_USE_LOCAL_ARRAYS) && !defined(PNG_USE_GLOBAL_ARRAYS) 1410# define PNG_USE_LOCAL_ARRAYS 1411# endif 1412#endif 1413 1414/* Do not use global arrays (helps with building DLL's) 1415 * They are no longer used in libpng itself, since version 1.0.5c, 1416 * but might be required for some pre-1.0.5c applications. 1417 */ 1418#if !defined(PNG_USE_LOCAL_ARRAYS) && !defined(PNG_USE_GLOBAL_ARRAYS) 1419# if defined(PNG_NO_GLOBAL_ARRAYS) || \ 1420 (defined(__GNUC__) && defined(PNG_DLL)) || defined(_MSC_VER) 1421# define PNG_USE_LOCAL_ARRAYS 1422# else 1423# define PNG_USE_GLOBAL_ARRAYS 1424# endif 1425#endif 1426 1427#ifdef __CYGWIN__ 1428# undef PNGAPI 1429# define PNGAPI __cdecl 1430# undef PNG_IMPEXP 1431# define PNG_IMPEXP 1432#endif 1433 1434/* If you define PNGAPI, e.g., with compiler option "-DPNGAPI=__stdcall", 1435 * you may get warnings regarding the linkage of png_zalloc and png_zfree. 1436 * Don't ignore those warnings; you must also reset the default calling 1437 * convention in your compiler to match your PNGAPI, and you must build 1438 * zlib and your applications the same way you build libpng. 1439 */ 1440 1441#if defined(__MINGW32__) && !defined(PNG_MODULEDEF) 1442# ifndef PNG_NO_MODULEDEF 1443# define PNG_NO_MODULEDEF 1444# endif 1445#endif 1446 1447#if !defined(PNG_IMPEXP) && defined(PNG_BUILD_DLL) && !defined(PNG_NO_MODULEDEF) 1448# define PNG_IMPEXP 1449#endif 1450 1451#if defined(PNG_DLL) || defined(_DLL) || defined(__DLL__ ) || \ 1452 (( defined(_Windows) || defined(_WINDOWS) || \ 1453 defined(WIN32) || defined(_WIN32) || defined(__WIN32__) )) 1454 1455# ifndef PNGAPI 1456# if defined(__GNUC__) || (defined (_MSC_VER) && (_MSC_VER >= 800)) 1457# define PNGAPI __cdecl 1458# else 1459# define PNGAPI _cdecl 1460# endif 1461# endif 1462 1463# if !defined(PNG_IMPEXP) && (!defined(PNG_DLL) || \ 1464 0 /* WINCOMPILER_WITH_NO_SUPPORT_FOR_DECLIMPEXP */) 1465# define PNG_IMPEXP 1466# endif 1467 1468# ifndef PNG_IMPEXP 1469 1470# define PNG_EXPORT_TYPE1(type,symbol) PNG_IMPEXP type PNGAPI symbol 1471# define PNG_EXPORT_TYPE2(type,symbol) type PNG_IMPEXP PNGAPI symbol 1472 1473 /* Borland/Microsoft */ 1474# if defined(_MSC_VER) || defined(__BORLANDC__) 1475# if (_MSC_VER >= 800) || (__BORLANDC__ >= 0x500) 1476# define PNG_EXPORT PNG_EXPORT_TYPE1 1477# else 1478# define PNG_EXPORT PNG_EXPORT_TYPE2 1479# ifdef PNG_BUILD_DLL 1480# define PNG_IMPEXP __export 1481# else 1482# define PNG_IMPEXP /*__import */ /* doesn't exist AFAIK in 1483 VC++ */ 1484# endif /* Exists in Borland C++ for 1485 C++ classes (== huge) */ 1486# endif 1487# endif 1488 1489# ifndef PNG_IMPEXP 1490# ifdef PNG_BUILD_DLL 1491# define PNG_IMPEXP __declspec(dllexport) 1492# else 1493# define PNG_IMPEXP __declspec(dllimport) 1494# endif 1495# endif 1496# endif /* PNG_IMPEXP */ 1497#else /* !(DLL || non-cygwin WINDOWS) */ 1498# if (defined(__IBMC__) || defined(__IBMCPP__)) && defined(__OS2__) 1499# ifndef PNGAPI 1500# define PNGAPI _System 1501# endif 1502# else 1503# if 0 /* ... other platforms, with other meanings */ 1504# endif 1505# endif 1506#endif 1507 1508#ifndef PNGAPI 1509# define PNGAPI 1510#endif 1511#ifndef PNG_IMPEXP 1512# define PNG_IMPEXP 1513#endif 1514 1515#ifdef PNG_BUILDSYMS 1516# ifndef PNG_EXPORT 1517# define PNG_EXPORT(type,symbol) PNG_FUNCTION_EXPORT symbol END 1518# endif 1519# ifdef PNG_USE_GLOBAL_ARRAYS 1520# ifndef PNG_EXPORT_VAR 1521# define PNG_EXPORT_VAR(type) PNG_DATA_EXPORT 1522# endif 1523# endif 1524#endif 1525 1526#ifndef PNG_EXPORT 1527# define PNG_EXPORT(type,symbol) PNG_IMPEXP type PNGAPI symbol 1528#endif 1529 1530#ifdef PNG_USE_GLOBAL_ARRAYS 1531# ifndef PNG_EXPORT_VAR 1532# define PNG_EXPORT_VAR(type) extern PNG_IMPEXP type 1533# endif 1534#endif 1535 1536#ifdef PNG_PEDANTIC_WARNINGS 1537# ifndef PNG_PEDANTIC_WARNINGS_SUPPORTED 1538# define PNG_PEDANTIC_WARNINGS_SUPPORTED 1539# endif 1540#endif 1541 1542#ifdef PNG_PEDANTIC_WARNINGS_SUPPORTED 1543/* Support for compiler specific function attributes. These are used 1544 * so that where compiler support is available incorrect use of API 1545 * functions in png.h will generate compiler warnings. Added at libpng 1546 * version 1.2.41. 1547 */ 1548# ifdef __GNUC__ 1549# ifndef PNG_USE_RESULT 1550# define PNG_USE_RESULT __attribute__((__warn_unused_result__)) 1551# endif 1552# ifndef PNG_NORETURN 1553# define PNG_NORETURN __attribute__((__noreturn__)) 1554# endif 1555# ifndef PNG_ALLOCATED 1556# define PNG_ALLOCATED __attribute__((__malloc__)) 1557# endif 1558 1559 /* This specifically protects structure members that should only be 1560 * accessed from within the library, therefore should be empty during 1561 * a library build. 1562 */ 1563# ifndef PNG_DEPRECATED 1564# define PNG_DEPRECATED __attribute__((__deprecated__)) 1565# endif 1566# ifndef PNG_DEPSTRUCT 1567# define PNG_DEPSTRUCT __attribute__((__deprecated__)) 1568# endif 1569# ifndef PNG_PRIVATE 1570# if 0 /* Doesn't work so we use deprecated instead*/ 1571# define PNG_PRIVATE \ 1572 __attribute__((warning("This function is not exported by libpng."))) 1573# else 1574# define PNG_PRIVATE \ 1575 __attribute__((__deprecated__)) 1576# endif 1577# endif /* PNG_PRIVATE */ 1578# endif /* __GNUC__ */ 1579#endif /* PNG_PEDANTIC_WARNINGS */ 1580 1581#ifndef PNG_DEPRECATED 1582# define PNG_DEPRECATED /* Use of this function is deprecated */ 1583#endif 1584#ifndef PNG_USE_RESULT 1585# define PNG_USE_RESULT /* The result of this function must be checked */ 1586#endif 1587#ifndef PNG_NORETURN 1588# define PNG_NORETURN /* This function does not return */ 1589#endif 1590#ifndef PNG_ALLOCATED 1591# define PNG_ALLOCATED /* The result of the function is new memory */ 1592#endif 1593#ifndef PNG_DEPSTRUCT 1594# define PNG_DEPSTRUCT /* Access to this struct member is deprecated */ 1595#endif 1596#ifndef PNG_PRIVATE 1597# define PNG_PRIVATE /* This is a private libpng function */ 1598#endif 1599 1600/* User may want to use these so they are not in PNG_INTERNAL. Any library 1601 * functions that are passed far data must be model independent. 1602 */ 1603 1604#ifndef PNG_ABORT 1605# define PNG_ABORT() abort() 1606#endif 1607 1608#ifdef PNG_SETJMP_SUPPORTED 1609# define png_jmpbuf(png_ptr) ((png_ptr)->jmpbuf) 1610#else 1611# define png_jmpbuf(png_ptr) \ 1612 (LIBPNG_WAS_COMPILED_WITH__PNG_SETJMP_NOT_SUPPORTED) 1613#endif 1614 1615#ifdef USE_FAR_KEYWORD /* memory model independent fns */ 1616/* Use this to make far-to-near assignments */ 1617# define CHECK 1 1618# define NOCHECK 0 1619# define CVT_PTR(ptr) (png_far_to_near(png_ptr,ptr,CHECK)) 1620# define CVT_PTR_NOCHECK(ptr) (png_far_to_near(png_ptr,ptr,NOCHECK)) 1621# define png_snprintf _fsnprintf /* Added to v 1.2.19 */ 1622# define png_strlen _fstrlen 1623# define png_memcmp _fmemcmp /* SJT: added */ 1624# define png_memcpy _fmemcpy 1625# define png_memset _fmemset 1626#else /* Use the usual functions */ 1627# define CVT_PTR(ptr) (ptr) 1628# define CVT_PTR_NOCHECK(ptr) (ptr) 1629# ifndef PNG_NO_SNPRINTF 1630# ifdef _MSC_VER 1631# define png_snprintf _snprintf /* Added to v 1.2.19 */ 1632# define png_snprintf2 _snprintf 1633# define png_snprintf6 _snprintf 1634# else 1635# define png_snprintf snprintf /* Added to v 1.2.19 */ 1636# define png_snprintf2 snprintf 1637# define png_snprintf6 snprintf 1638# endif 1639# else 1640 /* You don't have or don't want to use snprintf(). Caution: Using 1641 * sprintf instead of snprintf exposes your application to accidental 1642 * or malevolent buffer overflows. If you don't have snprintf() 1643 * as a general rule you should provide one (you can get one from 1644 * Portable OpenSSH). 1645 */ 1646# define png_snprintf(s1,n,fmt,x1) sprintf(s1,fmt,x1) 1647# define png_snprintf2(s1,n,fmt,x1,x2) sprintf(s1,fmt,x1,x2) 1648# define png_snprintf6(s1,n,fmt,x1,x2,x3,x4,x5,x6) \ 1649 sprintf(s1,fmt,x1,x2,x3,x4,x5,x6) 1650# endif 1651# define png_strlen strlen 1652# define png_memcmp memcmp /* SJT: added */ 1653# define png_memcpy memcpy 1654# define png_memset memset 1655#endif 1656/* End of memory model independent support */ 1657 1658/* Just a little check that someone hasn't tried to define something 1659 * contradictory. 1660 */ 1661#if (PNG_ZBUF_SIZE > 65536L) && defined(PNG_MAX_MALLOC_64K) 1662# undef PNG_ZBUF_SIZE 1663# define PNG_ZBUF_SIZE 65536L 1664#endif 1665 1666/* Added at libpng-1.2.8 */ 1667#endif /* PNG_VERSION_INFO_ONLY */ 1668 1669#endif /* PNGCONF_H */ 1670