OLD | NEW |
1 | 1 |
2 /* pngconf.h - machine configurable file for libpng | 2 /* pngconf.h - machine configurable file for libpng |
3 * | 3 * |
4 * libpng version 1.6.3 - July 18, 2013 | 4 * libpng version 1.6.20, December 3, 2015 |
5 * | 5 * |
6 * Copyright (c) 1998-2013 Glenn Randers-Pehrson | 6 * Copyright (c) 1998-2015 Glenn Randers-Pehrson |
7 * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) | 7 * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) |
8 * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) | 8 * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) |
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 * |
14 */ | 14 * Any machine specific code is near the front of this file, so if you |
15 | |
16 /* Any machine specific code is near the front of this file, so if you | |
17 * are configuring libpng for a machine, you may want to read the section | 15 * are configuring libpng for a machine, you may want to read the section |
18 * starting here down to where it starts to typedef png_color, png_text, | 16 * starting here down to where it starts to typedef png_color, png_text, |
19 * and png_info. | 17 * and png_info. |
20 */ | 18 */ |
21 | 19 |
22 #ifndef PNGCONF_H | 20 #ifndef PNGCONF_H |
23 #define PNGCONF_H | 21 #define PNGCONF_H |
24 | 22 |
25 /* To do: Do all of this in scripts/pnglibconf.dfa */ | |
26 #ifdef PNG_SAFE_LIMITS_SUPPORTED | |
27 # ifdef PNG_USER_WIDTH_MAX | |
28 # undef PNG_USER_WIDTH_MAX | |
29 # define PNG_USER_WIDTH_MAX 1000000L | |
30 # endif | |
31 # ifdef PNG_USER_HEIGHT_MAX | |
32 # undef PNG_USER_HEIGHT_MAX | |
33 # define PNG_USER_HEIGHT_MAX 1000000L | |
34 # endif | |
35 # ifdef PNG_USER_CHUNK_MALLOC_MAX | |
36 # undef PNG_USER_CHUNK_MALLOC_MAX | |
37 # define PNG_USER_CHUNK_MALLOC_MAX 4000000L | |
38 # endif | |
39 # ifdef PNG_USER_CHUNK_CACHE_MAX | |
40 # undef PNG_USER_CHUNK_CACHE_MAX | |
41 # define PNG_USER_CHUNK_CACHE_MAX 128 | |
42 # endif | |
43 #endif | |
44 | |
45 #ifndef PNG_BUILDING_SYMBOL_TABLE /* else includes may cause problems */ | 23 #ifndef PNG_BUILDING_SYMBOL_TABLE /* else includes may cause problems */ |
46 | 24 |
47 /* From libpng 1.6.0 libpng requires an ANSI X3.159-1989 ("ISOC90") compliant C | 25 /* From libpng 1.6.0 libpng requires an ANSI X3.159-1989 ("ISOC90") compliant C |
48 * compiler for correct compilation. The following header files are required by | 26 * compiler for correct compilation. The following header files are required by |
49 * the standard. If your compiler doesn't provide these header files, or they | 27 * the standard. If your compiler doesn't provide these header files, or they |
50 * do not match the standard, you will need to provide/improve them. | 28 * do not match the standard, you will need to provide/improve them. |
51 */ | 29 */ |
52 #include <limits.h> | 30 #include <limits.h> |
53 #include <stddef.h> | 31 #include <stddef.h> |
54 | 32 |
(...skipping 23 matching lines...) Expand all Loading... |
78 #endif | 56 #endif |
79 | 57 |
80 #endif /* PNG_BUILDING_SYMBOL_TABLE */ | 58 #endif /* PNG_BUILDING_SYMBOL_TABLE */ |
81 | 59 |
82 /* Prior to 1.6.0 it was possible to turn off 'const' in declarations using | 60 /* Prior to 1.6.0 it was possible to turn off 'const' in declarations using |
83 * PNG_NO_CONST; this is no longer supported except for data declarations which | 61 * PNG_NO_CONST; this is no longer supported except for data declarations which |
84 * apparently still cause problems in 2011 on some compilers. | 62 * apparently still cause problems in 2011 on some compilers. |
85 */ | 63 */ |
86 #define PNG_CONST const /* backward compatibility only */ | 64 #define PNG_CONST const /* backward compatibility only */ |
87 | 65 |
88 /* This controls optimization of the reading of 16 and 32 bit values | 66 /* This controls optimization of the reading of 16-bit and 32-bit values |
89 * from PNG files. It can be set on a per-app-file basis - it | 67 * from PNG files. It can be set on a per-app-file basis - it |
90 * just changes whether a macro is used when the function is called. | 68 * just changes whether a macro is used when the function is called. |
91 * The library builder sets the default; if read functions are not | 69 * The library builder sets the default; if read functions are not |
92 * built into the library the macro implementation is forced on. | 70 * built into the library the macro implementation is forced on. |
93 */ | 71 */ |
94 #ifndef PNG_READ_INT_FUNCTIONS_SUPPORTED | 72 #ifndef PNG_READ_INT_FUNCTIONS_SUPPORTED |
95 # define PNG_USE_READ_MACROS | 73 # define PNG_USE_READ_MACROS |
96 #endif | 74 #endif |
97 #if !defined(PNG_NO_USE_READ_MACROS) && !defined(PNG_USE_READ_MACROS) | 75 #if !defined(PNG_NO_USE_READ_MACROS) && !defined(PNG_USE_READ_MACROS) |
98 # if PNG_DEFAULT_READ_MACROS | 76 # if PNG_DEFAULT_READ_MACROS |
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
310 #endif | 288 #endif |
311 | 289 |
312 #ifndef PNG_EXPORT_TYPE | 290 #ifndef PNG_EXPORT_TYPE |
313 # define PNG_EXPORT_TYPE(type) PNG_IMPEXP type | 291 # define PNG_EXPORT_TYPE(type) PNG_IMPEXP type |
314 #endif | 292 #endif |
315 | 293 |
316 /* The ordinal value is only relevant when preprocessing png.h for symbol | 294 /* The ordinal value is only relevant when preprocessing png.h for symbol |
317 * table entries, so we discard it here. See the .dfn files in the | 295 * table entries, so we discard it here. See the .dfn files in the |
318 * scripts directory. | 296 * scripts directory. |
319 */ | 297 */ |
| 298 |
320 #ifndef PNG_EXPORTA | 299 #ifndef PNG_EXPORTA |
321 | 300 # define PNG_EXPORTA(ordinal, type, name, args, attributes) \ |
322 # define PNG_EXPORTA(ordinal, type, name, args, attributes)\ | 301 PNG_FUNCTION(PNG_EXPORT_TYPE(type), (PNGAPI name), PNGARG(args), \ |
323 PNG_FUNCTION(PNG_EXPORT_TYPE(type),(PNGAPI name),PNGARG(args), \ | 302 PNG_LINKAGE_API attributes) |
324 extern attributes) | |
325 #endif | 303 #endif |
326 | 304 |
327 /* ANSI-C (C90) does not permit a macro to be invoked with an empty argument, | 305 /* ANSI-C (C90) does not permit a macro to be invoked with an empty argument, |
328 * so make something non-empty to satisfy the requirement: | 306 * so make something non-empty to satisfy the requirement: |
329 */ | 307 */ |
330 #define PNG_EMPTY /*empty list*/ | 308 #define PNG_EMPTY /*empty list*/ |
331 | 309 |
332 #define PNG_EXPORT(ordinal, type, name, args)\ | 310 #define PNG_EXPORT(ordinal, type, name, args) \ |
333 PNG_EXPORTA(ordinal, type, name, args, PNG_EMPTY) | 311 PNG_EXPORTA(ordinal, type, name, args, PNG_EMPTY) |
334 | 312 |
335 /* Use PNG_REMOVED to comment out a removed interface. */ | 313 /* Use PNG_REMOVED to comment out a removed interface. */ |
336 #ifndef PNG_REMOVED | 314 #ifndef PNG_REMOVED |
337 # define PNG_REMOVED(ordinal, type, name, args, attributes) | 315 # define PNG_REMOVED(ordinal, type, name, args, attributes) |
338 #endif | 316 #endif |
339 | 317 |
340 #ifndef PNG_CALLBACK | 318 #ifndef PNG_CALLBACK |
341 # define PNG_CALLBACK(type, name, args) type (PNGCBAPI name) PNGARG(args) | 319 # define PNG_CALLBACK(type, name, args) type (PNGCBAPI name) PNGARG(args) |
342 #endif | 320 #endif |
(...skipping 11 matching lines...) Expand all Loading... |
354 # endif | 332 # endif |
355 #endif | 333 #endif |
356 | 334 |
357 #ifdef PNG_PEDANTIC_WARNINGS_SUPPORTED | 335 #ifdef PNG_PEDANTIC_WARNINGS_SUPPORTED |
358 /* Support for compiler specific function attributes. These are used | 336 /* Support for compiler specific function attributes. These are used |
359 * so that where compiler support is available, incorrect use of API | 337 * so that where compiler support is available, incorrect use of API |
360 * functions in png.h will generate compiler warnings. Added at libpng | 338 * functions in png.h will generate compiler warnings. Added at libpng |
361 * version 1.2.41. Disabling these removes the warnings but may also produce | 339 * version 1.2.41. Disabling these removes the warnings but may also produce |
362 * less efficient code. | 340 * less efficient code. |
363 */ | 341 */ |
364 # if defined(__GNUC__) | 342 # if defined(__clang__) && defined(__has_attribute) |
| 343 /* Clang defines both __clang__ and __GNUC__. Check __clang__ first. */ |
| 344 # if !defined(PNG_USE_RESULT) && __has_attribute(__warn_unused_result__) |
| 345 # define PNG_USE_RESULT __attribute__((__warn_unused_result__)) |
| 346 # endif |
| 347 # if !defined(PNG_NORETURN) && __has_attribute(__noreturn__) |
| 348 # define PNG_NORETURN __attribute__((__noreturn__)) |
| 349 # endif |
| 350 # if !defined(PNG_ALLOCATED) && __has_attribute(__malloc__) |
| 351 # define PNG_ALLOCATED __attribute__((__malloc__)) |
| 352 # endif |
| 353 # if !defined(PNG_DEPRECATED) && __has_attribute(__deprecated__) |
| 354 # define PNG_DEPRECATED __attribute__((__deprecated__)) |
| 355 # endif |
| 356 # if !defined(PNG_PRIVATE) |
| 357 # ifdef __has_extension |
| 358 # if __has_extension(attribute_unavailable_with_message) |
| 359 # define PNG_PRIVATE __attribute__((__unavailable__(\ |
| 360 "This function is not exported by libpng."))) |
| 361 # endif |
| 362 # endif |
| 363 # endif |
| 364 # ifndef PNG_RESTRICT |
| 365 # define PNG_RESTRICT __restrict |
| 366 # endif |
| 367 |
| 368 # elif defined(__GNUC__) |
365 # ifndef PNG_USE_RESULT | 369 # ifndef PNG_USE_RESULT |
366 # define PNG_USE_RESULT __attribute__((__warn_unused_result__)) | 370 # define PNG_USE_RESULT __attribute__((__warn_unused_result__)) |
367 # endif | 371 # endif |
368 # ifndef PNG_NORETURN | 372 # ifndef PNG_NORETURN |
369 # define PNG_NORETURN __attribute__((__noreturn__)) | 373 # define PNG_NORETURN __attribute__((__noreturn__)) |
370 # endif | 374 # endif |
371 # if __GNUC__ >= 3 | 375 # if __GNUC__ >= 3 |
372 # ifndef PNG_ALLOCATED | 376 # ifndef PNG_ALLOCATED |
373 # define PNG_ALLOCATED __attribute__((__malloc__)) | 377 # define PNG_ALLOCATED __attribute__((__malloc__)) |
374 # endif | 378 # endif |
375 # ifndef PNG_DEPRECATED | 379 # ifndef PNG_DEPRECATED |
376 # define PNG_DEPRECATED __attribute__((__deprecated__)) | 380 # define PNG_DEPRECATED __attribute__((__deprecated__)) |
377 # endif | 381 # endif |
378 # ifndef PNG_PRIVATE | 382 # ifndef PNG_PRIVATE |
379 # if 0 /* Doesn't work so we use deprecated instead*/ | 383 # if 0 /* Doesn't work so we use deprecated instead*/ |
380 # define PNG_PRIVATE \ | 384 # define PNG_PRIVATE \ |
381 __attribute__((warning("This function is not exported by libpng."))) | 385 __attribute__((warning("This function is not exported by libpng."))) |
382 # else | 386 # else |
383 # define PNG_PRIVATE \ | 387 # define PNG_PRIVATE \ |
384 __attribute__((__deprecated__)) | 388 __attribute__((__deprecated__)) |
385 # endif | 389 # endif |
386 # endif | 390 # endif |
387 # if ((__GNUC__ != 3) || !defined(__GNUC_MINOR__) || (__GNUC_MINOR__ >= 1)) | 391 # if ((__GNUC__ > 3) || !defined(__GNUC_MINOR__) || (__GNUC_MINOR__ >= 1)) |
388 # ifndef PNG_RESTRICT | 392 # ifndef PNG_RESTRICT |
389 # define PNG_RESTRICT __restrict | 393 # define PNG_RESTRICT __restrict |
390 # endif | 394 # endif |
391 # endif /* __GNUC__ == 3.0 */ | 395 # endif /* __GNUC__.__GNUC_MINOR__ > 3.0 */ |
392 # endif /* __GNUC__ >= 3 */ | 396 # endif /* __GNUC__ >= 3 */ |
393 | 397 |
394 # elif defined(_MSC_VER) && (_MSC_VER >= 1300) | 398 # elif defined(_MSC_VER) && (_MSC_VER >= 1300) |
395 # ifndef PNG_USE_RESULT | 399 # ifndef PNG_USE_RESULT |
396 # define PNG_USE_RESULT /* not supported */ | 400 # define PNG_USE_RESULT /* not supported */ |
397 # endif | 401 # endif |
398 # ifndef PNG_NORETURN | 402 # ifndef PNG_NORETURN |
399 # define PNG_NORETURN __declspec(noreturn) | 403 # define PNG_NORETURN __declspec(noreturn) |
400 # endif | 404 # endif |
401 # ifndef PNG_ALLOCATED | 405 # ifndef PNG_ALLOCATED |
402 # if (_MSC_VER >= 1400) | 406 # if (_MSC_VER >= 1400) |
403 # define PNG_ALLOCATED __declspec(restrict) | 407 # define PNG_ALLOCATED __declspec(restrict) |
404 # endif | 408 # endif |
405 # endif | 409 # endif |
406 # ifndef PNG_DEPRECATED | 410 # ifndef PNG_DEPRECATED |
407 # define PNG_DEPRECATED __declspec(deprecated) | 411 # define PNG_DEPRECATED __declspec(deprecated) |
408 # endif | 412 # endif |
409 # ifndef PNG_PRIVATE | 413 # ifndef PNG_PRIVATE |
410 # define PNG_PRIVATE __declspec(deprecated) | 414 # define PNG_PRIVATE __declspec(deprecated) |
411 # endif | 415 # endif |
412 # ifndef PNG_RESTRICT | 416 # ifndef PNG_RESTRICT |
413 # if (_MSC_VER >= 1400) | 417 # if (_MSC_VER >= 1400) |
414 # define PNG_RESTRICT __restrict | 418 # define PNG_RESTRICT __restrict |
415 # endif | 419 # endif |
416 # endif | 420 # endif |
417 | 421 |
418 # elif defined(__WATCOMC__) | 422 # elif defined(__WATCOMC__) |
419 # ifndef PNG_RESTRICT | 423 # ifndef PNG_RESTRICT |
420 # define PNG_RESTRICT __restrict | 424 # define PNG_RESTRICT __restrict |
421 # endif | 425 # endif |
422 # endif /* _MSC_VER */ | 426 # endif |
423 #endif /* PNG_PEDANTIC_WARNINGS */ | 427 #endif /* PNG_PEDANTIC_WARNINGS */ |
424 | 428 |
425 #ifndef PNG_DEPRECATED | 429 #ifndef PNG_DEPRECATED |
426 # define PNG_DEPRECATED /* Use of this function is deprecated */ | 430 # define PNG_DEPRECATED /* Use of this function is deprecated */ |
427 #endif | 431 #endif |
428 #ifndef PNG_USE_RESULT | 432 #ifndef PNG_USE_RESULT |
429 # define PNG_USE_RESULT /* The result of this function must be checked */ | 433 # define PNG_USE_RESULT /* The result of this function must be checked */ |
430 #endif | 434 #endif |
431 #ifndef PNG_NORETURN | 435 #ifndef PNG_NORETURN |
432 # define PNG_NORETURN /* This function does not return */ | 436 # define PNG_NORETURN /* This function does not return */ |
433 #endif | 437 #endif |
434 #ifndef PNG_ALLOCATED | 438 #ifndef PNG_ALLOCATED |
435 # define PNG_ALLOCATED /* The result of the function is new memory */ | 439 # define PNG_ALLOCATED /* The result of the function is new memory */ |
436 #endif | 440 #endif |
437 #ifndef PNG_PRIVATE | 441 #ifndef PNG_PRIVATE |
438 # define PNG_PRIVATE /* This is a private libpng function */ | 442 # define PNG_PRIVATE /* This is a private libpng function */ |
439 #endif | 443 #endif |
440 #ifndef PNG_RESTRICT | 444 #ifndef PNG_RESTRICT |
441 # define PNG_RESTRICT /* The C99 "restrict" feature */ | 445 # define PNG_RESTRICT /* The C99 "restrict" feature */ |
442 #endif | 446 #endif |
| 447 |
443 #ifndef PNG_FP_EXPORT /* A floating point API. */ | 448 #ifndef PNG_FP_EXPORT /* A floating point API. */ |
444 # ifdef PNG_FLOATING_POINT_SUPPORTED | 449 # ifdef PNG_FLOATING_POINT_SUPPORTED |
445 # define PNG_FP_EXPORT(ordinal, type, name, args)\ | 450 # define PNG_FP_EXPORT(ordinal, type, name, args)\ |
446 PNG_EXPORT(ordinal, type, name, args); | 451 PNG_EXPORT(ordinal, type, name, args); |
447 # else /* No floating point APIs */ | 452 # else /* No floating point APIs */ |
448 # define PNG_FP_EXPORT(ordinal, type, name, args) | 453 # define PNG_FP_EXPORT(ordinal, type, name, args) |
449 # endif | 454 # endif |
450 #endif | 455 #endif |
451 #ifndef PNG_FIXED_EXPORT /* A fixed point API. */ | 456 #ifndef PNG_FIXED_EXPORT /* A fixed point API. */ |
452 # ifdef PNG_FIXED_POINT_SUPPORTED | 457 # ifdef PNG_FIXED_POINT_SUPPORTED |
(...skipping 15 matching lines...) Expand all Loading... |
468 * verified at library build time. | 473 * verified at library build time. |
469 * | 474 * |
470 * png_byte must always be one byte in size. | 475 * png_byte must always be one byte in size. |
471 * | 476 * |
472 * The checks below use constants from limits.h, as defined by the ISOC90 | 477 * The checks below use constants from limits.h, as defined by the ISOC90 |
473 * standard. | 478 * standard. |
474 */ | 479 */ |
475 #if CHAR_BIT == 8 && UCHAR_MAX == 255 | 480 #if CHAR_BIT == 8 && UCHAR_MAX == 255 |
476 typedef unsigned char png_byte; | 481 typedef unsigned char png_byte; |
477 #else | 482 #else |
478 # error "libpng requires 8 bit bytes" | 483 # error "libpng requires 8-bit bytes" |
479 #endif | 484 #endif |
480 | 485 |
481 #if INT_MIN == -32768 && INT_MAX == 32767 | 486 #if INT_MIN == -32768 && INT_MAX == 32767 |
482 typedef int png_int_16; | 487 typedef int png_int_16; |
483 #elif SHRT_MIN == -32768 && SHRT_MAX == 32767 | 488 #elif SHRT_MIN == -32768 && SHRT_MAX == 32767 |
484 typedef short png_int_16; | 489 typedef short png_int_16; |
485 #else | 490 #else |
486 # error "libpng requires a signed 16 bit type" | 491 # error "libpng requires a signed 16-bit type" |
487 #endif | 492 #endif |
488 | 493 |
489 #if UINT_MAX == 65535 | 494 #if UINT_MAX == 65535 |
490 typedef unsigned int png_uint_16; | 495 typedef unsigned int png_uint_16; |
491 #elif USHRT_MAX == 65535 | 496 #elif USHRT_MAX == 65535 |
492 typedef unsigned short png_uint_16; | 497 typedef unsigned short png_uint_16; |
493 #else | 498 #else |
494 # error "libpng requires an unsigned 16 bit type" | 499 # error "libpng requires an unsigned 16-bit type" |
495 #endif | 500 #endif |
496 | 501 |
497 #if INT_MIN < -2147483646 && INT_MAX > 2147483646 | 502 #if INT_MIN < -2147483646 && INT_MAX > 2147483646 |
498 typedef int png_int_32; | 503 typedef int png_int_32; |
499 #elif LONG_MIN < -2147483646 && LONG_MAX > 2147483646 | 504 #elif LONG_MIN < -2147483646 && LONG_MAX > 2147483646 |
500 typedef long int png_int_32; | 505 typedef long int png_int_32; |
501 #else | 506 #else |
502 # error "libpng requires a signed 32 bit (or more) type" | 507 # error "libpng requires a signed 32-bit (or more) type" |
503 #endif | 508 #endif |
504 | 509 |
505 #if UINT_MAX > 4294967294 | 510 #if UINT_MAX > 4294967294 |
506 typedef unsigned int png_uint_32; | 511 typedef unsigned int png_uint_32; |
507 #elif ULONG_MAX > 4294967294 | 512 #elif ULONG_MAX > 4294967294 |
508 typedef unsigned long int png_uint_32; | 513 typedef unsigned long int png_uint_32; |
509 #else | 514 #else |
510 # error "libpng requires an unsigned 32 bit (or more) type" | 515 # error "libpng requires an unsigned 32-bit (or more) type" |
511 #endif | 516 #endif |
512 | 517 |
513 /* Prior to 1.6.0 it was possible to disable the use of size_t, 1.6.0, however, | 518 /* Prior to 1.6.0 it was possible to disable the use of size_t, 1.6.0, however, |
514 * requires an ISOC90 compiler and relies on consistent behavior of sizeof. | 519 * requires an ISOC90 compiler and relies on consistent behavior of sizeof. |
515 */ | 520 */ |
516 typedef size_t png_size_t; | 521 typedef size_t png_size_t; |
517 typedef ptrdiff_t png_ptrdiff_t; | 522 typedef ptrdiff_t png_ptrdiff_t; |
518 | 523 |
519 /* libpng needs to know the maximum value of 'size_t' and this controls the | 524 /* libpng needs to know the maximum value of 'size_t' and this controls the |
520 * definition of png_alloc_size_t, below. This maximum value of size_t limits | 525 * definition of png_alloc_size_t, below. This maximum value of size_t limits |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
608 #ifdef PNG_FLOATING_POINT_SUPPORTED | 613 #ifdef PNG_FLOATING_POINT_SUPPORTED |
609 typedef double * * png_doublepp; | 614 typedef double * * png_doublepp; |
610 #endif | 615 #endif |
611 | 616 |
612 /* Pointers to pointers to pointers; i.e., pointer to array */ | 617 /* Pointers to pointers to pointers; i.e., pointer to array */ |
613 typedef char * * * png_charppp; | 618 typedef char * * * png_charppp; |
614 | 619 |
615 #endif /* PNG_BUILDING_SYMBOL_TABLE */ | 620 #endif /* PNG_BUILDING_SYMBOL_TABLE */ |
616 | 621 |
617 #endif /* PNGCONF_H */ | 622 #endif /* PNGCONF_H */ |
OLD | NEW |