mirror of
				https://git.code.sf.net/p/libpng/code.git
				synced 2025-07-10 18:04:09 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			784 lines
		
	
	
		
			31 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			784 lines
		
	
	
		
			31 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| # scripts/pnglibconf.dfa - library build configuration control
 | |
| #
 | |
| @/*- pnglibconf.dfn intermediate file
 | |
| @ *  generated from scripts/pnglibconf.dfa
 | |
| @ */
 | |
| #
 | |
| com pnglibconf.h - library build configuration
 | |
| com
 | |
| version
 | |
| com
 | |
| com Copyright (c) 1998-2011 Glenn Randers-Pehrson
 | |
| com
 | |
| com This code is released under the libpng license.
 | |
| com For conditions of distribution and use, see the disclaimer
 | |
| com and license in png.h
 | |
| com
 | |
| 
 | |
| file pnglibconf.h scripts/pnglibconf.dfa PNGLCONF_H
 | |
| 
 | |
| # This file is preprocessed by scripts/options.awk and the
 | |
| # C compiler to generate 'pnglibconf.h' - a list of all the
 | |
| # configuration options.  The file lists the various options
 | |
| # that can *only* be specified during the libpng build;
 | |
| # pnglibconf.h freezes the definitions selected for the specific
 | |
| # build.
 | |
| #
 | |
| # The syntax is detailed in scripts/options.awk; this is a summary
 | |
| # only:
 | |
| #
 | |
| # setting <name> [default]
 | |
| #    #define PNG_<name> <value>  /* value comes from current setting */
 | |
| # option <name> [requires ...] [if ...] [enables ...] [disabled]
 | |
| #    #define PNG_<name>_SUPPORTED if the requirements are met and
 | |
| #    enable the other options listed
 | |
| # chunk <name> [requires ...] [enables ...] [disabled]
 | |
| #    Enable chunk processing for the given ancillary chunk; any
 | |
| #    'requires something' expands to READ_something for read and
 | |
| #    WRITE_something for write, but the enables list members are
 | |
| #    used as given (e.g. enables GAMMA just expands to that on the
 | |
| #    correspond READ_name and WRITE_name lines.)
 | |
| #
 | |
| # Note that the 'on' and 'off' keywords, while valid on both option
 | |
| # and chunk, should not be used in this file because they force the
 | |
| # relevant options on or off.
 | |
| 
 | |
| #----------------------------------------------------------------------
 | |
| 
 | |
| # The following setting, option and chunk values can all be changed
 | |
| # while building libpng:
 | |
| #
 | |
| # setting: change 'setting' lines to fine tune library performance;
 | |
| #   changes to the settings don't affect the libpng API functionally
 | |
| #
 | |
| # option: change 'option' lines to remove or add capabilities from
 | |
| #   or to the library; options change the library API
 | |
| #
 | |
| # chunk: change 'chunk' lines to remove capabilities to process
 | |
| #   optional ('ancillary') chunks.  This does not prevent PNG
 | |
| #   decoding but does change the libpng API because some chunks
 | |
| #   will be ignored.
 | |
| #
 | |
| # There are three ways of disabling features, in no particular order:
 | |
| #
 | |
| # 1) Create 'pngusr.h', enter the required private build information
 | |
| # detailed below and #define PNG_NO_<option> for each option you
 | |
| # don't want in that file in that file.  You can also turn on options
 | |
| # using PNG_<option>_SUPPORTED.  When you have finished rerun
 | |
| # configure and rebuild pnglibconf.h file with -DPNG_USER_CONFIG:
 | |
| #
 | |
| #  make clean
 | |
| #  CPPFLAGS='-DPNG_USER_CONFIG' ./configure
 | |
| #  make pnglibconf.h
 | |
| #
 | |
| # pngusr.h is only used during the creation of pnglibconf.h, but it
 | |
| # is safer to ensure that -DPNG_USER_CONFIG is specified throughout
 | |
| # the build by changing the CPPFLAGS passed to the initial ./configure
 | |
| #
 | |
| # 2) Add definitions of the settings you want to change to
 | |
| # CPPFLAGS; for example:
 | |
| #
 | |
| #   -DPNG_DEFAULT_READ_MACROS=0
 | |
| #
 | |
| # (This would change the default to *not* use read macros.)  Be
 | |
| # very careful to change only settings that don't alter the API
 | |
| # because this approach bypasses the private build checking.  You
 | |
| # can also change settings from pngpriv.h (read pngpriv.h) safely
 | |
| # without API changes.  Do that in the same way.
 | |
| #
 | |
| # 3) Write a new '.dfa' file (say 'pngusr.dfa') and in this file
 | |
| # provide override values for setting entries and turn option or
 | |
| # chunk values explicitly 'on' or 'off':
 | |
| #
 | |
| #    setting FOO default VALUE
 | |
| #    option BAR [on|off]
 | |
| #
 | |
| # Then add this file to the options.awk command line (the *first*
 | |
| # one) after this file.  The make macro DFA_XTRA is provided to make
 | |
| # this easier (set it like CPPFLAGS prior to running ./configure).
 | |
| # Look at the builds below contrib/pngminim for some extreme examples
 | |
| # of how this can be used.
 | |
| #
 | |
| # Don't edit this file unless you are contributing a patch to
 | |
| # libpng and need new or modified options/settings.
 | |
| #----------------------------------------------------------------------
 | |
| 
 | |
| # The following causes commented out #undef lines to be written to
 | |
| # pnglibconf.h; this can be stopped by logunsupported=0 in a later
 | |
| # file or on the command line (after pnglibconf.dfa)
 | |
| 
 | |
| logunsupported = 1
 | |
| 
 | |
| # PNG_USER_CONFIG has to be defined on the compiler command line
 | |
| # to cause pngusr.h to be read while constructing pnglibconf.h
 | |
| #
 | |
| # If you create a private DLL you need to define the following
 | |
| # macros in the file 'pngusr.h' and set -DPNG_USER_CONFIG for
 | |
| # compilation (i.e. in CFLAGS.)
 | |
| # #define PNG_USER_PRIVATEBUILD \
 | |
| #     <Describes by whom and why this version of the DLL was built>
 | |
| #  e.g. #define PNG_USER_PRIVATEBUILD "Build by MyCompany for xyz reasons."
 | |
| # #define PNG_USER_DLLFNAME_POSTFIX <two-letter postfix that serve to
 | |
| #        distinguish your DLL from those of the official release. These
 | |
| #        correspond to the trailing letters that come after the version
 | |
| #        number and must match your private DLL name>
 | |
| #  e.g. // private DLL "libpng13gx.dll"
 | |
| #       #define PNG_USER_DLLFNAME_POSTFIX "gx"
 | |
| #
 | |
| # The following macros are also at your disposal if you want to complete the
 | |
| # DLL VERSIONINFO structure.
 | |
| # - PNG_USER_VERSIONINFO_COMMENTS
 | |
| # - PNG_USER_VERSIONINFO_COMPANYNAME
 | |
| # - PNG_USER_VERSIONINFO_LEGALTRADEMARKS
 | |
| 
 | |
| @#ifdef PNG_USER_CONFIG
 | |
| @#  include "pngusr.h"
 | |
| @#endif
 | |
| 
 | |
| # This is a special fixup for the Watcom C compiler on Windows, which has
 | |
| # multiple procedure call standards.  Unless PNG_API_RULE is set explicitly
 | |
| # (i.e. if it is not defined at this point) it will be forced to '2' here when
 | |
| # using Watcom.  This indicates to the other header files that Watcom behaviour
 | |
| # is required where appropriate.
 | |
| 
 | |
| @#ifdef __WATCOMC__
 | |
| @#  ifndef PNG_API_RULE
 | |
| @#     define PNG_API_RULE 2 /* Use Watcom calling conventions */
 | |
| @#  endif
 | |
| @#endif
 | |
| 
 | |
| # IN DEVELOPMENT
 | |
| # These are currently experimental features; define them if you want (NOTE:
 | |
| # experimental options must be disabled before they are defined in this file!)
 | |
| 
 | |
| # NONE
 | |
| 
 | |
| # Note that PNG_USR_CONFIG only has an effect when building
 | |
| # pnglibconf.h
 | |
| 
 | |
| setting USER_CONFIG
 | |
| setting USER_PRIVATEBUILD
 | |
| setting USER_DLLFNAME_POSTFIX
 | |
| setting USER_VERSIONINFO_COMMENTS
 | |
| setting USER_VERSIONINFO_COMPANYNAME
 | |
| setting USER_VERSIONINFO_LEGALTRADEMARKS
 | |
| 
 | |
| # Record the 'API rule' used to select calling conventions on
 | |
| # those systems that support such things (see all the comments in
 | |
| # pngconf.h)
 | |
| # Changing this setting has a fundamental affect on the PNG ABI,
 | |
| # do not release shared libraries with this changed.
 | |
| 
 | |
| setting API_RULE default 0
 | |
| 
 | |
| # This allows a prefix to be added to the front of every API functon name (and
 | |
| # therefore every symbol) by redefining all the function names with the prefix
 | |
| # at the end of pnglibconf.h.  It also turns on similar internal symbol renaming
 | |
| # by causing a similar build-time only file, pngprefix.h, to be generated.
 | |
| 
 | |
| setting PREFIX
 | |
| 
 | |
| # Default to using the read macros
 | |
| 
 | |
| setting DEFAULT_READ_MACROS default 1
 | |
| 
 | |
| # The alternative is to call functions to read PNG values, if
 | |
| # the functions are turned *off* the read macros must always
 | |
| # be enabled, so turning this off will actually force the
 | |
| # USE_READ_MACROS option on (see pngconf.h)
 | |
| 
 | |
| option READ_INT_FUNCTIONS requires READ
 | |
| 
 | |
| # The same for write, but these can only be switched off if
 | |
| # no writing is required at all - hence the use of an 'enables'
 | |
| # not a 'requires' below:
 | |
| 
 | |
| option WRITE_INT_FUNCTIONS disabled
 | |
| option WRITE enables WRITE_INT_FUNCTIONS
 | |
| 
 | |
| # Error controls
 | |
| #
 | |
| # WARNINGS: normally on, if off no warnings are generated
 | |
| # ERROR_TEXT: normally on, if off errors happen but there is no message
 | |
| # ERROR_NUMBERS: unimplemented feature, therefore disabled
 | |
| # BENIGN_ERRORS: support for just issuing warnings for recoverable errors
 | |
| #
 | |
| # BENIGN_READ_ERRORS:
 | |
| #     By default recoverable errors on read should just generate warnings,
 | |
| #     generally safe but PNG files that don't conform to the specification will
 | |
| #     be accepted if a meaningful result can be produced.
 | |
| #
 | |
| # BENIGN_WRITE_ERRORS:
 | |
| #     By default recoverable errors on write should just generate warnings,
 | |
| #     not generally safe because this allows the application to write invalid
 | |
| #     PNG files.  Applications should enable this themselves; it's useful
 | |
| #     because it means that a failure to write an ancilliary chunk can often be
 | |
| #     ignored.
 | |
| 
 | |
| option WARNINGS
 | |
| option ERROR_TEXT
 | |
| option ERROR_NUMBERS disabled
 | |
| 
 | |
| option BENIGN_ERRORS
 | |
| option BENIGN_WRITE_ERRORS requires BENIGN_ERRORS disabled
 | |
| option BENIGN_READ_ERRORS requires BENIGN_ERRORS
 | |
| 
 | |
| 
 | |
| # Generic options - affect both read and write.
 | |
| 
 | |
| option MNG_FEATURES
 | |
| 
 | |
| # Arithmetic options, the first is the big switch that chooses between internal
 | |
| # floating and fixed point arithmetic implementations - it does not affect any
 | |
| # APIs.  The second two (the _POINT settings) switch off individual APIs.
 | |
| 
 | |
| option FLOATING_ARITHMETIC
 | |
| option FLOATING_POINT enables ok_math
 | |
| option FIXED_POINT enables ok_math
 | |
| 
 | |
| # The following is always on (defined empty)
 | |
| 
 | |
| setting CALLOC_SUPPORTED default
 | |
| 
 | |
| # This protects us against compilers that run on a windowing system
 | |
| # and thus don't have or would rather us not use the stdio types:
 | |
| # stdin, stdout, and stderr.  The only one currently used is stderr
 | |
| # in png_error() and png_warning().  #defining PNG_NO_CONSOLE_IO will
 | |
| # prevent these from being compiled and used. #defining PNG_NO_STDIO
 | |
| # will also prevent these, plus will prevent the entire set of stdio
 | |
| # macros and functions (FILE *, printf, etc.) from being compiled and used,
 | |
| # unless (PNG_DEBUG > 0) has been #defined.
 | |
| 
 | |
| option STDIO
 | |
| option CONSOLE_IO requires STDIO
 | |
| 
 | |
| # Note: prior to 1.5.0 this option could not be disabled if STDIO
 | |
| # was enabled.  Prior to 1.5.3 this option required STDIO
 | |
| 
 | |
| option TIME_RFC1123
 | |
| 
 | |
| # PNG_SETJMP_NOT_SUPPORTED is an old equivalent for NO_SETJMP
 | |
| 
 | |
| option SETJMP
 | |
| = NO_SETJMP SETJMP_NOT_SUPPORTED
 | |
| 
 | |
| # If this is disabled it is not possible for apps to get the
 | |
| # values from the 'info' structure, this effectively removes
 | |
| # quite a lot of the READ API.
 | |
| 
 | |
| option EASY_ACCESS
 | |
| 
 | |
| # Added at libpng-1.2.0
 | |
| 
 | |
| option USER_MEM
 | |
| 
 | |
| # Added at libpng-1.4.0
 | |
| 
 | |
| option IO_STATE
 | |
| 
 | |
| # Libpng limits: limit the size of images and data on read.
 | |
| #
 | |
| # If this option is disabled all the limit checking code will be disabled:
 | |
| 
 | |
| option USER_LIMITS requires READ
 | |
| 
 | |
| # If the following settings are *not* set libpng will not limit the size of
 | |
| # images or the size of data in ancilliary chunks.  This does lead to
 | |
| # security issues if PNG files come from untrusted sources.  Settings have the
 | |
| # following interpretations:
 | |
| #
 | |
| # USER_WIDTH_MAX: maximum width of an image that will be read
 | |
| # USER_HEIGHT_MAX: maximum height
 | |
| # USER_CHUNK_MALLOC_MAX: maximum in-memory (decompressed) size of a single chunk
 | |
| # USER_CHUNK_CACHE_MAX: maximum number of chunks to be cached
 | |
| #
 | |
| # Only chunks that are variable in number are counted towards the
 | |
| # USER_CHUNK_CACHE_MAX limit
 | |
| setting USER_WIDTH_MAX
 | |
| setting USER_HEIGHT_MAX
 | |
| setting USER_CHUNK_MALLOC_MAX
 | |
| setting USER_CHUNK_CACHE_MAX
 | |
| 
 | |
| # To default all these settings to values that are large but probably
 | |
| # safe turn the SAFE_LIMITS option on; this will cause the value in
 | |
| # pngpriv.h to be used.  Individual values can also be set, simply set
 | |
| # them in pngusr.dfa with '@#define PNG_setting value' lines.
 | |
| option SAFE_LIMITS enables USER_LIMITS disabled
 | |
| = SAFE_LIMITS SAFE_LIMITS
 | |
| 
 | |
| # If this option is enabled APIs to set the above limits at run time are added;
 | |
| # without these the hardwired (compile time) limits will be used.
 | |
| option SET_USER_LIMITS requires USER_LIMITS
 | |
| 
 | |
| # All of the following options relate to code capabilities for
 | |
| # processing image data before creating a PNG or after reading one.
 | |
| # You can remove these capabilities safely and still be PNG
 | |
| # conformant, however the library that results is still non-standard.
 | |
| # See the comments above about how to change options and settings.
 | |
| 
 | |
| # READ options
 | |
| #
 | |
| # WARNING: in libpng 1.5 maintained configuration compatibility with earlier
 | |
| # versions.  In some cases turning off an option turned off other options, in
 | |
| # others it was ineffective unless dependent options were also turned off.
 | |
| # Libpng 1.6 changes this: in general if you turn off an option that affects
 | |
| # APIs it stays off and simply disables APIs that depend on it.
 | |
| #
 | |
| # As a result if you simply port the libpng 1.5 configuration to libpng 1.6 you
 | |
| # will probably see build failures due to missing APIs.  Fixing these failures
 | |
| # requires some, perhaps considerable, knowledge of what your libpng using
 | |
| # applications are doing, fortunately there is no great reason for you to move
 | |
| # to libpng 1.6; the new interfaces in 1.6 will take several years to become
 | |
| # popular.
 | |
| 
 | |
| option READ enables READ_INTERLACING
 | |
| 
 | |
| # Disabling READ_16BIT does not disable reading 16-bit PNG files, but it
 | |
| # forces them to be chopped down to 8-bit, and disables any 16-bit
 | |
| # processing after that has happened.  You need to be sure to enable
 | |
| # READ_SCALE_16_TO_8 or READ_STRIP_16_TO_8 when you disable READ_16BIT for
 | |
| # this to work properly.  You should disable the other option if you need to
 | |
| # ensure a particular conversion (otherwise the app can chose.)
 | |
| 
 | |
| option READ_16BIT requires READ enables 16BIT
 | |
| 
 | |
| option READ_QUANTIZE requires READ
 | |
| 
 | |
| option READ_TRANSFORMS requires READ
 | |
| = NO_READ_TRANSFORMS READ_TRANSFORMS_NOT_SUPPORTED
 | |
| 
 | |
| # Read gamma handling.  Gamma processing is a core part of libpng and many of
 | |
| # the capabilities are dependent on libpng performing gamma correction.
 | |
| #
 | |
| # In libpng 1.6 disabling gamma processing (setting PNG_NO_READ_GAMMA)
 | |
| # consistently disables those parts of the API that depend on it.  Prior to
 | |
| # 1.6.0 this was not true; the results were unpredictable and varied between
 | |
| # releases.
 | |
| #
 | |
| # If you disable gamma processing and your program no longer compiles you need
 | |
| # to ask whether you really need the APIs that are missing.  If you do then you
 | |
| # almost certainly need the gamma processing.
 | |
| #
 | |
| # If you handle gamma issues outside libpng then you do not need the libpng
 | |
| # gamma processing; and it is an enormous waste of space.  You just need to
 | |
| # remove the use of libpng APIs that depend on it.
 | |
| option READ_GAMMA requires READ_TRANSFORMS READ_gAMA
 | |
| 
 | |
| option READ_ALPHA_MODE requires READ_TRANSFORMS READ_GAMMA
 | |
| option READ_BACKGROUND requires READ_TRANSFORMS READ_STRIP_ALPHA READ_GAMMA
 | |
| option READ_BGR requires READ_TRANSFORMS
 | |
| option READ_EXPAND_16 requires READ_TRANSFORMS READ_16BIT READ_EXPAND
 | |
| option READ_EXPAND requires READ_TRANSFORMS
 | |
| option READ_FILLER requires READ_TRANSFORMS
 | |
| option READ_GRAY_TO_RGB requires READ_TRANSFORMS
 | |
| option READ_INVERT_ALPHA requires READ_TRANSFORMS
 | |
| option READ_INVERT requires READ_TRANSFORMS
 | |
| option READ_PACK requires READ_TRANSFORMS
 | |
| option READ_PACKSWAP requires READ_TRANSFORMS
 | |
| option READ_RGB_TO_GRAY requires READ_TRANSFORMS READ_GAMMA
 | |
| option READ_SCALE_16_TO_8 requires READ_TRANSFORMS
 | |
| option READ_SHIFT requires READ_TRANSFORMS
 | |
| option READ_STRIP_16_TO_8 requires READ_TRANSFORMS
 | |
| option READ_STRIP_ALPHA requires READ_TRANSFORMS
 | |
| option READ_SWAP_ALPHA requires READ_TRANSFORMS
 | |
| option READ_SWAP requires READ_TRANSFORMS READ_16BIT
 | |
| option READ_USER_TRANSFORM requires READ_TRANSFORMS
 | |
| 
 | |
| option PROGRESSIVE_READ requires READ
 | |
| option SEQUENTIAL_READ requires READ
 | |
| 
 | |
| # You can define PNG_NO_PROGRESSIVE_READ if you don't do progressive reading.
 | |
| # This is not talking about interlacing capability!  You'll still have
 | |
| # interlacing unless you turn off the following which is required
 | |
| # for PNG-compliant decoders.  (In other words, do not do this - in
 | |
| # fact it can't be disabled from the command line!)
 | |
| #option READ_INTERLACING requires READ
 | |
| 
 | |
| option READ_COMPOSITE_NODIV requires READ
 | |
| = NO_READ_COMPOSITE_NODIV NO_READ_COMPOSITED_NODIV
 | |
| 
 | |
| # Inch conversions
 | |
| 
 | |
| option INCH_CONVERSIONS
 | |
| = INCH_CONVERSIONS INCH_CONVERSIONS
 | |
| 
 | |
| # API to build a grayscale palette
 | |
| 
 | |
| option BUILD_GRAYSCALE_PALETTE
 | |
| 
 | |
| # WRITE options
 | |
| 
 | |
| option WRITE
 | |
| 
 | |
| # Disabling WRITE_16BIT prevents 16-bit PNG files from being
 | |
| # generated.
 | |
| option WRITE_16BIT requires WRITE enables 16BIT
 | |
| 
 | |
| option WRITE_TRANSFORMS requires WRITE
 | |
| = NO_WRITE_TRANSFORMS WRITE_TRANSFORMS_NOT_SUPPORTED
 | |
| 
 | |
| option WRITE_SHIFT requires WRITE_TRANSFORMS
 | |
| option WRITE_PACK requires WRITE_TRANSFORMS
 | |
| option WRITE_BGR requires WRITE_TRANSFORMS
 | |
| option WRITE_SWAP requires WRITE_TRANSFORMS WRITE_16BIT
 | |
| option WRITE_PACKSWAP requires WRITE_TRANSFORMS
 | |
| option WRITE_INVERT requires WRITE_TRANSFORMS
 | |
| option WRITE_FILLER requires WRITE_TRANSFORMS
 | |
| option WRITE_SWAP_ALPHA requires WRITE_TRANSFORMS
 | |
| option WRITE_INVERT_ALPHA requires WRITE_TRANSFORMS
 | |
| option WRITE_USER_TRANSFORM requires WRITE_TRANSFORMS
 | |
| 
 | |
| # This is not required for PNG-compliant encoders, but can cause
 | |
| # trouble if left undefined
 | |
| 
 | |
| option WRITE_INTERLACING requires WRITE
 | |
| 
 | |
| # The following depends, internally, on WEIGHT_SHIFT and COST_SHIFT
 | |
| # where are set below.
 | |
| 
 | |
| option WRITE_WEIGHTED_FILTER requires WRITE
 | |
| 
 | |
| option WRITE_FLUSH requires WRITE
 | |
| 
 | |
| # Note: these can be turned off explicitly if not required by the
 | |
| # apps implementing the user transforms
 | |
| option USER_TRANSFORM_PTR if READ_USER_TRANSFORM WRITE_USER_TRANSFORM
 | |
| option USER_TRANSFORM_INFO if READ_USER_TRANSFORM WRITE_USER_TRANSFORM
 | |
| 
 | |
| # This enables API to set compression parameters for compressing
 | |
| # non-IDAT chunks (zTXt, iTXt, iCCP, and unknown chunks).  This feature
 | |
| # was added at libpng-1.5.3.
 | |
| option WRITE_CUSTOMIZE_ZTXT_COMPRESSION requires WRITE
 | |
| 
 | |
| # Any chunks you are not interested in, you can undef here.  The
 | |
| # ones that allocate memory may be expecially important (hIST,
 | |
| # tEXt, zTXt, tRNS, pCAL).  Others will just save time and make png_info
 | |
| # a bit smaller.
 | |
| 
 | |
| # The size of the png_text structure changed in libpng-1.0.6 when
 | |
| # iTXt support was added.  iTXt support was turned off by default through
 | |
| # libpng-1.2.x, to support old apps that malloc the png_text structure
 | |
| # instead of calling png_set_text() and letting libpng malloc it.  It
 | |
| # was turned on by default in libpng-1.4.0.
 | |
| 
 | |
| option READ_ANCILLARY_CHUNKS requires READ
 | |
| # PNG_READ_ANCILLARY_CHUNKS_NOT_SUPPORTED is deprecated.
 | |
| = NO_READ_ANCILLARY_CHUNKS READ_ANCILLARY_CHUNKS_NOT_SUPPORTED
 | |
| 
 | |
| option WRITE_ANCILLARY_CHUNKS requires WRITE
 | |
| # PNG_WRITE_ANCILLARY_CHUNKS_NOT_SUPPORTED is deprecated.
 | |
| = NO_WRITE_ANCILLARY_CHUNKS WRITE_ANCILLARY_CHUNKS_NOT_SUPPORTED
 | |
| 
 | |
| # These options disable *all* the text chunks if turned off
 | |
| 
 | |
| option READ_TEXT requires READ_ANCILLARY_CHUNKS enables TEXT
 | |
| option WRITE_TEXT requires WRITE_ANCILLARY_CHUNKS enables TEXT
 | |
| 
 | |
| # Moved to pnglibconf.h at libpng-1.5.0
 | |
| # Feature support: in 1.4 this was in pngconf.h, but the following
 | |
| # features have no affect on the libpng API.  Add library
 | |
| # only features to the end of this list.  Add features that
 | |
| # affect the API above.  (Note: the list of chunks follows
 | |
| # the library-only settings.)
 | |
| #
 | |
| # BUILD TIME ONLY OPTIONS
 | |
| #   These options do not affect the API but rather alter how the
 | |
| #   API is implemented, they get recorded in pnglibconf.h, but
 | |
| #   can't be changed by the application.
 | |
| 
 | |
| # Colorspace support (enabled as required); just the support for colorant
 | |
| # information.  Gamma support, likewise, is just support for the gamma
 | |
| # information, READ_GAMMA is required for gamma transformations (so it
 | |
| # is possible to read PNG gamma without enabling all the libpng transform
 | |
| # code - do this for applications that do their own gamma processing)
 | |
| #
 | |
| # As of 1.6.0 COLORSPACE is only useful if the application processes the
 | |
| # information; this is because the library does not do any colorspace
 | |
| # processing, it just validates the data in the PNG file.
 | |
| 
 | |
| option GAMMA disabled
 | |
| option COLORSPACE enables GAMMA disabled
 | |
| 
 | |
| # When an ICC profile is read, or png_set, it will be checked for a match
 | |
| # against known sRGB profiles if the sRGB handling is enabled.  This
 | |
| # setting controls how much work is done during the check:
 | |
| #
 | |
| # 0: Just validate the profile MD5 signature if present, otherwise use
 | |
| #    the checks in option 1.
 | |
| #
 | |
| # 1: Additionally check the length, intent and adler32 checksum of the
 | |
| #    actual data.   If enabled this will reject known profiles that have
 | |
| #    had the rendering intent in the header changed as well as other edits
 | |
| #    done without updating the checksum.  See the discussion below.
 | |
| #
 | |
| # 2: Additionally checksum all the data using the ethernet CRC32 algorithm.
 | |
| #    This makes it more difficult to fake profiles and makes it less likely
 | |
| #    to get a false positive on profiles with no signature, but is probably
 | |
| #    just a waste of time since all currently approved ICC sRGB profiles have
 | |
| #    a secure MD5 signature.
 | |
| #
 | |
| # The rendering intent.  An ICC profile stores an intended rendering intent,
 | |
| # but does not include the value in the signature.  The intent is documented
 | |
| # as the intent that should be used when combining two profiles.  The sRGB
 | |
| # profile is intended, however, to be used with any of the four defined intents.
 | |
| # For this reason the sRGB chunk includes an 'intent' to be used when displaying
 | |
| # the image (intent is really a property of the image not the profile.)
 | |
| #
 | |
| # Unfortunately the iCCP chunk does not.  It may therefore be that some
 | |
| # applications modify the intent in profiles (including sRGB profiles) to work
 | |
| # round this problem.  Selecting an option other than option '0' will cause such
 | |
| # modified profiles to be rejected.
 | |
| #
 | |
| # Security.  The use of Adler32 and CRC32 checksums does not help significantly
 | |
| # with any security issues.  It is relatively easy to produce arbitrary profiles
 | |
| # with the required checksums on current computer systems.  Nevertheless
 | |
| # security does not seem to be an issue because the only consequence of a false
 | |
| # positive is a false assertion that the profile is an sRGB profile.  This might
 | |
| # be used to hide data from libpng using applications, but it doesn't seem
 | |
| # possible to damage them.
 | |
| 
 | |
| setting sRGB_PROFILE_CHECKS default 2
 | |
| 
 | |
| # Artificially align memory - the code typically aligns to 8 byte
 | |
| # boundaries if this is switched on, it's a small waste of space
 | |
| # but can help (in theory) on some architectures.  Only affects
 | |
| # internal structures.  Added at libpng 1.4.0
 | |
| 
 | |
| option ALIGN_MEMORY
 | |
| 
 | |
| # Buggy compilers (e.g., gcc 2.7.2.2) need PNG_NO_POINTER_INDEXING
 | |
| # See png[wr]util.c, normally this should always be *on*
 | |
| 
 | |
| option POINTER_INDEXING
 | |
| 
 | |
| # Other defines for things like memory and the like can go here.
 | |
| 
 | |
| # BUILD TIME SETTINGS
 | |
| # Like build time options these do not affect the API, but they
 | |
| # may be useful to applications because they record details of
 | |
| # how the API will behave particularly with regard to overall
 | |
| # accuracy.
 | |
| 
 | |
| # This controls how fine the quantizing gets.  As this allocates
 | |
| # a largish chunk of memory (32K), those who are not as concerned
 | |
| # with quantizing quality can decrease some or all of these.
 | |
| 
 | |
| setting QUANTIZE_RED_BITS default 5
 | |
| setting QUANTIZE_GREEN_BITS default 5
 | |
| setting QUANTIZE_BLUE_BITS default 5
 | |
| 
 | |
| # This controls how fine the gamma correction becomes when you
 | |
| # are only interested in 8 bits anyway.  Increasing this value
 | |
| # results in more memory being used, and more pow() functions
 | |
| # being called to fill in the gamma tables.  Don't set this value
 | |
| # less then 8, and even that may not work (I haven't tested it).
 | |
| 
 | |
| setting MAX_GAMMA_8 default 11
 | |
| 
 | |
| # This controls how much a difference in gamma we can tolerate before
 | |
| # we actually start doing gamma conversion, it's a fixed point value,
 | |
| # so the default below is 0.05, meaning libpng ignores corrections in
 | |
| # the range 0.95 to 1.05
 | |
| 
 | |
| setting GAMMA_THRESHOLD_FIXED default 5000
 | |
| 
 | |
| # Scaling factor for filter heuristic weighting calculations
 | |
| 
 | |
| setting WEIGHT_SHIFT default 8
 | |
| setting COST_SHIFT default 3
 | |
| 
 | |
| # Precision to use when converting a floating point value to a PNG
 | |
| # extension format string in an sCAL chunk (only relevant if the
 | |
| # floating point API is enabled)
 | |
| 
 | |
| setting sCAL_PRECISION default 5
 | |
| 
 | |
| # This is the size of the compression buffer, and thus the size of
 | |
| # an IDAT chunk.  Make this whatever size you feel is best for your
 | |
| # machine.  One of these will be allocated per png_struct.  When this
 | |
| # is full, it writes the data to the disk, and does some other
 | |
| # calculations.  Making this an extremely small size may slow
 | |
| # the library down, but you may want to experiment to determine
 | |
| # where it becomes significant, if you are concerned with memory
 | |
| # usage.  Note that zlib allocates at least 32Kb also.  For readers,
 | |
| # this describes the size of the buffer available to read the data in.
 | |
| # Unless this gets smaller than the size of a row (compressed),
 | |
| # it should not make much difference how big this is.
 | |
| 
 | |
| setting ZBUF_SIZE default 8192
 | |
| 
 | |
| # This is the size of the decompression buffer used when counting or checking
 | |
| # the decompressed size of an LZ stream from a compressed ancilliary chunk; the
 | |
| # decompressed data is never used so a different size may be optimal.  This size
 | |
| # was determined using contrib/libtests/timepng.c with compressed zTXt data
 | |
| # around 11MByte in size.  Slight speed improvements (up to about 14% in
 | |
| # timepng) can be achieved by very large increases (to 32kbyte) on regular data,
 | |
| # but highly compressible data shows only around 2% improvement.   The size is
 | |
| # chosen to minimize the effects of DoS attacks based on using very large
 | |
| # amounts of highly compressible data.
 | |
| 
 | |
| setting INFLATE_BUF_SIZE default 1024
 | |
| 
 | |
| # This is the maximum amount of IDAT data that the sequential reader will
 | |
| # process at one time.  The setting does not affect the size of IDAT chunks
 | |
| # read, just the amount read at once.  Neither does it affect the progressive
 | |
| # reader, which processes just the amount of data the application gives it.
 | |
| # The sequential reader is currently unable to process more than one IDAT at
 | |
| # once - it has to read and process each one in turn.  There is no point setting
 | |
| # this to a value larger than the IDAT chunks typically encountered (it would
 | |
| # just waste memory) but there may be some point in reducing it below the value
 | |
| # of ZBUF_SIZE (the size of IDAT chunks written by libpng.)
 | |
| 
 | |
| setting IDAT_READ_SIZE default PNG_ZBUF_SIZE
 | |
| 
 | |
| # Ancillary chunks
 | |
| chunk bKGD
 | |
| chunk cHRM enables COLORSPACE
 | |
| chunk gAMA enables GAMMA
 | |
| chunk hIST
 | |
| chunk iCCP enables COLORSPACE GAMMA
 | |
| chunk iTXt
 | |
| chunk oFFs
 | |
| chunk pCAL
 | |
| chunk pHYs
 | |
| chunk sBIT
 | |
| chunk sCAL
 | |
| chunk sPLT
 | |
| chunk sRGB enables COLORSPACE GAMMA
 | |
| chunk tEXt requires TEXT
 | |
| chunk tIME
 | |
| chunk tRNS
 | |
| chunk zTXt
 | |
| 
 | |
| # This only affects support of the optional PLTE chunk in RGB and RGBA
 | |
| # images.  Notice that READ_ANCILLARY_CHUNKS therefore disables part
 | |
| # of the regular chunk reading too.
 | |
| 
 | |
| option READ_OPT_PLTE requires READ_ANCILLARY_CHUNKS
 | |
| 
 | |
| # Unknown chunk handling
 | |
| #
 | |
| # 'UNKNOWN_CHUNKS' is a global option to disable all unknown chunk handling on
 | |
| # read or write; everything else below requires it (directly or indirectly).
 | |
| option UNKNOWN_CHUNKS
 | |
| 
 | |
| # There are three main options to control the ability to read and write unknown
 | |
| # chunks.  If either read option is turned on then unknown chunks will be read,
 | |
| # otherwise they are skipped.  If the write option is turned on unknown chunks
 | |
| # set by png_set_unknown_chunks will be written otherwise it is an error to call
 | |
| # that API on a write struct.
 | |
| option WRITE_UNKNOWN_CHUNKS requires WRITE requires UNKNOWN_CHUNKS
 | |
| option WRITE_UNKNOWN_CHUNKS enables STORE_UNKNOWN_CHUNKS
 | |
| 
 | |
| # The first way to read user chunks is to have libpng save them for a later call
 | |
| # to png_get_unknown_chunks, the application must call
 | |
| # png_set_keep_unknown_chunks to cause this to actually happen (see png.h)
 | |
| option SAVE_UNKNOWN_CHUNKS requires READ requires SET_UNKNOWN_CHUNKS
 | |
| option SAVE_UNKNOWN_CHUNKS enables READ_UNKNOWN_CHUNKS STORE_UNKNOWN_CHUNKS
 | |
| 
 | |
| # The second approach is to use an application provided callback to process the
 | |
| # chunks, the callback can either handle the chunk entirely itself or request
 | |
| # that libpng store the chunk for later retrieval via png_get_unknown_chunks.
 | |
| #
 | |
| # Note that there is no 'WRITE_USER_CHUNKS' so the USER_CHUNKS option is always
 | |
| # the same as READ_USER_CHUNKS at present
 | |
| option READ_USER_CHUNKS requires READ requires UNKNOWN_CHUNKS
 | |
| option READ_USER_CHUNKS enables READ_UNKNOWN_CHUNKS USER_CHUNKS
 | |
| 
 | |
| # Two further options are provided to allow detailed control of the handling.
 | |
| # The first enables png_set_keep_unknown_chunks; this allows the default to be
 | |
| # changed from discarding unknown chunks and allows per-chunk control.  This is
 | |
| # required to use the SAVE_UNKNOWN_CHUNKS option.  If enabled this option also
 | |
| # applies to write (see png.h), otherwise the write API simply writes all the
 | |
| # chunks it is given.
 | |
| #
 | |
| # The second option extends the unknown handling to allow known chunks to be
 | |
| # handled as though they were unknown.  This option doesn't change any APIs, it
 | |
| # merely turns on the code to check known as well as unknown chunks.
 | |
| #
 | |
| # This option no longer affects the write code.  It can be safely disabled and
 | |
| # will prevent applications stopping libpng reading known chunks.
 | |
| option SET_UNKNOWN_CHUNKS requires UNKNOWN_CHUNKS
 | |
| option HANDLE_AS_UNKNOWN requires SET_UNKNOWN_CHUNKS
 | |
| 
 | |
| # The following options are derived from the above and should not be turned on
 | |
| # explicitly.
 | |
| option READ_UNKNOWN_CHUNKS requires UNKNOWN_CHUNKS disabled
 | |
| option STORE_UNKNOWN_CHUNKS requires UNKNOWN_CHUNKS disabled
 | |
| 
 | |
| option CONVERT_tIME requires WRITE_ANCILLARY_CHUNKS
 | |
| # The "tm" structure is not supported on WindowsCE
 | |
| 
 | |
| @#ifdef _WIN32_WCE
 | |
| @#   define PNG_NO_CONVERT_tIME
 | |
| @#endif
 | |
| 
 | |
| option WRITE_FILTER requires WRITE
 | |
| 
 | |
| option SAVE_INT_32 disabled
 | |
| # png_save_int_32 is required internally for writing the ancillary chunks oFFs
 | |
| # and pCAL and for both reading and writing iCCP (for the generation/checking of
 | |
| # the corresponding cHRM/gAMA chunks) if full ICC is supported.
 | |
| 
 | |
| # added at libpng-1.5.4
 | |
| 
 | |
| option WRITE_OPTIMIZE_CMF requires WRITE
 | |
| 
 | |
| option READ_COMPRESSED_TEXT disabled
 | |
| option READ_iCCP enables READ_COMPRESSED_TEXT
 | |
| option READ_iTXt enables READ_COMPRESSED_TEXT
 | |
| option READ_zTXt enables READ_COMPRESSED_TEXT
 | |
| option READ_COMPRESSED_TEXT enables READ_TEXT
 | |
| 
 | |
| option WRITE_oFFs enables SAVE_INT_32
 | |
| option WRITE_pCAL enables SAVE_INT_32
 | |
| 
 | |
| option WRITE_COMPRESSED_TEXT disabled
 | |
| option WRITE_iCCP enables WRITE_COMPRESSED_TEXT
 | |
| option WRITE_iTXt enables WRITE_COMPRESSED_TEXT
 | |
| option WRITE_zTXt enables WRITE_COMPRESSED_TEXT
 | |
| option WRITE_COMPRESSED_TEXT enables WRITE_TEXT
 | |
| 
 | |
| # Turn this off to disable png_read_png() and png_write_png() and
 | |
| # leave the row_pointers member out of the info structure.
 | |
| 
 | |
| option INFO_IMAGE
 | |
| 
 | |
| # added at libpng-1.5.10
 | |
| # Turn this off to disable warning about invalid palette index and
 | |
| # leave the num_palette_max member out of the png structure.
 | |
| 
 | |
| option CHECK_FOR_INVALID_INDEX enables READ_CHECK_FOR_INVALID_INDEX
 | |
| option CHECK_FOR_INVALID_INDEX enables WRITE_CHECK_FOR_INVALID_INDEX
 | |
| option READ_CHECK_FOR_INVALID_INDEX requires READ CHECK_FOR_INVALID_INDEX
 | |
| option WRITE_CHECK_FOR_INVALID_INDEX requires WRITE CHECK_FOR_INVALID_INDEX
 | |
| 
 | |
| # Simplified API options (added at libpng-1.6.0)
 | |
| # Read:
 | |
| option SIMPLIFIED_READ requires SEQUENTIAL_READ READ_TRANSFORMS SETJMP
 | |
| option SIMPLIFIED_READ requires BENIGN_ERRORS READ_GAMMA
 | |
| option SIMPLIFIED_READ enables READ_EXPAND READ_16BIT READ_EXPAND_16
 | |
| option SIMPLIFIED_READ enables READ_SCALE_16_TO_8 READ_RGB_TO_GRAY
 | |
| option SIMPLIFIED_READ enables READ_ALPHA_MODE READ_BACKGROUND READ_STRIP_ALPHA
 | |
| option SIMPLIFIED_READ enables READ_FILLER READ_SWAP
 | |
| 
 | |
| option SIMPLIFIED_READ_AFIRST requires SIMPLIFIED_READ disabled
 | |
| option READ_SWAP_ALPHA enables SIMPLIFIED_READ_AFIRST
 | |
| 
 | |
| option SIMPLIFIED_READ_BGR requires SIMPLIFIED_READ disabled
 | |
| option READ_BGR enables SIMPLIFIED_READ_BGR
 | |
| 
 | |
| # Write:
 | |
| option SIMPLIFIED_WRITE requires WRITE STDIO SETJMP
 | |
| option SIMPLIFIED_WRITE enables WRITE_SWAP WRITE_gAMA WRITE_sRGB WRITE_cHRM
 | |
| 
 | |
| option SIMPLIFIED_WRITE_AFIRST requires SIMPLIFIED_WRITE disabled
 | |
| option WRITE_SWAP_ALPHA enables SIMPLIFIED_WRITE_AFIRST
 | |
| 
 | |
| option SIMPLIFIED_WRITE_BGR requires SIMPLIFIED_WRITE disabled
 | |
| option WRITE_BGR enables SIMPLIFIED_WRITE_BGR
 | |
| 
 | |
| # Formats:
 | |
| option FORMAT_AFIRST if SIMPLIFIED_READ_AFIRST SIMPLIFIED_WRITE_AFIRST
 | |
| option FORMAT_BGR if SIMPLIFIED_READ_BGR SIMPLIFIED_WRITE_BGR
 | 
