Rev 1897 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1897 | Rev 3928 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | /* pngpriv.h - private declarations for use inside libpng |
1 | /* pngpriv.h - private declarations for use inside libpng |
2 | * |
2 | * |
3 | * For conditions of distribution and use, see copyright notice in png.h |
3 | * For conditions of distribution and use, see copyright notice in png.h |
4 | * Copyright (c) 1998-2011 Glenn Randers-Pehrson |
4 | * Copyright (c) 1998-2013 Glenn Randers-Pehrson |
5 | * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) |
5 | * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) |
6 | * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) |
6 | * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) |
7 | * |
7 | * |
8 | * Last changed in libpng 1.5.0 [January 6, 2011] |
8 | * Last changed in libpng 1.6.3 [July 18, 2013] |
9 | * |
9 | * |
10 | * This code is released under the libpng license. |
10 | * This code is released under the libpng license. |
11 | * For conditions of distribution and use, see the disclaimer |
11 | * For conditions of distribution and use, see the disclaimer |
12 | * and license in png.h |
12 | * and license in png.h |
13 | */ |
13 | */ |
Line 14... | Line 14... | ||
14 | 14 | ||
15 | /* The symbols declared in this file (including the functions declared |
15 | /* The symbols declared in this file (including the functions declared |
16 | * as PNG_EXTERN) are PRIVATE. They are not part of the libpng public |
16 | * as extern) are PRIVATE. They are not part of the libpng public |
17 | * interface, and are not recommended for use by regular applications. |
17 | * interface, and are not recommended for use by regular applications. |
18 | * Some of them may become public in the future; others may stay private, |
18 | * Some of them may become public in the future; others may stay private, |
19 | * change in an incompatible way, or even disappear. |
19 | * change in an incompatible way, or even disappear. |
20 | * Although the libpng users are not forbidden to include this header, |
20 | * Although the libpng users are not forbidden to include this header, |
21 | * they should be well aware of the issues that may arise from doing so. |
21 | * they should be well aware of the issues that may arise from doing so. |
Line 22... | Line 22... | ||
22 | */ |
22 | */ |
23 | 23 | ||
Line -... | Line 24... | ||
- | 24 | #ifndef PNGPRIV_H |
|
- | 25 | #define PNGPRIV_H |
|
- | 26 | ||
- | 27 | /* Feature Test Macros. The following are defined here to ensure that correctly |
|
- | 28 | * implemented libraries reveal the APIs libpng needs to build and hide those |
|
- | 29 | * that are not needed and potentially damaging to the compilation. |
|
- | 30 | * |
|
24 | #ifndef PNGPRIV_H |
31 | * Feature Test Macros must be defined before any system header is included (see |
- | 32 | * POSIX 1003.1 2.8.2 "POSIX Symbols." |
|
- | 33 | * |
|
25 | #define PNGPRIV_H |
34 | * These macros only have an effect if the operating system supports either |
26 | 35 | * POSIX 1003.1 or C99, or both. On other operating systems (particularly |
|
- | 36 | * Windows/Visual Studio) there is no effect; the OS specific tests below are |
|
- | 37 | * still required (as of 2011-05-02.) |
|
- | 38 | */ |
|
- | 39 | #define _POSIX_SOURCE 1 /* Just the POSIX 1003.1 and C89 APIs */ |
|
27 | /* This is required for the definition of abort(), used as a last ditch |
40 | |
- | 41 | #ifndef PNG_VERSION_INFO_ONLY |
|
- | 42 | /* Standard library headers not required by png.h: */ |
|
- | 43 | # include |
|
- | 44 | # include |
|
- | 45 | #endif |
|
- | 46 | ||
- | 47 | #define PNGLIB_BUILD /*libpng is being built, not used*/ |
|
- | 48 | ||
- | 49 | /* If HAVE_CONFIG_H is defined during the build then the build system must |
|
- | 50 | * provide an appropriate "config.h" file on the include path. The header file |
|
- | 51 | * must provide definitions as required below (search for "HAVE_CONFIG_H"); |
|
- | 52 | * see configure.ac for more details of the requirements. The macro |
|
- | 53 | * "PNG_NO_CONFIG_H" is provided for maintainers to test for dependencies on |
|
- | 54 | * 'configure'; define this macro to prevent the configure build including the |
|
- | 55 | * configure generated config.h. Libpng is expected to compile without *any* |
|
- | 56 | * special build system support on a reasonably ANSI-C compliant system. |
|
- | 57 | */ |
|
- | 58 | #if defined(HAVE_CONFIG_H) && !defined(PNG_NO_CONFIG_H) |
|
- | 59 | # include |
|
- | 60 | ||
- | 61 | /* Pick up the definition of 'restrict' from config.h if it was read: */ |
|
- | 62 | # define PNG_RESTRICT restrict |
|
- | 63 | #endif |
|
- | 64 | ||
- | 65 | /* To support symbol prefixing it is necessary to know *before* including png.h |
|
- | 66 | * whether the fixed point (and maybe other) APIs are exported, because if they |
|
- | 67 | * are not internal definitions may be required. This is handled below just |
|
- | 68 | * before png.h is included, but load the configuration now if it is available. |
|
- | 69 | */ |
|
- | 70 | #ifndef PNGLCONF_H |
|
- | 71 | # include "pnglibconf.h" |
|
- | 72 | #endif |
|
- | 73 | ||
- | 74 | /* Local renames may change non-exported API functions from png.h */ |
|
Line 28... | Line -... | ||
28 | * error handler when all else fails. |
- | |
29 | */ |
75 | #if defined(PNG_PREFIX) && !defined(PNGPREFIX_H) |
30 | #include |
76 | # include "pngprefix.h" |
31 | 77 | #endif |
|
32 | #define PNGLIB_BUILD |
78 | |
33 | #ifdef PNG_USER_CONFIG |
79 | #ifdef PNG_USER_CONFIG |
34 | # include "pngusr.h" |
80 | # include "pngusr.h" |
35 | /* These should have been defined in pngusr.h */ |
81 | /* These should have been defined in pngusr.h */ |
36 | # ifndef PNG_USER_PRIVATEBUILD |
82 | # ifndef PNG_USER_PRIVATEBUILD |
37 | # define PNG_USER_PRIVATEBUILD "Custom libpng build" |
83 | # define PNG_USER_PRIVATEBUILD "Custom libpng build" |
38 | # endif |
84 | # endif |
39 | # ifndef PNG_USER_DLLFNAME_POSTFIX |
- | |
40 | # define PNG_USER_DLLFNAME_POSTFIX "Cb" |
- | |
41 | # endif |
- | |
Line -... | Line 85... | ||
- | 85 | # ifndef PNG_USER_DLLFNAME_POSTFIX |
|
- | 86 | # define PNG_USER_DLLFNAME_POSTFIX "Cb" |
|
- | 87 | # endif |
|
- | 88 | #endif |
|
- | 89 | ||
- | 90 | /* Compile time options. |
|
- | 91 | * ===================== |
|
42 | #endif |
92 | * In a multi-arch build the compiler may compile the code several times for the |
- | 93 | * same object module, producing different binaries for different architectures. |
|
- | 94 | * When this happens configure-time setting of the target host options cannot be |
|
- | 95 | * done and this interferes with the handling of the ARM NEON optimizations, and |
|
- | 96 | * possibly other similar optimizations. Put additional tests here; in general |
|
- | 97 | * this is needed when the same option can be changed at both compile time and |
|
- | 98 | * run time depending on the target OS (i.e. iOS vs Android.) |
|
- | 99 | * |
|
- | 100 | * NOTE: symbol prefixing does not pass $(CFLAGS) to the preprocessor, because |
|
- | 101 | * this is not possible with certain compilers (Oracle SUN OS CC), as a result |
|
- | 102 | * it is necessary to ensure that all extern functions that *might* be used |
|
- | 103 | * regardless of $(CFLAGS) get declared in this file. The test on __ARM_NEON__ |
|
- | 104 | * below is one example of this behavior because it is controlled by the |
|
- | 105 | * presence or not of -mfpu=neon on the GCC command line, it is possible to do |
|
- | 106 | * this in $(CC), e.g. "CC=gcc -mfpu=neon", but people who build libpng rarely |
|
- | 107 | * do this. |
|
- | 108 | */ |
|
43 | #include "png.h" |
109 | #ifndef PNG_ARM_NEON_OPT |
44 | #include "pnginfo.h" |
110 | /* ARM NEON optimizations are being controlled by the compiler settings, |
- | 111 | * typically the target FPU. If the FPU has been set to NEON (-mfpu=neon |
|
- | 112 | * with GCC) then the compiler will define __ARM_NEON__ and we can rely |
|
- | 113 | * unconditionally on NEON instructions not crashing, otherwise we must |
|
45 | #include "pngstruct.h" |
114 | * disable use of NEON instructions: |
- | 115 | */ |
|
- | 116 | # ifdef __ARM_NEON__ |
|
Line 46... | Line 117... | ||
46 | 117 | # define PNG_ARM_NEON_OPT 2 |
|
- | 118 | # else |
|
47 | /* This is used for 16 bit gamma tables - only the top level pointers are const, |
119 | # define PNG_ARM_NEON_OPT 0 |
- | 120 | # endif |
|
- | 121 | #endif |
|
- | 122 | ||
Line -... | Line 123... | ||
- | 123 | #if PNG_ARM_NEON_OPT > 0 |
|
- | 124 | /* NEON optimizations are to be at least considered by libpng, so enable the |
|
- | 125 | * callbacks to do this. |
|
- | 126 | */ |
|
- | 127 | # define PNG_FILTER_OPTIMIZATIONS png_init_filter_functions_neon |
|
- | 128 | #endif |
|
- | 129 | ||
- | 130 | /* Is this a build of a DLL where compilation of the object modules requires |
|
- | 131 | * different preprocessor settings to those required for a simple library? If |
|
- | 132 | * so PNG_BUILD_DLL must be set. |
|
- | 133 | * |
|
- | 134 | * If libpng is used inside a DLL but that DLL does not export the libpng APIs |
|
- | 135 | * PNG_BUILD_DLL must not be set. To avoid the code below kicking in build a |
|
- | 136 | * static library of libpng then link the DLL against that. |
|
- | 137 | */ |
|
- | 138 | #ifndef PNG_BUILD_DLL |
|
- | 139 | # ifdef DLL_EXPORT |
|
- | 140 | /* This is set by libtool when files are compiled for a DLL; libtool |
|
- | 141 | * always compiles twice, even on systems where it isn't necessary. Set |
|
- | 142 | * PNG_BUILD_DLL in case it is necessary: |
|
48 | * this could be changed: |
143 | */ |
- | 144 | # define PNG_BUILD_DLL |
|
- | 145 | # else |
|
- | 146 | # ifdef _WINDLL |
|
- | 147 | /* This is set by the Microsoft Visual Studio IDE in projects that |
|
- | 148 | * build a DLL. It can't easily be removed from those projects (it |
|
- | 149 | * isn't visible in the Visual Studio UI) so it is a fairly reliable |
|
- | 150 | * indication that PNG_IMPEXP needs to be set to the DLL export |
|
- | 151 | * attributes. |
|
- | 152 | */ |
|
- | 153 | # define PNG_BUILD_DLL |
|
- | 154 | # else |
|
- | 155 | # ifdef __DLL__ |
|
- | 156 | /* This is set by the Borland C system when compiling for a DLL |
|
- | 157 | * (as above.) |
|
- | 158 | */ |
|
- | 159 | # define PNG_BUILD_DLL |
|
- | 160 | # else |
|
49 | */ |
161 | /* Add additional compiler cases here. */ |
- | 162 | # endif |
|
- | 163 | # endif |
|
- | 164 | # endif |
|
- | 165 | #endif /* Setting PNG_BUILD_DLL if required */ |
|
- | 166 | ||
- | 167 | /* See pngconf.h for more details: the builder of the library may set this on |
|
- | 168 | * the command line to the right thing for the specific compilation system or it |
|
- | 169 | * may be automagically set above (at present we know of no system where it does |
|
- | 170 | * need to be set on the command line.) |
|
- | 171 | * |
|
- | 172 | * PNG_IMPEXP must be set here when building the library to prevent pngconf.h |
|
50 | typedef PNG_CONST png_uint_16p FAR * png_const_uint_16pp; |
173 | * setting it to the "import" setting for a DLL build. |
- | 174 | */ |
|
- | 175 | #ifndef PNG_IMPEXP |
|
- | 176 | # ifdef PNG_BUILD_DLL |
|
- | 177 | # define PNG_IMPEXP PNG_DLL_EXPORT |
|
- | 178 | # else |
|
- | 179 | /* Not building a DLL, or the DLL doesn't require specific export |
|
- | 180 | * definitions. |
|
- | 181 | */ |
|
- | 182 | # define PNG_IMPEXP |
|
- | 183 | # endif |
|
- | 184 | #endif |
|
- | 185 | ||
- | 186 | /* No warnings for private or deprecated functions in the build: */ |
|
- | 187 | #ifndef PNG_DEPRECATED |
|
- | 188 | # define PNG_DEPRECATED |
|
- | 189 | #endif |
|
- | 190 | #ifndef PNG_PRIVATE |
|
51 | 191 | # define PNG_PRIVATE |
|
52 | /* Added at libpng-1.2.9 */ |
192 | #endif |
- | 193 | ||
- | 194 | /* Symbol preprocessing support. |
|
- | 195 | * |
|
- | 196 | * To enable listing global, but internal, symbols the following macros should |
|
- | 197 | * always be used to declare an extern data or function object in this file. |
|
- | 198 | */ |
|
- | 199 | #ifndef PNG_INTERNAL_DATA |
|
- | 200 | # define PNG_INTERNAL_DATA(type, name, array) extern type name array |
|
- | 201 | #endif |
|
- | 202 | ||
- | 203 | #ifndef PNG_INTERNAL_FUNCTION |
|
- | 204 | # define PNG_INTERNAL_FUNCTION(type, name, args, attributes)\ |
|
- | 205 | extern PNG_FUNCTION(type, name, args, PNG_EMPTY attributes) |
|
- | 206 | #endif |
|
- | 207 | ||
- | 208 | /* If floating or fixed point APIs are disabled they may still be compiled |
|
- | 209 | * internally. To handle this make sure they are declared as the appropriate |
|
- | 210 | * internal extern function (otherwise the symbol prefixing stuff won't work and |
|
- | 211 | * the functions will be used without definitions.) |
|
- | 212 | * |
|
- | 213 | * NOTE: although all the API functions are declared here they are not all |
|
53 | /* Moved to pngpriv.h at libpng-1.5.0 */ |
214 | * actually built! Because the declarations are still made it is necessary to |
- | 215 | * fake out types that they depend on. |
|
- | 216 | */ |
|
- | 217 | #ifndef PNG_FP_EXPORT |
|
- | 218 | # ifndef PNG_FLOATING_POINT_SUPPORTED |
|
- | 219 | # define PNG_FP_EXPORT(ordinal, type, name, args)\ |
|
- | 220 | PNG_INTERNAL_FUNCTION(type, name, args, PNG_EMPTY); |
|
- | 221 | # ifndef PNG_VERSION_INFO_ONLY |
|
- | 222 | typedef struct png_incomplete png_double; |
|
- | 223 | typedef png_double* png_doublep; |
|
- | 224 | typedef const png_double* png_const_doublep; |
|
- | 225 | typedef png_double** png_doublepp; |
|
- | 226 | # endif |
|
- | 227 | # endif |
|
- | 228 | #endif |
|
54 | 229 | #ifndef PNG_FIXED_EXPORT |
|
- | 230 | # ifndef PNG_FIXED_POINT_SUPPORTED |
|
- | 231 | # define PNG_FIXED_EXPORT(ordinal, type, name, args)\ |
|
- | 232 | PNG_INTERNAL_FUNCTION(type, name, args, PNG_EMPTY); |
|
- | 233 | # endif |
|
- | 234 | #endif |
|
- | 235 | ||
- | 236 | #include "png.h" |
|
- | 237 | ||
- | 238 | /* pngconf.h does not set PNG_DLL_EXPORT unless it is required, so: */ |
|
- | 239 | #ifndef PNG_DLL_EXPORT |
|
- | 240 | # define PNG_DLL_EXPORT |
|
- | 241 | #endif |
|
- | 242 | ||
- | 243 | /* SECURITY and SAFETY: |
|
- | 244 | * |
|
- | 245 | * By default libpng is built without any internal limits on image size, |
|
- | 246 | * individual heap (png_malloc) allocations or the total amount of memory used. |
|
- | 247 | * If PNG_SAFE_LIMITS_SUPPORTED is defined, however, the limits below are used |
|
- | 248 | * (unless individually overridden). These limits are believed to be fairly |
|
- | 249 | * safe, but builders of secure systems should verify the values against the |
|
- | 250 | * real system capabilities. |
|
- | 251 | */ |
|
- | 252 | #ifdef PNG_SAFE_LIMITS_SUPPORTED |
|
- | 253 | /* 'safe' limits */ |
|
- | 254 | # ifndef PNG_USER_WIDTH_MAX |
|
- | 255 | # define PNG_USER_WIDTH_MAX 1000000 |
|
- | 256 | # endif |
|
- | 257 | # ifndef PNG_USER_HEIGHT_MAX |
|
- | 258 | # define PNG_USER_HEIGHT_MAX 1000000 |
|
- | 259 | # endif |
|
- | 260 | # ifndef PNG_USER_CHUNK_CACHE_MAX |
|
- | 261 | # define PNG_USER_CHUNK_CACHE_MAX 128 |
|
- | 262 | # endif |
|
- | 263 | # ifndef PNG_USER_CHUNK_MALLOC_MAX |
|
- | 264 | # define PNG_USER_CHUNK_MALLOC_MAX 8000000 |
|
- | 265 | # endif |
|
- | 266 | #else |
|
- | 267 | /* values for no limits */ |
|
- | 268 | # ifndef PNG_USER_WIDTH_MAX |
|
- | 269 | # define PNG_USER_WIDTH_MAX 0x7fffffff |
|
- | 270 | # endif |
|
- | 271 | # ifndef PNG_USER_HEIGHT_MAX |
|
55 | /* config.h is created by and PNG_CONFIGURE_LIBPNG is set by the "configure" |
272 | # define PNG_USER_HEIGHT_MAX 0x7fffffff |
56 | * script. We may need it here to get the correct configuration on things |
273 | # endif |
Line 57... | Line 274... | ||
57 | * like limits. |
274 | # ifndef PNG_USER_CHUNK_CACHE_MAX |
58 | */ |
275 | # define PNG_USER_CHUNK_CACHE_MAX 0 |
Line 81... | Line 298... | ||
81 | #if defined(MAXSEG_64K) && !defined(PNG_MAX_MALLOC_64K) |
298 | #if defined(MAXSEG_64K) && !defined(PNG_MAX_MALLOC_64K) |
82 | # define PNG_MAX_MALLOC_64K |
299 | # define PNG_MAX_MALLOC_64K |
83 | #endif |
300 | #endif |
84 | 301 | ||
Line -... | Line 302... | ||
- | 302 | #ifndef PNG_UNUSED |
|
85 | /* Unused formal parameter warnings are silenced using the following macro |
303 | /* Unused formal parameter warnings are silenced using the following macro |
86 | * which is expected to have no bad effects on performance (optimizing |
304 | * which is expected to have no bad effects on performance (optimizing |
87 | * compilers will probably remove it entirely). Note that if you replace |
305 | * compilers will probably remove it entirely). Note that if you replace |
88 | * it with something other than whitespace, you must include the terminating |
306 | * it with something other than whitespace, you must include the terminating |
89 | * semicolon. |
307 | * semicolon. |
90 | */ |
308 | */ |
91 | #define PNG_UNUSED(param) (void)param; |
309 | # define PNG_UNUSED(param) (void)param; |
- | 310 | #endif |
|
Line 92... | Line 311... | ||
92 | 311 | ||
93 | /* Just a little check that someone hasn't tried to define something |
312 | /* Just a little check that someone hasn't tried to define something |
94 | * contradictory. |
313 | * contradictory. |
95 | */ |
314 | */ |
96 | #if (PNG_ZBUF_SIZE > 65536L) && defined(PNG_MAX_MALLOC_64K) |
315 | #if (PNG_ZBUF_SIZE > 65536L) && defined(PNG_MAX_MALLOC_64K) |
97 | # undef PNG_ZBUF_SIZE |
316 | # undef PNG_ZBUF_SIZE |
98 | # define PNG_ZBUF_SIZE 65536L |
317 | # define PNG_ZBUF_SIZE 65536L |
Line 99... | Line 318... | ||
99 | #endif |
318 | #endif |
- | 319 | ||
100 | 320 | /* If warnings or errors are turned off the code is disabled or redirected here. |
|
101 | /* If warnings or errors are turned off the code is disabled |
321 | * From 1.5.4 functions have been added to allow very limited formatting of |
102 | * or redirected here. |
322 | * error and warning messages - this code will also be disabled here. |
- | 323 | */ |
|
- | 324 | #ifdef PNG_WARNINGS_SUPPORTED |
|
103 | */ |
325 | # define PNG_WARNING_PARAMETERS(p) png_warning_parameters p; |
104 | #ifndef PNG_WARNINGS_SUPPORTED |
326 | #else |
- | 327 | # define png_warning(s1,s2) ((void)(s1)) |
|
- | 328 | # define png_chunk_warning(s1,s2) ((void)(s1)) |
|
- | 329 | # define png_warning_parameter(p,number,string) ((void)0) |
|
- | 330 | # define png_warning_parameter_unsigned(p,number,format,value) ((void)0) |
|
- | 331 | # define png_warning_parameter_signed(p,number,format,value) ((void)0) |
|
105 | # define png_warning(s1,s2) ((void)0) |
332 | # define png_formatted_warning(pp,p,message) ((void)(pp)) |
106 | # define png_chunk_warning(s1,s2) ((void)0) |
333 | # define PNG_WARNING_PARAMETERS(p) |
107 | #endif |
334 | #endif |
108 | #ifndef PNG_ERROR_TEXT_SUPPORTED |
335 | #ifndef PNG_ERROR_TEXT_SUPPORTED |
109 | # define png_error(s1,s2) png_err(s1) |
336 | # define png_error(s1,s2) png_err(s1) |
110 | # define png_chunk_error(s1,s2) png_err(s1) |
337 | # define png_chunk_error(s1,s2) png_err(s1) |
Line 111... | Line -... | ||
111 | # define png_fixed_error(s1,s2) png_err(s1) |
- | |
112 | #endif |
338 | # define png_fixed_error(s1,s2) png_err(s1) |
113 | 339 | #endif |
|
114 | #ifndef PNG_EXTERN |
340 | |
115 | /* The functions exported by PNG_EXTERN are internal functions, which |
- | |
116 | * aren't usually used outside the library (as far as I know), so it is |
341 | /* C allows up-casts from (void*) to any pointer and (const void*) to any |
117 | * debatable if they should be exported at all. In the future, when it |
- | |
118 | * is possible to have run-time registry of chunk-handling functions, |
342 | * pointer to a const object. C++ regards this as a type error and requires an |
119 | * some of these might be made available again. |
343 | * explicit, static, cast and provides the static_cast<> rune to ensure that |
- | 344 | * const is not cast away. |
|
- | 345 | */ |
|
- | 346 | #ifdef __cplusplus |
|
- | 347 | # define png_voidcast(type, value) static_cast |
|
- | 348 | # define png_constcast(type, value) const_cast |
|
- | 349 | # define png_aligncast(type, value) \ |
|
120 | # define PNG_EXTERN extern |
350 | static_cast |
- | 351 | # define png_aligncastconst(type, value) \ |
|
- | 352 | static_cast |
|
- | 353 | #else |
|
- | 354 | # define png_voidcast(type, value) (value) |
|
- | 355 | # define png_constcast(type, value) ((type)(value)) |
|
Line 121... | Line 356... | ||
121 | */ |
356 | # define png_aligncast(type, value) ((void*)(value)) |
122 | # define PNG_EXTERN |
357 | # define png_aligncastconst(type, value) ((const void*)(value)) |
123 | #endif |
358 | #endif /* __cplusplus */ |
124 | 359 | ||
Line 131... | Line 366... | ||
131 | #else |
366 | #else |
132 | # define PNGFAPI /* PRIVATE */ |
367 | # define PNGFAPI /* PRIVATE */ |
133 | #endif |
368 | #endif |
134 | 369 | ||
Line -... | Line 370... | ||
- | 370 | #ifndef PNG_VERSION_INFO_ONLY |
|
135 | /* Other defines specific to compilers can go here. Try to keep |
371 | /* Other defines specific to compilers can go here. Try to keep |
136 | * them inside an appropriate ifdef/endif pair for portability. |
372 | * them inside an appropriate ifdef/endif pair for portability. |
137 | */ |
373 | */ |
138 | #if defined(PNG_FLOATING_POINT_SUPPORTED) ||\ |
374 | #if defined(PNG_FLOATING_POINT_SUPPORTED) ||\ |
139 | defined(PNG_FLOATING_ARITHMETIC_SUPPORTED) |
375 | defined(PNG_FLOATING_ARITHMETIC_SUPPORTED) |
Line 171... | Line 407... | ||
171 | # include |
407 | # include |
172 | # include |
408 | # include |
173 | #endif |
409 | #endif |
174 | 410 | ||
Line -... | Line 411... | ||
- | 411 | #if defined(WIN32) || defined(_Windows) || defined(_WINDOWS) || \ |
|
- | 412 | defined(_WIN32) || defined(__WIN32__) |
|
- | 413 | # include |
|
- | 414 | #endif |
|
- | 415 | #endif /* PNG_VERSION_INFO_ONLY */ |
|
Line 175... | Line 416... | ||
175 | 416 | ||
176 | /* Moved here around 1.5.0beta36 from pngconf.h */ |
417 | /* Moved here around 1.5.0beta36 from pngconf.h */ |
177 | /* Users may want to use these so they are not private. Any library |
418 | /* Users may want to use these so they are not private. Any library |
178 | * functions that are passed far data must be model-independent. |
419 | * functions that are passed far data must be model-independent. |
Line 186... | Line 427... | ||
186 | # define PNG_ABORT() abort() |
427 | # define PNG_ABORT() abort() |
187 | # endif |
428 | # endif |
188 | #endif |
429 | #endif |
189 | 430 | ||
Line 190... | Line -... | ||
190 | #ifdef USE_FAR_KEYWORD |
- | |
191 | /* Use this to make far-to-near assignments */ |
431 | /* These macros may need to be architecture dependent. */ |
192 | # define CHECK 1 |
- | |
193 | # define NOCHECK 0 |
- | |
194 | # define CVT_PTR(ptr) (png_far_to_near(png_ptr,ptr,CHECK)) |
- | |
195 | # define CVT_PTR_NOCHECK(ptr) (png_far_to_near(png_ptr,ptr,NOCHECK)) |
- | |
196 | # define png_strcpy _fstrcpy |
- | |
197 | # define png_strncpy _fstrncpy /* Added to v 1.2.6 */ |
432 | #define PNG_ALIGN_NONE 0 /* do not use data alignment */ |
198 | # define png_strlen _fstrlen |
- | |
199 | # define png_memcmp _fmemcmp /* SJT: added */ |
433 | #define PNG_ALIGN_ALWAYS 1 /* assume unaligned accesses are OK */ |
200 | # define png_memcpy _fmemcpy |
- | |
201 | # define png_memset _fmemset |
434 | #ifdef offsetof |
202 | # define png_sprintf sprintf |
- | |
203 | #else |
- | |
204 | # ifdef _WINDOWS_ /* Favor Windows over C runtime fns */ |
435 | # define PNG_ALIGN_OFFSET 2 /* use offsetof to determine alignment */ |
205 | # define CVT_PTR(ptr) (ptr) |
- | |
206 | # define CVT_PTR_NOCHECK(ptr) (ptr) |
- | |
207 | # define png_strcpy lstrcpyA |
- | |
208 | # define png_strncpy lstrcpynA |
- | |
209 | # define png_strlen lstrlenA |
- | |
210 | # define png_memcmp memcmp |
- | |
211 | # define png_memcpy CopyMemory |
- | |
212 | # define png_memset memset |
- | |
213 | # define png_sprintf wsprintfA |
- | |
214 | # else |
436 | #else |
215 | # define CVT_PTR(ptr) (ptr) |
- | |
216 | # define CVT_PTR_NOCHECK(ptr) (ptr) |
- | |
217 | # define png_strcpy strcpy |
- | |
218 | # define png_strncpy strncpy /* Added to v 1.2.6 */ |
437 | # define PNG_ALIGN_OFFSET -1 /* prevent the use of this */ |
219 | # define png_strlen strlen |
- | |
220 | # define png_memcmp memcmp /* SJT: added */ |
- | |
221 | # define png_memcpy memcpy |
- | |
222 | # define png_memset memset |
- | |
223 | # define png_sprintf sprintf |
- | |
224 | # endif |
438 | #endif |
- | 439 | #define PNG_ALIGN_SIZE 3 /* use sizeof to determine alignment */ |
|
- | 440 | ||
- | 441 | #ifndef PNG_ALIGN_TYPE |
|
- | 442 | /* Default to using aligned access optimizations and requiring alignment to a |
|
- | 443 | * multiple of the data type size. Override in a compiler specific fashion |
|
- | 444 | * if necessary by inserting tests here: |
|
- | 445 | */ |
|
- | 446 | # define PNG_ALIGN_TYPE PNG_ALIGN_SIZE |
|
225 | #endif |
447 | #endif |
226 | /* End of memory model/platform independent support */ |
- | |
Line 227... | Line 448... | ||
227 | 448 | ||
228 | #ifndef PNG_NO_SNPRINTF |
449 | #if PNG_ALIGN_TYPE == PNG_ALIGN_SIZE |
229 | # ifdef _MSC_VER |
450 | /* This is used because in some compiler implementations non-aligned |
- | 451 | * structure members are supported, so the offsetof approach below fails. |
|
- | 452 | * Set PNG_ALIGN_SIZE=0 for compiler combinations where unaligned access |
|
230 | # define png_snprintf _snprintf /* Added to v 1.2.19 */ |
453 | * is good for performance. Do not do this unless you have tested the result |
- | 454 | * and understand it. |
|
231 | # define png_snprintf2 _snprintf |
455 | */ |
232 | # define png_snprintf6 _snprintf |
456 | # define png_alignof(type) (sizeof (type)) |
- | 457 | #else |
|
233 | # else |
458 | # if PNG_ALIGN_TYPE == PNG_ALIGN_OFFSET |
- | 459 | # define png_alignof(type) offsetof(struct{char c; type t;}, t) |
|
234 | # define png_snprintf snprintf /* Added to v 1.2.19 */ |
460 | # else |
235 | # define png_snprintf2 snprintf |
461 | # if PNG_ALIGN_TYPE == PNG_ALIGN_ALWAYS |
- | 462 | # define png_alignof(type) (1) |
|
- | 463 | # endif |
|
- | 464 | /* Else leave png_alignof undefined to prevent use thereof */ |
|
236 | # define png_snprintf6 snprintf |
465 | # endif |
- | 466 | #endif |
|
- | 467 | ||
- | 468 | /* This implicitly assumes alignment is always to a power of 2. */ |
|
- | 469 | #ifdef png_alignof |
|
- | 470 | # define png_isaligned(ptr, type)\ |
|
237 | # endif |
471 | ((((const char*)ptr-(const char*)0) & (png_alignof(type)-1)) == 0) |
238 | #else |
- | |
239 | /* You don't have or don't want to use snprintf(). Caution: Using |
- | |
240 | * sprintf instead of snprintf exposes your application to accidental |
- | |
241 | * or malevolent buffer overflows. If you don't have snprintf() |
- | |
242 | * as a general rule you should provide one (you can get one from |
- | |
243 | * Portable OpenSSH). |
- | |
244 | */ |
- | |
245 | # define png_snprintf(s1,n,fmt,x1) png_sprintf(s1,fmt,x1) |
- | |
246 | # define png_snprintf2(s1,n,fmt,x1,x2) png_sprintf(s1,fmt,x1,x2) |
472 | #else |
247 | # define png_snprintf6(s1,n,fmt,x1,x2,x3,x4,x5,x6) \ |
- | |
248 | png_sprintf(s1,fmt,x1,x2,x3,x4,x5,x6) |
473 | # define png_isaligned(ptr, type) 0 |
- | 474 | #endif |
|
- | 475 | ||
249 | #endif |
476 | /* End of memory model/platform independent support */ |
Line 250... | Line 477... | ||
250 | /* End of 1.5.0beta36 move from pngconf.h */ |
477 | /* End of 1.5.0beta36 move from pngconf.h */ |
251 | 478 | ||
252 | /* CONSTANTS and UTILITY MACROS |
479 | /* CONSTANTS and UTILITY MACROS |
Line 253... | Line 480... | ||
253 | * These are used internally by libpng and not exposed in the API |
480 | * These are used internally by libpng and not exposed in the API |
254 | */ |
481 | */ |
- | 482 | ||
- | 483 | /* Various modes of operation. Note that after an init, mode is set to |
|
255 | 484 | * zero automatically when the structure is created. Three of these |
|
256 | /* Various modes of operation. Note that after an init, mode is set to |
485 | * are defined in png.h because they need to be visible to applications |
257 | * zero automatically when the structure is created. |
486 | * that call png_set_unknown_chunk(). |
258 | */ |
487 | */ |
259 | #define PNG_HAVE_IHDR 0x01 |
488 | /* #define PNG_HAVE_IHDR 0x01 (defined in png.h) */ |
260 | #define PNG_HAVE_PLTE 0x02 |
489 | /* #define PNG_HAVE_PLTE 0x02 (defined in png.h) */ |
261 | #define PNG_HAVE_IDAT 0x04 |
490 | #define PNG_HAVE_IDAT 0x04 |
262 | #define PNG_AFTER_IDAT 0x08 /* Have complete zlib datastream */ |
491 | /* #define PNG_AFTER_IDAT 0x08 (defined in png.h) */ |
263 | #define PNG_HAVE_IEND 0x10 |
492 | #define PNG_HAVE_IEND 0x10 |
264 | #define PNG_HAVE_gAMA 0x20 |
493 | /* 0x20 (unused) */ |
265 | #define PNG_HAVE_cHRM 0x40 |
494 | /* 0x40 (unused) */ |
266 | #define PNG_HAVE_sRGB 0x80 |
495 | /* 0x80 (unused) */ |
267 | #define PNG_HAVE_CHUNK_HEADER 0x100 |
496 | #define PNG_HAVE_CHUNK_HEADER 0x100 |
268 | #define PNG_WROTE_tIME 0x200 |
497 | #define PNG_WROTE_tIME 0x200 |
269 | #define PNG_WROTE_INFO_BEFORE_PLTE 0x400 |
498 | #define PNG_WROTE_INFO_BEFORE_PLTE 0x400 |
- | 499 | #define PNG_BACKGROUND_IS_GRAY 0x800 |
|
- | 500 | #define PNG_HAVE_PNG_SIGNATURE 0x1000 |
|
Line 270... | Line 501... | ||
270 | #define PNG_BACKGROUND_IS_GRAY 0x800 |
501 | #define PNG_HAVE_CHUNK_AFTER_IDAT 0x2000 /* Have another chunk after IDAT */ |
271 | #define PNG_HAVE_PNG_SIGNATURE 0x1000 |
502 | /* 0x4000 (unused) */ |
272 | #define PNG_HAVE_CHUNK_AFTER_IDAT 0x2000 /* Have another chunk after IDAT */ |
503 | #define PNG_IS_READ_STRUCT 0x8000 /* Else is a write struct */ |
273 | 504 | ||
274 | /* Flags for the transformations the PNG library does on the image data */ |
505 | /* Flags for the transformations the PNG library does on the image data */ |
275 | #define PNG_BGR 0x0001 |
506 | #define PNG_BGR 0x0001 |
276 | #define PNG_INTERLACE 0x0002 |
507 | #define PNG_INTERLACE 0x0002 |
277 | #define PNG_PACK 0x0004 |
508 | #define PNG_PACK 0x0004 |
278 | #define PNG_SHIFT 0x0008 |
509 | #define PNG_SHIFT 0x0008 |
279 | #define PNG_SWAP_BYTES 0x0010 |
510 | #define PNG_SWAP_BYTES 0x0010 |
280 | #define PNG_INVERT_MONO 0x0020 |
511 | #define PNG_INVERT_MONO 0x0020 |
281 | #define PNG_QUANTIZE 0x0040 |
512 | #define PNG_QUANTIZE 0x0040 |
282 | #define PNG_BACKGROUND 0x0080 |
513 | #define PNG_COMPOSE 0x0080 /* Was PNG_BACKGROUND */ |
283 | #define PNG_BACKGROUND_EXPAND 0x0100 |
514 | #define PNG_BACKGROUND_EXPAND 0x0100 |
284 | /* 0x0200 unused */ |
515 | #define PNG_EXPAND_16 0x0200 /* Added to libpng 1.5.2 */ |
285 | #define PNG_16_TO_8 0x0400 |
516 | #define PNG_16_TO_8 0x0400 /* Becomes 'chop' in 1.5.4 */ |
286 | #define PNG_RGBA 0x0800 |
517 | #define PNG_RGBA 0x0800 |
287 | #define PNG_EXPAND 0x1000 |
518 | #define PNG_EXPAND 0x1000 |
288 | #define PNG_GAMMA 0x2000 |
519 | #define PNG_GAMMA 0x2000 |
289 | #define PNG_GRAY_TO_RGB 0x4000 |
520 | #define PNG_GRAY_TO_RGB 0x4000 |
290 | #define PNG_FILLER 0x8000L |
521 | #define PNG_FILLER 0x8000 |
291 | #define PNG_PACKSWAP 0x10000L |
522 | #define PNG_PACKSWAP 0x10000 |
292 | #define PNG_SWAP_ALPHA 0x20000L |
523 | #define PNG_SWAP_ALPHA 0x20000 |
293 | #define PNG_STRIP_ALPHA 0x40000L |
524 | #define PNG_STRIP_ALPHA 0x40000 |
294 | #define PNG_INVERT_ALPHA 0x80000L |
525 | #define PNG_INVERT_ALPHA 0x80000 |
295 | #define PNG_USER_TRANSFORM 0x100000L |
526 | #define PNG_USER_TRANSFORM 0x100000 |
296 | #define PNG_RGB_TO_GRAY_ERR 0x200000L |
527 | #define PNG_RGB_TO_GRAY_ERR 0x200000 |
297 | #define PNG_RGB_TO_GRAY_WARN 0x400000L |
528 | #define PNG_RGB_TO_GRAY_WARN 0x400000 |
298 | #define PNG_RGB_TO_GRAY 0x600000L /* two bits, RGB_TO_GRAY_ERR|WARN */ |
529 | #define PNG_RGB_TO_GRAY 0x600000 /* two bits, RGB_TO_GRAY_ERR|WARN */ |
299 | /* 0x800000L Unused */ |
530 | #define PNG_ENCODE_ALPHA 0x800000 /* Added to libpng-1.5.4 */ |
300 | #define PNG_ADD_ALPHA 0x1000000L /* Added to libpng-1.2.7 */ |
531 | #define PNG_ADD_ALPHA 0x1000000 /* Added to libpng-1.2.7 */ |
301 | #define PNG_EXPAND_tRNS 0x2000000L /* Added to libpng-1.2.9 */ |
532 | #define PNG_EXPAND_tRNS 0x2000000 /* Added to libpng-1.2.9 */ |
302 | /* 0x4000000L unused */ |
533 | #define PNG_SCALE_16_TO_8 0x4000000 /* Added to libpng-1.5.4 */ |
303 | /* 0x8000000L unused */ |
- | |
304 | /* 0x10000000L unused */ |
534 | /* 0x8000000 unused */ |
305 | /* 0x20000000L unused */ |
535 | /* 0x10000000 unused */ |
306 | /* 0x40000000L unused */ |
536 | /* 0x20000000 unused */ |
Line 307... | Line 537... | ||
307 | 537 | /* 0x40000000 unused */ |
|
308 | /* Flags for png_create_struct */ |
538 | /* Flags for png_create_struct */ |
309 | #define PNG_STRUCT_PNG 0x0001 |
539 | #define PNG_STRUCT_PNG 0x0001 |
Line 310... | Line 540... | ||
310 | #define PNG_STRUCT_INFO 0x0002 |
540 | #define PNG_STRUCT_INFO 0x0002 |
311 | 541 | ||
312 | /* Scaling factor for filter heuristic weighting calculations */ |
542 | /* Scaling factor for filter heuristic weighting calculations */ |
313 | #define PNG_WEIGHT_FACTOR (1<<(PNG_WEIGHT_SHIFT)) |
543 | #define PNG_WEIGHT_FACTOR (1<<(PNG_WEIGHT_SHIFT)) |
314 | #define PNG_COST_FACTOR (1<<(PNG_COST_SHIFT)) |
544 | #define PNG_COST_FACTOR (1<<(PNG_COST_SHIFT)) |
315 | 545 | ||
316 | /* Flags for the png_ptr->flags rather than declaring a byte for each one */ |
546 | /* Flags for the png_ptr->flags rather than declaring a byte for each one */ |
317 | #define PNG_FLAG_ZLIB_CUSTOM_STRATEGY 0x0001 |
547 | #define PNG_FLAG_ZLIB_CUSTOM_STRATEGY 0x0001 |
318 | #define PNG_FLAG_ZLIB_CUSTOM_LEVEL 0x0002 |
548 | #define PNG_FLAG_ZSTREAM_INITIALIZED 0x0002 /* Added to libpng-1.6.0 */ |
319 | #define PNG_FLAG_ZLIB_CUSTOM_MEM_LEVEL 0x0004 |
549 | /* 0x0004 unused */ |
320 | #define PNG_FLAG_ZLIB_CUSTOM_WINDOW_BITS 0x0008 |
550 | #define PNG_FLAG_ZSTREAM_ENDED 0x0008 /* Added to libpng-1.6.0 */ |
321 | #define PNG_FLAG_ZLIB_CUSTOM_METHOD 0x0010 |
551 | /* 0x0010 unused */ |
322 | #define PNG_FLAG_ZLIB_FINISHED 0x0020 |
552 | /* 0x0020 unused */ |
323 | #define PNG_FLAG_ROW_INIT 0x0040 |
553 | #define PNG_FLAG_ROW_INIT 0x0040 |
324 | #define PNG_FLAG_FILLER_AFTER 0x0080 |
554 | #define PNG_FLAG_FILLER_AFTER 0x0080 |
325 | #define PNG_FLAG_CRC_ANCILLARY_USE 0x0100 |
555 | #define PNG_FLAG_CRC_ANCILLARY_USE 0x0100 |
326 | #define PNG_FLAG_CRC_ANCILLARY_NOWARN 0x0200 |
556 | #define PNG_FLAG_CRC_ANCILLARY_NOWARN 0x0200 |
327 | #define PNG_FLAG_CRC_CRITICAL_USE 0x0400 |
557 | #define PNG_FLAG_CRC_CRITICAL_USE 0x0400 |
328 | #define PNG_FLAG_CRC_CRITICAL_IGNORE 0x0800 |
558 | #define PNG_FLAG_CRC_CRITICAL_IGNORE 0x0800 |
329 | /* 0x1000 unused */ |
559 | #define PNG_FLAG_ASSUME_sRGB 0x1000 /* Added to libpng-1.5.4 */ |
330 | /* 0x2000 unused */ |
560 | #define PNG_FLAG_OPTIMIZE_ALPHA 0x2000 /* Added to libpng-1.5.4 */ |
331 | /* 0x4000 unused */ |
561 | #define PNG_FLAG_DETECT_UNINITIALIZED 0x4000 /* Added to libpng-1.5.4 */ |
332 | #define PNG_FLAG_KEEP_UNKNOWN_CHUNKS 0x8000L |
562 | /* #define PNG_FLAG_KEEP_UNKNOWN_CHUNKS 0x8000 */ |
333 | #define PNG_FLAG_KEEP_UNSAFE_CHUNKS 0x10000L |
563 | /* #define PNG_FLAG_KEEP_UNSAFE_CHUNKS 0x10000 */ |
334 | #define PNG_FLAG_LIBRARY_MISMATCH 0x20000L |
564 | #define PNG_FLAG_LIBRARY_MISMATCH 0x20000 |
335 | #define PNG_FLAG_STRIP_ERROR_NUMBERS 0x40000L |
565 | #define PNG_FLAG_STRIP_ERROR_NUMBERS 0x40000 |
336 | #define PNG_FLAG_STRIP_ERROR_TEXT 0x80000L |
566 | #define PNG_FLAG_STRIP_ERROR_TEXT 0x80000 |
337 | #define PNG_FLAG_MALLOC_NULL_MEM_OK 0x100000L |
567 | #define PNG_FLAG_BENIGN_ERRORS_WARN 0x100000 /* Added to libpng-1.4.0 */ |
338 | #define PNG_FLAG_ADD_ALPHA 0x200000L /* Added to libpng-1.2.8 */ |
568 | #define PNG_FLAG_APP_WARNINGS_WARN 0x200000 /* Added to libpng-1.6.0 */ |
339 | #define PNG_FLAG_STRIP_ALPHA 0x400000L /* Added to libpng-1.2.8 */ |
569 | #define PNG_FLAG_APP_ERRORS_WARN 0x400000 /* Added to libpng-1.6.0 */ |
340 | #define PNG_FLAG_BENIGN_ERRORS_WARN 0x800000L /* Added to libpng-1.4.0 */ |
570 | /* 0x800000 unused */ |
341 | /* 0x1000000L unused */ |
571 | /* 0x1000000 unused */ |
Line 342... | Line 572... | ||
342 | /* 0x2000000L unused */ |
572 | /* 0x2000000 unused */ |
343 | /* 0x4000000L unused */ |
573 | /* 0x4000000 unused */ |
Line 344... | Line 574... | ||
344 | /* 0x8000000L unused */ |
574 | /* 0x8000000 unused */ |
345 | /* 0x10000000L unused */ |
575 | /* 0x10000000 unused */ |
Line 346... | Line 576... | ||
346 | /* 0x20000000L unused */ |
576 | /* 0x20000000 unused */ |
347 | /* 0x40000000L unused */ |
577 | /* 0x40000000 unused */ |
Line 348... | Line -... | ||
348 | - | ||
349 | #define PNG_FLAG_CRC_ANCILLARY_MASK (PNG_FLAG_CRC_ANCILLARY_USE | \ |
- | |
350 | PNG_FLAG_CRC_ANCILLARY_NOWARN) |
- | |
351 | - | ||
352 | #define PNG_FLAG_CRC_CRITICAL_MASK (PNG_FLAG_CRC_CRITICAL_USE | \ |
- | |
353 | PNG_FLAG_CRC_CRITICAL_IGNORE) |
- | |
354 | - | ||
355 | #define PNG_FLAG_CRC_MASK (PNG_FLAG_CRC_ANCILLARY_MASK | \ |
- | |
356 | PNG_FLAG_CRC_CRITICAL_MASK) |
- | |
357 | - | ||
358 | /* zlib.h declares a magic type 'uInt' that limits the amount of data that zlib |
- | |
359 | * can handle at once. This type need be no larger than 16 bits (so maximum of |
- | |
360 | * 65535), this define allows us to discover how big it is, but limited by the |
578 | |
Line 361... | Line 579... | ||
361 | * maximuum for png_size_t. The value can be overriden in a library build |
579 | #define PNG_FLAG_CRC_ANCILLARY_MASK (PNG_FLAG_CRC_ANCILLARY_USE | \ |
362 | * (pngusr.h, or set it in CPPFLAGS) and it works to set it to a considerably |
580 | PNG_FLAG_CRC_ANCILLARY_NOWARN) |
363 | * lower value (e.g. 255 works). A lower value may help memory usage (slightly) |
581 | |
Line -... | Line 582... | ||
- | 582 | #define PNG_FLAG_CRC_CRITICAL_MASK (PNG_FLAG_CRC_CRITICAL_USE | \ |
|
- | 583 | PNG_FLAG_CRC_CRITICAL_IGNORE) |
|
- | 584 | ||
- | 585 | #define PNG_FLAG_CRC_MASK (PNG_FLAG_CRC_ANCILLARY_MASK | \ |
|
- | 586 | PNG_FLAG_CRC_CRITICAL_MASK) |
|
- | 587 | ||
- | 588 | /* Save typing and make code easier to understand */ |
|
- | 589 | ||
- | 590 | #define PNG_COLOR_DIST(c1, c2) (abs((int)((c1).red) - (int)((c2).red)) + \ |
|
- | 591 | abs((int)((c1).green) - (int)((c2).green)) + \ |
|
- | 592 | abs((int)((c1).blue) - (int)((c2).blue))) |
|
364 | * and may even improve performance on some systems (and degrade it on others.) |
593 | |
365 | */ |
594 | /* Added to libpng-1.6.0: scale a 16-bit value in the range 0..65535 to 0..255 |
366 | #ifndef ZLIB_IO_MAX |
595 | * by dividing by 257 *with rounding*. This macro is exact for the given range. |
367 | # define ZLIB_IO_MAX ((uInt)-1) |
596 | * See the discourse in pngrtran.c png_do_scale_16_to_8. The values in the |
368 | #endif |
597 | * macro were established by experiment (modifying the added value). The macro |
Line 419... | Line 648... | ||
419 | */ |
648 | */ |
420 | #ifdef PNG_FIXED_POINT_MACRO_SUPPORTED |
649 | #ifdef PNG_FIXED_POINT_MACRO_SUPPORTED |
421 | #define png_fixed(png_ptr, fp, s) ((fp) <= 21474 && (fp) >= -21474 ?\ |
650 | #define png_fixed(png_ptr, fp, s) ((fp) <= 21474 && (fp) >= -21474 ?\ |
422 | ((png_fixed_point)(100000 * (fp))) : (png_fixed_error(png_ptr, s),0)) |
651 | ((png_fixed_point)(100000 * (fp))) : (png_fixed_error(png_ptr, s),0)) |
423 | #else |
652 | #endif |
424 | PNG_EXTERN png_fixed_point png_fixed PNGARG((png_structp png_ptr, double fp, |
- | |
425 | png_const_charp text)); |
- | |
426 | #endif |
- | |
427 | #endif |
653 | /* else the corresponding function is defined below, inside the scope of the |
- | 654 | * cplusplus test. |
|
- | 655 | */ |
|
- | 656 | #endif |
|
428 | 657 | ||
Line 429... | Line 658... | ||
429 | /* Constant strings for known chunk types. If you need to add a chunk, |
658 | /* Constants for known chunk types. If you need to add a chunk, define the name |
- | 659 | * here. For historical reasons these constants have the form png_ |
|
430 | * define the name here, and add an invocation of the macro wherever it's |
660 | * the prefix is lower case. Please use decimal values as the parameters to |
- | 661 | * match the ISO PNG specification and to avoid relying on the C locale |
|
- | 662 | * interpretation of character values. |
|
- | 663 | * |
|
- | 664 | * Prior to 1.5.6 these constants were strings, as of 1.5.6 png_uint_32 values |
|
- | 665 | * are computed and a new macro (PNG_STRING_FROM_CHUNK) added to allow a string |
|
431 | * needed. |
666 | * to be generated if required. |
- | 667 | * |
|
- | 668 | * PNG_32b correctly produces a value shifted by up to 24 bits, even on |
|
- | 669 | * architectures where (int) is only 16 bits. |
|
432 | */ |
670 | */ |
- | 671 | #define PNG_32b(b,s) ((png_uint_32)(b) << (s)) |
|
- | 672 | #define PNG_U32(b1,b2,b3,b4) \ |
|
- | 673 | (PNG_32b(b1,24) | PNG_32b(b2,16) | PNG_32b(b3,8) | PNG_32b(b4,0)) |
|
- | 674 | ||
- | 675 | /* Constants for known chunk types. |
|
- | 676 | * |
|
- | 677 | * MAINTAINERS: If you need to add a chunk, define the name here. |
|
- | 678 | * For historical reasons these constants have the form png_ |
|
- | 679 | * the prefix is lower case. Please use decimal values as the parameters to |
|
- | 680 | * match the ISO PNG specification and to avoid relying on the C locale |
|
- | 681 | * interpretation of character values. Please keep the list sorted. |
|
- | 682 | * |
|
433 | #define PNG_IHDR PNG_CONST png_byte png_IHDR[5] = { 73, 72, 68, 82, '\0'} |
683 | * Notice that PNG_U32 is used to define a 32-bit value for the 4 byte chunk |
- | 684 | * type. In fact the specification does not express chunk types this way, |
|
- | 685 | * however using a 32-bit value means that the chunk type can be read from the |
|
- | 686 | * stream using exactly the same code as used for a 32-bit unsigned value and |
|
- | 687 | * can be examined far more efficiently (using one arithmetic compare). |
|
- | 688 | * |
|
- | 689 | * Prior to 1.5.6 the chunk type constants were expressed as C strings. The |
|
- | 690 | * libpng API still uses strings for 'unknown' chunks and a macro, |
|
- | 691 | * PNG_STRING_FROM_CHUNK, allows a string to be generated if required. Notice |
|
- | 692 | * that for portable code numeric values must still be used; the string "IHDR" |
|
- | 693 | * is not portable and neither is PNG_U32('I', 'H', 'D', 'R'). |
|
- | 694 | * |
|
- | 695 | * In 1.7.0 the definitions will be made public in png.h to avoid having to |
|
- | 696 | * duplicate the same definitions in application code. |
|
- | 697 | */ |
|
434 | #define PNG_IDAT PNG_CONST png_byte png_IDAT[5] = { 73, 68, 65, 84, '\0'} |
698 | #define png_IDAT PNG_U32( 73, 68, 65, 84) |
435 | #define PNG_IEND PNG_CONST png_byte png_IEND[5] = { 73, 69, 78, 68, '\0'} |
699 | #define png_IEND PNG_U32( 73, 69, 78, 68) |
- | 700 | #define png_IHDR PNG_U32( 73, 72, 68, 82) |
|
436 | #define PNG_PLTE PNG_CONST png_byte png_PLTE[5] = { 80, 76, 84, 69, '\0'} |
701 | #define png_PLTE PNG_U32( 80, 76, 84, 69) |
437 | #define PNG_bKGD PNG_CONST png_byte png_bKGD[5] = { 98, 75, 71, 68, '\0'} |
702 | #define png_bKGD PNG_U32( 98, 75, 71, 68) |
438 | #define PNG_cHRM PNG_CONST png_byte png_cHRM[5] = { 99, 72, 82, 77, '\0'} |
703 | #define png_cHRM PNG_U32( 99, 72, 82, 77) |
- | 704 | #define png_fRAc PNG_U32(102, 82, 65, 99) /* registered, not defined */ |
|
439 | #define PNG_gAMA PNG_CONST png_byte png_gAMA[5] = {103, 65, 77, 65, '\0'} |
705 | #define png_gAMA PNG_U32(103, 65, 77, 65) |
- | 706 | #define png_gIFg PNG_U32(103, 73, 70, 103) |
|
- | 707 | #define png_gIFt PNG_U32(103, 73, 70, 116) /* deprecated */ |
|
- | 708 | #define png_gIFx PNG_U32(103, 73, 70, 120) |
|
440 | #define PNG_hIST PNG_CONST png_byte png_hIST[5] = {104, 73, 83, 84, '\0'} |
709 | #define png_hIST PNG_U32(104, 73, 83, 84) |
441 | #define PNG_iCCP PNG_CONST png_byte png_iCCP[5] = {105, 67, 67, 80, '\0'} |
710 | #define png_iCCP PNG_U32(105, 67, 67, 80) |
442 | #define PNG_iTXt PNG_CONST png_byte png_iTXt[5] = {105, 84, 88, 116, '\0'} |
711 | #define png_iTXt PNG_U32(105, 84, 88, 116) |
443 | #define PNG_oFFs PNG_CONST png_byte png_oFFs[5] = {111, 70, 70, 115, '\0'} |
712 | #define png_oFFs PNG_U32(111, 70, 70, 115) |
444 | #define PNG_pCAL PNG_CONST png_byte png_pCAL[5] = {112, 67, 65, 76, '\0'} |
713 | #define png_pCAL PNG_U32(112, 67, 65, 76) |
445 | #define PNG_sCAL PNG_CONST png_byte png_sCAL[5] = {115, 67, 65, 76, '\0'} |
714 | #define png_pHYs PNG_U32(112, 72, 89, 115) |
446 | #define PNG_pHYs PNG_CONST png_byte png_pHYs[5] = {112, 72, 89, 115, '\0'} |
715 | #define png_sBIT PNG_U32(115, 66, 73, 84) |
447 | #define PNG_sBIT PNG_CONST png_byte png_sBIT[5] = {115, 66, 73, 84, '\0'} |
716 | #define png_sCAL PNG_U32(115, 67, 65, 76) |
448 | #define PNG_sPLT PNG_CONST png_byte png_sPLT[5] = {115, 80, 76, 84, '\0'} |
717 | #define png_sPLT PNG_U32(115, 80, 76, 84) |
449 | #define PNG_sRGB PNG_CONST png_byte png_sRGB[5] = {115, 82, 71, 66, '\0'} |
718 | #define png_sRGB PNG_U32(115, 82, 71, 66) |
450 | #define PNG_sTER PNG_CONST png_byte png_sTER[5] = {115, 84, 69, 82, '\0'} |
719 | #define png_sTER PNG_U32(115, 84, 69, 82) |
451 | #define PNG_tEXt PNG_CONST png_byte png_tEXt[5] = {116, 69, 88, 116, '\0'} |
720 | #define png_tEXt PNG_U32(116, 69, 88, 116) |
452 | #define PNG_tIME PNG_CONST png_byte png_tIME[5] = {116, 73, 77, 69, '\0'} |
721 | #define png_tIME PNG_U32(116, 73, 77, 69) |
453 | #define PNG_tRNS PNG_CONST png_byte png_tRNS[5] = {116, 82, 78, 83, '\0'} |
722 | #define png_tRNS PNG_U32(116, 82, 78, 83) |
454 | #define PNG_zTXt PNG_CONST png_byte png_zTXt[5] = {122, 84, 88, 116, '\0'} |
723 | #define png_zTXt PNG_U32(122, 84, 88, 116) |
- | 724 | ||
- | 725 | /* The following will work on (signed char*) strings, whereas the get_uint_32 |
|
- | 726 | * macro will fail on top-bit-set values because of the sign extension. |
|
- | 727 | */ |
|
- | 728 | #define PNG_CHUNK_FROM_STRING(s)\ |
|
- | 729 | PNG_U32(0xff&(s)[0], 0xff&(s)[1], 0xff&(s)[2], 0xff&(s)[3]) |
|
- | 730 | ||
- | 731 | /* This uses (char), not (png_byte) to avoid warnings on systems where (char) is |
|
- | 732 | * signed and the argument is a (char[]) This macro will fail miserably on |
|
- | 733 | * systems where (char) is more than 8 bits. |
|
- | 734 | */ |
|
- | 735 | #define PNG_STRING_FROM_CHUNK(s,c)\ |
|
- | 736 | (void)(((char*)(s))[0]=(char)((c)>>24), ((char*)(s))[1]=(char)((c)>>16),\ |
|
- | 737 | ((char*)(s))[2]=(char)((c)>>8), ((char*)(s))[3]=(char)((c))) |
|
- | 738 | ||
- | 739 | /* Do the same but terminate with a null character. */ |
|
- | 740 | #define PNG_CSTRING_FROM_CHUNK(s,c)\ |
|
- | 741 | (void)(PNG_STRING_FROM_CHUNK(s,c), ((char*)(s))[4] = 0) |
|
- | 742 | ||
- | 743 | /* Test on flag values as defined in the spec (section 5.4): */ |
|
- | 744 | #define PNG_CHUNK_ANCILLARY(c) (1 & ((c) >> 29)) |
|
- | 745 | #define PNG_CHUNK_CRITICAL(c) (!PNG_CHUNK_ANCILLARY(c)) |
|
- | 746 | #define PNG_CHUNK_PRIVATE(c) (1 & ((c) >> 21)) |
|
- | 747 | #define PNG_CHUNK_RESERVED(c) (1 & ((c) >> 13)) |
|
- | 748 | #define PNG_CHUNK_SAFE_TO_COPY(c) (1 & ((c) >> 5)) |
|
- | 749 | ||
- | 750 | /* Gamma values (new at libpng-1.5.4): */ |
|
- | 751 | #define PNG_GAMMA_MAC_OLD 151724 /* Assume '1.8' is really 2.2/1.45! */ |
|
- | 752 | #define PNG_GAMMA_MAC_INVERSE 65909 |
|
- | 753 | #define PNG_GAMMA_sRGB_INVERSE 45455 |
|
- | 754 | ||
- | 755 | /* Almost everything below is C specific; the #defines above can be used in |
|
- | 756 | * non-C code (so long as it is C-preprocessed) the rest of this stuff cannot. |
|
- | 757 | */ |
|
- | 758 | #ifndef PNG_VERSION_INFO_ONLY |
|
- | 759 | ||
- | 760 | #include "pngstruct.h" |
|
- | 761 | #include "pnginfo.h" |
|
- | 762 | ||
- | 763 | /* Validate the include paths - the include path used to generate pnglibconf.h |
|
- | 764 | * must match that used in the build, or we must be using pnglibconf.h.prebuilt: |
|
- | 765 | */ |
|
- | 766 | #if PNG_ZLIB_VERNUM != 0 && PNG_ZLIB_VERNUM != ZLIB_VERNUM |
|
- | 767 | # error ZLIB_VERNUM != PNG_ZLIB_VERNUM \ |
|
- | 768 | "-I (include path) error: see the notes in pngpriv.h" |
|
- | 769 | /* This means that when pnglibconf.h was built the copy of zlib.h that it |
|
- | 770 | * used is not the same as the one being used here. Because the build of |
|
- | 771 | * libpng makes decisions to use inflateInit2 and inflateReset2 based on the |
|
- | 772 | * zlib version number and because this affects handling of certain broken |
|
- | 773 | * PNG files the -I directives must match. |
|
- | 774 | * |
|
- | 775 | * The most likely explanation is that you passed a -I in CFLAGS, this will |
|
- | 776 | * not work; all the preprocessor directories and in particular all the -I |
|
- | 777 | * directives must be in CPPFLAGS. |
|
- | 778 | */ |
|
- | 779 | #endif |
|
- | 780 | ||
- | 781 | /* This is used for 16 bit gamma tables -- only the top level pointers are |
|
- | 782 | * const; this could be changed: |
|
- | 783 | */ |
|
- | 784 | typedef const png_uint_16p * png_const_uint_16pp; |
|
- | 785 | ||
- | 786 | /* Added to libpng-1.5.7: sRGB conversion tables */ |
|
- | 787 | #if defined(PNG_SIMPLIFIED_READ_SUPPORTED) ||\ |
|
- | 788 | defined(PNG_SIMPLIFIED_WRITE_SUPPORTED) |
|
- | 789 | #ifdef PNG_SIMPLIFIED_READ_SUPPORTED |
|
- | 790 | PNG_INTERNAL_DATA(const png_uint_16, png_sRGB_table, [256]); |
|
- | 791 | /* Convert from an sRGB encoded value 0..255 to a 16-bit linear value, |
|
- | 792 | * 0..65535. This table gives the closest 16-bit answers (no errors). |
|
- | 793 | */ |
|
- | 794 | #endif |
|
- | 795 | ||
- | 796 | PNG_INTERNAL_DATA(const png_uint_16, png_sRGB_base, [512]); |
|
- | 797 | PNG_INTERNAL_DATA(const png_byte, png_sRGB_delta, [512]); |
|
- | 798 | ||
- | 799 | #define PNG_sRGB_FROM_LINEAR(linear) ((png_byte)((png_sRGB_base[(linear)>>15] +\ |
|
- | 800 | ((((linear)&0x7fff)*png_sRGB_delta[(linear)>>15])>>12)) >> 8)) |
|
- | 801 | /* Given a value 'linear' in the range 0..255*65535 calculate the 8-bit sRGB |
|
- | 802 | * encoded value with maximum error 0.646365. Note that the input is not a |
|
- | 803 | * 16-bit value; it has been multiplied by 255! */ |
|
- | 804 | #endif /* PNG_SIMPLIFIED_READ/WRITE */ |
|
Line 455... | Line 805... | ||
455 | 805 | ||
456 | 806 | ||
457 | /* Inhibit C++ name-mangling for libpng functions but not for system calls. */ |
807 | /* Inhibit C++ name-mangling for libpng functions but not for system calls. */ |
458 | #ifdef __cplusplus |
808 | #ifdef __cplusplus |
Line 459... | Line 809... | ||
459 | extern "C" { |
809 | extern "C" { |
460 | #endif /* __cplusplus */ |
810 | #endif /* __cplusplus */ |
461 | - | ||
- | 811 | ||
462 | /* These functions are used internally in the code. They generally |
812 | /* Internal functions; these are not exported from a DLL however because they |
463 | * shouldn't be used unless you are writing code to add or replace some |
813 | * are used within several of the C source files they have to be C extern. |
Line -... | Line 814... | ||
- | 814 | * |
|
464 | * functionality in libpng. More information about most functions can |
815 | * All of these functions must be declared with PNG_INTERNAL_FUNCTION. |
465 | * be found in the files where the functions are located. |
816 | */ |
466 | */ |
817 | |
- | 818 | /* Zlib support */ |
|
- | 819 | #define PNG_UNEXPECTED_ZLIB_RETURN (-7) |
|
- | 820 | PNG_INTERNAL_FUNCTION(void, png_zstream_error,(png_structrp png_ptr, int ret), |
|
- | 821 | PNG_EMPTY); |
|
- | 822 | /* Used by the zlib handling functions to ensure that z_stream::msg is always |
|
- | 823 | * set before they return. |
|
- | 824 | */ |
|
- | 825 | ||
- | 826 | #ifdef PNG_WRITE_SUPPORTED |
|
- | 827 | PNG_INTERNAL_FUNCTION(void,png_free_buffer_list,(png_structrp png_ptr, |
|
- | 828 | png_compression_bufferp *list),PNG_EMPTY); |
|
- | 829 | /* Free the buffer list used by the compressed write code. */ |
|
- | 830 | #endif |
|
- | 831 | ||
- | 832 | #if defined(PNG_FLOATING_POINT_SUPPORTED) && \ |
|
- | 833 | !defined(PNG_FIXED_POINT_MACRO_SUPPORTED) && \ |
|
- | 834 | (defined(PNG_gAMA_SUPPORTED) || defined(PNG_cHRM_SUPPORTED) || \ |
|
- | 835 | defined(PNG_sCAL_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) || \ |
|
- | 836 | defined(PNG_READ_RGB_TO_GRAY_SUPPORTED)) || \ |
|
- | 837 | (defined(PNG_sCAL_SUPPORTED) && \ |
|
- | 838 | defined(PNG_FLOATING_ARITHMETIC_SUPPORTED)) |
|
- | 839 | PNG_INTERNAL_FUNCTION(png_fixed_point,png_fixed,(png_const_structrp png_ptr, |
|
- | 840 | double fp, png_const_charp text),PNG_EMPTY); |
|
- | 841 | #endif |
|
- | 842 | ||
- | 843 | /* Check the user version string for compatibility, returns false if the version |
|
- | 844 | * numbers aren't compatible. |
|
- | 845 | */ |
|
- | 846 | PNG_INTERNAL_FUNCTION(int,png_user_version_check,(png_structrp png_ptr, |
|
- | 847 | png_const_charp user_png_ver),PNG_EMPTY); |
|
- | 848 | ||
- | 849 | /* Internal base allocator - no messages, NULL on failure to allocate. This |
|
- | 850 | * does, however, call the application provided allocator and that could call |
|
- | 851 | * png_error (although that would be a bug in the application implementation.) |
|
- | 852 | */ |
|
- | 853 | PNG_INTERNAL_FUNCTION(png_voidp,png_malloc_base,(png_const_structrp png_ptr, |
|
- | 854 | png_alloc_size_t size),PNG_ALLOCATED); |
|
- | 855 | ||
- | 856 | #if defined(PNG_TEXT_SUPPORTED) || defined(PNG_sPLT_SUPPORTED) ||\ |
|
- | 857 | defined(PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED) |
|
- | 858 | /* Internal array allocator, outputs no error or warning messages on failure, |
|
- | 859 | * just returns NULL. |
|
- | 860 | */ |
|
- | 861 | PNG_INTERNAL_FUNCTION(png_voidp,png_malloc_array,(png_const_structrp png_ptr, |
|
- | 862 | int nelements, size_t element_size),PNG_ALLOCATED); |
|
- | 863 | ||
- | 864 | /* The same but an existing array is extended by add_elements. This function |
|
- | 865 | * also memsets the new elements to 0 and copies the old elements. The old |
|
- | 866 | * array is not freed or altered. |
|
- | 867 | */ |
|
- | 868 | PNG_INTERNAL_FUNCTION(png_voidp,png_realloc_array,(png_const_structrp png_ptr, |
|
- | 869 | png_const_voidp array, int old_elements, int add_elements, |
|
- | 870 | size_t element_size),PNG_ALLOCATED); |
|
- | 871 | #endif /* text, sPLT or unknown chunks */ |
|
- | 872 | ||
- | 873 | /* Magic to create a struct when there is no struct to call the user supplied |
|
- | 874 | * memory allocators. Because error handling has not been set up the memory |
|
- | 875 | * handlers can't safely call png_error, but this is an obscure and undocumented |
|
- | 876 | * restriction so libpng has to assume that the 'free' handler, at least, might |
|
- | 877 | * call png_error. |
|
- | 878 | */ |
|
Line 467... | Line 879... | ||
467 | 879 | PNG_INTERNAL_FUNCTION(png_structp,png_create_png_struct, |
|
468 | /* Allocate memory for an internal libpng struct */ |
880 | (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn, |
- | 881 | png_error_ptr warn_fn, png_voidp mem_ptr, png_malloc_ptr malloc_fn, |
|
Line 469... | Line -... | ||
469 | PNG_EXTERN PNG_FUNCTION(png_voidp,png_create_struct,PNGARG((int type)), |
- | |
470 | PNG_ALLOCATED); |
- | |
471 | - | ||
472 | /* Free memory from internal libpng struct */ |
- | |
473 | PNG_EXTERN void png_destroy_struct PNGARG((png_voidp struct_ptr)); |
- | |
474 | - | ||
475 | PNG_EXTERN PNG_FUNCTION(png_voidp,png_create_struct_2, |
882 | png_free_ptr free_fn),PNG_ALLOCATED); |
476 | PNGARG((int type, png_malloc_ptr malloc_fn, png_voidp mem_ptr)), |
883 | |
477 | PNG_ALLOCATED); |
- | |
Line 478... | Line 884... | ||
478 | PNG_EXTERN void png_destroy_struct_2 PNGARG((png_voidp struct_ptr, |
884 | /* Free memory from internal libpng struct */ |
479 | png_free_ptr free_fn, png_voidp mem_ptr)); |
885 | PNG_INTERNAL_FUNCTION(void,png_destroy_png_struct,(png_structrp png_ptr), |
480 | 886 | PNG_EMPTY); |
|
Line 481... | Line 887... | ||
481 | /* Free any memory that info_ptr points to and reset struct. */ |
887 | |
482 | PNG_EXTERN void png_info_destroy PNGARG((png_structp png_ptr, |
888 | /* Free an allocated jmp_buf (always succeeds) */ |
Line 483... | Line 889... | ||
483 | png_infop info_ptr)); |
889 | PNG_INTERNAL_FUNCTION(void,png_free_jmpbuf,(png_structrp png_ptr),PNG_EMPTY); |
484 | 890 | ||
485 | /* Function to allocate memory for zlib. PNGAPI is disallowed. */ |
891 | /* Function to allocate memory for zlib. PNGAPI is disallowed. */ |
486 | PNG_EXTERN PNG_FUNCTION(voidpf,png_zalloc,PNGARG((voidpf png_ptr, uInt items, |
892 | PNG_INTERNAL_FUNCTION(voidpf,png_zalloc,(voidpf png_ptr, uInt items, uInt size), |
Line 487... | Line 893... | ||
487 | uInt size)),PNG_ALLOCATED); |
893 | PNG_ALLOCATED); |
488 | 894 | ||
Line 489... | Line 895... | ||
489 | /* Function to free memory for zlib. PNGAPI is disallowed. */ |
895 | /* Function to free memory for zlib. PNGAPI is disallowed. */ |
490 | PNG_EXTERN void png_zfree PNGARG((voidpf png_ptr, voidpf ptr)); |
896 | PNG_INTERNAL_FUNCTION(void,png_zfree,(voidpf png_ptr, voidpf ptr),PNG_EMPTY); |
491 | 897 | ||
492 | /* Next four functions are used internally as callbacks. PNGCBAPI is required |
898 | /* Next four functions are used internally as callbacks. PNGCBAPI is required |
Line 493... | Line 899... | ||
493 | * but not PNG_EXPORT. PNGAPI added at libpng version 1.2.3, changed to |
899 | * but not PNG_EXPORT. PNGAPI added at libpng version 1.2.3, changed to |
494 | * PNGCBAPI at 1.5.0 |
900 | * PNGCBAPI at 1.5.0 |
Line 495... | Line 901... | ||
495 | */ |
901 | */ |
496 | 902 | ||
497 | PNG_EXTERN void PNGCBAPI png_default_read_data PNGARG((png_structp png_ptr, |
903 | PNG_INTERNAL_FUNCTION(void PNGCBAPI,png_default_read_data,(png_structp png_ptr, |
- | 904 | png_bytep data, png_size_t length),PNG_EMPTY); |
|
498 | png_bytep data, png_size_t length)); |
905 | |
499 | 906 | #ifdef PNG_PROGRESSIVE_READ_SUPPORTED |
|
Line 500... | Line 907... | ||
500 | #ifdef PNG_PROGRESSIVE_READ_SUPPORTED |
907 | PNG_INTERNAL_FUNCTION(void PNGCBAPI,png_push_fill_buffer,(png_structp png_ptr, |
501 | PNG_EXTERN void PNGCBAPI png_push_fill_buffer PNGARG((png_structp png_ptr, |
908 | png_bytep buffer, png_size_t length),PNG_EMPTY); |
Line 502... | Line 909... | ||
502 | png_bytep buffer, png_size_t length)); |
909 | #endif |
503 | #endif |
910 | |
504 | 911 | PNG_INTERNAL_FUNCTION(void PNGCBAPI,png_default_write_data,(png_structp png_ptr, |
|
Line 505... | Line 912... | ||
505 | PNG_EXTERN void PNGCBAPI png_default_write_data PNGARG((png_structp png_ptr, |
912 | png_bytep data, png_size_t length),PNG_EMPTY); |
506 | png_bytep data, png_size_t length)); |
913 | |
- | 914 | #ifdef PNG_WRITE_FLUSH_SUPPORTED |
|
Line 507... | Line 915... | ||
507 | 915 | # ifdef PNG_STDIO_SUPPORTED |
|
508 | #ifdef PNG_WRITE_FLUSH_SUPPORTED |
916 | PNG_INTERNAL_FUNCTION(void PNGCBAPI,png_default_flush,(png_structp png_ptr), |
- | 917 | PNG_EMPTY); |
|
Line 509... | Line 918... | ||
509 | # ifdef PNG_STDIO_SUPPORTED |
918 | # endif |
510 | PNG_EXTERN void PNGCBAPI png_default_flush PNGARG((png_structp png_ptr)); |
919 | #endif |
511 | # endif |
920 | |
Line 512... | Line 921... | ||
512 | #endif |
921 | /* Reset the CRC variable */ |
513 | 922 | PNG_INTERNAL_FUNCTION(void,png_reset_crc,(png_structrp png_ptr),PNG_EMPTY); |
|
514 | /* Reset the CRC variable */ |
923 | |
515 | PNG_EXTERN void png_reset_crc PNGARG((png_structp png_ptr)); |
- | |
516 | - | ||
517 | /* Write the "data" buffer to whatever output you are using */ |
- | |
518 | PNG_EXTERN void png_write_data PNGARG((png_structp png_ptr, |
- | |
519 | png_const_bytep data, png_size_t length)); |
- | |
520 | - | ||
521 | /* Read and check the PNG file signature */ |
- | |
522 | PNG_EXTERN void png_read_sig PNGARG((png_structp png_ptr, png_infop info_ptr)); |
- | |
Line 523... | Line 924... | ||
523 | 924 | /* Write the "data" buffer to whatever output you are using */ |
|
524 | /* Read the chunk header (length + type name) */ |
925 | PNG_INTERNAL_FUNCTION(void,png_write_data,(png_structrp png_ptr, |
- | 926 | png_const_bytep data, png_size_t length),PNG_EMPTY); |
|
Line 525... | Line 927... | ||
525 | PNG_EXTERN png_uint_32 png_read_chunk_header PNGARG((png_structp png_ptr)); |
927 | |
526 | 928 | /* Read and check the PNG file signature */ |
|
Line 527... | Line 929... | ||
527 | /* Read data from whatever input you are using into the "data" buffer */ |
929 | PNG_INTERNAL_FUNCTION(void,png_read_sig,(png_structrp png_ptr, |
528 | PNG_EXTERN void png_read_data PNGARG((png_structp png_ptr, png_bytep data, |
930 | png_inforp info_ptr),PNG_EMPTY); |
529 | png_size_t length)); |
931 | |
530 | 932 | /* Read the chunk header (length + type name) */ |
|
531 | /* Read bytes into buf, and update png_ptr->crc */ |
933 | PNG_INTERNAL_FUNCTION(png_uint_32,png_read_chunk_header,(png_structrp png_ptr), |
532 | PNG_EXTERN void png_crc_read PNGARG((png_structp png_ptr, png_bytep buf, |
934 | PNG_EMPTY); |
Line 533... | Line 935... | ||
533 | png_size_t length)); |
935 | |
534 | 936 | /* Read data from whatever input you are using into the "data" buffer */ |
|
535 | /* Decompress data in a chunk that uses compression */ |
937 | PNG_INTERNAL_FUNCTION(void,png_read_data,(png_structrp png_ptr, png_bytep data, |
Line 536... | Line 938... | ||
536 | #if defined(PNG_zTXt_SUPPORTED) || defined(PNG_iTXt_SUPPORTED) || \ |
938 | png_size_t length),PNG_EMPTY); |
Line 537... | Line 939... | ||
537 | defined(PNG_iCCP_SUPPORTED) || defined(PNG_sPLT_SUPPORTED) |
939 | |
538 | PNG_EXTERN void png_decompress_chunk PNGARG((png_structp png_ptr, |
940 | /* Read bytes into buf, and update png_ptr->crc */ |
539 | int comp_type, png_size_t chunklength, png_size_t prefix_length, |
941 | PNG_INTERNAL_FUNCTION(void,png_crc_read,(png_structrp png_ptr, png_bytep buf, |
540 | png_size_t *data_length)); |
942 | png_uint_32 length),PNG_EMPTY); |
541 | #endif |
- | |
542 | 943 | ||
543 | /* Read "skip" bytes, read the file crc, and (optionally) verify png_ptr->crc */ |
944 | /* Read "skip" bytes, read the file crc, and (optionally) verify png_ptr->crc */ |
544 | PNG_EXTERN int png_crc_finish PNGARG((png_structp png_ptr, png_uint_32 skip)); |
945 | PNG_INTERNAL_FUNCTION(int,png_crc_finish,(png_structrp png_ptr, |
545 | 946 | png_uint_32 skip),PNG_EMPTY); |
|
546 | /* Read the CRC from the file and compare it to the libpng calculated CRC */ |
947 | |
- | 948 | /* Read the CRC from the file and compare it to the libpng calculated CRC */ |
|
- | 949 | PNG_INTERNAL_FUNCTION(int,png_crc_error,(png_structrp png_ptr),PNG_EMPTY); |
|
- | 950 | ||
- | 951 | /* Calculate the CRC over a section of data. Note that we are only |
|
Line 547... | Line -... | ||
547 | PNG_EXTERN int png_crc_error PNGARG((png_structp png_ptr)); |
- | |
548 | - | ||
549 | /* Calculate the CRC over a section of data. Note that we are only |
- | |
550 | * passing a maximum of 64K on systems that have this as a memory limit, |
952 | * passing a maximum of 64K on systems that have this as a memory limit, |
Line 551... | Line 953... | ||
551 | * since this is the maximum buffer size we can specify. |
953 | * since this is the maximum buffer size we can specify. |
552 | */ |
- | |
553 | PNG_EXTERN void png_calculate_crc PNGARG((png_structp png_ptr, |
- | |
554 | png_const_bytep ptr, png_size_t length)); |
- | |
555 | - | ||
556 | #ifdef PNG_WRITE_FLUSH_SUPPORTED |
954 | */ |
557 | PNG_EXTERN void png_flush PNGARG((png_structp png_ptr)); |
955 | PNG_INTERNAL_FUNCTION(void,png_calculate_crc,(png_structrp png_ptr, |
558 | #endif |
- | |
559 | 956 | png_const_bytep ptr, png_size_t length),PNG_EMPTY); |
|
Line 560... | Line 957... | ||
560 | /* Write various chunks */ |
957 | |
561 | 958 | #ifdef PNG_WRITE_FLUSH_SUPPORTED |
|
562 | /* Write the IHDR chunk, and update the png_struct with the necessary |
959 | PNG_INTERNAL_FUNCTION(void,png_flush,(png_structrp png_ptr),PNG_EMPTY); |
563 | * information. |
960 | #endif |
Line 564... | Line 961... | ||
564 | */ |
961 | |
565 | PNG_EXTERN void png_write_IHDR PNGARG((png_structp png_ptr, png_uint_32 width, |
- | |
566 | png_uint_32 height, |
962 | /* Write various chunks */ |
567 | int bit_depth, int color_type, int compression_method, int filter_method, |
- | |
568 | int interlace_method)); |
- | |
569 | 963 | ||
570 | PNG_EXTERN void png_write_PLTE PNGARG((png_structp png_ptr, |
- | |
571 | png_const_colorp palette, png_uint_32 num_pal)); |
- | |
572 | 964 | /* Write the IHDR chunk, and update the png_struct with the necessary |
|
573 | PNG_EXTERN void png_write_IDAT PNGARG((png_structp png_ptr, png_bytep data, |
- | |
574 | png_size_t length)); |
- | |
575 | - | ||
576 | PNG_EXTERN void png_write_IEND PNGARG((png_structp png_ptr)); |
965 | * information. |
Line 577... | Line 966... | ||
577 | 966 | */ |
|
578 | #ifdef PNG_WRITE_gAMA_SUPPORTED |
967 | PNG_INTERNAL_FUNCTION(void,png_write_IHDR,(png_structrp png_ptr, |
579 | # ifdef PNG_FLOATING_POINT_SUPPORTED |
968 | png_uint_32 width, png_uint_32 height, int bit_depth, int color_type, |
580 | PNG_EXTERN void png_write_gAMA PNGARG((png_structp png_ptr, double file_gamma)); |
969 | int compression_method, int filter_method, int interlace_method),PNG_EMPTY); |
Line 581... | Line 970... | ||
581 | # endif |
970 | |
582 | # ifdef PNG_FIXED_POINT_SUPPORTED |
971 | PNG_INTERNAL_FUNCTION(void,png_write_PLTE,(png_structrp png_ptr, |
583 | PNG_EXTERN void png_write_gAMA_fixed PNGARG((png_structp png_ptr, |
972 | png_const_colorp palette, png_uint_32 num_pal),PNG_EMPTY); |
584 | png_fixed_point file_gamma)); |
973 | |
585 | # endif |
974 | PNG_INTERNAL_FUNCTION(void,png_compress_IDAT,(png_structrp png_ptr, |
- | 975 | png_const_bytep row_data, png_alloc_size_t row_data_length, int flush), |
|
- | 976 | PNG_EMPTY); |
|
586 | #endif |
977 | |
Line 587... | Line 978... | ||
587 | 978 | PNG_INTERNAL_FUNCTION(void,png_write_IEND,(png_structrp png_ptr),PNG_EMPTY); |
|
588 | #ifdef PNG_WRITE_sBIT_SUPPORTED |
979 | |
589 | PNG_EXTERN void png_write_sBIT PNGARG((png_structp png_ptr, |
980 | #ifdef PNG_WRITE_gAMA_SUPPORTED |
590 | png_const_color_8p sbit, int color_type)); |
981 | PNG_INTERNAL_FUNCTION(void,png_write_gAMA_fixed,(png_structrp png_ptr, |
Line 591... | Line 982... | ||
591 | #endif |
982 | png_fixed_point file_gamma),PNG_EMPTY); |
592 | 983 | #endif |
|
593 | #ifdef PNG_WRITE_cHRM_SUPPORTED |
984 | |
594 | # ifdef PNG_FLOATING_POINT_SUPPORTED |
985 | #ifdef PNG_WRITE_sBIT_SUPPORTED |
595 | PNG_EXTERN void png_write_cHRM PNGARG((png_structp png_ptr, |
986 | PNG_INTERNAL_FUNCTION(void,png_write_sBIT,(png_structrp png_ptr, |
Line 596... | Line 987... | ||
596 | double white_x, double white_y, |
987 | png_const_color_8p sbit, int color_type),PNG_EMPTY); |
597 | double red_x, double red_y, double green_x, double green_y, |
988 | #endif |
598 | double blue_x, double blue_y)); |
989 | |
599 | # endif |
990 | #ifdef PNG_WRITE_cHRM_SUPPORTED |
Line 600... | Line 991... | ||
600 | PNG_EXTERN void png_write_cHRM_fixed PNGARG((png_structp png_ptr, |
991 | PNG_INTERNAL_FUNCTION(void,png_write_cHRM_fixed,(png_structrp png_ptr, |
601 | png_fixed_point int_white_x, png_fixed_point int_white_y, |
992 | const png_xy *xy), PNG_EMPTY); |
602 | png_fixed_point int_red_x, png_fixed_point int_red_y, png_fixed_point |
993 | /* The xy value must have been previously validated */ |
603 | int_green_x, png_fixed_point int_green_y, png_fixed_point int_blue_x, |
- | |
604 | png_fixed_point int_blue_y)); |
- | |
605 | #endif |
- | |
606 | - | ||
607 | #ifdef PNG_WRITE_sRGB_SUPPORTED |
- | |
608 | PNG_EXTERN void png_write_sRGB PNGARG((png_structp png_ptr, |
- | |
609 | int intent)); |
994 | #endif |
Line -... | Line 995... | ||
- | 995 | ||
610 | #endif |
996 | #ifdef PNG_WRITE_sRGB_SUPPORTED |
611 | 997 | PNG_INTERNAL_FUNCTION(void,png_write_sRGB,(png_structrp png_ptr, |
|
612 | #ifdef PNG_WRITE_iCCP_SUPPORTED |
998 | int intent),PNG_EMPTY); |
613 | PNG_EXTERN void png_write_iCCP PNGARG((png_structp png_ptr, |
999 | #endif |
Line 614... | Line 1000... | ||
614 | png_const_charp name, int compression_type, |
1000 | |
615 | png_const_charp profile, int proflen)); |
1001 | #ifdef PNG_WRITE_iCCP_SUPPORTED |
616 | /* Note to maintainer: profile should be png_bytep */ |
1002 | PNG_INTERNAL_FUNCTION(void,png_write_iCCP,(png_structrp png_ptr, |
617 | #endif |
1003 | png_const_charp name, png_const_bytep profile), PNG_EMPTY); |
Line 618... | Line 1004... | ||
618 | 1004 | /* The profile must have been previously validated for correctness, the |
|
619 | #ifdef PNG_WRITE_sPLT_SUPPORTED |
1005 | * length comes from the first four bytes. Only the base, deflate, |
620 | PNG_EXTERN void png_write_sPLT PNGARG((png_structp png_ptr, |
1006 | * compression is supported. |
621 | png_const_sPLT_tp palette)); |
1007 | */ |
622 | #endif |
1008 | #endif |
Line 623... | Line 1009... | ||
623 | 1009 | ||
624 | #ifdef PNG_WRITE_tRNS_SUPPORTED |
1010 | #ifdef PNG_WRITE_sPLT_SUPPORTED |
625 | PNG_EXTERN void png_write_tRNS PNGARG((png_structp png_ptr, |
1011 | PNG_INTERNAL_FUNCTION(void,png_write_sPLT,(png_structrp png_ptr, |
626 | png_const_bytep trans, png_const_color_16p values, int number, |
1012 | png_const_sPLT_tp palette),PNG_EMPTY); |
Line 627... | Line 1013... | ||
627 | int color_type)); |
1013 | #endif |
628 | #endif |
1014 | |
629 | 1015 | #ifdef PNG_WRITE_tRNS_SUPPORTED |
|
630 | #ifdef PNG_WRITE_bKGD_SUPPORTED |
1016 | PNG_INTERNAL_FUNCTION(void,png_write_tRNS,(png_structrp png_ptr, |
Line 631... | Line 1017... | ||
631 | PNG_EXTERN void png_write_bKGD PNGARG((png_structp png_ptr, |
1017 | png_const_bytep trans, png_const_color_16p values, int number, |
632 | png_const_color_16p values, int color_type)); |
1018 | int color_type),PNG_EMPTY); |
633 | #endif |
1019 | #endif |
634 | 1020 | ||
635 | #ifdef PNG_WRITE_hIST_SUPPORTED |
1021 | #ifdef PNG_WRITE_bKGD_SUPPORTED |
Line 636... | Line 1022... | ||
636 | PNG_EXTERN void png_write_hIST PNGARG((png_structp png_ptr, |
1022 | PNG_INTERNAL_FUNCTION(void,png_write_bKGD,(png_structrp png_ptr, |
637 | png_const_uint_16p hist, int num_hist)); |
1023 | png_const_color_16p values, int color_type),PNG_EMPTY); |
638 | #endif |
1024 | #endif |
639 | 1025 | ||
640 | #if defined(PNG_WRITE_TEXT_SUPPORTED) || defined(PNG_WRITE_pCAL_SUPPORTED) || \ |
1026 | #ifdef PNG_WRITE_hIST_SUPPORTED |
Line 641... | Line 1027... | ||
641 | defined(PNG_WRITE_iCCP_SUPPORTED) || defined(PNG_WRITE_sPLT_SUPPORTED) |
1027 | PNG_INTERNAL_FUNCTION(void,png_write_hIST,(png_structrp png_ptr, |
642 | PNG_EXTERN png_size_t png_check_keyword PNGARG((png_structp png_ptr, |
1028 | png_const_uint_16p hist, int num_hist),PNG_EMPTY); |
643 | png_const_charp key, png_charpp new_key)); |
1029 | #endif |
644 | #endif |
1030 | |
Line 645... | Line 1031... | ||
645 | 1031 | /* Chunks that have keywords */ |
|
646 | #ifdef PNG_WRITE_tEXt_SUPPORTED |
1032 | #ifdef PNG_WRITE_tEXt_SUPPORTED |
647 | PNG_EXTERN void png_write_tEXt PNGARG((png_structp png_ptr, png_const_charp key, |
1033 | PNG_INTERNAL_FUNCTION(void,png_write_tEXt,(png_structrp png_ptr, |
648 | png_const_charp text, png_size_t text_len)); |
1034 | png_const_charp key, png_const_charp text, png_size_t text_len),PNG_EMPTY); |
Line 649... | Line 1035... | ||
649 | #endif |
1035 | #endif |
650 | 1036 | ||
- | 1037 | #ifdef PNG_WRITE_zTXt_SUPPORTED |
|
Line 651... | Line 1038... | ||
651 | #ifdef PNG_WRITE_zTXt_SUPPORTED |
1038 | PNG_INTERNAL_FUNCTION(void,png_write_zTXt,(png_structrp png_ptr, png_const_charp |
652 | PNG_EXTERN void png_write_zTXt PNGARG((png_structp png_ptr, png_const_charp key, |
1039 | key, png_const_charp text, png_size_t text_len, int compression),PNG_EMPTY); |
- | 1040 | #endif |
|
Line 653... | Line 1041... | ||
653 | png_const_charp text, png_size_t text_len, int compression)); |
1041 | |
- | 1042 | #ifdef PNG_WRITE_iTXt_SUPPORTED |
|
- | 1043 | PNG_INTERNAL_FUNCTION(void,png_write_iTXt,(png_structrp png_ptr, |
|
- | 1044 | int compression, png_const_charp key, png_const_charp lang, |
|
- | 1045 | png_const_charp lang_key, png_const_charp text),PNG_EMPTY); |
|
- | 1046 | #endif |
|
- | 1047 | ||
- | 1048 | #ifdef PNG_TEXT_SUPPORTED /* Added at version 1.0.14 and 1.2.4 */ |
|
- | 1049 | PNG_INTERNAL_FUNCTION(int,png_set_text_2,(png_const_structrp png_ptr, |
|
- | 1050 | png_inforp info_ptr, png_const_textp text_ptr, int num_text),PNG_EMPTY); |
|
- | 1051 | #endif |
|
- | 1052 | ||
- | 1053 | #ifdef PNG_WRITE_oFFs_SUPPORTED |
|
- | 1054 | PNG_INTERNAL_FUNCTION(void,png_write_oFFs,(png_structrp png_ptr, |
|
- | 1055 | png_int_32 x_offset, png_int_32 y_offset, int unit_type),PNG_EMPTY); |
|
- | 1056 | #endif |
|
- | 1057 | ||
- | 1058 | #ifdef PNG_WRITE_pCAL_SUPPORTED |
|
- | 1059 | PNG_INTERNAL_FUNCTION(void,png_write_pCAL,(png_structrp png_ptr, |
|
- | 1060 | png_charp purpose, png_int_32 X0, png_int_32 X1, int type, int nparams, |
|
- | 1061 | png_const_charp units, png_charpp params),PNG_EMPTY); |
|
- | 1062 | #endif |
|
- | 1063 | ||
- | 1064 | #ifdef PNG_WRITE_pHYs_SUPPORTED |
|
- | 1065 | PNG_INTERNAL_FUNCTION(void,png_write_pHYs,(png_structrp png_ptr, |
|
- | 1066 | png_uint_32 x_pixels_per_unit, png_uint_32 y_pixels_per_unit, |
|
654 | #endif |
1067 | int unit_type),PNG_EMPTY); |
655 | 1068 | #endif |
|
Line 656... | Line 1069... | ||
656 | #ifdef PNG_WRITE_iTXt_SUPPORTED |
1069 | |
657 | PNG_EXTERN void png_write_iTXt PNGARG((png_structp png_ptr, |
1070 | #ifdef PNG_WRITE_tIME_SUPPORTED |
658 | int compression, png_const_charp key, png_const_charp lang, |
1071 | PNG_INTERNAL_FUNCTION(void,png_write_tIME,(png_structrp png_ptr, |
659 | png_const_charp lang_key, png_const_charp text)); |
1072 | png_const_timep mod_time),PNG_EMPTY); |
- | 1073 | #endif |
|
660 | #endif |
1074 | |
661 | 1075 | #ifdef PNG_WRITE_sCAL_SUPPORTED |
|
662 | #ifdef PNG_TEXT_SUPPORTED /* Added at version 1.0.14 and 1.2.4 */ |
1076 | PNG_INTERNAL_FUNCTION(void,png_write_sCAL_s,(png_structrp png_ptr, |
- | 1077 | int unit, png_const_charp width, png_const_charp height),PNG_EMPTY); |
|
663 | PNG_EXTERN int png_set_text_2 PNGARG((png_structp png_ptr, |
1078 | #endif |
Line 664... | Line 1079... | ||
664 | png_infop info_ptr, png_const_textp text_ptr, int num_text)); |
1079 | |
Line 665... | Line 1080... | ||
665 | #endif |
1080 | /* Called when finished processing a row of data */ |
666 | 1081 | PNG_INTERNAL_FUNCTION(void,png_write_finish_row,(png_structrp png_ptr), |
|
667 | #ifdef PNG_WRITE_oFFs_SUPPORTED |
1082 | PNG_EMPTY); |
668 | PNG_EXTERN void png_write_oFFs PNGARG((png_structp png_ptr, |
1083 | |
669 | png_int_32 x_offset, png_int_32 y_offset, int unit_type)); |
1084 | /* Internal use only. Called before first row of data */ |
Line -... | Line 1085... | ||
- | 1085 | PNG_INTERNAL_FUNCTION(void,png_write_start_row,(png_structrp png_ptr), |
|
670 | #endif |
1086 | PNG_EMPTY); |
- | 1087 | ||
671 | 1088 | /* Combine a row of data, dealing with alpha, etc. if requested. 'row' is an |
|
- | 1089 | * array of png_ptr->width pixels. If the image is not interlaced or this |
|
- | 1090 | * is the final pass this just does a memcpy, otherwise the "display" flag |
|
- | 1091 | * is used to determine whether to copy pixels that are not in the current pass. |
|
- | 1092 | * |
|
- | 1093 | * Because 'png_do_read_interlace' (below) replicates pixels this allows this |
|
- | 1094 | * function to achieve the documented 'blocky' appearance during interlaced read |
|
- | 1095 | * if display is 1 and the 'sparkle' appearance, where existing pixels in 'row' |
|
- | 1096 | * are not changed if they are not in the current pass, when display is 0. |
|
- | 1097 | * |
|
- | 1098 | * 'display' must be 0 or 1, otherwise the memcpy will be done regardless. |
|
- | 1099 | * |
|
- | 1100 | * The API always reads from the png_struct row buffer and always assumes that |
|
- | 1101 | * it is full width (png_do_read_interlace has already been called.) |
|
672 | #ifdef PNG_WRITE_pCAL_SUPPORTED |
1102 | * |
- | 1103 | * This function is only ever used to write to row buffers provided by the |
|
673 | PNG_EXTERN void png_write_pCAL PNGARG((png_structp png_ptr, png_charp purpose, |
1104 | * caller of the relevant libpng API and the row must have already been |
Line 674... | Line 1105... | ||
674 | png_int_32 X0, png_int_32 X1, int type, int nparams, |
1105 | * transformed by the read transformations. |
675 | png_const_charp units, png_charpp params)); |
1106 | * |
676 | #endif |
1107 | * The PNG_USE_COMPILE_TIME_MASKS option causes generation of pre-computed |
Line -... | Line 1108... | ||
- | 1108 | * bitmasks for use within the code, otherwise runtime generated masks are used. |
|
- | 1109 | * The default is compile time masks. |
|
- | 1110 | */ |
|
- | 1111 | #ifndef PNG_USE_COMPILE_TIME_MASKS |
|
- | 1112 | # define PNG_USE_COMPILE_TIME_MASKS 1 |
|
- | 1113 | #endif |
|
677 | 1114 | PNG_INTERNAL_FUNCTION(void,png_combine_row,(png_const_structrp png_ptr, |
|
- | 1115 | png_bytep row, int display),PNG_EMPTY); |
|
- | 1116 | ||
- | 1117 | #ifdef PNG_READ_INTERLACING_SUPPORTED |
|
- | 1118 | /* Expand an interlaced row: the 'row_info' describes the pass data that has |
|
- | 1119 | * been read in and must correspond to the pixels in 'row', the pixels are |
|
- | 1120 | * expanded (moved apart) in 'row' to match the final layout, when doing this |
|
- | 1121 | * the pixels are *replicated* to the intervening space. This is essential for |
|
678 | #ifdef PNG_WRITE_pHYs_SUPPORTED |
1122 | * the correct operation of png_combine_row, above. |
679 | PNG_EXTERN void png_write_pHYs PNGARG((png_structp png_ptr, |
1123 | */ |
680 | png_uint_32 x_pixels_per_unit, png_uint_32 y_pixels_per_unit, |
1124 | PNG_INTERNAL_FUNCTION(void,png_do_read_interlace,(png_row_infop row_info, |
681 | int unit_type)); |
- | |
- | 1125 | png_bytep row, int pass, png_uint_32 transformations),PNG_EMPTY); |
|
Line 682... | Line 1126... | ||
682 | #endif |
1126 | #endif |
683 | 1127 | ||
- | 1128 | /* GRR TO DO (2.0 or whenever): simplify other internal calling interfaces */ |
|
- | 1129 | ||
684 | #ifdef PNG_WRITE_tIME_SUPPORTED |
1130 | #ifdef PNG_WRITE_INTERLACING_SUPPORTED |
685 | PNG_EXTERN void png_write_tIME PNGARG((png_structp png_ptr, |
1131 | /* Grab pixels out of a row for an interlaced pass */ |
686 | png_const_timep mod_time)); |
1132 | PNG_INTERNAL_FUNCTION(void,png_do_write_interlace,(png_row_infop row_info, |
- | 1133 | png_bytep row, int pass),PNG_EMPTY); |
|
Line 687... | Line 1134... | ||
687 | #endif |
1134 | #endif |
688 | 1135 | ||
689 | #ifdef PNG_WRITE_sCAL_SUPPORTED |
1136 | /* Unfilter a row: check the filter value before calling this, there is no point |
690 | PNG_EXTERN void png_write_sCAL_s PNGARG((png_structp png_ptr, |
1137 | * calling it for PNG_FILTER_VALUE_NONE. |
691 | int unit, png_const_charp width, png_const_charp height)); |
1138 | */ |
Line 692... | Line 1139... | ||
692 | #endif |
1139 | PNG_INTERNAL_FUNCTION(void,png_read_filter_row,(png_structrp pp, png_row_infop |
693 | 1140 | row_info, png_bytep row, png_const_bytep prev_row, int filter),PNG_EMPTY); |
|
694 | /* Called when finished processing a row of data */ |
1141 | |
695 | PNG_EXTERN void png_write_finish_row PNGARG((png_structp png_ptr)); |
1142 | PNG_INTERNAL_FUNCTION(void,png_read_filter_row_up_neon,(png_row_infop row_info, |
Line 696... | Line 1143... | ||
696 | 1143 | png_bytep row, png_const_bytep prev_row),PNG_EMPTY); |
|
697 | /* Internal use only. Called before first row of data */ |
1144 | PNG_INTERNAL_FUNCTION(void,png_read_filter_row_sub3_neon,(png_row_infop |
698 | PNG_EXTERN void png_write_start_row PNGARG((png_structp png_ptr)); |
1145 | row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); |
699 | 1146 | PNG_INTERNAL_FUNCTION(void,png_read_filter_row_sub4_neon,(png_row_infop |
|
Line 700... | Line 1147... | ||
700 | /* Combine a row of data, dealing with alpha, etc. if requested */ |
1147 | row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); |
701 | PNG_EXTERN void png_combine_row PNGARG((png_structp png_ptr, png_bytep row, |
1148 | PNG_INTERNAL_FUNCTION(void,png_read_filter_row_avg3_neon,(png_row_infop |
702 | int mask)); |
1149 | row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); |
703 | 1150 | PNG_INTERNAL_FUNCTION(void,png_read_filter_row_avg4_neon,(png_row_infop |
|
Line 704... | Line 1151... | ||
704 | #ifdef PNG_READ_INTERLACING_SUPPORTED |
1151 | row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); |
705 | /* Expand an interlaced row */ |
1152 | PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth3_neon,(png_row_infop |
706 | /* OLD pre-1.0.9 interface: |
1153 | row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); |
707 | PNG_EXTERN void png_do_read_interlace PNGARG((png_row_infop row_info, |
1154 | PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth4_neon,(png_row_infop |
Line 708... | Line 1155... | ||
708 | png_bytep row, int pass, png_uint_32 transformations)); |
1155 | row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); |
709 | */ |
1156 | |
710 | PNG_EXTERN void png_do_read_interlace PNGARG((png_structp png_ptr)); |
1157 | /* Choose the best filter to use and filter the row data */ |
711 | #endif |
1158 | PNG_INTERNAL_FUNCTION(void,png_write_find_filter,(png_structrp png_ptr, |
712 | 1159 | png_row_infop row_info),PNG_EMPTY); |
|
Line 713... | Line 1160... | ||
713 | /* GRR TO DO (2.0 or whenever): simplify other internal calling interfaces */ |
1160 | |
714 | 1161 | #ifdef PNG_SEQUENTIAL_READ_SUPPORTED |
|
715 | #ifdef PNG_WRITE_INTERLACING_SUPPORTED |
1162 | PNG_INTERNAL_FUNCTION(void,png_read_IDAT_data,(png_structrp png_ptr, |
716 | /* Grab pixels out of a row for an interlaced pass */ |
1163 | png_bytep output, png_alloc_size_t avail_out),PNG_EMPTY); |
717 | PNG_EXTERN void png_do_write_interlace PNGARG((png_row_infop row_info, |
1164 | /* Read 'avail_out' bytes of data from the IDAT stream. If the output buffer |
718 | png_bytep row, int pass)); |
1165 | * is NULL the function checks, instead, for the end of the stream. In this |
Line 719... | Line 1166... | ||
719 | #endif |
1166 | * case a benign error will be issued if the stream end is not found or if |
720 | 1167 | * extra data has to be consumed. |
|
721 | /* Unfilter a row */ |
1168 | */ |
722 | PNG_EXTERN void png_read_filter_row PNGARG((png_structp png_ptr, |
1169 | PNG_INTERNAL_FUNCTION(void,png_read_finish_IDAT,(png_structrp png_ptr), |
723 | png_row_infop row_info, png_bytep row, png_const_bytep prev_row, |
1170 | PNG_EMPTY); |
Line 724... | Line 1171... | ||
724 | int filter)); |
1171 | /* This cleans up when the IDAT LZ stream does not end when the last image |
725 | 1172 | * byte is read; there is still some pending input. |
|
726 | /* Choose the best filter to use and filter the row data */ |
1173 | */ |
727 | PNG_EXTERN void png_write_find_filter PNGARG((png_structp png_ptr, |
1174 | |
Line 728... | Line 1175... | ||
728 | png_row_infop row_info)); |
1175 | PNG_INTERNAL_FUNCTION(void,png_read_finish_row,(png_structrp png_ptr), |
729 | 1176 | PNG_EMPTY); |
|
730 | /* Write out the filtered row. */ |
1177 | /* Finish a row while reading, dealing with interlacing passes, etc. */ |
731 | PNG_EXTERN void png_write_filtered_row PNGARG((png_structp png_ptr, |
1178 | #endif |
Line 732... | Line 1179... | ||
732 | png_bytep filtered_row)); |
1179 | |
733 | /* Finish a row while reading, dealing with interlacing passes, etc. */ |
1180 | /* Initialize the row buffers, etc. */ |
734 | PNG_EXTERN void png_read_finish_row PNGARG((png_structp png_ptr)); |
1181 | PNG_INTERNAL_FUNCTION(void,png_read_start_row,(png_structrp png_ptr),PNG_EMPTY); |
735 | 1182 | ||
Line 736... | Line 1183... | ||
736 | /* Initialize the row buffers, etc. */ |
1183 | #ifdef PNG_READ_TRANSFORMS_SUPPORTED |
737 | PNG_EXTERN void png_read_start_row PNGARG((png_structp png_ptr)); |
1184 | /* Optional call to update the users info structure */ |
738 | /* Optional call to update the users info structure */ |
1185 | PNG_INTERNAL_FUNCTION(void,png_read_transform_info,(png_structrp png_ptr, |
739 | PNG_EXTERN void png_read_transform_info PNGARG((png_structp png_ptr, |
1186 | png_inforp info_ptr),PNG_EMPTY); |
Line 740... | Line 1187... | ||
740 | png_infop info_ptr)); |
1187 | #endif |
741 | 1188 | ||
- | 1189 | /* These are the functions that do the transformations */ |
|
- | 1190 | #ifdef PNG_READ_FILLER_SUPPORTED |
|
- | 1191 | PNG_INTERNAL_FUNCTION(void,png_do_read_filler,(png_row_infop row_info, |
|
- | 1192 | png_bytep row, png_uint_32 filler, png_uint_32 flags),PNG_EMPTY); |
|
- | 1193 | #endif |
|
742 | /* These are the functions that do the transformations */ |
1194 | |
743 | #ifdef PNG_READ_FILLER_SUPPORTED |
1195 | #ifdef PNG_READ_SWAP_ALPHA_SUPPORTED |
Line 744... | Line 1196... | ||
744 | PNG_EXTERN void png_do_read_filler PNGARG((png_row_infop row_info, |
1196 | PNG_INTERNAL_FUNCTION(void,png_do_read_swap_alpha,(png_row_infop row_info, |
745 | png_bytep row, png_uint_32 filler, png_uint_32 flags)); |
1197 | png_bytep row),PNG_EMPTY); |
746 | #endif |
1198 | #endif |
747 | 1199 | ||
Line 748... | Line 1200... | ||
748 | #ifdef PNG_READ_SWAP_ALPHA_SUPPORTED |
1200 | #ifdef PNG_WRITE_SWAP_ALPHA_SUPPORTED |
749 | PNG_EXTERN void png_do_read_swap_alpha PNGARG((png_row_infop row_info, |
1201 | PNG_INTERNAL_FUNCTION(void,png_do_write_swap_alpha,(png_row_infop row_info, |
750 | png_bytep row)); |
1202 | png_bytep row),PNG_EMPTY); |
751 | #endif |
1203 | #endif |
Line 752... | Line 1204... | ||
752 | 1204 | ||
753 | #ifdef PNG_WRITE_SWAP_ALPHA_SUPPORTED |
1205 | #ifdef PNG_READ_INVERT_ALPHA_SUPPORTED |
754 | PNG_EXTERN void png_do_write_swap_alpha PNGARG((png_row_infop row_info, |
1206 | PNG_INTERNAL_FUNCTION(void,png_do_read_invert_alpha,(png_row_infop row_info, |
755 | png_bytep row)); |
1207 | png_bytep row),PNG_EMPTY); |
756 | #endif |
1208 | #endif |
Line 757... | Line 1209... | ||
757 | 1209 | ||
758 | #ifdef PNG_READ_INVERT_ALPHA_SUPPORTED |
1210 | #ifdef PNG_WRITE_INVERT_ALPHA_SUPPORTED |
759 | PNG_EXTERN void png_do_read_invert_alpha PNGARG((png_row_infop row_info, |
1211 | PNG_INTERNAL_FUNCTION(void,png_do_write_invert_alpha,(png_row_infop row_info, |
760 | png_bytep row)); |
1212 | png_bytep row),PNG_EMPTY); |
Line 761... | Line 1213... | ||
761 | #endif |
1213 | #endif |
762 | 1214 | ||
763 | #ifdef PNG_WRITE_INVERT_ALPHA_SUPPORTED |
1215 | #if defined(PNG_WRITE_FILLER_SUPPORTED) || \ |
764 | PNG_EXTERN void png_do_write_invert_alpha PNGARG((png_row_infop row_info, |
1216 | defined(PNG_READ_STRIP_ALPHA_SUPPORTED) |
Line 765... | Line 1217... | ||
765 | png_bytep row)); |
1217 | PNG_INTERNAL_FUNCTION(void,png_do_strip_channel,(png_row_infop row_info, |
766 | #endif |
1218 | png_bytep row, int at_start),PNG_EMPTY); |
767 | 1219 | #endif |
|
768 | #if defined(PNG_WRITE_FILLER_SUPPORTED) || \ |
1220 | |
Line 769... | Line 1221... | ||
769 | defined(PNG_READ_STRIP_ALPHA_SUPPORTED) |
1221 | #ifdef PNG_16BIT_SUPPORTED |
770 | PNG_EXTERN void png_do_strip_filler PNGARG((png_row_infop row_info, |
1222 | #if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED) |
771 | png_bytep row, png_uint_32 flags)); |
- | |
772 | #endif |
- | |
773 | - | ||
774 | #ifdef PNG_16BIT_SUPPORTED |
- | |
775 | #if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED) |
- | |
776 | PNG_EXTERN void png_do_swap PNGARG((png_row_infop row_info, |
- | |
777 | png_bytep row)); |
- | |
778 | #endif |
- | |
779 | #endif |
1223 | PNG_INTERNAL_FUNCTION(void,png_do_swap,(png_row_infop row_info, |
780 | 1224 | png_bytep row),PNG_EMPTY); |
|
781 | #if defined(PNG_READ_PACKSWAP_SUPPORTED) || \ |
- | |
782 | defined(PNG_WRITE_PACKSWAP_SUPPORTED) |
- | |
783 | PNG_EXTERN void png_do_packswap PNGARG((png_row_infop row_info, |
1225 | #endif |
Line 784... | Line 1226... | ||
784 | png_bytep row)); |
1226 | #endif |
785 | #endif |
1227 | |
786 | 1228 | #if defined(PNG_READ_PACKSWAP_SUPPORTED) || \ |
|
- | 1229 | defined(PNG_WRITE_PACKSWAP_SUPPORTED) |
|
- | 1230 | PNG_INTERNAL_FUNCTION(void,png_do_packswap,(png_row_infop row_info, |
|
- | 1231 | png_bytep row),PNG_EMPTY); |
|
- | 1232 | #endif |
|
787 | #ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED |
1233 | |
788 | PNG_EXTERN int png_do_rgb_to_gray PNGARG((png_structp png_ptr, |
1234 | #ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED |
Line 789... | Line 1235... | ||
789 | png_row_infop row_info, png_bytep row)); |
1235 | PNG_INTERNAL_FUNCTION(int,png_do_rgb_to_gray,(png_structrp png_ptr, |
790 | #endif |
1236 | png_row_infop row_info, png_bytep row),PNG_EMPTY); |
791 | 1237 | #endif |
|
792 | #ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED |
1238 | |
793 | PNG_EXTERN void png_do_gray_to_rgb PNGARG((png_row_infop row_info, |
1239 | #ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED |
794 | png_bytep row)); |
1240 | PNG_INTERNAL_FUNCTION(void,png_do_gray_to_rgb,(png_row_infop row_info, |
- | 1241 | png_bytep row),PNG_EMPTY); |
|
- | 1242 | #endif |
|
- | 1243 | ||
- | 1244 | #ifdef PNG_READ_PACK_SUPPORTED |
|
- | 1245 | PNG_INTERNAL_FUNCTION(void,png_do_unpack,(png_row_infop row_info, |
|
795 | #endif |
1246 | png_bytep row),PNG_EMPTY); |
Line 796... | Line 1247... | ||
796 | 1247 | #endif |
|
797 | #ifdef PNG_READ_PACK_SUPPORTED |
1248 | |
798 | PNG_EXTERN void png_do_unpack PNGARG((png_row_infop row_info, |
1249 | #ifdef PNG_READ_SHIFT_SUPPORTED |
Line 799... | Line 1250... | ||
799 | png_bytep row)); |
1250 | PNG_INTERNAL_FUNCTION(void,png_do_unshift,(png_row_infop row_info, |
800 | #endif |
1251 | png_bytep row, png_const_color_8p sig_bits),PNG_EMPTY); |
801 | 1252 | #endif |
|
802 | #ifdef PNG_READ_SHIFT_SUPPORTED |
1253 | |
803 | PNG_EXTERN void png_do_unshift PNGARG((png_row_infop row_info, |
1254 | #if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED) |
804 | png_bytep row, png_const_color_8p sig_bits)); |
1255 | PNG_INTERNAL_FUNCTION(void,png_do_invert,(png_row_infop row_info, |
805 | #endif |
1256 | png_bytep row),PNG_EMPTY); |
Line 806... | Line 1257... | ||
806 | 1257 | #endif |
|
807 | #if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED) |
1258 | |
808 | PNG_EXTERN void png_do_invert PNGARG((png_row_infop row_info, |
1259 | #ifdef PNG_READ_SCALE_16_TO_8_SUPPORTED |
809 | png_bytep row)); |
1260 | PNG_INTERNAL_FUNCTION(void,png_do_scale_16_to_8,(png_row_infop row_info, |
Line 810... | Line 1261... | ||
810 | #endif |
1261 | png_bytep row),PNG_EMPTY); |
811 | 1262 | #endif |
|
812 | #ifdef PNG_READ_16_TO_8_SUPPORTED |
1263 | |
813 | PNG_EXTERN void png_do_chop PNGARG((png_row_infop row_info, |
1264 | #ifdef PNG_READ_STRIP_16_TO_8_SUPPORTED |
Line 814... | Line 1265... | ||
814 | png_bytep row)); |
1265 | PNG_INTERNAL_FUNCTION(void,png_do_chop,(png_row_infop row_info, |
815 | #endif |
1266 | png_bytep row),PNG_EMPTY); |
816 | 1267 | #endif |
|
817 | #ifdef PNG_READ_QUANTIZE_SUPPORTED |
1268 | |
Line 818... | Line 1269... | ||
818 | PNG_EXTERN void png_do_quantize PNGARG((png_row_infop row_info, |
1269 | #ifdef PNG_READ_QUANTIZE_SUPPORTED |
819 | png_bytep row, png_const_bytep palette_lookup, |
1270 | PNG_INTERNAL_FUNCTION(void,png_do_quantize,(png_row_infop row_info, |
820 | png_const_bytep quantize_lookup)); |
1271 | png_bytep row, png_const_bytep palette_lookup, |
821 | 1272 | png_const_bytep quantize_lookup),PNG_EMPTY); |
|
Line 822... | Line 1273... | ||
822 | # ifdef PNG_CORRECT_PALETTE_SUPPORTED |
1273 | |
823 | PNG_EXTERN void png_correct_palette PNGARG((png_structp png_ptr, |
1274 | # ifdef PNG_CORRECT_PALETTE_SUPPORTED |
824 | png_colorp palette, int num_palette)); |
1275 | PNG_INTERNAL_FUNCTION(void,png_correct_palette,(png_structrp png_ptr, |
825 | # endif |
1276 | png_colorp palette, int num_palette),PNG_EMPTY); |
Line 826... | Line 1277... | ||
826 | #endif |
1277 | # endif |
827 | 1278 | #endif |
|
828 | #if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED) |
1279 | |
829 | PNG_EXTERN void png_do_bgr PNGARG((png_row_infop row_info, |
1280 | #if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED) |
Line 830... | Line 1281... | ||
830 | png_bytep row)); |
1281 | PNG_INTERNAL_FUNCTION(void,png_do_bgr,(png_row_infop row_info, |
831 | #endif |
1282 | png_bytep row),PNG_EMPTY); |
832 | 1283 | #endif |
|
833 | #ifdef PNG_WRITE_PACK_SUPPORTED |
1284 | |
Line 834... | Line 1285... | ||
834 | PNG_EXTERN void png_do_pack PNGARG((png_row_infop row_info, |
1285 | #ifdef PNG_WRITE_PACK_SUPPORTED |
835 | png_bytep row, png_uint_32 bit_depth)); |
1286 | PNG_INTERNAL_FUNCTION(void,png_do_pack,(png_row_infop row_info, |
836 | #endif |
1287 | png_bytep row, png_uint_32 bit_depth),PNG_EMPTY); |
837 | 1288 | #endif |
|
Line 838... | Line 1289... | ||
838 | #ifdef PNG_WRITE_SHIFT_SUPPORTED |
1289 | |
839 | PNG_EXTERN void png_do_shift PNGARG((png_row_infop row_info, |
1290 | #ifdef PNG_WRITE_SHIFT_SUPPORTED |
840 | png_bytep row, png_const_color_8p bit_depth)); |
1291 | PNG_INTERNAL_FUNCTION(void,png_do_shift,(png_row_infop row_info, |
841 | #endif |
1292 | png_bytep row, png_const_color_8p bit_depth),PNG_EMPTY); |
Line 842... | Line 1293... | ||
842 | 1293 | #endif |
|
843 | #ifdef PNG_READ_BACKGROUND_SUPPORTED |
1294 | |
844 | # ifdef PNG_READ_GAMMA_SUPPORTED |
1295 | #if defined(PNG_READ_BACKGROUND_SUPPORTED) ||\ |
845 | PNG_EXTERN void png_do_background PNGARG((png_row_infop row_info, |
1296 | defined(PNG_READ_ALPHA_MODE_SUPPORTED) |
Line 846... | Line 1297... | ||
846 | png_bytep row, png_const_color_16p trans_color, |
1297 | PNG_INTERNAL_FUNCTION(void,png_do_compose,(png_row_infop row_info, |
847 | png_const_color_16p background, png_const_color_16p background_1, |
1298 | png_bytep row, png_structrp png_ptr),PNG_EMPTY); |
848 | png_const_bytep gamma_table, png_const_bytep gamma_from_1, |
1299 | #endif |
849 | png_const_bytep gamma_to_1, png_const_uint_16pp gamma_16, |
1300 | |
Line 850... | Line 1301... | ||
850 | png_const_uint_16pp gamma_16_from_1, png_const_uint_16pp gamma_16_to_1, |
1301 | #ifdef PNG_READ_GAMMA_SUPPORTED |
851 | int gamma_shift)); |
1302 | PNG_INTERNAL_FUNCTION(void,png_do_gamma,(png_row_infop row_info, |
852 | # else |
1303 | png_bytep row, png_structrp png_ptr),PNG_EMPTY); |
853 | PNG_EXTERN void png_do_background PNGARG((png_row_infop row_info, |
1304 | #endif |
Line 854... | Line 1305... | ||
854 | png_bytep row, png_const_color_16p trans_color, |
1305 | |
855 | png_const_color_16p background)); |
1306 | #ifdef PNG_READ_ALPHA_MODE_SUPPORTED |
856 | # endif |
1307 | PNG_INTERNAL_FUNCTION(void,png_do_encode_alpha,(png_row_infop row_info, |
857 | #endif |
1308 | png_bytep row, png_structrp png_ptr),PNG_EMPTY); |
Line 858... | Line 1309... | ||
858 | 1309 | #endif |
|
859 | #ifdef PNG_READ_GAMMA_SUPPORTED |
1310 | |
860 | PNG_EXTERN void png_do_gamma PNGARG((png_row_infop row_info, |
1311 | #ifdef PNG_READ_EXPAND_SUPPORTED |
861 | png_bytep row, png_const_bytep gamma_table, |
1312 | PNG_INTERNAL_FUNCTION(void,png_do_expand_palette,(png_row_infop row_info, |
Line 862... | Line 1313... | ||
862 | png_const_uint_16pp gamma_16_table, int gamma_shift)); |
1313 | png_bytep row, png_const_colorp palette, png_const_bytep trans, |
863 | #endif |
1314 | int num_trans),PNG_EMPTY); |
864 | 1315 | PNG_INTERNAL_FUNCTION(void,png_do_expand,(png_row_infop row_info, |
|
865 | #ifdef PNG_READ_EXPAND_SUPPORTED |
1316 | png_bytep row, png_const_color_16p trans_color),PNG_EMPTY); |
Line 866... | Line 1317... | ||
866 | PNG_EXTERN void png_do_expand_palette PNGARG((png_row_infop row_info, |
1317 | #endif |
867 | png_bytep row, png_const_colorp palette, png_const_bytep trans, |
1318 | |
868 | int num_trans)); |
1319 | #ifdef PNG_READ_EXPAND_16_SUPPORTED |
869 | PNG_EXTERN void png_do_expand PNGARG((png_row_infop row_info, |
1320 | PNG_INTERNAL_FUNCTION(void,png_do_expand_16,(png_row_infop row_info, |
Line 870... | Line 1321... | ||
870 | png_bytep row, png_const_color_16p trans_color)); |
1321 | png_bytep row),PNG_EMPTY); |
871 | #endif |
1322 | #endif |
872 | 1323 | ||
873 | /* The following decodes the appropriate chunks, and does error correction, |
1324 | /* The following decodes the appropriate chunks, and does error correction, |
Line 874... | Line 1325... | ||
874 | * then calls the appropriate callback for the chunk if it is valid. |
1325 | * then calls the appropriate callback for the chunk if it is valid. |
875 | */ |
1326 | */ |
Line -... | Line 1327... | ||
- | 1327 | ||
876 | 1328 | /* Decode the IHDR chunk */ |
|
- | 1329 | PNG_INTERNAL_FUNCTION(void,png_handle_IHDR,(png_structrp png_ptr, |
|
- | 1330 | png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); |
|
- | 1331 | PNG_INTERNAL_FUNCTION(void,png_handle_PLTE,(png_structrp png_ptr, |
|
- | 1332 | png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); |
|
- | 1333 | PNG_INTERNAL_FUNCTION(void,png_handle_IEND,(png_structrp png_ptr, |
|
- | 1334 | png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); |
|
- | 1335 | ||
- | 1336 | #ifdef PNG_READ_bKGD_SUPPORTED |
|
- | 1337 | PNG_INTERNAL_FUNCTION(void,png_handle_bKGD,(png_structrp png_ptr, |
|
877 | /* Decode the IHDR chunk */ |
1338 | png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); |
- | 1339 | #endif |
|
- | 1340 | ||
- | 1341 | #ifdef PNG_READ_cHRM_SUPPORTED |
|
- | 1342 | PNG_INTERNAL_FUNCTION(void,png_handle_cHRM,(png_structrp png_ptr, |
|
- | 1343 | png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); |
|
Line 878... | Line 1344... | ||
878 | PNG_EXTERN void png_handle_IHDR PNGARG((png_structp png_ptr, png_infop info_ptr, |
1344 | #endif |
- | 1345 | ||
879 | png_uint_32 length)); |
1346 | #ifdef PNG_READ_gAMA_SUPPORTED |
- | 1347 | PNG_INTERNAL_FUNCTION(void,png_handle_gAMA,(png_structrp png_ptr, |
|
- | 1348 | png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); |
|
- | 1349 | #endif |
|
880 | PNG_EXTERN void png_handle_PLTE PNGARG((png_structp png_ptr, png_infop info_ptr, |
1350 | |
- | 1351 | #ifdef PNG_READ_hIST_SUPPORTED |
|
- | 1352 | PNG_INTERNAL_FUNCTION(void,png_handle_hIST,(png_structrp png_ptr, |
|
Line -... | Line 1353... | ||
- | 1353 | png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); |
|
881 | png_uint_32 length)); |
1354 | #endif |
- | 1355 | ||
- | 1356 | #ifdef PNG_READ_iCCP_SUPPORTED |
|
Line 882... | Line 1357... | ||
882 | PNG_EXTERN void png_handle_IEND PNGARG((png_structp png_ptr, png_infop info_ptr, |
1357 | PNG_INTERNAL_FUNCTION(void,png_handle_iCCP,(png_structrp png_ptr, |
883 | png_uint_32 length)); |
1358 | png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); |
884 | 1359 | #endif /* PNG_READ_iCCP_SUPPORTED */ |
|
885 | #ifdef PNG_READ_bKGD_SUPPORTED |
1360 | |
886 | PNG_EXTERN void png_handle_bKGD PNGARG((png_structp png_ptr, png_infop info_ptr, |
1361 | #ifdef PNG_READ_iTXt_SUPPORTED |
887 | png_uint_32 length)); |
1362 | PNG_INTERNAL_FUNCTION(void,png_handle_iTXt,(png_structrp png_ptr, |
888 | #endif |
1363 | png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); |
889 | 1364 | #endif |
|
890 | #ifdef PNG_READ_cHRM_SUPPORTED |
1365 | |
- | 1366 | #ifdef PNG_READ_oFFs_SUPPORTED |
|
891 | PNG_EXTERN void png_handle_cHRM PNGARG((png_structp png_ptr, png_infop info_ptr, |
1367 | PNG_INTERNAL_FUNCTION(void,png_handle_oFFs,(png_structrp png_ptr, |
- | 1368 | png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); |
|
892 | png_uint_32 length)); |
1369 | #endif |
893 | #endif |
1370 | |
894 | 1371 | #ifdef PNG_READ_pCAL_SUPPORTED |
|
895 | #ifdef PNG_READ_gAMA_SUPPORTED |
1372 | PNG_INTERNAL_FUNCTION(void,png_handle_pCAL,(png_structrp png_ptr, |
896 | PNG_EXTERN void png_handle_gAMA PNGARG((png_structp png_ptr, png_infop info_ptr, |
1373 | png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); |
897 | png_uint_32 length)); |
1374 | #endif |
- | 1375 | ||
898 | #endif |
1376 | #ifdef PNG_READ_pHYs_SUPPORTED |
899 | 1377 | PNG_INTERNAL_FUNCTION(void,png_handle_pHYs,(png_structrp png_ptr, |
|
900 | #ifdef PNG_READ_hIST_SUPPORTED |
1378 | png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); |
901 | PNG_EXTERN void png_handle_hIST PNGARG((png_structp png_ptr, png_infop info_ptr, |
1379 | #endif |
902 | png_uint_32 length)); |
1380 | |
903 | #endif |
1381 | #ifdef PNG_READ_sBIT_SUPPORTED |
904 | 1382 | PNG_INTERNAL_FUNCTION(void,png_handle_sBIT,(png_structrp png_ptr, |
|
- | 1383 | png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); |
|
905 | #ifdef PNG_READ_iCCP_SUPPORTED |
1384 | #endif |
906 | PNG_EXTERN void png_handle_iCCP PNGARG((png_structp png_ptr, png_infop info_ptr, |
1385 | |
907 | png_uint_32 length)); |
1386 | #ifdef PNG_READ_sCAL_SUPPORTED |
908 | #endif /* PNG_READ_iCCP_SUPPORTED */ |
1387 | PNG_INTERNAL_FUNCTION(void,png_handle_sCAL,(png_structrp png_ptr, |
909 | 1388 | png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); |
|
- | 1389 | #endif |
|
910 | #ifdef PNG_READ_iTXt_SUPPORTED |
1390 | |
911 | PNG_EXTERN void png_handle_iTXt PNGARG((png_structp png_ptr, png_infop info_ptr, |
1391 | #ifdef PNG_READ_sPLT_SUPPORTED |
912 | png_uint_32 length)); |
1392 | PNG_INTERNAL_FUNCTION(void,png_handle_sPLT,(png_structrp png_ptr, |
913 | #endif |
1393 | png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); |
914 | 1394 | #endif /* PNG_READ_sPLT_SUPPORTED */ |
|
915 | #ifdef PNG_READ_oFFs_SUPPORTED |
1395 | |
916 | PNG_EXTERN void png_handle_oFFs PNGARG((png_structp png_ptr, png_infop info_ptr, |
1396 | #ifdef PNG_READ_sRGB_SUPPORTED |
917 | png_uint_32 length)); |
1397 | PNG_INTERNAL_FUNCTION(void,png_handle_sRGB,(png_structrp png_ptr, |
918 | #endif |
1398 | png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); |
919 | 1399 | #endif |
|
920 | #ifdef PNG_READ_pCAL_SUPPORTED |
1400 | |
921 | PNG_EXTERN void png_handle_pCAL PNGARG((png_structp png_ptr, png_infop info_ptr, |
1401 | #ifdef PNG_READ_tEXt_SUPPORTED |
922 | png_uint_32 length)); |
1402 | PNG_INTERNAL_FUNCTION(void,png_handle_tEXt,(png_structrp png_ptr, |
923 | #endif |
1403 | png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); |
924 | 1404 | #endif |
|
925 | #ifdef PNG_READ_pHYs_SUPPORTED |
1405 | |
926 | PNG_EXTERN void png_handle_pHYs PNGARG((png_structp png_ptr, png_infop info_ptr, |
1406 | #ifdef PNG_READ_tIME_SUPPORTED |
927 | png_uint_32 length)); |
1407 | PNG_INTERNAL_FUNCTION(void,png_handle_tIME,(png_structrp png_ptr, |
Line 928... | Line 1408... | ||
928 | #endif |
1408 | png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); |
Line 929... | Line 1409... | ||
929 | 1409 | #endif |
|
930 | #ifdef PNG_READ_sBIT_SUPPORTED |
1410 | |
931 | PNG_EXTERN void png_handle_sBIT PNGARG((png_structp png_ptr, png_infop info_ptr, |
1411 | #ifdef PNG_READ_tRNS_SUPPORTED |
932 | png_uint_32 length)); |
1412 | PNG_INTERNAL_FUNCTION(void,png_handle_tRNS,(png_structrp png_ptr, |
933 | #endif |
1413 | png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); |
- | 1414 | #endif |
|
- | 1415 | ||
- | 1416 | #ifdef PNG_READ_zTXt_SUPPORTED |
|
- | 1417 | PNG_INTERNAL_FUNCTION(void,png_handle_zTXt,(png_structrp png_ptr, |
|
- | 1418 | png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); |
|
- | 1419 | #endif |
|
- | 1420 | ||
- | 1421 | PNG_INTERNAL_FUNCTION(void,png_check_chunk_name,(png_structrp png_ptr, |
|
- | 1422 | png_uint_32 chunk_name),PNG_EMPTY); |
|
- | 1423 | ||
- | 1424 | #ifdef PNG_READ_SUPPORTED |
|
- | 1425 | PNG_INTERNAL_FUNCTION(void,png_handle_unknown,(png_structrp png_ptr, |
|
- | 1426 | png_inforp info_ptr, png_uint_32 length, int keep),PNG_EMPTY); |
|
- | 1427 | /* This is the function that gets called for unknown chunks. The 'keep' |
|
- | 1428 | * argument is either non-zero for a known chunk that has been set to be |
|
- | 1429 | * handled as unknown or zero for an unknown chunk. By default the function |
|
- | 1430 | * just skips the chunk or errors out if it is critical. |
|
- | 1431 | */ |
|
- | 1432 | ||
- | 1433 | #ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED |
|
934 | 1434 | PNG_INTERNAL_FUNCTION(int,png_chunk_unknown_handling, |
|
Line 935... | Line 1435... | ||
935 | #ifdef PNG_READ_sCAL_SUPPORTED |
1435 | (png_const_structrp png_ptr, png_uint_32 chunk_name),PNG_EMPTY); |
936 | PNG_EXTERN void png_handle_sCAL PNGARG((png_structp png_ptr, png_infop info_ptr, |
1436 | /* Exactly as the API png_handle_as_unknown() except that the argument is a |
- | 1437 | * 32-bit chunk name, not a string. |
|
- | 1438 | */ |
|
- | 1439 | #endif /* PNG_HANDLE_AS_UNKNOWN_SUPPORTED */ |
|
- | 1440 | #endif /* PNG_READ_SUPPORTED */ |
|
- | 1441 | ||
- | 1442 | /* Handle the transformations for reading and writing */ |
|
- | 1443 | #ifdef PNG_READ_TRANSFORMS_SUPPORTED |
|
- | 1444 | PNG_INTERNAL_FUNCTION(void,png_do_read_transformations,(png_structrp png_ptr, |
|
- | 1445 | png_row_infop row_info),PNG_EMPTY); |
|
- | 1446 | #endif |
|
- | 1447 | #ifdef PNG_WRITE_TRANSFORMS_SUPPORTED |
|
- | 1448 | PNG_INTERNAL_FUNCTION(void,png_do_write_transformations,(png_structrp png_ptr, |
|
937 | png_uint_32 length)); |
1449 | png_row_infop row_info),PNG_EMPTY); |
- | 1450 | #endif |
|
- | 1451 | ||
- | 1452 | #ifdef PNG_READ_TRANSFORMS_SUPPORTED |
|
- | 1453 | PNG_INTERNAL_FUNCTION(void,png_init_read_transformations,(png_structrp png_ptr), |
|
- | 1454 | PNG_EMPTY); |
|
- | 1455 | #endif |
|
- | 1456 | ||
- | 1457 | #ifdef PNG_PROGRESSIVE_READ_SUPPORTED |
|
- | 1458 | PNG_INTERNAL_FUNCTION(void,png_push_read_chunk,(png_structrp png_ptr, |
|
- | 1459 | png_inforp info_ptr),PNG_EMPTY); |
|
938 | #endif |
1460 | PNG_INTERNAL_FUNCTION(void,png_push_read_sig,(png_structrp png_ptr, |
939 | 1461 | png_inforp info_ptr),PNG_EMPTY); |
|
- | 1462 | PNG_INTERNAL_FUNCTION(void,png_push_check_crc,(png_structrp png_ptr),PNG_EMPTY); |
|
- | 1463 | PNG_INTERNAL_FUNCTION(void,png_push_crc_skip,(png_structrp png_ptr, |
|
- | 1464 | png_uint_32 length),PNG_EMPTY); |
|
- | 1465 | PNG_INTERNAL_FUNCTION(void,png_push_crc_finish,(png_structrp png_ptr), |
|
- | 1466 | PNG_EMPTY); |
|
- | 1467 | PNG_INTERNAL_FUNCTION(void,png_push_save_buffer,(png_structrp png_ptr), |
|
- | 1468 | PNG_EMPTY); |
|
- | 1469 | PNG_INTERNAL_FUNCTION(void,png_push_restore_buffer,(png_structrp png_ptr, |
|
- | 1470 | png_bytep buffer, png_size_t buffer_length),PNG_EMPTY); |
|
- | 1471 | PNG_INTERNAL_FUNCTION(void,png_push_read_IDAT,(png_structrp png_ptr),PNG_EMPTY); |
|
940 | #ifdef PNG_READ_sPLT_SUPPORTED |
1472 | PNG_INTERNAL_FUNCTION(void,png_process_IDAT_data,(png_structrp png_ptr, |
- | 1473 | png_bytep buffer, png_size_t buffer_length),PNG_EMPTY); |
|
- | 1474 | PNG_INTERNAL_FUNCTION(void,png_push_process_row,(png_structrp png_ptr), |
|
- | 1475 | PNG_EMPTY); |
|
941 | PNG_EXTERN void png_handle_sPLT PNGARG((png_structp png_ptr, png_infop info_ptr, |
1476 | PNG_INTERNAL_FUNCTION(void,png_push_handle_unknown,(png_structrp png_ptr, |
- | 1477 | png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); |
|
- | 1478 | PNG_INTERNAL_FUNCTION(void,png_push_have_info,(png_structrp png_ptr, |
|
- | 1479 | png_inforp info_ptr),PNG_EMPTY); |
|
- | 1480 | PNG_INTERNAL_FUNCTION(void,png_push_have_end,(png_structrp png_ptr, |
|
- | 1481 | png_inforp info_ptr),PNG_EMPTY); |
|
- | 1482 | PNG_INTERNAL_FUNCTION(void,png_push_have_row,(png_structrp png_ptr, |
|
- | 1483 | png_bytep row),PNG_EMPTY); |
|
- | 1484 | PNG_INTERNAL_FUNCTION(void,png_push_read_end,(png_structrp png_ptr, |
|
- | 1485 | png_inforp info_ptr),PNG_EMPTY); |
|
942 | png_uint_32 length)); |
1486 | PNG_INTERNAL_FUNCTION(void,png_process_some_data,(png_structrp png_ptr, |
- | 1487 | png_inforp info_ptr),PNG_EMPTY); |
|
Line 943... | Line 1488... | ||
943 | #endif /* PNG_READ_sPLT_SUPPORTED */ |
1488 | PNG_INTERNAL_FUNCTION(void,png_read_push_finish_row,(png_structrp png_ptr), |
944 | 1489 | PNG_EMPTY); |
|
945 | #ifdef PNG_READ_sRGB_SUPPORTED |
1490 | # ifdef PNG_READ_tEXt_SUPPORTED |
946 | PNG_EXTERN void png_handle_sRGB PNGARG((png_structp png_ptr, png_infop info_ptr, |
1491 | PNG_INTERNAL_FUNCTION(void,png_push_handle_tEXt,(png_structrp png_ptr, |
947 | png_uint_32 length)); |
1492 | png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); |
948 | #endif |
1493 | PNG_INTERNAL_FUNCTION(void,png_push_read_tEXt,(png_structrp png_ptr, |
Line 949... | Line 1494... | ||
949 | 1494 | png_inforp info_ptr),PNG_EMPTY); |
|
950 | #ifdef PNG_READ_tEXt_SUPPORTED |
1495 | # endif |
951 | PNG_EXTERN void png_handle_tEXt PNGARG((png_structp png_ptr, png_infop info_ptr, |
1496 | # ifdef PNG_READ_zTXt_SUPPORTED |
952 | png_uint_32 length)); |
1497 | PNG_INTERNAL_FUNCTION(void,png_push_handle_zTXt,(png_structrp png_ptr, |
953 | #endif |
1498 | png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); |
Line 954... | Line 1499... | ||
954 | 1499 | PNG_INTERNAL_FUNCTION(void,png_push_read_zTXt,(png_structrp png_ptr, |
|
955 | #ifdef PNG_READ_tIME_SUPPORTED |
1500 | png_inforp info_ptr),PNG_EMPTY); |
956 | PNG_EXTERN void png_handle_tIME PNGARG((png_structp png_ptr, png_infop info_ptr, |
1501 | # endif |
957 | png_uint_32 length)); |
- | |
958 | #endif |
- | |
959 | 1502 | # ifdef PNG_READ_iTXt_SUPPORTED |
|
960 | #ifdef PNG_READ_tRNS_SUPPORTED |
- | |
961 | PNG_EXTERN void png_handle_tRNS PNGARG((png_structp png_ptr, png_infop info_ptr, |
- | |
962 | png_uint_32 length)); |
1503 | PNG_INTERNAL_FUNCTION(void,png_push_handle_iTXt,(png_structrp png_ptr, |
963 | #endif |
1504 | png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); |
964 | - | ||
Line 965... | Line 1505... | ||
965 | #ifdef PNG_READ_zTXt_SUPPORTED |
1505 | PNG_INTERNAL_FUNCTION(void,png_push_read_iTXt,(png_structrp png_ptr, |
966 | PNG_EXTERN void png_handle_zTXt PNGARG((png_structp png_ptr, png_infop info_ptr, |
1506 | png_inforp info_ptr),PNG_EMPTY); |
967 | png_uint_32 length)); |
1507 | # endif |
968 | #endif |
1508 | |
Line -... | Line 1509... | ||
- | 1509 | #endif /* PNG_PROGRESSIVE_READ_SUPPORTED */ |
|
- | 1510 | ||
- | 1511 | #ifdef PNG_MNG_FEATURES_SUPPORTED |
|
- | 1512 | PNG_INTERNAL_FUNCTION(void,png_do_read_intrapixel,(png_row_infop row_info, |
|
- | 1513 | png_bytep row),PNG_EMPTY); |
|
- | 1514 | PNG_INTERNAL_FUNCTION(void,png_do_write_intrapixel,(png_row_infop row_info, |
|
- | 1515 | png_bytep row),PNG_EMPTY); |
|
- | 1516 | #endif |
|
- | 1517 | ||
- | 1518 | /* Added at libpng version 1.6.0 */ |
|
- | 1519 | #ifdef PNG_GAMMA_SUPPORTED |
|
- | 1520 | PNG_INTERNAL_FUNCTION(void,png_colorspace_set_gamma,(png_const_structrp png_ptr, |
|
- | 1521 | png_colorspacerp colorspace, png_fixed_point gAMA), PNG_EMPTY); |
|
- | 1522 | /* Set the colorspace gamma with a value provided by the application or by |
|
- | 1523 | * the gAMA chunk on read. The value will override anything set by an ICC |
|
- | 1524 | * profile. |
|
- | 1525 | */ |
|
- | 1526 | ||
- | 1527 | PNG_INTERNAL_FUNCTION(void,png_colorspace_sync_info,(png_const_structrp png_ptr, |
|
- | 1528 | png_inforp info_ptr), PNG_EMPTY); |
|
- | 1529 | /* Synchronize the info 'valid' flags with the colorspace */ |
|
- | 1530 | ||
- | 1531 | PNG_INTERNAL_FUNCTION(void,png_colorspace_sync,(png_const_structrp png_ptr, |
|
- | 1532 | png_inforp info_ptr), PNG_EMPTY); |
|
- | 1533 | /* Copy the png_struct colorspace to the info_struct and call the above to |
|
- | 1534 | * synchronize the flags. Checks for NULL info_ptr and does nothing. |
|
- | 1535 | */ |
|
- | 1536 | #endif |
|
- | 1537 | ||
- | 1538 | /* Added at libpng version 1.4.0 */ |
|
- | 1539 | #ifdef PNG_COLORSPACE_SUPPORTED |
|
- | 1540 | /* These internal functions are for maintaining the colorspace structure within |
|
- | 1541 | * a png_info or png_struct (or, indeed, both). |
|
- | 1542 | */ |
|
- | 1543 | PNG_INTERNAL_FUNCTION(int,png_colorspace_set_chromaticities, |
|
- | 1544 | (png_const_structrp png_ptr, png_colorspacerp colorspace, const png_xy *xy, |
|
- | 1545 | int preferred), PNG_EMPTY); |
|
- | 1546 | ||
- | 1547 | PNG_INTERNAL_FUNCTION(int,png_colorspace_set_endpoints, |
|
- | 1548 | (png_const_structrp png_ptr, png_colorspacerp colorspace, const png_XYZ *XYZ, |
|
- | 1549 | int preferred), PNG_EMPTY); |
|
- | 1550 | ||
- | 1551 | #ifdef PNG_sRGB_SUPPORTED |
|
- | 1552 | PNG_INTERNAL_FUNCTION(int,png_colorspace_set_sRGB,(png_const_structrp png_ptr, |
|
- | 1553 | png_colorspacerp colorspace, int intent), PNG_EMPTY); |
|
- | 1554 | /* This does set the colorspace gAMA and cHRM values too, but doesn't set the |
|
- | 1555 | * flags to write them, if it returns false there was a problem and an error |
|
- | 1556 | * message has already been output (but the colorspace may still need to be |
|
- | 1557 | * synced to record the invalid flag). |
|
- | 1558 | */ |
|
- | 1559 | #endif /* sRGB */ |
|
- | 1560 | ||
- | 1561 | #ifdef PNG_iCCP_SUPPORTED |
|
- | 1562 | PNG_INTERNAL_FUNCTION(int,png_colorspace_set_ICC,(png_const_structrp png_ptr, |
|
- | 1563 | png_colorspacerp colorspace, png_const_charp name, |
|
- | 1564 | png_uint_32 profile_length, png_const_bytep profile, int color_type), |
|
- | 1565 | PNG_EMPTY); |
|
- | 1566 | /* The 'name' is used for information only */ |
|
- | 1567 | ||
- | 1568 | /* Routines for checking parts of an ICC profile. */ |
|
- | 1569 | PNG_INTERNAL_FUNCTION(int,png_icc_check_length,(png_const_structrp png_ptr, |
|
- | 1570 | png_colorspacerp colorspace, png_const_charp name, |
|
- | 1571 | png_uint_32 profile_length), PNG_EMPTY); |
|
- | 1572 | PNG_INTERNAL_FUNCTION(int,png_icc_check_header,(png_const_structrp png_ptr, |
|
- | 1573 | png_colorspacerp colorspace, png_const_charp name, |
|
- | 1574 | png_uint_32 profile_length, |
|
- | 1575 | png_const_bytep profile /* first 132 bytes only */, int color_type), |
|
- | 1576 | PNG_EMPTY); |
|
- | 1577 | PNG_INTERNAL_FUNCTION(int,png_icc_check_tag_table,(png_const_structrp png_ptr, |
|
- | 1578 | png_colorspacerp colorspace, png_const_charp name, |
|
- | 1579 | png_uint_32 profile_length, |
|
- | 1580 | png_const_bytep profile /* header plus whole tag table */), PNG_EMPTY); |
|
- | 1581 | #ifdef PNG_sRGB_SUPPORTED |
|
- | 1582 | PNG_INTERNAL_FUNCTION(void,png_icc_set_sRGB,( |
|
- | 1583 | png_const_structrp png_ptr, png_colorspacerp colorspace, |
|
- | 1584 | png_const_bytep profile, uLong adler), PNG_EMPTY); |
|
- | 1585 | /* 'adler' is the Adler32 checksum of the uncompressed profile data. It may |
|
- | 1586 | * be zero to indicate that it is not available. It is used, if provided, |
|
- | 1587 | * as a fast check on the profile when checking to see if it is sRGB. |
|
- | 1588 | */ |
|
- | 1589 | #endif |
|
- | 1590 | #endif /* iCCP */ |
|
- | 1591 | ||
- | 1592 | #ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED |
|
- | 1593 | PNG_INTERNAL_FUNCTION(void,png_colorspace_set_rgb_coefficients, |
|
- | 1594 | (png_structrp png_ptr), PNG_EMPTY); |
|
- | 1595 | /* Set the rgb_to_gray coefficients from the colorspace Y values */ |
|
- | 1596 | #endif /* READ_RGB_TO_GRAY */ |
|
- | 1597 | #endif /* COLORSPACE */ |
|
- | 1598 | ||
- | 1599 | /* Added at libpng version 1.4.0 */ |
|
- | 1600 | PNG_INTERNAL_FUNCTION(void,png_check_IHDR,(png_const_structrp png_ptr, |
|
- | 1601 | png_uint_32 width, png_uint_32 height, int bit_depth, |
|
- | 1602 | int color_type, int interlace_type, int compression_type, |
|
- | 1603 | int filter_type),PNG_EMPTY); |
|
- | 1604 | ||
- | 1605 | /* Added at libpng version 1.5.10 */ |
|
- | 1606 | #if defined(PNG_READ_CHECK_FOR_INVALID_INDEX_SUPPORTED) || \ |
|
- | 1607 | defined(PNG_WRITE_CHECK_FOR_INVALID_INDEX_SUPPORTED) |
|
- | 1608 | PNG_INTERNAL_FUNCTION(void,png_do_check_palette_indexes, |
|
- | 1609 | (png_structrp png_ptr, png_row_infop row_info),PNG_EMPTY); |
|
- | 1610 | #endif |
|
- | 1611 | ||
- | 1612 | #if defined(PNG_FLOATING_POINT_SUPPORTED) && defined(PNG_ERROR_TEXT_SUPPORTED) |
|
- | 1613 | PNG_INTERNAL_FUNCTION(void,png_fixed_error,(png_const_structrp png_ptr, |
|
- | 1614 | png_const_charp name),PNG_NORETURN); |
|
- | 1615 | #endif |
|
- | 1616 | ||
- | 1617 | /* Puts 'string' into 'buffer' at buffer[pos], taking care never to overwrite |
|
- | 1618 | * the end. Always leaves the buffer nul terminated. Never errors out (and |
|
- | 1619 | * there is no error code.) |
|
- | 1620 | */ |
|
- | 1621 | PNG_INTERNAL_FUNCTION(size_t,png_safecat,(png_charp buffer, size_t bufsize, |
|
- | 1622 | size_t pos, png_const_charp string),PNG_EMPTY); |
|
- | 1623 | ||
- | 1624 | /* Various internal functions to handle formatted warning messages, currently |
|
- | 1625 | * only implemented for warnings. |
|
- | 1626 | */ |
|
969 | 1627 | #if defined(PNG_WARNINGS_SUPPORTED) || defined(PNG_TIME_RFC1123_SUPPORTED) |
|
970 | PNG_EXTERN void png_handle_unknown PNGARG((png_structp png_ptr, |
1628 | /* Utility to dump an unsigned value into a buffer, given a start pointer and |
971 | png_infop info_ptr, png_uint_32 length)); |
1629 | * and end pointer (which should point just *beyond* the end of the buffer!) |
972 | 1630 | * Returns the pointer to the start of the formatted string. This utility only |
|
973 | PNG_EXTERN void png_check_chunk_name PNGARG((png_structp png_ptr, |
1631 | * does unsigned values. |
974 | png_const_bytep chunk_name)); |
1632 | */ |
975 | 1633 | PNG_INTERNAL_FUNCTION(png_charp,png_format_number,(png_const_charp start, |
|
976 | /* Handle the transformations for reading and writing */ |
1634 | png_charp end, int format, png_alloc_size_t number),PNG_EMPTY); |
977 | PNG_EXTERN void png_do_read_transformations PNGARG((png_structp png_ptr)); |
1635 | |
978 | PNG_EXTERN void png_do_write_transformations PNGARG((png_structp png_ptr)); |
1636 | /* Convenience macro that takes an array: */ |
Line 979... | Line 1637... | ||
979 | 1637 | #define PNG_FORMAT_NUMBER(buffer,format,number) \ |
|
980 | PNG_EXTERN void png_init_read_transformations PNGARG((png_structp png_ptr)); |
1638 | png_format_number(buffer, buffer + (sizeof buffer), format, number) |
981 | 1639 | ||
- | 1640 | /* Suggested size for a number buffer (enough for 64 bits and a sign!) */ |
|
982 | #ifdef PNG_PROGRESSIVE_READ_SUPPORTED |
1641 | #define PNG_NUMBER_BUFFER_SIZE 24 |
Line 983... | Line 1642... | ||
983 | PNG_EXTERN void png_push_read_chunk PNGARG((png_structp png_ptr, |
1642 | |
984 | png_infop info_ptr)); |
1643 | /* These are the integer formats currently supported, the name is formed from |
985 | PNG_EXTERN void png_push_read_sig PNGARG((png_structp png_ptr, |
1644 | * the standard printf(3) format string. |
986 | png_infop info_ptr)); |
1645 | */ |
987 | PNG_EXTERN void png_push_check_crc PNGARG((png_structp png_ptr)); |
1646 | #define PNG_NUMBER_FORMAT_u 1 /* chose unsigned API! */ |
Line 988... | Line 1647... | ||
988 | PNG_EXTERN void png_push_crc_skip PNGARG((png_structp png_ptr, |
1647 | #define PNG_NUMBER_FORMAT_02u 2 |
989 | png_uint_32 length)); |
1648 | #define PNG_NUMBER_FORMAT_d 1 /* chose signed API! */ |
990 | PNG_EXTERN void png_push_crc_finish PNGARG((png_structp png_ptr)); |
1649 | #define PNG_NUMBER_FORMAT_02d 2 |
991 | PNG_EXTERN void png_push_save_buffer PNGARG((png_structp png_ptr)); |
1650 | #define PNG_NUMBER_FORMAT_x 3 |
Line 1117... | Line 1776... | ||
1117 | * |
1776 | * |
1118 | * NOTE: The dangling E problem. |
1777 | * NOTE: The dangling E problem. |
1119 | * There is a PNG valid floating point number in the following: |
1778 | * There is a PNG valid floating point number in the following: |
1120 | * |
1779 | * |
1121 | * PNG floating point numb1.ers are not greedy. |
1780 | * PNG floating point numbers are not greedy. |
1122 | * |
1781 | * |
1123 | * Working this out requires *TWO* character lookahead (because of the |
1782 | * Working this out requires *TWO* character lookahead (because of the |
1124 | * sign), the parser does not do this - it will fail at the 'r' - this |
1783 | * sign), the parser does not do this - it will fail at the 'r' - this |
1125 | * doesn't matter for PNG sCAL chunk values, but it requires more care |
1784 | * doesn't matter for PNG sCAL chunk values, but it requires more care |
1126 | * if the value were ever to be embedded in something more complex. Use |
1785 | * if the value were ever to be embedded in something more complex. Use |
1127 | * ANSI-C strtod if you need the lookahead. |
1786 | * ANSI-C strtod if you need the lookahead. |
Line 1135... | Line 1794... | ||
1135 | #define PNG_FP_SAW_DIGIT 8 /* Saw a digit in current state */ |
1794 | #define PNG_FP_SAW_DIGIT 8 /* Saw a digit in current state */ |
1136 | #define PNG_FP_SAW_DOT 16 /* Saw a dot in current state */ |
1795 | #define PNG_FP_SAW_DOT 16 /* Saw a dot in current state */ |
1137 | #define PNG_FP_SAW_E 32 /* Saw an E (or e) in current state */ |
1796 | #define PNG_FP_SAW_E 32 /* Saw an E (or e) in current state */ |
1138 | #define PNG_FP_SAW_ANY 60 /* Saw any of the above 4 */ |
1797 | #define PNG_FP_SAW_ANY 60 /* Saw any of the above 4 */ |
1139 | #define PNG_FP_WAS_VALID 64 /* Preceding substring is a valid fp number */ |
1798 | |
- | 1799 | /* These three values don't affect the parser. They are set but not used. |
|
- | 1800 | */ |
|
- | 1801 | #define PNG_FP_WAS_VALID 64 /* Preceding substring is a valid fp number */ |
|
1140 | #define PNG_FP_INVALID 128 /* Available for callers as a distinct value */ |
1802 | #define PNG_FP_NEGATIVE 128 /* A negative number, including "-0" */ |
- | 1803 | #define PNG_FP_NONZERO 256 /* A non-zero value */ |
|
- | 1804 | #define PNG_FP_STICKY 448 /* The above three flags */ |
|
- | 1805 | ||
- | 1806 | /* This is available for the caller to store in 'state' if required. Do not |
|
- | 1807 | * call the parser after setting it (the parser sometimes clears it.) |
|
- | 1808 | */ |
|
- | 1809 | #define PNG_FP_INVALID 512 /* Available for callers as a distinct value */ |
|
1141 | 1810 | ||
Line 1142... | Line 1811... | ||
1142 | /* Result codes for the parser (boolean - true meants ok, false means |
1811 | /* Result codes for the parser (boolean - true meants ok, false means |
1143 | * not ok yet.) |
1812 | * not ok yet.) |
1144 | */ |
1813 | */ |
1145 | #define PNG_FP_MAYBE 0 /* The number may be valid in the future */ |
1814 | #define PNG_FP_MAYBE 0 /* The number may be valid in the future */ |
1146 | #define PNG_FP_OK 1 /* The number is valid */ |
1815 | #define PNG_FP_OK 1 /* The number is valid */ |
Line -... | Line 1816... | ||
- | 1816 | ||
- | 1817 | /* Tests on the sticky non-zero and negative flags. To pass these checks |
|
- | 1818 | * the state must also indicate that the whole number is valid - this is |
|
- | 1819 | * achieved by testing PNG_FP_SAW_DIGIT (see the implementation for why this |
|
- | 1820 | * is equivalent to PNG_FP_OK above.) |
|
- | 1821 | */ |
|
- | 1822 | #define PNG_FP_NZ_MASK (PNG_FP_SAW_DIGIT | PNG_FP_NEGATIVE | PNG_FP_NONZERO) |
|
- | 1823 | /* NZ_MASK: the string is valid and a non-zero negative value */ |
|
- | 1824 | #define PNG_FP_Z_MASK (PNG_FP_SAW_DIGIT | PNG_FP_NONZERO) |
|
- | 1825 | /* Z MASK: the string is valid and a non-zero value. */ |
|
- | 1826 | /* PNG_FP_SAW_DIGIT: the string is valid. */ |
|
- | 1827 | #define PNG_FP_IS_ZERO(state) (((state) & PNG_FP_Z_MASK) == PNG_FP_SAW_DIGIT) |
|
- | 1828 | #define PNG_FP_IS_POSITIVE(state) (((state) & PNG_FP_NZ_MASK) == PNG_FP_Z_MASK) |
|
- | 1829 | #define PNG_FP_IS_NEGATIVE(state) (((state) & PNG_FP_NZ_MASK) == PNG_FP_NZ_MASK) |
|
1147 | 1830 | ||
1148 | /* The actual parser. This can be called repeatedly, it updates |
1831 | /* The actual parser. This can be called repeatedly. It updates |
1149 | * the index into the string and the state variable (which must |
1832 | * the index into the string and the state variable (which must |
1150 | * be initialzed to 0). It returns a result code, as above. There |
1833 | * be initialized to 0). It returns a result code, as above. There |
1151 | * is no point calling the parser any more if it fails to advance to |
1834 | * is no point calling the parser any more if it fails to advance to |
1152 | * the end of the string - it is stuck on an invalid character (or |
1835 | * the end of the string - it is stuck on an invalid character (or |
1153 | * terminated by '\0'). |
1836 | * terminated by '\0'). |
1154 | * |
1837 | * |
1155 | * Note that the pointer will consume an E or even an E+ then leave |
1838 | * Note that the pointer will consume an E or even an E+ and then leave |
1156 | * a 'maybe' state even though a preceding integer.fraction is valid. |
1839 | * a 'maybe' state even though a preceding integer.fraction is valid. |
1157 | * The PNG_FP_WAS_VALID flag indicates that a preceding substring was |
1840 | * The PNG_FP_WAS_VALID flag indicates that a preceding substring was |
1158 | * a valid number. It's possible to recover from this by calling |
1841 | * a valid number. It's possible to recover from this by calling |
1159 | * the parser again (from the start, with state 0) but with a string |
1842 | * the parser again (from the start, with state 0) but with a string |
1160 | * that omits the last character (i.e. set the size to the index of |
1843 | * that omits the last character (i.e. set the size to the index of |
1161 | * the problem character.) This has not been tested within libpng. |
1844 | * the problem character.) This has not been tested within libpng. |
1162 | */ |
1845 | */ |
1163 | PNG_EXTERN int png_check_fp_number PNGARG((png_const_charp string, |
1846 | PNG_INTERNAL_FUNCTION(int,png_check_fp_number,(png_const_charp string, |
Line 1164... | Line 1847... | ||
1164 | png_size_t size, int *statep, png_size_tp whereami)); |
1847 | png_size_t size, int *statep, png_size_tp whereami),PNG_EMPTY); |
1165 | 1848 | ||
- | 1849 | /* This is the same but it checks a complete string and returns true |
|
- | 1850 | * only if it just contains a floating point number. As of 1.5.4 this |
|
- | 1851 | * function also returns the state at the end of parsing the number if |
|
1166 | /* This is the same but it checks a complete string and returns true |
1852 | * it was valid (otherwise it returns 0.) This can be used for testing |
1167 | * only if it just contains a floating point number. |
1853 | * for negative or zero values using the sticky flag. |
1168 | */ |
1854 | */ |
1169 | PNG_EXTERN int png_check_fp_string PNGARG((png_const_charp string, |
1855 | PNG_INTERNAL_FUNCTION(int,png_check_fp_string,(png_const_charp string, |
Line 1170... | Line 1856... | ||
1170 | png_size_t size)); |
1856 | png_size_t size),PNG_EMPTY); |
1171 | #endif /* pCAL || sCAL */ |
1857 | #endif /* pCAL || sCAL */ |
1172 | 1858 | ||
1173 | #if defined(PNG_READ_GAMMA_SUPPORTED) ||\ |
1859 | #if defined(PNG_READ_GAMMA_SUPPORTED) ||\ |
1174 | defined(PNG_INCH_CONVERSIONS_SUPPORTED) || defined(PNG_READ_pHYs_SUPPORTED) |
1860 | defined(PNG_INCH_CONVERSIONS_SUPPORTED) || defined(PNG_READ_pHYs_SUPPORTED) |
1175 | /* Added at libpng version 1.5.0 */ |
1861 | /* Added at libpng version 1.5.0 */ |
1176 | /* This is a utility to provide a*times/div (rounded) and indicate |
1862 | /* This is a utility to provide a*times/div (rounded) and indicate |
1177 | * if there is an overflow. The result is a boolean - false (0) |
1863 | * if there is an overflow. The result is a boolean - false (0) |
1178 | * for overflow, true (1) if no overflow, in which case *res |
1864 | * for overflow, true (1) if no overflow, in which case *res |
1179 | * holds the result. |
1865 | * holds the result. |
1180 | */ |
1866 | */ |
Line 1181... | Line 1867... | ||
1181 | PNG_EXTERN int png_muldiv PNGARG((png_fixed_point_p res, png_fixed_point a, |
1867 | PNG_INTERNAL_FUNCTION(int,png_muldiv,(png_fixed_point_p res, png_fixed_point a, |
1182 | png_int_32 times, png_int_32 div)); |
1868 | png_int_32 multiplied_by, png_int_32 divided_by),PNG_EMPTY); |
1183 | #endif |
1869 | #endif |
1184 | 1870 | ||
- | 1871 | #if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_INCH_CONVERSIONS_SUPPORTED) |
|
1185 | #if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_INCH_CONVERSIONS_SUPPORTED) |
1872 | /* Same deal, but issue a warning on overflow and return 0. */ |
Line 1186... | Line 1873... | ||
1186 | /* Same deal, but issue a warning on overflow and return 0. */ |
1873 | PNG_INTERNAL_FUNCTION(png_fixed_point,png_muldiv_warn, |
1187 | PNG_EXTERN png_fixed_point png_muldiv_warn PNGARG((png_structp png_ptr, |
1874 | (png_const_structrp png_ptr, png_fixed_point a, png_int_32 multiplied_by, |
1188 | png_fixed_point a, png_int_32 times, png_int_32 div)); |
1875 | png_int_32 divided_by),PNG_EMPTY); |
1189 | #endif |
1876 | #endif |
1190 | 1877 | ||
1191 | #ifdef PNG_READ_GAMMA_SUPPORTED |
1878 | #ifdef PNG_GAMMA_SUPPORTED |
- | 1879 | /* Calculate a reciprocal - used for gamma values. This returns |
|
Line -... | Line 1880... | ||
- | 1880 | * 0 if the argument is 0 in order to maintain an undefined value; |
|
1192 | /* Calculate a reciprocal - used for gamma values. This returns |
1881 | * there are no warnings. |
1193 | * 0 if the argument is 0 in order to maintain an undefined value, |
1882 | */ |
1194 | * there are no warnings. |
1883 | PNG_INTERNAL_FUNCTION(png_fixed_point,png_reciprocal,(png_fixed_point a), |
1195 | */ |
1884 | PNG_EMPTY); |
1196 | PNG_EXTERN png_fixed_point png_reciprocal PNGARG((png_fixed_point a)); |
1885 | |
1197 | 1886 | #ifdef PNG_READ_GAMMA_SUPPORTED |
|
- | 1887 | /* The same but gives a reciprocal of the product of two fixed point |
|
- | 1888 | * values. Accuracy is suitable for gamma calculations but this is |
|
- | 1889 | * not exact - use png_muldiv for that. Only required at present on read. |
|
- | 1890 | */ |
|
- | 1891 | PNG_INTERNAL_FUNCTION(png_fixed_point,png_reciprocal2,(png_fixed_point a, |
|
1198 | /* The same but gives a reciprocal of the product of two fixed point |
1892 | png_fixed_point b),PNG_EMPTY); |
Line 1199... | Line 1893... | ||
1199 | * values. Accuracy is suitable for gamma calculations but this is |
1893 | #endif |
1200 | * not exact - use png_muldiv for that. |
1894 | |
1201 | */ |
1895 | /* Return true if the gamma value is significantly different from 1.0 */ |
1202 | PNG_EXTERN png_fixed_point png_reciprocal2 PNGARG((png_fixed_point a, |
1896 | PNG_INTERNAL_FUNCTION(int,png_gamma_significant,(png_fixed_point gamma_value), |
1203 | png_fixed_point b)); |
1897 | PNG_EMPTY); |
1204 | #endif |
1898 | #endif |
1205 | 1899 | ||
1206 | #ifdef PNG_READ_GAMMA_SUPPORTED |
1900 | #ifdef PNG_READ_GAMMA_SUPPORTED |
1207 | /* Internal fixed point gamma correction. These APIs are called as |
1901 | /* Internal fixed point gamma correction. These APIs are called as |
1208 | * required to convert single values - they don't need to be fast, |
1902 | * required to convert single values - they don't need to be fast, |
1209 | * they are not used when processing image pixel values. |
- | |
1210 | * |
1903 | * they are not used when processing image pixel values. |
1211 | * While the input is an 'unsigned' value it must actually be the |
1904 | * |
1212 | * correct bit value - 0..255 or 0..65535 as required. |
1905 | * While the input is an 'unsigned' value it must actually be the |
1213 | */ |
1906 | * correct bit value - 0..255 or 0..65535 as required. |
- | 1907 | */ |
|
- | 1908 | PNG_INTERNAL_FUNCTION(png_uint_16,png_gamma_correct,(png_structrp png_ptr, |
|
1214 | PNG_EXTERN png_uint_16 png_gamma_correct PNGARG((png_structp png_ptr, |
1909 | unsigned int value, png_fixed_point gamma_value),PNG_EMPTY); |
1215 | unsigned int value, png_fixed_point gamma)); |
1910 | PNG_INTERNAL_FUNCTION(png_uint_16,png_gamma_16bit_correct,(unsigned int value, |
- | 1911 | png_fixed_point gamma_value),PNG_EMPTY); |
|
- | 1912 | PNG_INTERNAL_FUNCTION(png_byte,png_gamma_8bit_correct,(unsigned int value, |
|
- | 1913 | png_fixed_point gamma_value),PNG_EMPTY); |
|
- | 1914 | PNG_INTERNAL_FUNCTION(void,png_destroy_gamma_table,(png_structrp png_ptr), |
|
- | 1915 | PNG_EMPTY); |
|
- | 1916 | PNG_INTERNAL_FUNCTION(void,png_build_gamma_table,(png_structrp png_ptr, |
|
- | 1917 | int bit_depth),PNG_EMPTY); |
|
- | 1918 | #endif |
|
- | 1919 | ||
- | 1920 | /* SIMPLIFIED READ/WRITE SUPPORT */ |
|
- | 1921 | #if defined(PNG_SIMPLIFIED_READ_SUPPORTED) ||\ |
|
- | 1922 | defined(PNG_SIMPLIFIED_WRITE_SUPPORTED) |
|
- | 1923 | /* The internal structure that png_image::opaque points to. */ |
|
- | 1924 | typedef struct png_control |
|
- | 1925 | { |
|
- | 1926 | png_structp png_ptr; |
|
- | 1927 | png_infop info_ptr; |
|
- | 1928 | png_voidp error_buf; /* Always a jmp_buf at present. */ |
|
- | 1929 | ||
- | 1930 | png_const_bytep memory; /* Memory buffer. */ |
|
- | 1931 | png_size_t size; /* Size of the memory buffer. */ |
|
- | 1932 | ||
- | 1933 | unsigned int for_write :1; /* Otherwise it is a read structure */ |
|
- | 1934 | unsigned int owned_file :1; /* We own the file in io_ptr */ |
|
- | 1935 | } png_control; |
|
- | 1936 | ||
- | 1937 | /* Return the pointer to the jmp_buf from a png_control: necessary because C |
|
- | 1938 | * does not reveal the type of the elements of jmp_buf. |
|
- | 1939 | */ |
|
- | 1940 | #ifdef __cplusplus |
|
- | 1941 | # define png_control_jmp_buf(pc) (((jmp_buf*)((pc)->error_buf))[0]) |
|
- | 1942 | #else |
|
- | 1943 | # define png_control_jmp_buf(pc) ((pc)->error_buf) |
|
- | 1944 | #endif |
|
- | 1945 | ||
- | 1946 | /* Utility to safely execute a piece of libpng code catching and logging any |
|
- | 1947 | * errors that might occur. Returns true on success, false on failure (either |
|
- | 1948 | * of the function or as a result of a png_error.) |
|
- | 1949 | */ |
|
- | 1950 | PNG_INTERNAL_FUNCTION(void,png_safe_error,(png_structp png_ptr, |
|
1216 | PNG_EXTERN int png_gamma_significant PNGARG((png_fixed_point gamma)); |
1951 | png_const_charp error_message),PNG_NORETURN); |
Line -... | Line 1952... | ||
- | 1952 | ||
- | 1953 | #ifdef PNG_WARNINGS_SUPPORTED |
|
- | 1954 | PNG_INTERNAL_FUNCTION(void,png_safe_warning,(png_structp png_ptr, |
|
- | 1955 | png_const_charp warning_message),PNG_EMPTY); |
|
- | 1956 | #else |
|
- | 1957 | # define png_safe_warning 0/*dummy argument*/ |
|
- | 1958 | #endif |
|
- | 1959 | ||
- | 1960 | PNG_INTERNAL_FUNCTION(int,png_safe_execute,(png_imagep image, |
|
- | 1961 | int (*function)(png_voidp), png_voidp arg),PNG_EMPTY); |
|
- | 1962 | ||
- | 1963 | /* Utility to log an error; this also cleans up the png_image; the function |
|
- | 1964 | * always returns 0 (false). |
|
- | 1965 | */ |
|
- | 1966 | PNG_INTERNAL_FUNCTION(int,png_image_error,(png_imagep image, |
|
- | 1967 | png_const_charp error_message),PNG_EMPTY); |
|
- | 1968 | ||
- | 1969 | #ifndef PNG_SIMPLIFIED_READ_SUPPORTED |
|
- | 1970 | /* png_image_free is used by the write code but not exported */ |
|
- | 1971 | PNG_INTERNAL_FUNCTION(void, png_image_free, (png_imagep image), PNG_EMPTY); |
|
- | 1972 | #endif /* !SIMPLIFIED_READ */ |
|
- | 1973 | ||
- | 1974 | #endif /* SIMPLIFIED READ/WRITE */ |
|
- | 1975 | ||
- | 1976 | /* These are initialization functions for hardware specific PNG filter |
|
- | 1977 | * optimizations; list these here then select the appropriate one at compile |
|
1217 | PNG_EXTERN png_uint_16 png_gamma_16bit_correct PNGARG((unsigned int value, |
1978 | * time using the macro PNG_FILTER_OPTIMIZATIONS. If the macro is not defined |
- | 1979 | * the generic code is used. |
|
- | 1980 | */ |
|
- | 1981 | #ifdef PNG_FILTER_OPTIMIZATIONS |
|
- | 1982 | PNG_INTERNAL_FUNCTION(void, PNG_FILTER_OPTIMIZATIONS, (png_structp png_ptr, |
|
- | 1983 | unsigned int bpp), PNG_EMPTY); |
|
- | 1984 | /* Just declare the optimization that will be used */ |
|
Line -... | Line 1985... | ||
- | 1985 | #else |
|
Line 1218... | Line 1986... | ||
1218 | png_fixed_point gamma)); |
1986 | /* List *all* the possible optimizations here - this branch is required if |
Line 1219... | Line 1987... | ||
1219 | PNG_EXTERN png_byte png_gamma_8bit_correct PNGARG((unsigned int value, |
1987 | * the builder of libpng passes the definition of PNG_FILTER_OPTIMIZATIONS in |
1220 | png_fixed_point gamma)); |
1988 | * CFLAGS in place of CPPFLAGS *and* uses symbol prefixing. |
1221 | PNG_EXTERN void png_build_gamma_table PNGARG((png_structp png_ptr, |
1989 | */ |
Line -... | Line 1990... | ||
- | 1990 | PNG_INTERNAL_FUNCTION(void, png_init_filter_functions_neon, |
|
1222 | int bit_depth)); |
1991 | (png_structp png_ptr, unsigned int bpp), PNG_EMPTY); |