1 | # scripts/pnglibconf.dfa - library build configuration control
|
---|
2 | #
|
---|
3 | @/*- pnglibconf.dfn intermediate file
|
---|
4 | @ * generated from scripts/pnglibconf.dfa
|
---|
5 | @ */
|
---|
6 | #
|
---|
7 | com pnglibconf.h - library build configuration
|
---|
8 | com
|
---|
9 | version
|
---|
10 | com
|
---|
11 | com Copyright (c) 2018-2024 Cosmin Truta
|
---|
12 | com Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
|
---|
13 | com
|
---|
14 | com This code is released under the libpng license.
|
---|
15 | com For conditions of distribution and use, see the disclaimer
|
---|
16 | com and license in png.h
|
---|
17 | com
|
---|
18 |
|
---|
19 | file pnglibconf.h scripts/pnglibconf.dfa PNGLCONF_H
|
---|
20 |
|
---|
21 | # This file is preprocessed by scripts/options.awk and the
|
---|
22 | # C compiler to generate 'pnglibconf.h' - a list of all the
|
---|
23 | # configuration options. The file lists the various options
|
---|
24 | # that can *only* be specified during the libpng build;
|
---|
25 | # pnglibconf.h freezes the definitions selected for the specific
|
---|
26 | # build.
|
---|
27 | #
|
---|
28 | # The syntax is detailed in scripts/options.awk; this is a summary
|
---|
29 | # only:
|
---|
30 | #
|
---|
31 | # setting <name> [requires ...] [default]
|
---|
32 | # #define PNG_<name> <value> /* value comes from current setting */
|
---|
33 | # option <name> [requires ...] [if ...] [enables ...] [disabled]
|
---|
34 | # #define PNG_<name>_SUPPORTED if the requirements are met and
|
---|
35 | # enable the other options listed
|
---|
36 | # chunk <name> [requires ...] [enables ...] [disabled]
|
---|
37 | # Enable chunk processing for the given ancillary chunk; any
|
---|
38 | # 'requires something' expands to READ_something for read and
|
---|
39 | # WRITE_something for write, but the enables list members are
|
---|
40 | # used as given (e.g. enables GAMMA just expands to that on the
|
---|
41 | # correspond READ_name and WRITE_name lines.)
|
---|
42 | #
|
---|
43 | # "," may be used to separate options on an 'option' line and is ignored; it
|
---|
44 | # doesn't change the meaning of the line. (NOT setting, where "," becomes
|
---|
45 | # part of the setting!) A comma at the end of an option line causes a
|
---|
46 | # continuation (the next line is included in the option too.)
|
---|
47 | #
|
---|
48 | # Note that the 'on' and 'off' keywords, while valid on both option
|
---|
49 | # and chunk, should not be used in this file because they force the
|
---|
50 | # relevant options on or off.
|
---|
51 |
|
---|
52 | #----------------------------------------------------------------------
|
---|
53 |
|
---|
54 | # The following setting, option and chunk values can all be changed
|
---|
55 | # while building libpng:
|
---|
56 | #
|
---|
57 | # setting: change 'setting' lines to fine tune library performance;
|
---|
58 | # changes to the settings don't affect the libpng API functionally
|
---|
59 | #
|
---|
60 | # option: change 'option' lines to remove or add capabilities from
|
---|
61 | # or to the library; options change the library API
|
---|
62 | #
|
---|
63 | # chunk: change 'chunk' lines to remove capabilities to process
|
---|
64 | # optional ('ancillary') chunks. This does not prevent PNG
|
---|
65 | # decoding but does change the libpng API because some chunks
|
---|
66 | # will be ignored.
|
---|
67 | #
|
---|
68 | # There are three ways of disabling features, in no particular order:
|
---|
69 | #
|
---|
70 | # 1) Create 'pngusr.h', enter the required private build information
|
---|
71 | # detailed below and #define PNG_NO_<option> for each option you
|
---|
72 | # don't want in that file. You can also turn on options using
|
---|
73 | # PNG_<option>_SUPPORTED. When you have finished, rerun configure
|
---|
74 | # and rebuild pnglibconf.h file with -DPNG_USER_CONFIG:
|
---|
75 | #
|
---|
76 | # make clean
|
---|
77 | # CPPFLAGS='-DPNG_USER_CONFIG' ./configure
|
---|
78 | # make pnglibconf.h
|
---|
79 | #
|
---|
80 | # pngusr.h is only used during the creation of pnglibconf.h, but it
|
---|
81 | # is safer to ensure that -DPNG_USER_CONFIG is specified throughout
|
---|
82 | # the build by changing the CPPFLAGS passed to the initial ./configure
|
---|
83 | #
|
---|
84 | # 2) Add definitions of the settings you want to change to
|
---|
85 | # CPPFLAGS; for example:
|
---|
86 | #
|
---|
87 | # -DPNG_DEFAULT_READ_MACROS=0
|
---|
88 | #
|
---|
89 | # (This would change the default to *not* use read macros.) Be
|
---|
90 | # very careful to change only settings that don't alter the API
|
---|
91 | # because this approach bypasses the private build checking. You
|
---|
92 | # can also change settings from pngpriv.h (read pngpriv.h) safely
|
---|
93 | # without API changes. Do that in the same way.
|
---|
94 | #
|
---|
95 | # 3) Write a new '.dfa' file (say 'pngusr.dfa') and in this file
|
---|
96 | # provide override values for setting entries and turn option or
|
---|
97 | # chunk values explicitly 'on' or 'off':
|
---|
98 | #
|
---|
99 | # setting FOO default VALUE
|
---|
100 | # option BAR [on|off]
|
---|
101 | #
|
---|
102 | # Then add this file to the options.awk command line (the *first*
|
---|
103 | # one) after this file. The make macro DFA_XTRA is provided to make
|
---|
104 | # this easier (set it like CPPFLAGS prior to running ./configure).
|
---|
105 | # Look at the builds below contrib/pngminim for some extreme examples
|
---|
106 | # of how this can be used.
|
---|
107 | #
|
---|
108 | # Don't edit this file unless you are contributing a patch to
|
---|
109 | # libpng and need new or modified options/settings.
|
---|
110 | #----------------------------------------------------------------------
|
---|
111 |
|
---|
112 | # The following causes commented out #undef lines to be written to
|
---|
113 | # pnglibconf.h; this can be stopped by logunsupported=0 in a later
|
---|
114 | # file or on the command line (after pnglibconf.dfa)
|
---|
115 |
|
---|
116 | logunsupported = 1
|
---|
117 |
|
---|
118 | # The following allows the output from configure to modify the contents of
|
---|
119 | # pnglibconf.h
|
---|
120 |
|
---|
121 | @#ifdef HAVE_CONFIG_H
|
---|
122 | @# include "config.h"
|
---|
123 | @#endif
|
---|
124 |
|
---|
125 | # PNG_USER_CONFIG has to be defined on the compiler command line
|
---|
126 | # to cause pngusr.h to be read while constructing pnglibconf.h
|
---|
127 | #
|
---|
128 | # If you create a private DLL you need to define the following
|
---|
129 | # macros in the file 'pngusr.h' and set -DPNG_USER_CONFIG for
|
---|
130 | # compilation (i.e. in CPPFLAGS.)
|
---|
131 | # #define PNG_USER_PRIVATEBUILD \
|
---|
132 | # <Describes by whom and why this version of the DLL was built>
|
---|
133 | # e.g. #define PNG_USER_PRIVATEBUILD "Build by MyCompany for xyz reasons."
|
---|
134 | # #define PNG_USER_DLLFNAME_POSTFIX <two-letter postfix that serve to
|
---|
135 | # distinguish your DLL from those of the official release. These
|
---|
136 | # correspond to the trailing letters that come after the version
|
---|
137 | # number and must match your private DLL name>
|
---|
138 | # e.g. // private DLL "libpng13gx.dll"
|
---|
139 | # #define PNG_USER_DLLFNAME_POSTFIX "gx"
|
---|
140 | #
|
---|
141 | # The following macros are also at your disposal if you want to complete the
|
---|
142 | # DLL VERSIONINFO structure.
|
---|
143 | # - PNG_USER_VERSIONINFO_COMMENTS
|
---|
144 | # - PNG_USER_VERSIONINFO_COMPANYNAME
|
---|
145 | # - PNG_USER_VERSIONINFO_LEGALTRADEMARKS
|
---|
146 |
|
---|
147 | # It is necessary to include configures definitions here so that AC_DEFINE
|
---|
148 | # in configure.ac works in a comprehensible way
|
---|
149 | @#if defined(HAVE_CONFIG_H) && !defined(PNG_NO_CONFIG_H)
|
---|
150 | @# include "config.h"
|
---|
151 | @#endif
|
---|
152 |
|
---|
153 | @#ifdef PNG_USER_CONFIG
|
---|
154 | @# include "pngusr.h"
|
---|
155 | @#endif
|
---|
156 |
|
---|
157 | # This is a special fixup for the Watcom C compiler on Windows, which has
|
---|
158 | # multiple procedure call standards. Unless PNG_API_RULE is set explicitly
|
---|
159 | # (i.e. if it is not defined at this point) it will be forced to '2' here when
|
---|
160 | # using Watcom. This indicates to the other header files that Watcom behaviour
|
---|
161 | # is required where appropriate.
|
---|
162 |
|
---|
163 | @#ifdef __WATCOMC__
|
---|
164 | @# ifndef PNG_API_RULE
|
---|
165 | @# define PNG_API_RULE 2 /* Use Watcom calling conventions */
|
---|
166 | @# endif
|
---|
167 | @#endif
|
---|
168 |
|
---|
169 | # IN DEVELOPMENT
|
---|
170 | # These are currently experimental features; define them if you want (NOTE:
|
---|
171 | # experimental options must be disabled before they are defined in this file!)
|
---|
172 |
|
---|
173 | # NONE
|
---|
174 |
|
---|
175 | # Note that PNG_USER_CONFIG only has an effect when building
|
---|
176 | # pnglibconf.h
|
---|
177 |
|
---|
178 | setting USER_CONFIG
|
---|
179 | setting USER_PRIVATEBUILD
|
---|
180 | setting USER_DLLFNAME_POSTFIX
|
---|
181 | setting USER_VERSIONINFO_COMMENTS
|
---|
182 | setting USER_VERSIONINFO_COMPANYNAME
|
---|
183 | setting USER_VERSIONINFO_LEGALTRADEMARKS
|
---|
184 |
|
---|
185 | # Record the 'API rule' used to select calling conventions on
|
---|
186 | # those systems that support such things (see all the comments in
|
---|
187 | # pngconf.h)
|
---|
188 | # Changing this setting has a fundamental affect on the PNG ABI,
|
---|
189 | # do not release shared libraries with this changed.
|
---|
190 |
|
---|
191 | setting API_RULE default 0
|
---|
192 |
|
---|
193 | # This allows a prefix to be added to the front of every API function name (and
|
---|
194 | # therefore every symbol) by redefining all the function names with the prefix
|
---|
195 | # at the end of pnglibconf.h. It also turns on similar internal symbol renaming
|
---|
196 | # by causing a similar build-time only file, pngprefix.h, to be generated.
|
---|
197 |
|
---|
198 | setting PREFIX
|
---|
199 |
|
---|
200 | # Implementation specific control of the optimizations, enabled by those
|
---|
201 | # hardware or software options that need it (typically when run-time choices
|
---|
202 | # must be made by the user)
|
---|
203 | option SET_OPTION disabled
|
---|
204 |
|
---|
205 | # These options are specific to the ARM NEON hardware optimizations. At present
|
---|
206 | # these optimizations depend on GCC specific pre-processing of an assembler (.S)
|
---|
207 | # file, so they probably won't work with other compilers.
|
---|
208 | #
|
---|
209 | # ARM_NEON_OPT:
|
---|
210 | # unset: check at compile time
|
---|
211 | # (__ARM_NEON__ must be predefined by the compiler, as a result of
|
---|
212 | # passing "-mfpu=neon" to the compiler options)
|
---|
213 | # 0: disable (even if the CPU has a NEON FPU)
|
---|
214 | # 1: check at run time (via ARM_NEON_{API,CHECK})
|
---|
215 | # 2: switch on unconditionally
|
---|
216 | # (inadvisable - instead, pass "-mfpu=neon" to the compiler)
|
---|
217 | # NOTE:
|
---|
218 | # When building libpng, avoid using any setting other than '0';
|
---|
219 | # '1' is set automatically when either 'API' or 'CHECK' are configured in;
|
---|
220 | # '2' should not be necessary, as "-mfpu=neon" will achieve the same effect
|
---|
221 | # as well as applying the NEON optimizations to the rest of libpng.
|
---|
222 | # NOTE:
|
---|
223 | # Any setting other than '0' requires ALIGNED_MEMORY.
|
---|
224 | #
|
---|
225 | # ARM_NEON_API:
|
---|
226 | # (PNG_ARM_NEON == 1)
|
---|
227 | # Allow the optimization to be switched on with png_set_option.
|
---|
228 | #
|
---|
229 | # ARM_NEON_CHECK:
|
---|
230 | # (PNG_ARM_NEON == 1)
|
---|
231 | # Compile a run-time check to see if Neon extensions are supported.
|
---|
232 | # This is poorly supported and deprecated - use the png_set_option API.
|
---|
233 | #
|
---|
234 | setting ARM_NEON_OPT
|
---|
235 | option ARM_NEON_API disabled requires ALIGNED_MEMORY enables SET_OPTION,
|
---|
236 | sets ARM_NEON_OPT 1
|
---|
237 | option ARM_NEON_CHECK disabled requires ALIGNED_MEMORY,
|
---|
238 | sets ARM_NEON_OPT 1
|
---|
239 |
|
---|
240 | # These options are specific to the PowerPC VSX hardware optimizations.
|
---|
241 | #
|
---|
242 | # POWERPC_VSX_OPT:
|
---|
243 | # unset: check at compile time
|
---|
244 | # (__PPC64__,__ALTIVEC__,__VSX__ must be predefined by the compiler,
|
---|
245 | # as a result of passing "-mvsx -maltivec" to the compiler options)
|
---|
246 | # 0: disable (even if the CPU supports VSX)
|
---|
247 | # 1: check at run time (via POWERPC_VSX_{API,CHECK})
|
---|
248 | # 2: switch on unconditionally
|
---|
249 | # (inadvisable - instead, pass "-mvsx -maltivec" to the compiler)
|
---|
250 | # NOTE:
|
---|
251 | # When building libpng, avoid using any setting other than '0';
|
---|
252 | # '1' is set automatically when either 'API' or 'CHECK' are configured in;
|
---|
253 | # '2' should not be necessary, as "-mvsx -maltivec" will achieve the same
|
---|
254 | # effect as well as applying the VSX optimizations to the rest of libpng.
|
---|
255 | #
|
---|
256 | # POWERPC_VSX_API:
|
---|
257 | # (PNG_POWERPC_VSX == 1)
|
---|
258 | # Allow the optimization to be switched on with png_set_option.
|
---|
259 | #
|
---|
260 | # POWERPC_VSX_CHECK:
|
---|
261 | # (PNG_POWERPC_VSX == 1)
|
---|
262 | # Compile a run-time check to see if VSX extensions are supported.
|
---|
263 | # This is not supported on all systems. See contrib/powerpc-vsx/README.
|
---|
264 | #
|
---|
265 | setting POWERPC_VSX_OPT
|
---|
266 | option POWERPC_VSX_API disabled enables SET_OPTION,
|
---|
267 | sets POWERPC_VSX_OPT 1
|
---|
268 | option POWERPC_VSX_CHECK disabled,
|
---|
269 | sets POWERPC_VSX_OPT 1
|
---|
270 |
|
---|
271 | # These options are specific to the MIPS MSA hardware optimizations.
|
---|
272 | #
|
---|
273 | # MIPS_MSA_OPT:
|
---|
274 | # unset: check at compile time
|
---|
275 | # (__mips_msa must be predefined by the compiler, as a result of
|
---|
276 | # passing "-mmsa -mfp64" to the compiler options)
|
---|
277 | # 0: disable (even if the CPU supports MSA)
|
---|
278 | # 1: check at run time (via MIPS_MSA_{API,CHECK})
|
---|
279 | # 2: switch on unconditionally
|
---|
280 | # (inadvisable - instead, pass "-mmsa -mfp64" to the compiler)
|
---|
281 | # NOTE:
|
---|
282 | # When building libpng, avoid using any setting other than '0';
|
---|
283 | # '1' is set automatically when either 'API' or 'CHECK' are configured in;
|
---|
284 | # '2' should not be necessary, as "-mmsa -mfp64" will achieve the same
|
---|
285 | # effect as well as applying the MSA optimizations to the rest of libpng.
|
---|
286 | # NOTE:
|
---|
287 | # Any setting other than '0' requires ALIGNED_MEMORY.
|
---|
288 | #
|
---|
289 | # MIPS_MSA_API:
|
---|
290 | # (PNG_MIPS_MSA == 1)
|
---|
291 | # Allow the optimization to be switched on with png_set_option.
|
---|
292 | #
|
---|
293 | # MIPS_MSA_CHECK:
|
---|
294 | # (PNG_MIPS_MSA == 1)
|
---|
295 | # Compile a run-time check to see if MSA extensions are supported.
|
---|
296 | #
|
---|
297 | setting MIPS_MSA_OPT
|
---|
298 | option MIPS_MSA_API disabled requires ALIGNED_MEMORY enables SET_OPTION,
|
---|
299 | sets MIPS_MSA_OPT 1
|
---|
300 | option MIPS_MSA_CHECK disabled requires ALIGNED_MEMORY,
|
---|
301 | sets MIPS_MSA_OPT 1
|
---|
302 |
|
---|
303 | # These options are specific to the MIPS MMI hardware optimizations.
|
---|
304 | #
|
---|
305 | # MIPS_MMI_OPT:
|
---|
306 | # unset: check at compile time
|
---|
307 | # (__mips_loongson_mmi must be defined by the compiler, as a result of
|
---|
308 | # passing "-mloongson-mmi -march=loongson3a" to the compiler options)
|
---|
309 | # 0: disable (even if the CPU supports MMI)
|
---|
310 | # 1: check at run time (via MIPS_MMI_{API,CHECK})
|
---|
311 | # 2: switch on unconditionally
|
---|
312 | # (inadvisable - instead, pass "-mloongson-mmi -march=loongson3a" to the
|
---|
313 | # compiler)
|
---|
314 | # NOTE:
|
---|
315 | # When building libpng, avoid using any setting other than '0';
|
---|
316 | # '1' is set automatically when either 'API' or 'CHECK' are configured in;
|
---|
317 | # '2' should not be necessary, as "-mloongson-mmi -march=loongson3a" will
|
---|
318 | # achieve the same effect as well as applying the MMI optimizations to the
|
---|
319 | # rest of libpng.
|
---|
320 | #
|
---|
321 | # MIPS_MMI_API:
|
---|
322 | # (PNG_MIPS_MMI == 1)
|
---|
323 | # Allow the optimization to be switched on with png_set_option.
|
---|
324 | #
|
---|
325 | # MIPS_MMI_CHECK:
|
---|
326 | # (PNG_MIPS_MMI == 1)
|
---|
327 | # Compile a run-time check to see if MMI extensions are supported.
|
---|
328 | #
|
---|
329 | setting MIPS_MMI_OPT
|
---|
330 | option MIPS_MMI_API disabled requires ALIGNED_MEMORY enables SET_OPTION,
|
---|
331 | sets MIPS_MMI_OPT 1
|
---|
332 | option MIPS_MMI_CHECK disabled requires ALIGNED_MEMORY,
|
---|
333 | sets MIPS_MMI_OPT 1
|
---|
334 |
|
---|
335 |
|
---|
336 | # These settings configure the default compression level (0-9) and 'strategy';
|
---|
337 | # strategy is as defined by the implementors of zlib. It describes the input
|
---|
338 | # data and modifies the zlib parameters in an attempt to optimize the balance
|
---|
339 | # between search and huffman encoding in the zlib algorithms. The defaults are
|
---|
340 | # the zlib.h defaults - the apparently recursive definition does not arise
|
---|
341 | # because the name of the setting is prefixed by PNG_
|
---|
342 | #
|
---|
343 | # The TEXT values are the defaults when writing compressed text (all forms)
|
---|
344 |
|
---|
345 | # Include the zlib header so that the defaults below are known
|
---|
346 | @# include <zlib.h>
|
---|
347 |
|
---|
348 | # The '@' here means to substitute the value when pnglibconf.h is built
|
---|
349 | setting Z_DEFAULT_COMPRESSION default @Z_DEFAULT_COMPRESSION
|
---|
350 | # TODO: why aren't these Z_RLE; zlib.h says that Z_RLE, specifically, is
|
---|
351 | # appropriate for PNG images, maybe it doesn't exist in all versions?
|
---|
352 | setting Z_DEFAULT_STRATEGY default @Z_FILTERED
|
---|
353 | setting Z_DEFAULT_NOFILTER_STRATEGY default @Z_DEFAULT_STRATEGY
|
---|
354 | setting ZLIB_VERNUM default @ZLIB_VERNUM
|
---|
355 |
|
---|
356 | # Linkage of:
|
---|
357 | #
|
---|
358 | # API: libpng API functions
|
---|
359 | # CALLBACK: internal non-file-local callbacks
|
---|
360 | # FUNCTION: internal non-file-local functions
|
---|
361 | # DATA: internal non-file-local (const) data
|
---|
362 | setting LINKAGE_API default extern
|
---|
363 | setting LINKAGE_CALLBACK default extern
|
---|
364 | setting LINKAGE_FUNCTION default extern
|
---|
365 | setting LINKAGE_DATA default extern
|
---|
366 |
|
---|
367 | setting TEXT_Z_DEFAULT_COMPRESSION default @Z_DEFAULT_COMPRESSION
|
---|
368 | setting TEXT_Z_DEFAULT_STRATEGY default @Z_DEFAULT_STRATEGY
|
---|
369 |
|
---|
370 | # Default to using the read macros
|
---|
371 |
|
---|
372 | setting DEFAULT_READ_MACROS default 1
|
---|
373 |
|
---|
374 | # The alternative is to call functions to read PNG values, if
|
---|
375 | # the functions are turned *off* the read macros must always
|
---|
376 | # be enabled, so turning this off will actually force the
|
---|
377 | # USE_READ_MACROS option on (see pngconf.h)
|
---|
378 |
|
---|
379 | option READ_INT_FUNCTIONS requires READ
|
---|
380 |
|
---|
381 | # The same for write but these can only be switched off if no writing
|
---|
382 | # is required at all - hence the use of a 'disabled', not a 'requires'.
|
---|
383 | # If these are needed, they are enabled in the 'WRITE options' section
|
---|
384 | # below.
|
---|
385 |
|
---|
386 | option WRITE_INT_FUNCTIONS disabled
|
---|
387 |
|
---|
388 | # Error controls
|
---|
389 | #
|
---|
390 | # WARNINGS: normally on, if off no warnings are generated
|
---|
391 | # ERROR_TEXT: normally on, if off errors happen but there is no message
|
---|
392 | # ERROR_NUMBERS: unimplemented feature, therefore disabled
|
---|
393 | # BENIGN_ERRORS: support for just issuing warnings for recoverable errors
|
---|
394 | #
|
---|
395 | # BENIGN_READ_ERRORS:
|
---|
396 | # By default recoverable errors on read should just generate warnings,
|
---|
397 | # generally safe but PNG files that don't conform to the specification will
|
---|
398 | # be accepted if a meaningful result can be produced.
|
---|
399 | #
|
---|
400 | # BENIGN_WRITE_ERRORS:
|
---|
401 | # By default recoverable errors on write should just generate warnings,
|
---|
402 | # not generally safe because this allows the application to write invalid
|
---|
403 | # PNG files. Applications should enable this themselves; it's useful
|
---|
404 | # because it means that a failure to write an ancillary chunk can often be
|
---|
405 | # ignored.
|
---|
406 |
|
---|
407 | option WARNINGS
|
---|
408 | option ERROR_TEXT
|
---|
409 | option ERROR_NUMBERS disabled
|
---|
410 |
|
---|
411 | option BENIGN_ERRORS
|
---|
412 | option BENIGN_WRITE_ERRORS requires BENIGN_ERRORS disabled
|
---|
413 | option BENIGN_READ_ERRORS requires BENIGN_ERRORS
|
---|
414 |
|
---|
415 | # Adler32 checksum
|
---|
416 | #
|
---|
417 | # This option allows the check of the Adler32 checksum performed by zlib to
|
---|
418 | # be turned off for IDAT chunks (only). Unless this option is enabled and
|
---|
419 | # turned on (not the default even if enabled) a failed Adler32 at the end of the
|
---|
420 | # stream will result in a decompression (inflate) failure on read even though
|
---|
421 | # the entire image might have been read successfully.
|
---|
422 | #
|
---|
423 | # This option relies on an undocumented function 'inflateValidate' which is
|
---|
424 | # present in only some versions of zlib. If the function is not present in the
|
---|
425 | # zlib used with libpng code which uses -lpng is likely to fail to link or to
|
---|
426 | # launch in the case of a DLL.
|
---|
427 | #
|
---|
428 | # Therefore this option is currently disabled by default; it has to be turned on
|
---|
429 | # in pngusr.dfa and then the application program has to explicitly turn the
|
---|
430 | # functionality on by calling png_set_option.
|
---|
431 | #
|
---|
432 | # Furthermore the option is explicitly turned off here if the zlib version
|
---|
433 | # number is below that required - libpng wouldn't compile in that case if the
|
---|
434 | # option were turned on.
|
---|
435 | option DISABLE_ADLER32_CHECK requires READ enables SET_OPTION disabled
|
---|
436 |
|
---|
437 | # ZLIB_VERNUM must be used here, not PNG_ZLIB_VERNUM, because
|
---|
438 | # scripts/options.awk ends up putting this test adhead of the setting of
|
---|
439 | # PNG_ZLIB_VERNUM (apparently above, but not because of the two-pass processing)
|
---|
440 | @#if ZLIB_VERNUM < 0x1290
|
---|
441 | @# define PNG_NO_DISABLE_ADLER32_CHECK
|
---|
442 | @#endif
|
---|
443 |
|
---|
444 | # Generic options - affect both read and write.
|
---|
445 |
|
---|
446 | option MNG_FEATURES
|
---|
447 |
|
---|
448 | # Arithmetic options, the first is the big switch that chooses between internal
|
---|
449 | # floating and fixed point arithmetic implementations - it does not affect any
|
---|
450 | # APIs. The second two (the _POINT settings) switch off individual APIs.
|
---|
451 | #
|
---|
452 | # Prior to libpng 1.6.8 one of the API (_POINT) variants had to be selected. At
|
---|
453 | # 1.6.8 this restriction has been removed; the simplified API can be used
|
---|
454 | # without enabling any of the low level fixed/floating APIs.
|
---|
455 |
|
---|
456 | option FLOATING_ARITHMETIC
|
---|
457 | option FLOATING_POINT
|
---|
458 | option FIXED_POINT
|
---|
459 |
|
---|
460 | # This protects us against compilers that run on a windowing system
|
---|
461 | # and thus don't have or would rather us not use the stdio types:
|
---|
462 | # stdin, stdout, and stderr. The only one currently used is stderr
|
---|
463 | # in png_error() and png_warning(). #defining PNG_NO_CONSOLE_IO will
|
---|
464 | # prevent these from being compiled and used. #defining PNG_NO_STDIO
|
---|
465 | # will also prevent these, plus will prevent the entire set of stdio
|
---|
466 | # macros and functions (FILE *, printf, etc.) from being compiled and used,
|
---|
467 | # unless (PNG_DEBUG > 0) has been #defined.
|
---|
468 |
|
---|
469 | option STDIO
|
---|
470 | option CONSOLE_IO requires STDIO
|
---|
471 |
|
---|
472 | # Note: prior to 1.5.0 this option could not be disabled if STDIO
|
---|
473 | # was enabled. Prior to 1.5.3 this option required STDIO
|
---|
474 |
|
---|
475 | option TIME_RFC1123
|
---|
476 |
|
---|
477 | # PNG_SETJMP_NOT_SUPPORTED is an old equivalent for NO_SETJMP
|
---|
478 |
|
---|
479 | option SETJMP
|
---|
480 | = NO_SETJMP SETJMP_NOT_SUPPORTED
|
---|
481 |
|
---|
482 | # If this is disabled it is not possible for apps to get the
|
---|
483 | # values from the 'info' structure, this effectively removes
|
---|
484 | # quite a lot of the READ API.
|
---|
485 |
|
---|
486 | option EASY_ACCESS
|
---|
487 |
|
---|
488 | # Added at libpng-1.2.0
|
---|
489 |
|
---|
490 | option USER_MEM
|
---|
491 |
|
---|
492 | # Added at libpng-1.4.0
|
---|
493 |
|
---|
494 | option IO_STATE
|
---|
495 |
|
---|
496 | # Libpng limits: limit the size of images and data on read.
|
---|
497 | #
|
---|
498 | # If this option is disabled all the limit checking code will be disabled:
|
---|
499 |
|
---|
500 | option USER_LIMITS requires READ
|
---|
501 |
|
---|
502 | # The default settings given below for the limits mean that libpng will
|
---|
503 | # limit the size of images or the size of data in ancillary chunks to less
|
---|
504 | # than the specification or implementation limits. Settings have the
|
---|
505 | # following interpretations:
|
---|
506 | #
|
---|
507 | # USER_WIDTH_MAX: maximum width of an image that will be read
|
---|
508 | # USER_HEIGHT_MAX: maximum height
|
---|
509 | # USER_CHUNK_MALLOC_MAX: maximum in-memory (decompressed) size of a single chunk
|
---|
510 | # USER_CHUNK_CACHE_MAX: maximum number of chunks to be cached
|
---|
511 | #
|
---|
512 | # Only chunks that are variable in number are counted towards the
|
---|
513 |
|
---|
514 | # Use 0x7fffffff for unlimited
|
---|
515 | setting USER_WIDTH_MAX default 1000000
|
---|
516 | setting USER_HEIGHT_MAX default 1000000
|
---|
517 |
|
---|
518 | # Use 0 for unlimited
|
---|
519 | setting USER_CHUNK_CACHE_MAX default 1000
|
---|
520 | setting USER_CHUNK_MALLOC_MAX default 8000000
|
---|
521 |
|
---|
522 | # If this option is enabled APIs to set the above limits at run time are added;
|
---|
523 | # without this the hardwired (compile time) limits will be used.
|
---|
524 | option SET_USER_LIMITS requires USER_LIMITS
|
---|
525 |
|
---|
526 | # All of the following options relate to code capabilities for
|
---|
527 | # processing image data before creating a PNG or after reading one.
|
---|
528 | # You can remove these capabilities safely and still be PNG
|
---|
529 | # conformant, however the library that results is still non-standard.
|
---|
530 | # See the comments above about how to change options and settings.
|
---|
531 |
|
---|
532 | # READ options
|
---|
533 | #
|
---|
534 | # WARNING: in libpng 1.5 maintained configuration compatibility with earlier
|
---|
535 | # versions. In some cases turning off an option turned off other options, in
|
---|
536 | # others it was ineffective unless dependent options were also turned off.
|
---|
537 | # Libpng 1.6 changes this: in general if you turn off an option that affects
|
---|
538 | # APIs it stays off and simply disables APIs that depend on it.
|
---|
539 | #
|
---|
540 | # As a result if you simply port the libpng 1.5 configuration to libpng 1.6 you
|
---|
541 | # will probably see build failures due to missing APIs. Fixing these failures
|
---|
542 | # requires some, perhaps considerable, knowledge of what your libpng using
|
---|
543 | # applications are doing, fortunately there is no great reason for you to move
|
---|
544 | # to libpng 1.6; the new interfaces in 1.6 will take several years to become
|
---|
545 | # popular.
|
---|
546 |
|
---|
547 | option READ enables READ_INTERLACING SET_OPTION
|
---|
548 |
|
---|
549 | # Disabling READ_16BIT does not disable reading 16-bit PNG files, but it
|
---|
550 | # forces them to be chopped down to 8-bit, and disables any 16-bit
|
---|
551 | # processing after that has happened. You need to be sure to enable
|
---|
552 | # READ_SCALE_16_TO_8 or READ_STRIP_16_TO_8 when you disable READ_16BIT for
|
---|
553 | # this to work properly. You should disable the other option if you need to
|
---|
554 | # ensure a particular conversion (otherwise the app can chose.)
|
---|
555 |
|
---|
556 | option READ_16BIT requires READ enables 16BIT
|
---|
557 |
|
---|
558 | option READ_QUANTIZE requires READ
|
---|
559 |
|
---|
560 | option READ_TRANSFORMS requires READ
|
---|
561 | = NO_READ_TRANSFORMS READ_TRANSFORMS_NOT_SUPPORTED
|
---|
562 |
|
---|
563 | # Read gamma handling. Gamma processing is a core part of libpng and many of
|
---|
564 | # the capabilities are dependent on libpng performing gamma correction.
|
---|
565 | #
|
---|
566 | # In libpng 1.6 disabling gamma processing (setting PNG_NO_READ_GAMMA)
|
---|
567 | # consistently disables those parts of the API that depend on it. Prior to
|
---|
568 | # 1.6.0 this was not true; the results were unpredictable and varied between
|
---|
569 | # releases.
|
---|
570 | #
|
---|
571 | # If you disable gamma processing and your program no longer compiles you need
|
---|
572 | # to ask whether you really need the APIs that are missing. If you do then you
|
---|
573 | # almost certainly need the gamma processing.
|
---|
574 | #
|
---|
575 | # If you handle gamma issues outside libpng then you do not need the libpng
|
---|
576 | # gamma processing; and it is an enormous waste of space. You just need to
|
---|
577 | # remove the use of libpng APIs that depend on it.
|
---|
578 | option READ_GAMMA requires READ_TRANSFORMS, READ_gAMA, READ_sRGB
|
---|
579 |
|
---|
580 | option READ_ALPHA_MODE requires READ_TRANSFORMS, READ_GAMMA
|
---|
581 | option READ_BACKGROUND requires READ_TRANSFORMS, READ_STRIP_ALPHA, READ_GAMMA
|
---|
582 | option READ_BGR requires READ_TRANSFORMS
|
---|
583 | option READ_EXPAND_16 requires READ_TRANSFORMS, READ_16BIT, READ_EXPAND
|
---|
584 | option READ_EXPAND requires READ_TRANSFORMS
|
---|
585 | option READ_FILLER requires READ_TRANSFORMS
|
---|
586 | option READ_GRAY_TO_RGB requires READ_TRANSFORMS
|
---|
587 | option READ_INVERT_ALPHA requires READ_TRANSFORMS
|
---|
588 | option READ_INVERT requires READ_TRANSFORMS
|
---|
589 | option READ_PACK requires READ_TRANSFORMS
|
---|
590 | option READ_PACKSWAP requires READ_TRANSFORMS
|
---|
591 | option READ_RGB_TO_GRAY requires READ_TRANSFORMS, READ_GAMMA enables COLORSPACE
|
---|
592 | option READ_SCALE_16_TO_8 requires READ_TRANSFORMS
|
---|
593 | option READ_SHIFT requires READ_TRANSFORMS
|
---|
594 | option READ_STRIP_16_TO_8 requires READ_TRANSFORMS
|
---|
595 | option READ_STRIP_ALPHA requires READ_TRANSFORMS
|
---|
596 | option READ_SWAP_ALPHA requires READ_TRANSFORMS
|
---|
597 | option READ_SWAP requires READ_TRANSFORMS, READ_16BIT
|
---|
598 | option READ_USER_TRANSFORM requires READ_TRANSFORMS
|
---|
599 |
|
---|
600 | option PROGRESSIVE_READ requires READ
|
---|
601 | option SEQUENTIAL_READ requires READ
|
---|
602 |
|
---|
603 | # You can define PNG_NO_PROGRESSIVE_READ if you don't do progressive reading.
|
---|
604 | # This is not talking about interlacing capability! You'll still have
|
---|
605 | # interlacing unless you turn off the following which is required
|
---|
606 | # for PNG-compliant decoders. (In other words, do not do this - in
|
---|
607 | # fact it can't be disabled from the command line!)
|
---|
608 | #option READ_INTERLACING requires READ
|
---|
609 |
|
---|
610 | option READ_COMPOSITE_NODIV requires READ
|
---|
611 | = NO_READ_COMPOSITE_NODIV NO_READ_COMPOSITED_NODIV
|
---|
612 |
|
---|
613 | # Inch conversions
|
---|
614 |
|
---|
615 | option INCH_CONVERSIONS
|
---|
616 | = INCH_CONVERSIONS INCH_CONVERSIONS
|
---|
617 |
|
---|
618 | # API to build a grayscale palette
|
---|
619 | # NOTE: this is not used internally by libpng at present.
|
---|
620 |
|
---|
621 | option BUILD_GRAYSCALE_PALETTE
|
---|
622 |
|
---|
623 | # WRITE options
|
---|
624 |
|
---|
625 | option WRITE enables WRITE_INT_FUNCTIONS
|
---|
626 |
|
---|
627 | # Disabling WRITE_16BIT prevents 16-bit PNG files from being
|
---|
628 | # generated.
|
---|
629 | option WRITE_16BIT requires WRITE enables 16BIT
|
---|
630 |
|
---|
631 | option WRITE_TRANSFORMS requires WRITE
|
---|
632 | = NO_WRITE_TRANSFORMS WRITE_TRANSFORMS_NOT_SUPPORTED
|
---|
633 |
|
---|
634 | option WRITE_SHIFT requires WRITE_TRANSFORMS
|
---|
635 | option WRITE_PACK requires WRITE_TRANSFORMS
|
---|
636 | option WRITE_BGR requires WRITE_TRANSFORMS
|
---|
637 | option WRITE_SWAP requires WRITE_TRANSFORMS, WRITE_16BIT
|
---|
638 | option WRITE_PACKSWAP requires WRITE_TRANSFORMS
|
---|
639 | option WRITE_INVERT requires WRITE_TRANSFORMS
|
---|
640 | option WRITE_FILLER requires WRITE_TRANSFORMS
|
---|
641 | option WRITE_SWAP_ALPHA requires WRITE_TRANSFORMS
|
---|
642 | option WRITE_INVERT_ALPHA requires WRITE_TRANSFORMS
|
---|
643 | option WRITE_USER_TRANSFORM requires WRITE_TRANSFORMS
|
---|
644 |
|
---|
645 | # This is not required for PNG-compliant encoders, but can cause
|
---|
646 | # trouble if left undefined
|
---|
647 |
|
---|
648 | option WRITE_INTERLACING requires WRITE
|
---|
649 |
|
---|
650 | # Deprecated, will be removed.
|
---|
651 | option WRITE_WEIGHTED_FILTER requires WRITE
|
---|
652 |
|
---|
653 | option WRITE_FLUSH requires WRITE
|
---|
654 |
|
---|
655 | # Note: these can be turned off explicitly if not required by the
|
---|
656 | # apps implementing the user transforms
|
---|
657 | option USER_TRANSFORM_PTR if READ_USER_TRANSFORM, WRITE_USER_TRANSFORM
|
---|
658 | option USER_TRANSFORM_INFO if READ_USER_TRANSFORM, WRITE_USER_TRANSFORM
|
---|
659 |
|
---|
660 | # This enables API to set compression parameters for compressing
|
---|
661 | # non-IDAT chunks (zTXt, iTXt, iCCP, and unknown chunks). This feature
|
---|
662 | # was added at libpng-1.5.3.
|
---|
663 | option WRITE_CUSTOMIZE_ZTXT_COMPRESSION requires WRITE
|
---|
664 | option WRITE_CUSTOMIZE_COMPRESSION requires WRITE
|
---|
665 |
|
---|
666 | # Any chunks you are not interested in, you can undef here. The
|
---|
667 | # ones that allocate memory may be especially important (hIST,
|
---|
668 | # tEXt, zTXt, tRNS, pCAL). Others will just save time and make png_info
|
---|
669 | # a bit smaller.
|
---|
670 |
|
---|
671 | # The size of the png_text structure changed in libpng-1.0.6 when
|
---|
672 | # iTXt support was added. iTXt support was turned off by default through
|
---|
673 | # libpng-1.2.x, to support old apps that malloc the png_text structure
|
---|
674 | # instead of calling png_set_text() and letting libpng malloc it. It
|
---|
675 | # was turned on by default in libpng-1.4.0.
|
---|
676 |
|
---|
677 | option READ_ANCILLARY_CHUNKS requires READ
|
---|
678 | # PNG_READ_ANCILLARY_CHUNKS_NOT_SUPPORTED is deprecated.
|
---|
679 | = NO_READ_ANCILLARY_CHUNKS READ_ANCILLARY_CHUNKS_NOT_SUPPORTED
|
---|
680 |
|
---|
681 | option WRITE_ANCILLARY_CHUNKS requires WRITE
|
---|
682 | # PNG_WRITE_ANCILLARY_CHUNKS_NOT_SUPPORTED is deprecated.
|
---|
683 | = NO_WRITE_ANCILLARY_CHUNKS WRITE_ANCILLARY_CHUNKS_NOT_SUPPORTED
|
---|
684 |
|
---|
685 | # These options disable *all* the text chunks if turned off
|
---|
686 |
|
---|
687 | option TEXT disabled
|
---|
688 | option READ_TEXT requires READ_ANCILLARY_CHUNKS enables TEXT
|
---|
689 | option WRITE_TEXT requires WRITE_ANCILLARY_CHUNKS enables TEXT
|
---|
690 |
|
---|
691 | # Moved to pnglibconf.h at libpng-1.5.0
|
---|
692 | # Feature support: in 1.4 this was in pngconf.h, but the following
|
---|
693 | # features have no affect on the libpng API. Add library
|
---|
694 | # only features to the end of this list. Add features that
|
---|
695 | # affect the API above. (Note: the list of chunks follows
|
---|
696 | # the library-only settings.)
|
---|
697 | #
|
---|
698 | # BUILD TIME ONLY OPTIONS
|
---|
699 | # These options do not affect the API but rather alter how the
|
---|
700 | # API is implemented, they get recorded in pnglibconf.h, but
|
---|
701 | # can't be changed by the application.
|
---|
702 |
|
---|
703 | # Colorspace support (enabled as required); just the support for colorant
|
---|
704 | # information. Gamma support, likewise, is just support for the gamma
|
---|
705 | # information, READ_GAMMA is required for gamma transformations (so it
|
---|
706 | # is possible to read PNG gamma without enabling all the libpng transform
|
---|
707 | # code - do this for applications that do their own gamma processing)
|
---|
708 | #
|
---|
709 | # As of 1.6.0 COLORSPACE is only useful if the application processes the
|
---|
710 | # information; this is because the library does not do any colorspace
|
---|
711 | # processing, it just validates the data in the PNG file.
|
---|
712 |
|
---|
713 | option GAMMA disabled
|
---|
714 | option COLORSPACE enables GAMMA disabled
|
---|
715 |
|
---|
716 | # When an ICC profile is read, or png_set, it will be checked for a match
|
---|
717 | # against known sRGB profiles if the sRGB handling is enabled. The
|
---|
718 | # PNG_sRGB_PROFILE_CHECKS setting controls how much work is done during the
|
---|
719 | # check:
|
---|
720 | #
|
---|
721 | # -1: Don't do any sRGB profile checking.
|
---|
722 | #
|
---|
723 | # 0: Just validate the profile MD5 signature if present, otherwise use
|
---|
724 | # the checks in option 1.
|
---|
725 | #
|
---|
726 | # 1: Additionally check the length, intent and adler32 checksum of the
|
---|
727 | # actual data. If enabled this will reject known profiles that have
|
---|
728 | # had the rendering intent in the header changed as well as other edits
|
---|
729 | # done without updating the checksum. See the discussion below.
|
---|
730 | #
|
---|
731 | # 2: Additionally checksum all the data using the ethernet CRC32 algorithm.
|
---|
732 | # This makes it more difficult to fake profiles and makes it less likely
|
---|
733 | # to get a false positive on profiles with no signature, but is probably
|
---|
734 | # just a waste of time since all currently approved ICC sRGB profiles have
|
---|
735 | # a secure MD5 signature.
|
---|
736 | #
|
---|
737 | # The rendering intent. An ICC profile stores an intended rendering intent,
|
---|
738 | # but does not include the value in the signature. The intent is documented
|
---|
739 | # as the intent that should be used when combining two profiles. The sRGB
|
---|
740 | # profile is intended, however, to be used with any of the four defined intents.
|
---|
741 | # For this reason the sRGB chunk includes an 'intent' to be used when displaying
|
---|
742 | # the image (intent is really a property of the image not the profile.)
|
---|
743 | #
|
---|
744 | # Unfortunately the iCCP chunk does not. It may therefore be that some
|
---|
745 | # applications modify the intent in profiles (including sRGB profiles) to work
|
---|
746 | # round this problem. Selecting an option other than option '0' will cause such
|
---|
747 | # modified profiles to be rejected.
|
---|
748 | #
|
---|
749 | # Security. The use of Adler32 and CRC32 checksums does not help significantly
|
---|
750 | # with any security issues. It is relatively easy to produce arbitrary profiles
|
---|
751 | # with the required checksums on current computer systems. Nevertheless
|
---|
752 | # security does not seem to be an issue because the only consequence of a false
|
---|
753 | # positive is a false assertion that the profile is an sRGB profile. This might
|
---|
754 | # be used to hide data from libpng using applications, but it doesn't seem
|
---|
755 | # possible to damage them.
|
---|
756 |
|
---|
757 | setting sRGB_PROFILE_CHECKS default 2
|
---|
758 |
|
---|
759 | # Artificially align memory - the code typically aligns to 8 byte
|
---|
760 | # boundaries if this is switched on, it's a small waste of space
|
---|
761 | # but can help (in theory) on some architectures. Only affects
|
---|
762 | # internal structures. Added at libpng 1.4.0
|
---|
763 |
|
---|
764 | option ALIGNED_MEMORY
|
---|
765 |
|
---|
766 | # Buggy compilers (e.g., gcc 2.7.2.2) need PNG_NO_POINTER_INDEXING
|
---|
767 | # See png[wr]util.c, normally this should always be *on*
|
---|
768 |
|
---|
769 | option POINTER_INDEXING
|
---|
770 |
|
---|
771 | # Other defines for things like memory and the like can go here.
|
---|
772 |
|
---|
773 | # BUILD TIME SETTINGS
|
---|
774 | # Like build time options these do not affect the API, but they
|
---|
775 | # may be useful to applications because they record details of
|
---|
776 | # how the API will behave particularly with regard to overall
|
---|
777 | # accuracy.
|
---|
778 |
|
---|
779 | # This controls how fine the quantizing gets. As this allocates
|
---|
780 | # a largish chunk of memory (32K), those who are not as concerned
|
---|
781 | # with quantizing quality can decrease some or all of these.
|
---|
782 |
|
---|
783 | setting QUANTIZE_RED_BITS default 5
|
---|
784 | setting QUANTIZE_GREEN_BITS default 5
|
---|
785 | setting QUANTIZE_BLUE_BITS default 5
|
---|
786 |
|
---|
787 | # This controls how fine the gamma correction becomes when you
|
---|
788 | # are only interested in 8 bits anyway. Increasing this value
|
---|
789 | # results in more memory being used, and more pow() functions
|
---|
790 | # being called to fill in the gamma tables. Don't set this value
|
---|
791 | # less than 8, and even that may not work (I haven't tested it).
|
---|
792 |
|
---|
793 | setting MAX_GAMMA_8 default 11
|
---|
794 |
|
---|
795 | # This controls how much a difference in gamma we can tolerate before
|
---|
796 | # we actually start doing gamma conversion, it's a fixed point value,
|
---|
797 | # so the default below is 0.05, meaning libpng ignores corrections in
|
---|
798 | # the range 0.95 to 1.05
|
---|
799 |
|
---|
800 | setting GAMMA_THRESHOLD_FIXED default 5000
|
---|
801 |
|
---|
802 | # Precision to use when converting a floating point value to a PNG
|
---|
803 | # extension format string in an sCAL chunk (only relevant if the
|
---|
804 | # floating point API is enabled)
|
---|
805 |
|
---|
806 | setting sCAL_PRECISION default 5
|
---|
807 |
|
---|
808 | # This is the size of the compression buffer, and thus the size of
|
---|
809 | # an IDAT chunk. Make this whatever size you feel is best for your
|
---|
810 | # machine. One of these will be allocated per png_struct. When this
|
---|
811 | # is full, it writes the data to the disk, and does some other
|
---|
812 | # calculations. Making this an extremely small size may slow
|
---|
813 | # the library down, but you may want to experiment to determine
|
---|
814 | # where it becomes significant, if you are concerned with memory
|
---|
815 | # usage. Note that zlib allocates at least 32Kb also. For readers,
|
---|
816 | # this describes the size of the buffer available to read the data in.
|
---|
817 | # Unless this gets smaller than the size of a row (compressed),
|
---|
818 | # it should not make much difference how big this is.
|
---|
819 |
|
---|
820 | setting ZBUF_SIZE default 8192
|
---|
821 |
|
---|
822 | # This is the size of the decompression buffer used when counting or checking
|
---|
823 | # the decompressed size of an LZ stream from a compressed ancillary chunk; the
|
---|
824 | # decompressed data is never used so a different size may be optimal. This size
|
---|
825 | # was determined using contrib/libtests/timepng.c with compressed zTXt data
|
---|
826 | # around 11MByte in size. Slight speed improvements (up to about 14% in
|
---|
827 | # timepng) can be achieved by very large increases (to 32kbyte) on regular data,
|
---|
828 | # but highly compressible data shows only around 2% improvement. The size is
|
---|
829 | # chosen to minimize the effects of DoS attacks based on using very large
|
---|
830 | # amounts of highly compressible data.
|
---|
831 |
|
---|
832 | setting INFLATE_BUF_SIZE default 1024
|
---|
833 |
|
---|
834 | # This is the maximum amount of IDAT data that the sequential reader will
|
---|
835 | # process at one time. The setting does not affect the size of IDAT chunks
|
---|
836 | # read, just the amount read at once. Neither does it affect the progressive
|
---|
837 | # reader, which processes just the amount of data the application gives it.
|
---|
838 | # The sequential reader is currently unable to process more than one IDAT at
|
---|
839 | # once - it has to read and process each one in turn. There is no point setting
|
---|
840 | # this to a value larger than the IDAT chunks typically encountered (it would
|
---|
841 | # just waste memory) but there may be some point in reducing it below the value
|
---|
842 | # of ZBUF_SIZE (the size of IDAT chunks written by libpng.)
|
---|
843 |
|
---|
844 | setting IDAT_READ_SIZE default PNG_ZBUF_SIZE
|
---|
845 |
|
---|
846 | # Ancillary chunks
|
---|
847 | chunk bKGD
|
---|
848 | chunk cHRM enables COLORSPACE
|
---|
849 | chunk eXIf
|
---|
850 | chunk gAMA enables GAMMA
|
---|
851 | chunk hIST
|
---|
852 | chunk iCCP enables COLORSPACE, GAMMA
|
---|
853 | chunk iTXt enables TEXT
|
---|
854 | chunk oFFs
|
---|
855 | chunk pCAL
|
---|
856 | chunk pHYs
|
---|
857 | chunk sBIT
|
---|
858 | chunk sCAL
|
---|
859 | chunk sPLT
|
---|
860 | chunk sRGB enables COLORSPACE, GAMMA, SET_OPTION
|
---|
861 | chunk tEXt requires TEXT
|
---|
862 | chunk tIME
|
---|
863 | chunk tRNS
|
---|
864 | chunk zTXt enables TEXT
|
---|
865 |
|
---|
866 | # This only affects support of the optional PLTE chunk in RGB and RGBA
|
---|
867 | # images. Notice that READ_ANCILLARY_CHUNKS therefore disables part
|
---|
868 | # of the regular chunk reading too.
|
---|
869 |
|
---|
870 | option READ_OPT_PLTE requires READ_ANCILLARY_CHUNKS
|
---|
871 |
|
---|
872 | # Unknown chunk handling
|
---|
873 | #
|
---|
874 | # 'UNKNOWN_CHUNKS' is a global option to disable all unknown chunk handling on
|
---|
875 | # read or write; everything else below requires it (directly or indirectly).
|
---|
876 | option UNKNOWN_CHUNKS
|
---|
877 |
|
---|
878 | # There are three main options to control the ability to read and write unknown
|
---|
879 | # chunks. If either read option is turned on then unknown chunks will be read,
|
---|
880 | # otherwise they are skipped. If the write option is turned on unknown chunks
|
---|
881 | # set by png_set_unknown_chunks will be written otherwise it is an error to call
|
---|
882 | # that API on a write struct.
|
---|
883 | option WRITE_UNKNOWN_CHUNKS requires WRITE requires UNKNOWN_CHUNKS
|
---|
884 | option WRITE_UNKNOWN_CHUNKS enables STORE_UNKNOWN_CHUNKS
|
---|
885 |
|
---|
886 | # The first way to read user chunks is to have libpng save them for a later call
|
---|
887 | # to png_get_unknown_chunks, the application must call
|
---|
888 | # png_set_keep_unknown_chunks to cause this to actually happen (see png.h)
|
---|
889 | option SAVE_UNKNOWN_CHUNKS requires READ requires SET_UNKNOWN_CHUNKS
|
---|
890 | option SAVE_UNKNOWN_CHUNKS enables READ_UNKNOWN_CHUNKS, STORE_UNKNOWN_CHUNKS
|
---|
891 |
|
---|
892 | # The second approach is to use an application provided callback to process the
|
---|
893 | # chunks, the callback can either handle the chunk entirely itself or request
|
---|
894 | # that libpng store the chunk for later retrieval via png_get_unknown_chunks.
|
---|
895 | #
|
---|
896 | # NOTE: If STORE_UNKNOWN_CHUNKS is not enabled (which is the default if
|
---|
897 | # both SAVE_UNKNOWN_CHUNKS and WRITE_UNKNOWN_CHUNKS are disabled) then a
|
---|
898 | # 0 result from the callback will be ignored because no support for saving
|
---|
899 | # unknown chunks has been compiled in. The normal symptom is that your app
|
---|
900 | # fails to compile because png_get_unknown_chunks is no longer defined in png.h.
|
---|
901 | # If you encounter this issue simply enable STORE_UNKNOWN_CHUNKS in your build.
|
---|
902 | #
|
---|
903 | # Note that there is no 'WRITE_USER_CHUNKS' so the USER_CHUNKS option is always
|
---|
904 | # the same as READ_USER_CHUNKS at present
|
---|
905 | option READ_USER_CHUNKS requires READ, UNKNOWN_CHUNKS
|
---|
906 | option READ_USER_CHUNKS enables READ_UNKNOWN_CHUNKS, USER_CHUNKS
|
---|
907 |
|
---|
908 | # Two further options are provided to allow detailed control of the handling.
|
---|
909 | # The first enables png_set_keep_unknown_chunks; this allows the default to be
|
---|
910 | # changed from discarding unknown chunks and allows per-chunk control. This is
|
---|
911 | # required to use the SAVE_UNKNOWN_CHUNKS option. If enabled this option also
|
---|
912 | # applies to write (see png.h), otherwise the write API simply writes all the
|
---|
913 | # chunks it is given.
|
---|
914 | #
|
---|
915 | # The second option extends the unknown handling to allow known chunks to be
|
---|
916 | # handled as though they were unknown. This option doesn't change any APIs, it
|
---|
917 | # merely turns on the code to check known as well as unknown chunks.
|
---|
918 | #
|
---|
919 | # This option no longer affects the write code. It can be safely disabled and
|
---|
920 | # will prevent applications stopping libpng reading known chunks.
|
---|
921 | option SET_UNKNOWN_CHUNKS requires UNKNOWN_CHUNKS
|
---|
922 | option HANDLE_AS_UNKNOWN requires SET_UNKNOWN_CHUNKS
|
---|
923 |
|
---|
924 | # The following options are derived from the above and should not be turned on
|
---|
925 | # explicitly.
|
---|
926 | option READ_UNKNOWN_CHUNKS requires UNKNOWN_CHUNKS disabled
|
---|
927 | option STORE_UNKNOWN_CHUNKS requires UNKNOWN_CHUNKS disabled
|
---|
928 |
|
---|
929 | option CONVERT_tIME requires WRITE_ANCILLARY_CHUNKS
|
---|
930 | # The "tm" structure is not supported on WindowsCE
|
---|
931 |
|
---|
932 | @#ifdef _WIN32_WCE
|
---|
933 | @# define PNG_NO_CONVERT_tIME
|
---|
934 | @#endif
|
---|
935 |
|
---|
936 | option WRITE_FILTER requires WRITE
|
---|
937 |
|
---|
938 | option SAVE_INT_32 disabled
|
---|
939 | # png_save_int_32 is required internally for writing the ancillary chunks oFFs
|
---|
940 | # and pCAL and for both reading and writing iCCP (for the generation/checking of
|
---|
941 | # the corresponding cHRM/gAMA chunks) if full ICC is supported.
|
---|
942 |
|
---|
943 | # added at libpng-1.5.4
|
---|
944 |
|
---|
945 | option WRITE_OPTIMIZE_CMF requires WRITE
|
---|
946 |
|
---|
947 | option READ_COMPRESSED_TEXT disabled
|
---|
948 | option READ_iCCP enables READ_COMPRESSED_TEXT
|
---|
949 | option READ_iTXt enables READ_COMPRESSED_TEXT
|
---|
950 | option READ_zTXt enables READ_COMPRESSED_TEXT
|
---|
951 |
|
---|
952 | option WRITE_oFFs enables SAVE_INT_32
|
---|
953 | option WRITE_pCAL enables SAVE_INT_32
|
---|
954 | option WRITE_cHRM enables SAVE_INT_32
|
---|
955 |
|
---|
956 | option WRITE_COMPRESSED_TEXT disabled
|
---|
957 | option WRITE_iCCP enables WRITE_COMPRESSED_TEXT
|
---|
958 | option WRITE_iTXt enables WRITE_COMPRESSED_TEXT
|
---|
959 | option WRITE_zTXt enables WRITE_COMPRESSED_TEXT
|
---|
960 |
|
---|
961 | # Turn this off to disable png_read_png() and png_write_png() and
|
---|
962 | # leave the row_pointers member out of the info structure.
|
---|
963 |
|
---|
964 | option INFO_IMAGE
|
---|
965 |
|
---|
966 | # added at libpng-1.5.10
|
---|
967 | # Turn this off to disable warning about invalid palette index and
|
---|
968 | # leave the num_palette_max member out of the png structure.
|
---|
969 |
|
---|
970 | option CHECK_FOR_INVALID_INDEX enables READ_CHECK_FOR_INVALID_INDEX
|
---|
971 | option CHECK_FOR_INVALID_INDEX enables WRITE_CHECK_FOR_INVALID_INDEX
|
---|
972 | option READ_CHECK_FOR_INVALID_INDEX requires READ, CHECK_FOR_INVALID_INDEX
|
---|
973 | option WRITE_CHECK_FOR_INVALID_INDEX requires WRITE, CHECK_FOR_INVALID_INDEX
|
---|
974 |
|
---|
975 | # added at libpng-1.5.15
|
---|
976 | option GET_PALETTE_MAX enables READ_GET_PALETTE_MAX WRITE_GET_PALETTE_MAX
|
---|
977 | option READ_GET_PALETTE_MAX requires READ_CHECK_FOR_INVALID_INDEX disabled
|
---|
978 | option WRITE_GET_PALETTE_MAX requires WRITE_CHECK_FOR_INVALID_INDEX disabled
|
---|
979 |
|
---|
980 | # Simplified API options (added at libpng-1.6.0)
|
---|
981 | # In libpng 1.6.8 the handling of these options was changed to used 'requires'
|
---|
982 | # throughout, so that disabling some of the low level support always disables
|
---|
983 | # the base simplified read/write API. This much simplifies the handling and
|
---|
984 | # makes 'everything = off' work in a more intuitive way. It eliminates a
|
---|
985 | # previously reported feature that APIs previously enabled by the simplified
|
---|
986 | # API couldn't be turned off without explicitly turning off the simplified
|
---|
987 | # APIs.
|
---|
988 | #
|
---|
989 | # Read:
|
---|
990 | option SIMPLIFIED_READ,
|
---|
991 | requires SEQUENTIAL_READ, READ_TRANSFORMS, SETJMP, BENIGN_ERRORS,
|
---|
992 | READ_EXPAND, READ_16BIT, READ_EXPAND_16, READ_SCALE_16_TO_8,
|
---|
993 | READ_RGB_TO_GRAY, READ_ALPHA_MODE, READ_BACKGROUND, READ_STRIP_ALPHA,
|
---|
994 | READ_FILLER, READ_SWAP, READ_PACK, READ_GRAY_TO_RGB, READ_GAMMA,
|
---|
995 | READ_tRNS, READ_bKGD, READ_gAMA, READ_cHRM, READ_sRGB, READ_sBIT
|
---|
996 |
|
---|
997 | # AFIRST and BGR read options:
|
---|
998 | # Prior to libpng 1.6.8 these were disabled but switched on if the low level
|
---|
999 | # libpng routines that do the swaps were enabled. This worked but was
|
---|
1000 | # confusing. In libpng 1.6.8 the options were changed to simple 'requires'
|
---|
1001 | # and are enabled by default. This should work the same way in practice.
|
---|
1002 | option SIMPLIFIED_READ_AFIRST enables FORMAT_AFIRST,
|
---|
1003 | requires SIMPLIFIED_READ READ_SWAP_ALPHA
|
---|
1004 |
|
---|
1005 | option SIMPLIFIED_READ_BGR enables FORMAT_BGR,
|
---|
1006 | requires SIMPLIFIED_READ READ_BGR
|
---|
1007 |
|
---|
1008 | # Write:
|
---|
1009 | option SIMPLIFIED_WRITE,
|
---|
1010 | requires WRITE, SETJMP, WRITE_SWAP, WRITE_PACK,
|
---|
1011 | WRITE_tRNS, WRITE_gAMA, WRITE_sRGB, WRITE_cHRM
|
---|
1012 |
|
---|
1013 | # 1.6.22: allow simplified write without stdio support:
|
---|
1014 | option SIMPLIFIED_WRITE_STDIO requires SIMPLIFIED_WRITE STDIO
|
---|
1015 |
|
---|
1016 | option SIMPLIFIED_WRITE_AFIRST enables FORMAT_AFIRST,
|
---|
1017 | requires SIMPLIFIED_WRITE WRITE_SWAP_ALPHA
|
---|
1018 |
|
---|
1019 | option SIMPLIFIED_WRITE_BGR enables FORMAT_BGR,
|
---|
1020 | requires SIMPLIFIED_WRITE WRITE_BGR
|
---|
1021 |
|
---|
1022 | # Formats:
|
---|
1023 | option FORMAT_AFIRST disabled
|
---|
1024 | option FORMAT_BGR disabled
|
---|