VirtualBox

source: vbox/trunk/src/libs/libpng-1.6.43/scripts/pnglibconf.dfa@ 105764

最後變更 在這個檔案從105764是 105469,由 vboxsync 提交於 4 月 前

libpng-1.6.43: Applied and adjusted our libpng changes to 1.6.43. bugref:8515

檔案大小: 41.5 KB
 
1# scripts/pnglibconf.dfa - library build configuration control
2#
3@/*- pnglibconf.dfn intermediate file
4@ * generated from scripts/pnglibconf.dfa
5@ */
6#
7com pnglibconf.h - library build configuration
8com
9version
10com
11com Copyright (c) 2018-2024 Cosmin Truta
12com Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
13com
14com This code is released under the libpng license.
15com For conditions of distribution and use, see the disclaimer
16com and license in png.h
17com
18
19file 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
116logunsupported = 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
178setting USER_CONFIG
179setting USER_PRIVATEBUILD
180setting USER_DLLFNAME_POSTFIX
181setting USER_VERSIONINFO_COMMENTS
182setting USER_VERSIONINFO_COMPANYNAME
183setting 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
191setting 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
198setting 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)
203option 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#
234setting ARM_NEON_OPT
235option ARM_NEON_API disabled requires ALIGNED_MEMORY enables SET_OPTION,
236 sets ARM_NEON_OPT 1
237option 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#
265setting POWERPC_VSX_OPT
266option POWERPC_VSX_API disabled enables SET_OPTION,
267 sets POWERPC_VSX_OPT 1
268option 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#
297setting MIPS_MSA_OPT
298option MIPS_MSA_API disabled requires ALIGNED_MEMORY enables SET_OPTION,
299 sets MIPS_MSA_OPT 1
300option 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#
329setting MIPS_MMI_OPT
330option MIPS_MMI_API disabled requires ALIGNED_MEMORY enables SET_OPTION,
331 sets MIPS_MMI_OPT 1
332option 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
349setting 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?
352setting Z_DEFAULT_STRATEGY default @Z_FILTERED
353setting Z_DEFAULT_NOFILTER_STRATEGY default @Z_DEFAULT_STRATEGY
354setting 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
362setting LINKAGE_API default extern
363setting LINKAGE_CALLBACK default extern
364setting LINKAGE_FUNCTION default extern
365setting LINKAGE_DATA default extern
366
367setting TEXT_Z_DEFAULT_COMPRESSION default @Z_DEFAULT_COMPRESSION
368setting TEXT_Z_DEFAULT_STRATEGY default @Z_DEFAULT_STRATEGY
369
370# Default to using the read macros
371
372setting 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
379option 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
386option 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
407option WARNINGS
408option ERROR_TEXT
409option ERROR_NUMBERS disabled
410
411option BENIGN_ERRORS
412option BENIGN_WRITE_ERRORS requires BENIGN_ERRORS disabled
413option 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.
435option 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
446option 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
456option FLOATING_ARITHMETIC
457option FLOATING_POINT
458option 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
469option STDIO
470option 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
475option TIME_RFC1123
476
477# PNG_SETJMP_NOT_SUPPORTED is an old equivalent for NO_SETJMP
478
479option 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
486option EASY_ACCESS
487
488# Added at libpng-1.2.0
489
490option USER_MEM
491
492# Added at libpng-1.4.0
493
494option 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
500option 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
515setting USER_WIDTH_MAX default 1000000
516setting USER_HEIGHT_MAX default 1000000
517
518# Use 0 for unlimited
519setting USER_CHUNK_CACHE_MAX default 1000
520setting 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.
524option 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
547option 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
556option READ_16BIT requires READ enables 16BIT
557
558option READ_QUANTIZE requires READ
559
560option 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.
578option READ_GAMMA requires READ_TRANSFORMS, READ_gAMA, READ_sRGB
579
580option READ_ALPHA_MODE requires READ_TRANSFORMS, READ_GAMMA
581option READ_BACKGROUND requires READ_TRANSFORMS, READ_STRIP_ALPHA, READ_GAMMA
582option READ_BGR requires READ_TRANSFORMS
583option READ_EXPAND_16 requires READ_TRANSFORMS, READ_16BIT, READ_EXPAND
584option READ_EXPAND requires READ_TRANSFORMS
585option READ_FILLER requires READ_TRANSFORMS
586option READ_GRAY_TO_RGB requires READ_TRANSFORMS
587option READ_INVERT_ALPHA requires READ_TRANSFORMS
588option READ_INVERT requires READ_TRANSFORMS
589option READ_PACK requires READ_TRANSFORMS
590option READ_PACKSWAP requires READ_TRANSFORMS
591option READ_RGB_TO_GRAY requires READ_TRANSFORMS, READ_GAMMA enables COLORSPACE
592option READ_SCALE_16_TO_8 requires READ_TRANSFORMS
593option READ_SHIFT requires READ_TRANSFORMS
594option READ_STRIP_16_TO_8 requires READ_TRANSFORMS
595option READ_STRIP_ALPHA requires READ_TRANSFORMS
596option READ_SWAP_ALPHA requires READ_TRANSFORMS
597option READ_SWAP requires READ_TRANSFORMS, READ_16BIT
598option READ_USER_TRANSFORM requires READ_TRANSFORMS
599
600option PROGRESSIVE_READ requires READ
601option 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
610option READ_COMPOSITE_NODIV requires READ
611= NO_READ_COMPOSITE_NODIV NO_READ_COMPOSITED_NODIV
612
613# Inch conversions
614
615option 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
621option BUILD_GRAYSCALE_PALETTE
622
623# WRITE options
624
625option WRITE enables WRITE_INT_FUNCTIONS
626
627# Disabling WRITE_16BIT prevents 16-bit PNG files from being
628# generated.
629option WRITE_16BIT requires WRITE enables 16BIT
630
631option WRITE_TRANSFORMS requires WRITE
632= NO_WRITE_TRANSFORMS WRITE_TRANSFORMS_NOT_SUPPORTED
633
634option WRITE_SHIFT requires WRITE_TRANSFORMS
635option WRITE_PACK requires WRITE_TRANSFORMS
636option WRITE_BGR requires WRITE_TRANSFORMS
637option WRITE_SWAP requires WRITE_TRANSFORMS, WRITE_16BIT
638option WRITE_PACKSWAP requires WRITE_TRANSFORMS
639option WRITE_INVERT requires WRITE_TRANSFORMS
640option WRITE_FILLER requires WRITE_TRANSFORMS
641option WRITE_SWAP_ALPHA requires WRITE_TRANSFORMS
642option WRITE_INVERT_ALPHA requires WRITE_TRANSFORMS
643option 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
648option WRITE_INTERLACING requires WRITE
649
650# Deprecated, will be removed.
651option WRITE_WEIGHTED_FILTER requires WRITE
652
653option WRITE_FLUSH requires WRITE
654
655# Note: these can be turned off explicitly if not required by the
656# apps implementing the user transforms
657option USER_TRANSFORM_PTR if READ_USER_TRANSFORM, WRITE_USER_TRANSFORM
658option 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.
663option WRITE_CUSTOMIZE_ZTXT_COMPRESSION requires WRITE
664option 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
677option 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
681option 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
687option TEXT disabled
688option READ_TEXT requires READ_ANCILLARY_CHUNKS enables TEXT
689option 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
713option GAMMA disabled
714option 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
757setting 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
764option 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
769option 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
783setting QUANTIZE_RED_BITS default 5
784setting QUANTIZE_GREEN_BITS default 5
785setting 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
793setting 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
800setting 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
806setting 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
820setting 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
832setting 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
844setting IDAT_READ_SIZE default PNG_ZBUF_SIZE
845
846# Ancillary chunks
847chunk bKGD
848chunk cHRM enables COLORSPACE
849chunk eXIf
850chunk gAMA enables GAMMA
851chunk hIST
852chunk iCCP enables COLORSPACE, GAMMA
853chunk iTXt enables TEXT
854chunk oFFs
855chunk pCAL
856chunk pHYs
857chunk sBIT
858chunk sCAL
859chunk sPLT
860chunk sRGB enables COLORSPACE, GAMMA, SET_OPTION
861chunk tEXt requires TEXT
862chunk tIME
863chunk tRNS
864chunk 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
870option 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).
876option 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.
883option WRITE_UNKNOWN_CHUNKS requires WRITE requires UNKNOWN_CHUNKS
884option 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)
889option SAVE_UNKNOWN_CHUNKS requires READ requires SET_UNKNOWN_CHUNKS
890option 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
905option READ_USER_CHUNKS requires READ, UNKNOWN_CHUNKS
906option 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.
921option SET_UNKNOWN_CHUNKS requires UNKNOWN_CHUNKS
922option 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.
926option READ_UNKNOWN_CHUNKS requires UNKNOWN_CHUNKS disabled
927option STORE_UNKNOWN_CHUNKS requires UNKNOWN_CHUNKS disabled
928
929option 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
936option WRITE_FILTER requires WRITE
937
938option 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
945option WRITE_OPTIMIZE_CMF requires WRITE
946
947option READ_COMPRESSED_TEXT disabled
948option READ_iCCP enables READ_COMPRESSED_TEXT
949option READ_iTXt enables READ_COMPRESSED_TEXT
950option READ_zTXt enables READ_COMPRESSED_TEXT
951
952option WRITE_oFFs enables SAVE_INT_32
953option WRITE_pCAL enables SAVE_INT_32
954option WRITE_cHRM enables SAVE_INT_32
955
956option WRITE_COMPRESSED_TEXT disabled
957option WRITE_iCCP enables WRITE_COMPRESSED_TEXT
958option WRITE_iTXt enables WRITE_COMPRESSED_TEXT
959option 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
964option 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
970option CHECK_FOR_INVALID_INDEX enables READ_CHECK_FOR_INVALID_INDEX
971option CHECK_FOR_INVALID_INDEX enables WRITE_CHECK_FOR_INVALID_INDEX
972option READ_CHECK_FOR_INVALID_INDEX requires READ, CHECK_FOR_INVALID_INDEX
973option WRITE_CHECK_FOR_INVALID_INDEX requires WRITE, CHECK_FOR_INVALID_INDEX
974
975# added at libpng-1.5.15
976option GET_PALETTE_MAX enables READ_GET_PALETTE_MAX WRITE_GET_PALETTE_MAX
977option READ_GET_PALETTE_MAX requires READ_CHECK_FOR_INVALID_INDEX disabled
978option 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:
990option 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.
1002option SIMPLIFIED_READ_AFIRST enables FORMAT_AFIRST,
1003 requires SIMPLIFIED_READ READ_SWAP_ALPHA
1004
1005option SIMPLIFIED_READ_BGR enables FORMAT_BGR,
1006 requires SIMPLIFIED_READ READ_BGR
1007
1008# Write:
1009option 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:
1014option SIMPLIFIED_WRITE_STDIO requires SIMPLIFIED_WRITE STDIO
1015
1016option SIMPLIFIED_WRITE_AFIRST enables FORMAT_AFIRST,
1017 requires SIMPLIFIED_WRITE WRITE_SWAP_ALPHA
1018
1019option SIMPLIFIED_WRITE_BGR enables FORMAT_BGR,
1020 requires SIMPLIFIED_WRITE WRITE_BGR
1021
1022# Formats:
1023option FORMAT_AFIRST disabled
1024option FORMAT_BGR disabled
注意: 瀏覽 TracBrowser 來幫助您使用儲存庫瀏覽器

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette