00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162
00163
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209
00210
00211
00212
00213
00214
00215
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228
00229
00230
00231
00232
00233
00234
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248
00249
00250
00251
00252
00253
00254
00255
00256
00257
00258
00259
00260
00261
00262
00263
00264
00265
00266
00267
00268
00269
00270
00271
00272
00273
00274
00275
00276
00277
00278
00279
00280
00281
00282
00283
00284
00285
00286
00287
00288
00289
00290
00291
00292
00293
00294
00295
00296
00297
00298
00299
00300
00301
00302
00303
00304
00305
00306
00307
00308
00309
00310
00311
00312
00313
00314
00315
00316
00317
00318
00319
00320
00321
00322 #ifndef PNG_H
00323 #define PNG_H
00324
00325
00326
00327
00328
00329
00330
00331
00332 #define PNG_LIBPNG_VER_STRING "1.2.12"
00333 #define PNG_HEADER_VERSION_STRING \
00334 " libpng version 1.2.12 - June 27, 2006 (header)\n"
00335
00336 #define PNG_LIBPNG_VER_SONUM 0
00337 #define PNG_LIBPNG_VER_DLLNUM 13
00338
00339
00340 #define PNG_LIBPNG_VER_MAJOR 1
00341 #define PNG_LIBPNG_VER_MINOR 2
00342 #define PNG_LIBPNG_VER_RELEASE 12
00343
00344
00345
00346 #define PNG_LIBPNG_VER_BUILD 0
00347
00348
00349 #define PNG_LIBPNG_BUILD_ALPHA 1
00350 #define PNG_LIBPNG_BUILD_BETA 2
00351 #define PNG_LIBPNG_BUILD_RC 3
00352 #define PNG_LIBPNG_BUILD_STABLE 4
00353 #define PNG_LIBPNG_BUILD_RELEASE_STATUS_MASK 7
00354
00355
00356 #define PNG_LIBPNG_BUILD_PATCH 8
00357
00358 #define PNG_LIBPNG_BUILD_PRIVATE 16
00359
00360 #define PNG_LIBPNG_BUILD_SPECIAL 32
00361
00362
00363 #define PNG_LIBPNG_BUILD_BASE_TYPE PNG_LIBPNG_BUILD_STABLE
00364
00365
00366
00367
00368
00369
00370 #define PNG_LIBPNG_VER 10212
00371
00372 #ifndef PNG_VERSION_INFO_ONLY
00373
00374
00375 #include "../zlib/zlib.h"
00376 #endif
00377
00378
00379 #include "pngconf.h"
00380
00381
00382
00383
00384
00385
00386
00387
00388
00389
00390
00391
00392
00393
00394 #if defined(PNG_USER_PRIVATEBUILD)
00395 # define PNG_LIBPNG_BUILD_TYPE \
00396 (PNG_LIBPNG_BUILD_BASE_TYPE | PNG_LIBPNG_BUILD_PRIVATE)
00397 #else
00398 # if defined(PNG_LIBPNG_SPECIALBUILD)
00399 # define PNG_LIBPNG_BUILD_TYPE \
00400 (PNG_LIBPNG_BUILD_BASE_TYPE | PNG_LIBPNG_BUILD_SPECIAL)
00401 # else
00402 # define PNG_LIBPNG_BUILD_TYPE (PNG_LIBPNG_BUILD_BASE_TYPE)
00403 # endif
00404 #endif
00405
00406 #ifndef PNG_VERSION_INFO_ONLY
00407
00408
00409 #ifdef __cplusplus
00410 extern "C" {
00411 #endif
00412
00413
00414
00415
00416
00417
00418
00419 #ifndef PNG_NO_TYPECAST_NULL
00420 #define int_p_NULL (int *)NULL
00421 #define png_bytep_NULL (png_bytep)NULL
00422 #define png_bytepp_NULL (png_bytepp)NULL
00423 #define png_doublep_NULL (png_doublep)NULL
00424 #define png_error_ptr_NULL (png_error_ptr)NULL
00425 #define png_flush_ptr_NULL (png_flush_ptr)NULL
00426 #define png_free_ptr_NULL (png_free_ptr)NULL
00427 #define png_infopp_NULL (png_infopp)NULL
00428 #define png_malloc_ptr_NULL (png_malloc_ptr)NULL
00429 #define png_read_status_ptr_NULL (png_read_status_ptr)NULL
00430 #define png_rw_ptr_NULL (png_rw_ptr)NULL
00431 #define png_structp_NULL (png_structp)NULL
00432 #define png_uint_16p_NULL (png_uint_16p)NULL
00433 #define png_voidp_NULL (png_voidp)NULL
00434 #define png_write_status_ptr_NULL (png_write_status_ptr)NULL
00435 #else
00436 #define int_p_NULL NULL
00437 #define png_bytep_NULL NULL
00438 #define png_bytepp_NULL NULL
00439 #define png_doublep_NULL NULL
00440 #define png_error_ptr_NULL NULL
00441 #define png_flush_ptr_NULL NULL
00442 #define png_free_ptr_NULL NULL
00443 #define png_infopp_NULL NULL
00444 #define png_malloc_ptr_NULL NULL
00445 #define png_read_status_ptr_NULL NULL
00446 #define png_rw_ptr_NULL NULL
00447 #define png_structp_NULL NULL
00448 #define png_uint_16p_NULL NULL
00449 #define png_voidp_NULL NULL
00450 #define png_write_status_ptr_NULL NULL
00451 #endif
00452
00453
00454 #if !defined(PNG_NO_EXTERN) || defined(PNG_ALWAYS_EXTERN)
00455
00456
00457
00458 #ifdef PNG_USE_GLOBAL_ARRAYS
00459 PNG_EXPORT_VAR (const char) png_libpng_ver[18];
00460
00461 #else
00462 #define png_libpng_ver png_get_header_ver(NULL)
00463 #endif
00464
00465 #ifdef PNG_USE_GLOBAL_ARRAYS
00466
00467
00468 PNG_EXPORT_VAR (const int FARDATA) png_pass_start[7];
00469 PNG_EXPORT_VAR (const int FARDATA) png_pass_inc[7];
00470 PNG_EXPORT_VAR (const int FARDATA) png_pass_ystart[7];
00471 PNG_EXPORT_VAR (const int FARDATA) png_pass_yinc[7];
00472 PNG_EXPORT_VAR (const int FARDATA) png_pass_mask[7];
00473 PNG_EXPORT_VAR (const int FARDATA) png_pass_dsp_mask[7];
00474 #ifdef PNG_USE_PNGGCCRD
00475 PNG_EXPORT_VAR (const int FARDATA) png_pass_width[7];
00476 #endif
00477
00478
00479
00480 #endif
00481
00482 #endif
00483
00484
00485
00486
00487
00488 typedef struct png_color_struct
00489 {
00490 png_byte red;
00491 png_byte green;
00492 png_byte blue;
00493 } png_color;
00494 typedef png_color FAR * png_colorp;
00495 typedef png_color FAR * FAR * png_colorpp;
00496
00497 typedef struct png_color_16_struct
00498 {
00499 png_byte index;
00500 png_uint_16 red;
00501 png_uint_16 green;
00502 png_uint_16 blue;
00503 png_uint_16 gray;
00504 } png_color_16;
00505 typedef png_color_16 FAR * png_color_16p;
00506 typedef png_color_16 FAR * FAR * png_color_16pp;
00507
00508 typedef struct png_color_8_struct
00509 {
00510 png_byte red;
00511 png_byte green;
00512 png_byte blue;
00513 png_byte gray;
00514 png_byte alpha;
00515 } png_color_8;
00516 typedef png_color_8 FAR * png_color_8p;
00517 typedef png_color_8 FAR * FAR * png_color_8pp;
00518
00519
00520
00521
00522
00523 typedef struct png_sPLT_entry_struct
00524 {
00525 png_uint_16 red;
00526 png_uint_16 green;
00527 png_uint_16 blue;
00528 png_uint_16 alpha;
00529 png_uint_16 frequency;
00530 } png_sPLT_entry;
00531 typedef png_sPLT_entry FAR * png_sPLT_entryp;
00532 typedef png_sPLT_entry FAR * FAR * png_sPLT_entrypp;
00533
00534
00535
00536
00537
00538
00539 typedef struct png_sPLT_struct
00540 {
00541 png_charp name;
00542 png_byte depth;
00543 png_sPLT_entryp entries;
00544 png_int_32 nentries;
00545 } png_sPLT_t;
00546 typedef png_sPLT_t FAR * png_sPLT_tp;
00547 typedef png_sPLT_t FAR * FAR * png_sPLT_tpp;
00548
00549 #ifdef PNG_TEXT_SUPPORTED
00550
00551
00552
00553
00554
00555
00556
00557
00558 typedef struct png_text_struct
00559 {
00560 int compression;
00561
00562
00563
00564
00565 png_charp key;
00566 png_charp text;
00567
00568 png_size_t text_length;
00569 #ifdef PNG_iTXt_SUPPORTED
00570 png_size_t itxt_length;
00571 png_charp lang;
00572
00573 png_charp lang_key;
00574
00575 #endif
00576 } png_text;
00577 typedef png_text FAR * png_textp;
00578 typedef png_text FAR * FAR * png_textpp;
00579 #endif
00580
00581
00582
00583 #define PNG_TEXT_COMPRESSION_NONE_WR -3
00584 #define PNG_TEXT_COMPRESSION_zTXt_WR -2
00585 #define PNG_TEXT_COMPRESSION_NONE -1
00586 #define PNG_TEXT_COMPRESSION_zTXt 0
00587 #define PNG_ITXT_COMPRESSION_NONE 1
00588 #define PNG_ITXT_COMPRESSION_zTXt 2
00589 #define PNG_TEXT_COMPRESSION_LAST 3
00590
00591
00592
00593
00594
00595
00596
00597 typedef struct png_time_struct
00598 {
00599 png_uint_16 year;
00600 png_byte month;
00601 png_byte day;
00602 png_byte hour;
00603 png_byte minute;
00604 png_byte second;
00605 } png_time;
00606 typedef png_time FAR * png_timep;
00607 typedef png_time FAR * FAR * png_timepp;
00608
00609 #if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
00610
00611
00612
00613
00614
00615 typedef struct png_unknown_chunk_t
00616 {
00617 png_byte name[5];
00618 png_byte *data;
00619 png_size_t size;
00620
00621
00622 png_byte location;
00623 }
00624 png_unknown_chunk;
00625 typedef png_unknown_chunk FAR * png_unknown_chunkp;
00626 typedef png_unknown_chunk FAR * FAR * png_unknown_chunkpp;
00627 #endif
00628
00629
00630
00631
00632
00633
00634
00635
00636
00637
00638
00639
00640
00641
00642
00643
00644
00645
00646
00647
00648
00649
00650
00651
00652
00653
00654
00655
00656
00657
00658
00659
00660
00661
00662
00663
00664
00665
00666
00667
00668 typedef struct png_info_struct
00669 {
00670
00671 png_uint_32 width;
00672 png_uint_32 height;
00673 png_uint_32 valid;
00674 png_uint_32 rowbytes;
00675 png_colorp palette;
00676 png_uint_16 num_palette;
00677 png_uint_16 num_trans;
00678 png_byte bit_depth;
00679 png_byte color_type;
00680
00681 png_byte compression_type;
00682 png_byte filter_type;
00683 png_byte interlace_type;
00684
00685
00686 png_byte channels;
00687 png_byte pixel_depth;
00688 png_byte spare_byte;
00689 png_byte signature[8];
00690
00691
00692
00693
00694
00695
00696
00697 #if defined(PNG_gAMA_SUPPORTED) && defined(PNG_FLOATING_POINT_SUPPORTED)
00698
00699
00700
00701
00702 float gamma;
00703 #endif
00704
00705 #if defined(PNG_sRGB_SUPPORTED)
00706
00707
00708 png_byte srgb_intent;
00709 #endif
00710
00711 #if defined(PNG_TEXT_SUPPORTED)
00712
00713
00714
00715
00716
00717
00718
00719
00720 int num_text;
00721 int max_text;
00722 png_textp text;
00723 #endif
00724
00725 #if defined(PNG_tIME_SUPPORTED)
00726
00727
00728
00729 png_time mod_time;
00730 #endif
00731
00732 #if defined(PNG_sBIT_SUPPORTED)
00733
00734
00735
00736
00737
00738
00739 png_color_8 sig_bit;
00740 #endif
00741
00742 #if defined(PNG_tRNS_SUPPORTED) || defined(PNG_READ_EXPAND_SUPPORTED) || \
00743 defined(PNG_READ_BACKGROUND_SUPPORTED)
00744
00745
00746
00747
00748
00749
00750
00751
00752
00753 png_bytep trans;
00754 png_color_16 trans_values;
00755 #endif
00756
00757 #if defined(PNG_bKGD_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
00758
00759
00760
00761
00762
00763
00764 png_color_16 background;
00765 #endif
00766
00767 #if defined(PNG_oFFs_SUPPORTED)
00768
00769
00770
00771
00772
00773 png_int_32 x_offset;
00774 png_int_32 y_offset;
00775 png_byte offset_unit_type;
00776 #endif
00777
00778 #if defined(PNG_pHYs_SUPPORTED)
00779
00780
00781
00782
00783 png_uint_32 x_pixels_per_unit;
00784 png_uint_32 y_pixels_per_unit;
00785 png_byte phys_unit_type;
00786 #endif
00787
00788 #if defined(PNG_hIST_SUPPORTED)
00789
00790
00791
00792
00793
00794
00795 png_uint_16p hist;
00796 #endif
00797
00798 #ifdef PNG_cHRM_SUPPORTED
00799
00800
00801
00802
00803
00804
00805 #ifdef PNG_FLOATING_POINT_SUPPORTED
00806 float x_white;
00807 float y_white;
00808 float x_red;
00809 float y_red;
00810 float x_green;
00811 float y_green;
00812 float x_blue;
00813 float y_blue;
00814 #endif
00815 #endif
00816
00817 #if defined(PNG_pCAL_SUPPORTED)
00818
00819
00820
00821
00822
00823
00824
00825
00826
00827
00828
00829 png_charp pcal_purpose;
00830 png_int_32 pcal_X0;
00831 png_int_32 pcal_X1;
00832 png_charp pcal_units;
00833 png_charpp pcal_params;
00834 png_byte pcal_type;
00835 png_byte pcal_nparams;
00836 #endif
00837
00838
00839 #ifdef PNG_FREE_ME_SUPPORTED
00840 png_uint_32 free_me;
00841 #endif
00842
00843 #if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
00844
00845 png_unknown_chunkp unknown_chunks;
00846 png_size_t unknown_chunks_num;
00847 #endif
00848
00849 #if defined(PNG_iCCP_SUPPORTED)
00850
00851 png_charp iccp_name;
00852 png_charp iccp_profile;
00853
00854 png_uint_32 iccp_proflen;
00855 png_byte iccp_compression;
00856 #endif
00857
00858 #if defined(PNG_sPLT_SUPPORTED)
00859
00860 png_sPLT_tp splt_palettes;
00861 png_uint_32 splt_palettes_num;
00862 #endif
00863
00864 #if defined(PNG_sCAL_SUPPORTED)
00865
00866
00867
00868
00869
00870
00871
00872 png_byte scal_unit;
00873 #ifdef PNG_FLOATING_POINT_SUPPORTED
00874 double scal_pixel_width;
00875 double scal_pixel_height;
00876 #endif
00877 #ifdef PNG_FIXED_POINT_SUPPORTED
00878 png_charp scal_s_width;
00879 png_charp scal_s_height;
00880 #endif
00881 #endif
00882
00883 #if defined(PNG_INFO_IMAGE_SUPPORTED)
00884
00885
00886 png_bytepp row_pointers;
00887 #endif
00888
00889 #if defined(PNG_FIXED_POINT_SUPPORTED) && defined(PNG_gAMA_SUPPORTED)
00890 png_fixed_point int_gamma;
00891 #endif
00892
00893 #if defined(PNG_cHRM_SUPPORTED) && defined(PNG_FIXED_POINT_SUPPORTED)
00894 png_fixed_point int_x_white;
00895 png_fixed_point int_y_white;
00896 png_fixed_point int_x_red;
00897 png_fixed_point int_y_red;
00898 png_fixed_point int_x_green;
00899 png_fixed_point int_y_green;
00900 png_fixed_point int_x_blue;
00901 png_fixed_point int_y_blue;
00902 #endif
00903
00904 } png_info;
00905
00906 typedef png_info FAR * png_infop;
00907 typedef png_info FAR * FAR * png_infopp;
00908
00909
00910 #define PNG_UINT_31_MAX ((png_uint_32)0x7fffffffL)
00911 #define PNG_UINT_32_MAX ((png_uint_32)(-1))
00912 #define PNG_SIZE_MAX ((png_size_t)(-1))
00913 #if defined(PNG_1_0_X) || defined (PNG_1_2_X)
00914
00915 #define PNG_MAX_UINT PNG_UINT_31_MAX
00916 #endif
00917
00918
00919
00920 #define PNG_COLOR_MASK_PALETTE 1
00921 #define PNG_COLOR_MASK_COLOR 2
00922 #define PNG_COLOR_MASK_ALPHA 4
00923
00924
00925 #define PNG_COLOR_TYPE_GRAY 0
00926 #define PNG_COLOR_TYPE_PALETTE (PNG_COLOR_MASK_COLOR | PNG_COLOR_MASK_PALETTE)
00927 #define PNG_COLOR_TYPE_RGB (PNG_COLOR_MASK_COLOR)
00928 #define PNG_COLOR_TYPE_RGB_ALPHA (PNG_COLOR_MASK_COLOR | PNG_COLOR_MASK_ALPHA)
00929 #define PNG_COLOR_TYPE_GRAY_ALPHA (PNG_COLOR_MASK_ALPHA)
00930
00931 #define PNG_COLOR_TYPE_RGBA PNG_COLOR_TYPE_RGB_ALPHA
00932 #define PNG_COLOR_TYPE_GA PNG_COLOR_TYPE_GRAY_ALPHA
00933
00934
00935 #define PNG_COMPRESSION_TYPE_BASE 0
00936 #define PNG_COMPRESSION_TYPE_DEFAULT PNG_COMPRESSION_TYPE_BASE
00937
00938
00939 #define PNG_FILTER_TYPE_BASE 0
00940 #define PNG_INTRAPIXEL_DIFFERENCING 64
00941 #define PNG_FILTER_TYPE_DEFAULT PNG_FILTER_TYPE_BASE
00942
00943
00944 #define PNG_INTERLACE_NONE 0
00945 #define PNG_INTERLACE_ADAM7 1
00946 #define PNG_INTERLACE_LAST 2
00947
00948
00949 #define PNG_OFFSET_PIXEL 0
00950 #define PNG_OFFSET_MICROMETER 1
00951 #define PNG_OFFSET_LAST 2
00952
00953
00954 #define PNG_EQUATION_LINEAR 0
00955 #define PNG_EQUATION_BASE_E 1
00956 #define PNG_EQUATION_ARBITRARY 2
00957 #define PNG_EQUATION_HYPERBOLIC 3
00958 #define PNG_EQUATION_LAST 4
00959
00960
00961 #define PNG_SCALE_UNKNOWN 0
00962 #define PNG_SCALE_METER 1
00963 #define PNG_SCALE_RADIAN 2
00964 #define PNG_SCALE_LAST 3
00965
00966
00967 #define PNG_RESOLUTION_UNKNOWN 0
00968 #define PNG_RESOLUTION_METER 1
00969 #define PNG_RESOLUTION_LAST 2
00970
00971
00972 #define PNG_sRGB_INTENT_PERCEPTUAL 0
00973 #define PNG_sRGB_INTENT_RELATIVE 1
00974 #define PNG_sRGB_INTENT_SATURATION 2
00975 #define PNG_sRGB_INTENT_ABSOLUTE 3
00976 #define PNG_sRGB_INTENT_LAST 4
00977
00978
00979 #define PNG_KEYWORD_MAX_LENGTH 79
00980
00981
00982 #define PNG_MAX_PALETTE_LENGTH 256
00983
00984
00985
00986
00987
00988
00989 #define PNG_INFO_gAMA 0x0001
00990 #define PNG_INFO_sBIT 0x0002
00991 #define PNG_INFO_cHRM 0x0004
00992 #define PNG_INFO_PLTE 0x0008
00993 #define PNG_INFO_tRNS 0x0010
00994 #define PNG_INFO_bKGD 0x0020
00995 #define PNG_INFO_hIST 0x0040
00996 #define PNG_INFO_pHYs 0x0080
00997 #define PNG_INFO_oFFs 0x0100
00998 #define PNG_INFO_tIME 0x0200
00999 #define PNG_INFO_pCAL 0x0400
01000 #define PNG_INFO_sRGB 0x0800
01001 #define PNG_INFO_iCCP 0x1000
01002 #define PNG_INFO_sPLT 0x2000
01003 #define PNG_INFO_sCAL 0x4000
01004 #define PNG_INFO_IDAT 0x8000L
01005
01006
01007
01008
01009
01010 typedef struct png_row_info_struct
01011 {
01012 png_uint_32 width;
01013 png_uint_32 rowbytes;
01014 png_byte color_type;
01015 png_byte bit_depth;
01016 png_byte channels;
01017 png_byte pixel_depth;
01018 } png_row_info;
01019
01020 typedef png_row_info FAR * png_row_infop;
01021 typedef png_row_info FAR * FAR * png_row_infopp;
01022
01023
01024
01025
01026
01027
01028
01029 typedef struct png_struct_def png_struct;
01030 typedef png_struct FAR * png_structp;
01031
01032 typedef void (PNGAPI *png_error_ptr) PNGARG((png_structp, png_const_charp));
01033 typedef void (PNGAPI *png_rw_ptr) PNGARG((png_structp, png_bytep, png_size_t));
01034 typedef void (PNGAPI *png_flush_ptr) PNGARG((png_structp));
01035 typedef void (PNGAPI *png_read_status_ptr) PNGARG((png_structp, png_uint_32,
01036 int));
01037 typedef void (PNGAPI *png_write_status_ptr) PNGARG((png_structp, png_uint_32,
01038 int));
01039
01040 #ifdef PNG_PROGRESSIVE_READ_SUPPORTED
01041 typedef void (PNGAPI *png_progressive_info_ptr) PNGARG((png_structp, png_infop));
01042 typedef void (PNGAPI *png_progressive_end_ptr) PNGARG((png_structp, png_infop));
01043 typedef void (PNGAPI *png_progressive_row_ptr) PNGARG((png_structp, png_bytep,
01044 png_uint_32, int));
01045 #endif
01046
01047 #if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \
01048 defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) || \
01049 defined(PNG_LEGACY_SUPPORTED)
01050 typedef void (PNGAPI *png_user_transform_ptr) PNGARG((png_structp,
01051 png_row_infop, png_bytep));
01052 #endif
01053
01054 #if defined(PNG_USER_CHUNKS_SUPPORTED)
01055 typedef int (PNGAPI *png_user_chunk_ptr) PNGARG((png_structp, png_unknown_chunkp));
01056 #endif
01057 #if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
01058 typedef void (PNGAPI *png_unknown_chunk_ptr) PNGARG((png_structp));
01059 #endif
01060
01061
01062 #define PNG_TRANSFORM_IDENTITY 0x0000
01063 #define PNG_TRANSFORM_STRIP_16 0x0001
01064 #define PNG_TRANSFORM_STRIP_ALPHA 0x0002
01065 #define PNG_TRANSFORM_PACKING 0x0004
01066 #define PNG_TRANSFORM_PACKSWAP 0x0008
01067 #define PNG_TRANSFORM_EXPAND 0x0010
01068 #define PNG_TRANSFORM_INVERT_MONO 0x0020
01069 #define PNG_TRANSFORM_SHIFT 0x0040
01070 #define PNG_TRANSFORM_BGR 0x0080
01071 #define PNG_TRANSFORM_SWAP_ALPHA 0x0100
01072 #define PNG_TRANSFORM_SWAP_ENDIAN 0x0200
01073 #define PNG_TRANSFORM_INVERT_ALPHA 0x0400
01074 #define PNG_TRANSFORM_STRIP_FILLER 0x0800
01075
01076
01077 #define PNG_FLAG_MNG_EMPTY_PLTE 0x01
01078 #define PNG_FLAG_MNG_FILTER_64 0x04
01079 #define PNG_ALL_MNG_FEATURES 0x05
01080
01081 typedef png_voidp (*png_malloc_ptr) PNGARG((png_structp, png_size_t));
01082 typedef void (*png_free_ptr) PNGARG((png_structp, png_voidp));
01083
01084
01085
01086
01087
01088
01089
01090
01091 struct png_struct_def
01092 {
01093 #ifdef PNG_SETJMP_SUPPORTED
01094 jmp_buf jmpbuf;
01095 #endif
01096 png_error_ptr error_fn;
01097 png_error_ptr warning_fn;
01098 png_voidp error_ptr;
01099 png_rw_ptr write_data_fn;
01100 png_rw_ptr read_data_fn;
01101 png_voidp io_ptr;
01102
01103 #if defined(PNG_READ_USER_TRANSFORM_SUPPORTED)
01104 png_user_transform_ptr read_user_transform_fn;
01105 #endif
01106
01107 #if defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
01108 png_user_transform_ptr write_user_transform_fn;
01109 #endif
01110
01111
01112 #if defined(PNG_USER_TRANSFORM_PTR_SUPPORTED)
01113 #if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \
01114 defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
01115 png_voidp user_transform_ptr;
01116 png_byte user_transform_depth;
01117 png_byte user_transform_channels;
01118 #endif
01119 #endif
01120
01121 png_uint_32 mode;
01122 png_uint_32 flags;
01123 png_uint_32 transformations;
01124
01125 z_stream zstream;
01126 png_bytep zbuf;
01127 png_size_t zbuf_size;
01128 int zlib_level;
01129 int zlib_method;
01130 int zlib_window_bits;
01131 int zlib_mem_level;
01132 int zlib_strategy;
01133
01134 png_uint_32 width;
01135 png_uint_32 height;
01136 png_uint_32 num_rows;
01137 png_uint_32 usr_width;
01138 png_uint_32 rowbytes;
01139 png_uint_32 irowbytes;
01140 png_uint_32 iwidth;
01141 png_uint_32 row_number;
01142 png_bytep prev_row;
01143 png_bytep row_buf;
01144 png_bytep sub_row;
01145 png_bytep up_row;
01146 png_bytep avg_row;
01147 png_bytep paeth_row;
01148 png_row_info row_info;
01149
01150 png_uint_32 idat_size;
01151 png_uint_32 crc;
01152 png_colorp palette;
01153 png_uint_16 num_palette;
01154 png_uint_16 num_trans;
01155 png_byte chunk_name[5];
01156 png_byte compression;
01157 png_byte filter;
01158 png_byte interlaced;
01159 png_byte pass;
01160 png_byte do_filter;
01161 png_byte color_type;
01162 png_byte bit_depth;
01163 png_byte usr_bit_depth;
01164 png_byte pixel_depth;
01165 png_byte channels;
01166 png_byte usr_channels;
01167 png_byte sig_bytes;
01168
01169 #if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED)
01170 #ifdef PNG_LEGACY_SUPPORTED
01171 png_byte filler;
01172 #else
01173 png_uint_16 filler;
01174 #endif
01175 #endif
01176
01177 #if defined(PNG_bKGD_SUPPORTED)
01178 png_byte background_gamma_type;
01179 # ifdef PNG_FLOATING_POINT_SUPPORTED
01180 float background_gamma;
01181 # endif
01182 png_color_16 background;
01183 #if defined(PNG_READ_GAMMA_SUPPORTED)
01184 png_color_16 background_1;
01185 #endif
01186 #endif
01187
01188 #if defined(PNG_WRITE_FLUSH_SUPPORTED)
01189 png_flush_ptr output_flush_fn;
01190 png_uint_32 flush_dist;
01191 png_uint_32 flush_rows;
01192 #endif
01193
01194 #if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
01195 int gamma_shift;
01196 #ifdef PNG_FLOATING_POINT_SUPPORTED
01197 float gamma;
01198 float screen_gamma;
01199 #endif
01200 #endif
01201
01202 #if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
01203 png_bytep gamma_table;
01204 png_bytep gamma_from_1;
01205 png_bytep gamma_to_1;
01206 png_uint_16pp gamma_16_table;
01207 png_uint_16pp gamma_16_from_1;
01208 png_uint_16pp gamma_16_to_1;
01209 #endif
01210
01211 #if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_sBIT_SUPPORTED)
01212 png_color_8 sig_bit;
01213 #endif
01214
01215 #if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED)
01216 png_color_8 shift;
01217 #endif
01218
01219 #if defined(PNG_tRNS_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) \
01220 || defined(PNG_READ_EXPAND_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
01221 png_bytep trans;
01222 png_color_16 trans_values;
01223 #endif
01224
01225 png_read_status_ptr read_row_fn;
01226 png_write_status_ptr write_row_fn;
01227 #ifdef PNG_PROGRESSIVE_READ_SUPPORTED
01228 png_progressive_info_ptr info_fn;
01229 png_progressive_row_ptr row_fn;
01230 png_progressive_end_ptr end_fn;
01231 png_bytep save_buffer_ptr;
01232 png_bytep save_buffer;
01233 png_bytep current_buffer_ptr;
01234 png_bytep current_buffer;
01235 png_uint_32 push_length;
01236 png_uint_32 skip_length;
01237 png_size_t save_buffer_size;
01238 png_size_t save_buffer_max;
01239 png_size_t buffer_size;
01240 png_size_t current_buffer_size;
01241 int process_mode;
01242 int cur_palette;
01243
01244 # if defined(PNG_TEXT_SUPPORTED)
01245 png_size_t current_text_size;
01246 png_size_t current_text_left;
01247 png_charp current_text;
01248 png_charp current_text_ptr;
01249 # endif
01250
01251 #endif
01252
01253 #if defined(__TURBOC__) && !defined(_Windows) && !defined(__FLAT__)
01254
01255 png_bytepp offset_table_ptr;
01256 png_bytep offset_table;
01257 png_uint_16 offset_table_number;
01258 png_uint_16 offset_table_count;
01259 png_uint_16 offset_table_count_free;
01260 #endif
01261
01262 #if defined(PNG_READ_DITHER_SUPPORTED)
01263 png_bytep palette_lookup;
01264 png_bytep dither_index;
01265 #endif
01266
01267 #if defined(PNG_READ_DITHER_SUPPORTED) || defined(PNG_hIST_SUPPORTED)
01268 png_uint_16p hist;
01269 #endif
01270
01271 #if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED)
01272 png_byte heuristic_method;
01273 png_byte num_prev_filters;
01274 png_bytep prev_filters;
01275 png_uint_16p filter_weights;
01276 png_uint_16p inv_filter_weights;
01277 png_uint_16p filter_costs;
01278 png_uint_16p inv_filter_costs;
01279 #endif
01280
01281 #if defined(PNG_TIME_RFC1123_SUPPORTED)
01282 png_charp time_buffer;
01283 #endif
01284
01285
01286
01287 #ifdef PNG_FREE_ME_SUPPORTED
01288 png_uint_32 free_me;
01289 #endif
01290
01291 #if defined(PNG_USER_CHUNKS_SUPPORTED)
01292 png_voidp user_chunk_ptr;
01293 png_user_chunk_ptr read_user_chunk_fn;
01294 #endif
01295
01296 #if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
01297 int num_chunk_list;
01298 png_bytep chunk_list;
01299 #endif
01300
01301
01302 #if defined(PNG_READ_RGB_TO_GRAY_SUPPORTED)
01303 png_byte rgb_to_gray_status;
01304
01305 png_uint_16 rgb_to_gray_red_coeff;
01306 png_uint_16 rgb_to_gray_green_coeff;
01307 png_uint_16 rgb_to_gray_blue_coeff;
01308 #endif
01309
01310
01311 #if defined(PNG_MNG_FEATURES_SUPPORTED) || \
01312 defined(PNG_READ_EMPTY_PLTE_SUPPORTED) || \
01313 defined(PNG_WRITE_EMPTY_PLTE_SUPPORTED)
01314
01315 #ifdef PNG_1_0_X
01316 png_byte mng_features_permitted;
01317 #else
01318 png_uint_32 mng_features_permitted;
01319 #endif
01320 #endif
01321
01322
01323 #if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
01324 png_fixed_point int_gamma;
01325 #endif
01326
01327
01328 #if defined(PNG_MNG_FEATURES_SUPPORTED)
01329 png_byte filter_type;
01330 #endif
01331
01332 #if defined(PNG_1_0_X) || (defined(PNG_DEBUG) && defined(PNG_USE_PNGGCCRD))
01333
01334 png_uint_32 row_buf_size;
01335 #endif
01336
01337
01338 #if !defined(PNG_1_0_X) && defined(PNG_ASSEMBLER_CODE_SUPPORTED)
01339 png_byte mmx_bitdepth_threshold;
01340 png_uint_32 mmx_rowbytes_threshold;
01341 png_uint_32 asm_flags;
01342 #endif
01343
01344
01345 #ifdef PNG_USER_MEM_SUPPORTED
01346 png_voidp mem_ptr;
01347 png_malloc_ptr malloc_fn;
01348 png_free_ptr free_fn;
01349 #endif
01350
01351
01352 png_bytep big_row_buf;
01353
01354 #if defined(PNG_READ_DITHER_SUPPORTED)
01355
01356 png_bytep dither_sort;
01357 png_bytep index_to_palette;
01358
01359 png_bytep palette_to_index;
01360
01361 #endif
01362
01363
01364 png_byte compression_type;
01365
01366 #ifdef PNG_SET_USER_LIMITS_SUPPORTED
01367 png_uint_32 user_width_max;
01368 png_uint_32 user_height_max;
01369 #endif
01370
01371 };
01372
01373
01374
01375
01376
01377 typedef png_structp version_1_2_12;
01378
01379 typedef png_struct FAR * FAR * png_structpp;
01380
01381
01382
01383
01384
01385
01386
01387
01388 extern PNG_EXPORT(png_uint_32,png_access_version_number) PNGARG((void));
01389
01390
01391
01392
01393 extern PNG_EXPORT(void,png_set_sig_bytes) PNGARG((png_structp png_ptr,
01394 int num_bytes));
01395
01396
01397
01398
01399
01400
01401 extern PNG_EXPORT(int,png_sig_cmp) PNGARG((png_bytep sig, png_size_t start,
01402 png_size_t num_to_check));
01403
01404
01405
01406
01407 extern PNG_EXPORT(int,png_check_sig) PNGARG((png_bytep sig, int num));
01408
01409
01410 extern PNG_EXPORT(png_structp,png_create_read_struct)
01411 PNGARG((png_const_charp user_png_ver, png_voidp error_ptr,
01412 png_error_ptr error_fn, png_error_ptr warn_fn));
01413
01414
01415 extern PNG_EXPORT(png_structp,png_create_write_struct)
01416 PNGARG((png_const_charp user_png_ver, png_voidp error_ptr,
01417 png_error_ptr error_fn, png_error_ptr warn_fn));
01418
01419 #ifdef PNG_WRITE_SUPPORTED
01420 extern PNG_EXPORT(png_uint_32,png_get_compression_buffer_size)
01421 PNGARG((png_structp png_ptr));
01422 #endif
01423
01424 #ifdef PNG_WRITE_SUPPORTED
01425 extern PNG_EXPORT(void,png_set_compression_buffer_size)
01426 PNGARG((png_structp png_ptr, png_uint_32 size));
01427 #endif
01428
01429
01430 extern PNG_EXPORT(int,png_reset_zstream) PNGARG((png_structp png_ptr));
01431
01432
01433 #ifdef PNG_USER_MEM_SUPPORTED
01434 extern PNG_EXPORT(png_structp,png_create_read_struct_2)
01435 PNGARG((png_const_charp user_png_ver, png_voidp error_ptr,
01436 png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr,
01437 png_malloc_ptr malloc_fn, png_free_ptr free_fn));
01438 extern PNG_EXPORT(png_structp,png_create_write_struct_2)
01439 PNGARG((png_const_charp user_png_ver, png_voidp error_ptr,
01440 png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr,
01441 png_malloc_ptr malloc_fn, png_free_ptr free_fn));
01442 #endif
01443
01444
01445 extern PNG_EXPORT(void,png_write_chunk) PNGARG((png_structp png_ptr,
01446 png_bytep chunk_name, png_bytep data, png_size_t length));
01447
01448
01449 extern PNG_EXPORT(void,png_write_chunk_start) PNGARG((png_structp png_ptr,
01450 png_bytep chunk_name, png_uint_32 length));
01451
01452
01453 extern PNG_EXPORT(void,png_write_chunk_data) PNGARG((png_structp png_ptr,
01454 png_bytep data, png_size_t length));
01455
01456
01457 extern PNG_EXPORT(void,png_write_chunk_end) PNGARG((png_structp png_ptr));
01458
01459
01460 extern PNG_EXPORT(png_infop,png_create_info_struct)
01461 PNGARG((png_structp png_ptr));
01462
01463 #if defined(PNG_1_0_X) || defined (PNG_1_2_X)
01464
01465 extern PNG_EXPORT(void,png_info_init) PNGARG((png_infop info_ptr));
01466 #undef png_info_init
01467 #define png_info_init(info_ptr) png_info_init_3(&info_ptr,\
01468 png_sizeof(png_info));
01469 #endif
01470
01471 extern PNG_EXPORT(void,png_info_init_3) PNGARG((png_infopp info_ptr,
01472 png_size_t png_info_struct_size));
01473
01474
01475 extern PNG_EXPORT(void,png_write_info_before_PLTE) PNGARG((png_structp png_ptr,
01476 png_infop info_ptr));
01477 extern PNG_EXPORT(void,png_write_info) PNGARG((png_structp png_ptr,
01478 png_infop info_ptr));
01479
01480 #ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED
01481
01482 extern PNG_EXPORT(void,png_read_info) PNGARG((png_structp png_ptr,
01483 png_infop info_ptr));
01484 #endif
01485
01486 #if defined(PNG_TIME_RFC1123_SUPPORTED)
01487 extern PNG_EXPORT(png_charp,png_convert_to_rfc1123)
01488 PNGARG((png_structp png_ptr, png_timep ptime));
01489 #endif
01490
01491 #if !defined(_WIN32_WCE)
01492
01493 #if defined(PNG_WRITE_tIME_SUPPORTED)
01494
01495 extern PNG_EXPORT(void,png_convert_from_struct_tm) PNGARG((png_timep ptime,
01496 struct tm FAR * ttime));
01497
01498
01499 extern PNG_EXPORT(void,png_convert_from_time_t) PNGARG((png_timep ptime,
01500 time_t ttime));
01501 #endif
01502 #endif
01503
01504 #if defined(PNG_READ_EXPAND_SUPPORTED)
01505
01506 extern PNG_EXPORT(void,png_set_expand) PNGARG((png_structp png_ptr));
01507 #if !defined(PNG_1_0_X)
01508 extern PNG_EXPORT(void,png_set_expand_gray_1_2_4_to_8) PNGARG((png_structp
01509 png_ptr));
01510 #endif
01511 extern PNG_EXPORT(void,png_set_palette_to_rgb) PNGARG((png_structp png_ptr));
01512 extern PNG_EXPORT(void,png_set_tRNS_to_alpha) PNGARG((png_structp png_ptr));
01513 #if defined(PNG_1_0_X) || defined (PNG_1_2_X)
01514
01515 extern PNG_EXPORT(void,png_set_gray_1_2_4_to_8) PNGARG((png_structp png_ptr));
01516 #endif
01517 #endif
01518
01519 #if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED)
01520
01521 extern PNG_EXPORT(void,png_set_bgr) PNGARG((png_structp png_ptr));
01522 #endif
01523
01524 #if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED)
01525
01526 extern PNG_EXPORT(void,png_set_gray_to_rgb) PNGARG((png_structp png_ptr));
01527 #endif
01528
01529 #if defined(PNG_READ_RGB_TO_GRAY_SUPPORTED)
01530
01531 #ifdef PNG_FLOATING_POINT_SUPPORTED
01532 extern PNG_EXPORT(void,png_set_rgb_to_gray) PNGARG((png_structp png_ptr,
01533 int error_action, double red, double green ));
01534 #endif
01535 extern PNG_EXPORT(void,png_set_rgb_to_gray_fixed) PNGARG((png_structp png_ptr,
01536 int error_action, png_fixed_point red, png_fixed_point green ));
01537 extern PNG_EXPORT(png_byte,png_get_rgb_to_gray_status) PNGARG((png_structp
01538 png_ptr));
01539 #endif
01540
01541 extern PNG_EXPORT(void,png_build_grayscale_palette) PNGARG((int bit_depth,
01542 png_colorp palette));
01543
01544 #if defined(PNG_READ_STRIP_ALPHA_SUPPORTED)
01545 extern PNG_EXPORT(void,png_set_strip_alpha) PNGARG((png_structp png_ptr));
01546 #endif
01547
01548 #if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) || \
01549 defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED)
01550 extern PNG_EXPORT(void,png_set_swap_alpha) PNGARG((png_structp png_ptr));
01551 #endif
01552
01553 #if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) || \
01554 defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED)
01555 extern PNG_EXPORT(void,png_set_invert_alpha) PNGARG((png_structp png_ptr));
01556 #endif
01557
01558 #if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED)
01559
01560 extern PNG_EXPORT(void,png_set_filler) PNGARG((png_structp png_ptr,
01561 png_uint_32 filler, int flags));
01562
01563 #define PNG_FILLER_BEFORE 0
01564 #define PNG_FILLER_AFTER 1
01565
01566 #if !defined(PNG_1_0_X)
01567 extern PNG_EXPORT(void,png_set_add_alpha) PNGARG((png_structp png_ptr,
01568 png_uint_32 filler, int flags));
01569 #endif
01570 #endif
01571
01572 #if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED)
01573
01574 extern PNG_EXPORT(void,png_set_swap) PNGARG((png_structp png_ptr));
01575 #endif
01576
01577 #if defined(PNG_READ_PACK_SUPPORTED) || defined(PNG_WRITE_PACK_SUPPORTED)
01578
01579 extern PNG_EXPORT(void,png_set_packing) PNGARG((png_structp png_ptr));
01580 #endif
01581
01582 #if defined(PNG_READ_PACKSWAP_SUPPORTED) || defined(PNG_WRITE_PACKSWAP_SUPPORTED)
01583
01584 extern PNG_EXPORT(void,png_set_packswap) PNGARG((png_structp png_ptr));
01585 #endif
01586
01587 #if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED)
01588
01589 extern PNG_EXPORT(void,png_set_shift) PNGARG((png_structp png_ptr,
01590 png_color_8p true_bits));
01591 #endif
01592
01593 #if defined(PNG_READ_INTERLACING_SUPPORTED) || \
01594 defined(PNG_WRITE_INTERLACING_SUPPORTED)
01595
01596 extern PNG_EXPORT(int,png_set_interlace_handling) PNGARG((png_structp png_ptr));
01597 #endif
01598
01599 #if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED)
01600
01601 extern PNG_EXPORT(void,png_set_invert_mono) PNGARG((png_structp png_ptr));
01602 #endif
01603
01604 #if defined(PNG_READ_BACKGROUND_SUPPORTED)
01605
01606 #ifdef PNG_FLOATING_POINT_SUPPORTED
01607 extern PNG_EXPORT(void,png_set_background) PNGARG((png_structp png_ptr,
01608 png_color_16p background_color, int background_gamma_code,
01609 int need_expand, double background_gamma));
01610 #endif
01611 #define PNG_BACKGROUND_GAMMA_UNKNOWN 0
01612 #define PNG_BACKGROUND_GAMMA_SCREEN 1
01613 #define PNG_BACKGROUND_GAMMA_FILE 2
01614 #define PNG_BACKGROUND_GAMMA_UNIQUE 3
01615 #endif
01616
01617 #if defined(PNG_READ_16_TO_8_SUPPORTED)
01618
01619 extern PNG_EXPORT(void,png_set_strip_16) PNGARG((png_structp png_ptr));
01620 #endif
01621
01622 #if defined(PNG_READ_DITHER_SUPPORTED)
01623
01624 extern PNG_EXPORT(void,png_set_dither) PNGARG((png_structp png_ptr,
01625 png_colorp palette, int num_palette, int maximum_colors,
01626 png_uint_16p histogram, int full_dither));
01627 #endif
01628
01629 #if defined(PNG_READ_GAMMA_SUPPORTED)
01630
01631 #ifdef PNG_FLOATING_POINT_SUPPORTED
01632 extern PNG_EXPORT(void,png_set_gamma) PNGARG((png_structp png_ptr,
01633 double screen_gamma, double default_file_gamma));
01634 #endif
01635 #endif
01636
01637 #if defined(PNG_1_0_X) || defined (PNG_1_2_X)
01638 #if defined(PNG_READ_EMPTY_PLTE_SUPPORTED) || \
01639 defined(PNG_WRITE_EMPTY_PLTE_SUPPORTED)
01640
01641
01642 extern PNG_EXPORT(void,png_permit_empty_plte) PNGARG((png_structp png_ptr,
01643 int empty_plte_permitted));
01644 #endif
01645 #endif
01646
01647 #if defined(PNG_WRITE_FLUSH_SUPPORTED)
01648
01649 extern PNG_EXPORT(void,png_set_flush) PNGARG((png_structp png_ptr, int nrows));
01650
01651 extern PNG_EXPORT(void,png_write_flush) PNGARG((png_structp png_ptr));
01652 #endif
01653
01654
01655 extern PNG_EXPORT(void,png_start_read_image) PNGARG((png_structp png_ptr));
01656
01657
01658 extern PNG_EXPORT(void,png_read_update_info) PNGARG((png_structp png_ptr,
01659 png_infop info_ptr));
01660
01661 #ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED
01662
01663 extern PNG_EXPORT(void,png_read_rows) PNGARG((png_structp png_ptr,
01664 png_bytepp row, png_bytepp display_row, png_uint_32 num_rows));
01665 #endif
01666
01667 #ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED
01668
01669 extern PNG_EXPORT(void,png_read_row) PNGARG((png_structp png_ptr,
01670 png_bytep row,
01671 png_bytep display_row));
01672 #endif
01673
01674 #ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED
01675
01676 extern PNG_EXPORT(void,png_read_image) PNGARG((png_structp png_ptr,
01677 png_bytepp image));
01678 #endif
01679
01680
01681 extern PNG_EXPORT(void,png_write_row) PNGARG((png_structp png_ptr,
01682 png_bytep row));
01683
01684
01685 extern PNG_EXPORT(void,png_write_rows) PNGARG((png_structp png_ptr,
01686 png_bytepp row, png_uint_32 num_rows));
01687
01688
01689 extern PNG_EXPORT(void,png_write_image) PNGARG((png_structp png_ptr,
01690 png_bytepp image));
01691
01692
01693 extern PNG_EXPORT(void,png_write_end) PNGARG((png_structp png_ptr,
01694 png_infop info_ptr));
01695
01696 #ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED
01697
01698 extern PNG_EXPORT(void,png_read_end) PNGARG((png_structp png_ptr,
01699 png_infop info_ptr));
01700 #endif
01701
01702
01703 extern PNG_EXPORT(void,png_destroy_info_struct) PNGARG((png_structp png_ptr,
01704 png_infopp info_ptr_ptr));
01705
01706
01707 extern PNG_EXPORT(void,png_destroy_read_struct) PNGARG((png_structpp
01708 png_ptr_ptr, png_infopp info_ptr_ptr, png_infopp end_info_ptr_ptr));
01709
01710
01711 extern void png_read_destroy PNGARG((png_structp png_ptr, png_infop info_ptr,
01712 png_infop end_info_ptr));
01713
01714
01715 extern PNG_EXPORT(void,png_destroy_write_struct)
01716 PNGARG((png_structpp png_ptr_ptr, png_infopp info_ptr_ptr));
01717
01718
01719 extern void png_write_destroy PNGARG((png_structp png_ptr));
01720
01721
01722 extern PNG_EXPORT(void,png_set_crc_action) PNGARG((png_structp png_ptr,
01723 int crit_action, int ancil_action));
01724
01725
01726
01727
01728
01729
01730
01731
01732
01733
01734 #define PNG_CRC_DEFAULT 0
01735 #define PNG_CRC_ERROR_QUIT 1
01736 #define PNG_CRC_WARN_DISCARD 2
01737 #define PNG_CRC_WARN_USE 3
01738 #define PNG_CRC_QUIET_USE 4
01739 #define PNG_CRC_NO_CHANGE 5
01740
01741
01742
01743
01744
01745
01746
01747
01748
01749
01750
01751
01752 extern PNG_EXPORT(void,png_set_filter) PNGARG((png_structp png_ptr, int method,
01753 int filters));
01754
01755
01756
01757
01758
01759
01760 #define PNG_NO_FILTERS 0x00
01761 #define PNG_FILTER_NONE 0x08
01762 #define PNG_FILTER_SUB 0x10
01763 #define PNG_FILTER_UP 0x20
01764 #define PNG_FILTER_AVG 0x40
01765 #define PNG_FILTER_PAETH 0x80
01766 #define PNG_ALL_FILTERS (PNG_FILTER_NONE | PNG_FILTER_SUB | PNG_FILTER_UP | \
01767 PNG_FILTER_AVG | PNG_FILTER_PAETH)
01768
01769
01770
01771
01772 #define PNG_FILTER_VALUE_NONE 0
01773 #define PNG_FILTER_VALUE_SUB 1
01774 #define PNG_FILTER_VALUE_UP 2
01775 #define PNG_FILTER_VALUE_AVG 3
01776 #define PNG_FILTER_VALUE_PAETH 4
01777 #define PNG_FILTER_VALUE_LAST 5
01778
01779 #if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED)
01780
01781
01782
01783
01784
01785
01786
01787
01788
01789
01790
01791
01792
01793
01794
01795
01796
01797
01798
01799
01800
01801
01802
01803
01804
01805
01806
01807
01808 #ifdef PNG_FLOATING_POINT_SUPPORTED
01809 extern PNG_EXPORT(void,png_set_filter_heuristics) PNGARG((png_structp png_ptr,
01810 int heuristic_method, int num_weights, png_doublep filter_weights,
01811 png_doublep filter_costs));
01812 #endif
01813 #endif
01814
01815
01816
01817
01818 #define PNG_FILTER_HEURISTIC_DEFAULT 0
01819 #define PNG_FILTER_HEURISTIC_UNWEIGHTED 1
01820 #define PNG_FILTER_HEURISTIC_WEIGHTED 2
01821 #define PNG_FILTER_HEURISTIC_LAST 3
01822
01823
01824
01825
01826
01827
01828
01829
01830 extern PNG_EXPORT(void,png_set_compression_level) PNGARG((png_structp png_ptr,
01831 int level));
01832
01833 extern PNG_EXPORT(void,png_set_compression_mem_level)
01834 PNGARG((png_structp png_ptr, int mem_level));
01835
01836 extern PNG_EXPORT(void,png_set_compression_strategy)
01837 PNGARG((png_structp png_ptr, int strategy));
01838
01839 extern PNG_EXPORT(void,png_set_compression_window_bits)
01840 PNGARG((png_structp png_ptr, int window_bits));
01841
01842 extern PNG_EXPORT(void,png_set_compression_method) PNGARG((png_structp png_ptr,
01843 int method));
01844
01845
01846
01847
01848
01849
01850
01851
01852
01853
01854 #if !defined(PNG_NO_STDIO)
01855
01856 extern PNG_EXPORT(void,png_init_io) PNGARG((png_structp png_ptr, png_FILE_p fp));
01857 #endif
01858
01859
01860
01861
01862
01863
01864
01865
01866
01867 extern PNG_EXPORT(void,png_set_error_fn) PNGARG((png_structp png_ptr,
01868 png_voidp error_ptr, png_error_ptr error_fn, png_error_ptr warning_fn));
01869
01870
01871 extern PNG_EXPORT(png_voidp,png_get_error_ptr) PNGARG((png_structp png_ptr));
01872
01873
01874
01875
01876
01877
01878 extern PNG_EXPORT(void,png_set_write_fn) PNGARG((png_structp png_ptr,
01879 png_voidp io_ptr, png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn));
01880
01881
01882 extern PNG_EXPORT(void,png_set_read_fn) PNGARG((png_structp png_ptr,
01883 png_voidp io_ptr, png_rw_ptr read_data_fn));
01884
01885
01886 extern PNG_EXPORT(png_voidp,png_get_io_ptr) PNGARG((png_structp png_ptr));
01887
01888 extern PNG_EXPORT(void,png_set_read_status_fn) PNGARG((png_structp png_ptr,
01889 png_read_status_ptr read_row_fn));
01890
01891 extern PNG_EXPORT(void,png_set_write_status_fn) PNGARG((png_structp png_ptr,
01892 png_write_status_ptr write_row_fn));
01893
01894 #ifdef PNG_USER_MEM_SUPPORTED
01895
01896 extern PNG_EXPORT(void,png_set_mem_fn) PNGARG((png_structp png_ptr,
01897 png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn));
01898
01899 extern PNG_EXPORT(png_voidp,png_get_mem_ptr) PNGARG((png_structp png_ptr));
01900 #endif
01901
01902 #if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \
01903 defined(PNG_LEGACY_SUPPORTED)
01904 extern PNG_EXPORT(void,png_set_read_user_transform_fn) PNGARG((png_structp
01905 png_ptr, png_user_transform_ptr read_user_transform_fn));
01906 #endif
01907
01908 #if defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) || \
01909 defined(PNG_LEGACY_SUPPORTED)
01910 extern PNG_EXPORT(void,png_set_write_user_transform_fn) PNGARG((png_structp
01911 png_ptr, png_user_transform_ptr write_user_transform_fn));
01912 #endif
01913
01914 #if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \
01915 defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) || \
01916 defined(PNG_LEGACY_SUPPORTED)
01917 extern PNG_EXPORT(void,png_set_user_transform_info) PNGARG((png_structp
01918 png_ptr, png_voidp user_transform_ptr, int user_transform_depth,
01919 int user_transform_channels));
01920
01921 extern PNG_EXPORT(png_voidp,png_get_user_transform_ptr)
01922 PNGARG((png_structp png_ptr));
01923 #endif
01924
01925 #ifdef PNG_USER_CHUNKS_SUPPORTED
01926 extern PNG_EXPORT(void,png_set_read_user_chunk_fn) PNGARG((png_structp png_ptr,
01927 png_voidp user_chunk_ptr, png_user_chunk_ptr read_user_chunk_fn));
01928 extern PNG_EXPORT(png_voidp,png_get_user_chunk_ptr) PNGARG((png_structp
01929 png_ptr));
01930 #endif
01931
01932 #ifdef PNG_PROGRESSIVE_READ_SUPPORTED
01933
01934
01935
01936 extern PNG_EXPORT(void,png_set_progressive_read_fn) PNGARG((png_structp png_ptr,
01937 png_voidp progressive_ptr,
01938 png_progressive_info_ptr info_fn, png_progressive_row_ptr row_fn,
01939 png_progressive_end_ptr end_fn));
01940
01941
01942 extern PNG_EXPORT(png_voidp,png_get_progressive_ptr)
01943 PNGARG((png_structp png_ptr));
01944
01945
01946 extern PNG_EXPORT(void,png_process_data) PNGARG((png_structp png_ptr,
01947 png_infop info_ptr, png_bytep buffer, png_size_t buffer_size));
01948
01949
01950
01951
01952 extern PNG_EXPORT(void,png_progressive_combine_row) PNGARG((png_structp png_ptr,
01953 png_bytep old_row, png_bytep new_row));
01954 #endif
01955
01956 extern PNG_EXPORT(png_voidp,png_malloc) PNGARG((png_structp png_ptr,
01957 png_uint_32 size));
01958
01959 #if defined(PNG_1_0_X)
01960 # define png_malloc_warn png_malloc
01961 #else
01962
01963 extern PNG_EXPORT(png_voidp,png_malloc_warn) PNGARG((png_structp png_ptr,
01964 png_uint_32 size));
01965 #endif
01966
01967
01968 extern PNG_EXPORT(void,png_free) PNGARG((png_structp png_ptr, png_voidp ptr));
01969
01970 #if defined(PNG_1_0_X)
01971
01972 extern PNG_EXPORT(voidpf,png_zalloc) PNGARG((voidpf png_ptr, uInt items,
01973 uInt size));
01974
01975
01976 extern PNG_EXPORT(void,png_zfree) PNGARG((voidpf png_ptr, voidpf ptr));
01977 #endif
01978
01979
01980 extern PNG_EXPORT(void,png_free_data) PNGARG((png_structp png_ptr,
01981 png_infop info_ptr, png_uint_32 free_me, int num));
01982 #ifdef PNG_FREE_ME_SUPPORTED
01983
01984
01985 extern PNG_EXPORT(void,png_data_freer) PNGARG((png_structp png_ptr,
01986 png_infop info_ptr, int freer, png_uint_32 mask));
01987 #endif
01988
01989 #define PNG_DESTROY_WILL_FREE_DATA 1
01990 #define PNG_SET_WILL_FREE_DATA 1
01991 #define PNG_USER_WILL_FREE_DATA 2
01992
01993 #define PNG_FREE_HIST 0x0008
01994 #define PNG_FREE_ICCP 0x0010
01995 #define PNG_FREE_SPLT 0x0020
01996 #define PNG_FREE_ROWS 0x0040
01997 #define PNG_FREE_PCAL 0x0080
01998 #define PNG_FREE_SCAL 0x0100
01999 #define PNG_FREE_UNKN 0x0200
02000 #define PNG_FREE_LIST 0x0400
02001 #define PNG_FREE_PLTE 0x1000
02002 #define PNG_FREE_TRNS 0x2000
02003 #define PNG_FREE_TEXT 0x4000
02004 #define PNG_FREE_ALL 0x7fff
02005 #define PNG_FREE_MUL 0x4220
02006
02007 #ifdef PNG_USER_MEM_SUPPORTED
02008 extern PNG_EXPORT(png_voidp,png_malloc_default) PNGARG((png_structp png_ptr,
02009 png_uint_32 size));
02010 extern PNG_EXPORT(void,png_free_default) PNGARG((png_structp png_ptr,
02011 png_voidp ptr));
02012 #endif
02013
02014 extern PNG_EXPORT(png_voidp,png_memcpy_check) PNGARG((png_structp png_ptr,
02015 png_voidp s1, png_voidp s2, png_uint_32 size));
02016
02017 extern PNG_EXPORT(png_voidp,png_memset_check) PNGARG((png_structp png_ptr,
02018 png_voidp s1, int value, png_uint_32 size));
02019
02020 #if defined(USE_FAR_KEYWORD)
02021 extern void *png_far_to_near PNGARG((png_structp png_ptr,png_voidp ptr,
02022 int check));
02023 #endif
02024
02025
02026 extern PNG_EXPORT(void,png_error) PNGARG((png_structp png_ptr,
02027 png_const_charp error_message));
02028
02029
02030 extern PNG_EXPORT(void,png_chunk_error) PNGARG((png_structp png_ptr,
02031 png_const_charp error_message));
02032
02033
02034 extern PNG_EXPORT(void,png_warning) PNGARG((png_structp png_ptr,
02035 png_const_charp warning_message));
02036
02037
02038 extern PNG_EXPORT(void,png_chunk_warning) PNGARG((png_structp png_ptr,
02039 png_const_charp warning_message));
02040
02041
02042
02043
02044
02045
02046
02047
02048
02049
02050
02051
02052
02053
02054 extern PNG_EXPORT(png_uint_32,png_get_valid) PNGARG((png_structp png_ptr,
02055 png_infop info_ptr, png_uint_32 flag));
02056
02057
02058 extern PNG_EXPORT(png_uint_32,png_get_rowbytes) PNGARG((png_structp png_ptr,
02059 png_infop info_ptr));
02060
02061 #if defined(PNG_INFO_IMAGE_SUPPORTED)
02062
02063
02064 extern PNG_EXPORT(png_bytepp,png_get_rows) PNGARG((png_structp png_ptr,
02065 png_infop info_ptr));
02066
02067
02068 extern PNG_EXPORT(void,png_set_rows) PNGARG((png_structp png_ptr,
02069 png_infop info_ptr, png_bytepp row_pointers));
02070 #endif
02071
02072
02073 extern PNG_EXPORT(png_byte,png_get_channels) PNGARG((png_structp png_ptr,
02074 png_infop info_ptr));
02075
02076 #ifdef PNG_EASY_ACCESS_SUPPORTED
02077
02078 extern PNG_EXPORT(png_uint_32, png_get_image_width) PNGARG((png_structp
02079 png_ptr, png_infop info_ptr));
02080
02081
02082 extern PNG_EXPORT(png_uint_32, png_get_image_height) PNGARG((png_structp
02083 png_ptr, png_infop info_ptr));
02084
02085
02086 extern PNG_EXPORT(png_byte, png_get_bit_depth) PNGARG((png_structp
02087 png_ptr, png_infop info_ptr));
02088
02089
02090 extern PNG_EXPORT(png_byte, png_get_color_type) PNGARG((png_structp
02091 png_ptr, png_infop info_ptr));
02092
02093
02094 extern PNG_EXPORT(png_byte, png_get_filter_type) PNGARG((png_structp
02095 png_ptr, png_infop info_ptr));
02096
02097
02098 extern PNG_EXPORT(png_byte, png_get_interlace_type) PNGARG((png_structp
02099 png_ptr, png_infop info_ptr));
02100
02101
02102 extern PNG_EXPORT(png_byte, png_get_compression_type) PNGARG((png_structp
02103 png_ptr, png_infop info_ptr));
02104
02105
02106 extern PNG_EXPORT(png_uint_32, png_get_pixels_per_meter) PNGARG((png_structp
02107 png_ptr, png_infop info_ptr));
02108 extern PNG_EXPORT(png_uint_32, png_get_x_pixels_per_meter) PNGARG((png_structp
02109 png_ptr, png_infop info_ptr));
02110 extern PNG_EXPORT(png_uint_32, png_get_y_pixels_per_meter) PNGARG((png_structp
02111 png_ptr, png_infop info_ptr));
02112
02113
02114 #ifdef PNG_FLOATING_POINT_SUPPORTED
02115 extern PNG_EXPORT(float, png_get_pixel_aspect_ratio) PNGARG((png_structp
02116 png_ptr, png_infop info_ptr));
02117 #endif
02118
02119
02120 extern PNG_EXPORT(png_int_32, png_get_x_offset_pixels) PNGARG((png_structp
02121 png_ptr, png_infop info_ptr));
02122 extern PNG_EXPORT(png_int_32, png_get_y_offset_pixels) PNGARG((png_structp
02123 png_ptr, png_infop info_ptr));
02124 extern PNG_EXPORT(png_int_32, png_get_x_offset_microns) PNGARG((png_structp
02125 png_ptr, png_infop info_ptr));
02126 extern PNG_EXPORT(png_int_32, png_get_y_offset_microns) PNGARG((png_structp
02127 png_ptr, png_infop info_ptr));
02128
02129 #endif
02130
02131
02132 extern PNG_EXPORT(png_bytep,png_get_signature) PNGARG((png_structp png_ptr,
02133 png_infop info_ptr));
02134
02135 #if defined(PNG_bKGD_SUPPORTED)
02136 extern PNG_EXPORT(png_uint_32,png_get_bKGD) PNGARG((png_structp png_ptr,
02137 png_infop info_ptr, png_color_16p *background));
02138 #endif
02139
02140 #if defined(PNG_bKGD_SUPPORTED)
02141 extern PNG_EXPORT(void,png_set_bKGD) PNGARG((png_structp png_ptr,
02142 png_infop info_ptr, png_color_16p background));
02143 #endif
02144
02145 #if defined(PNG_cHRM_SUPPORTED)
02146 #ifdef PNG_FLOATING_POINT_SUPPORTED
02147 extern PNG_EXPORT(png_uint_32,png_get_cHRM) PNGARG((png_structp png_ptr,
02148 png_infop info_ptr, double *white_x, double *white_y, double *red_x,
02149 double *red_y, double *green_x, double *green_y, double *blue_x,
02150 double *blue_y));
02151 #endif
02152 #ifdef PNG_FIXED_POINT_SUPPORTED
02153 extern PNG_EXPORT(png_uint_32,png_get_cHRM_fixed) PNGARG((png_structp png_ptr,
02154 png_infop info_ptr, png_fixed_point *int_white_x, png_fixed_point
02155 *int_white_y, png_fixed_point *int_red_x, png_fixed_point *int_red_y,
02156 png_fixed_point *int_green_x, png_fixed_point *int_green_y, png_fixed_point
02157 *int_blue_x, png_fixed_point *int_blue_y));
02158 #endif
02159 #endif
02160
02161 #if defined(PNG_cHRM_SUPPORTED)
02162 #ifdef PNG_FLOATING_POINT_SUPPORTED
02163 extern PNG_EXPORT(void,png_set_cHRM) PNGARG((png_structp png_ptr,
02164 png_infop info_ptr, double white_x, double white_y, double red_x,
02165 double red_y, double green_x, double green_y, double blue_x, double blue_y));
02166 #endif
02167 #ifdef PNG_FIXED_POINT_SUPPORTED
02168 extern PNG_EXPORT(void,png_set_cHRM_fixed) PNGARG((png_structp png_ptr,
02169 png_infop info_ptr, png_fixed_point int_white_x, png_fixed_point int_white_y,
02170 png_fixed_point int_red_x, png_fixed_point int_red_y, png_fixed_point
02171 int_green_x, png_fixed_point int_green_y, png_fixed_point int_blue_x,
02172 png_fixed_point int_blue_y));
02173 #endif
02174 #endif
02175
02176 #if defined(PNG_gAMA_SUPPORTED)
02177 #ifdef PNG_FLOATING_POINT_SUPPORTED
02178 extern PNG_EXPORT(png_uint_32,png_get_gAMA) PNGARG((png_structp png_ptr,
02179 png_infop info_ptr, double *file_gamma));
02180 #endif
02181 extern PNG_EXPORT(png_uint_32,png_get_gAMA_fixed) PNGARG((png_structp png_ptr,
02182 png_infop info_ptr, png_fixed_point *int_file_gamma));
02183 #endif
02184
02185 #if defined(PNG_gAMA_SUPPORTED)
02186 #ifdef PNG_FLOATING_POINT_SUPPORTED
02187 extern PNG_EXPORT(void,png_set_gAMA) PNGARG((png_structp png_ptr,
02188 png_infop info_ptr, double file_gamma));
02189 #endif
02190 extern PNG_EXPORT(void,png_set_gAMA_fixed) PNGARG((png_structp png_ptr,
02191 png_infop info_ptr, png_fixed_point int_file_gamma));
02192 #endif
02193
02194 #if defined(PNG_hIST_SUPPORTED)
02195 extern PNG_EXPORT(png_uint_32,png_get_hIST) PNGARG((png_structp png_ptr,
02196 png_infop info_ptr, png_uint_16p *hist));
02197 #endif
02198
02199 #if defined(PNG_hIST_SUPPORTED)
02200 extern PNG_EXPORT(void,png_set_hIST) PNGARG((png_structp png_ptr,
02201 png_infop info_ptr, png_uint_16p hist));
02202 #endif
02203
02204 extern PNG_EXPORT(png_uint_32,png_get_IHDR) PNGARG((png_structp png_ptr,
02205 png_infop info_ptr, png_uint_32 *width, png_uint_32 *height,
02206 int *bit_depth, int *color_type, int *interlace_method,
02207 int *compression_method, int *filter_method));
02208
02209 extern PNG_EXPORT(void,png_set_IHDR) PNGARG((png_structp png_ptr,
02210 png_infop info_ptr, png_uint_32 width, png_uint_32 height, int bit_depth,
02211 int color_type, int interlace_method, int compression_method,
02212 int filter_method));
02213
02214 #if defined(PNG_oFFs_SUPPORTED)
02215 extern PNG_EXPORT(png_uint_32,png_get_oFFs) PNGARG((png_structp png_ptr,
02216 png_infop info_ptr, png_int_32 *offset_x, png_int_32 *offset_y,
02217 int *unit_type));
02218 #endif
02219
02220 #if defined(PNG_oFFs_SUPPORTED)
02221 extern PNG_EXPORT(void,png_set_oFFs) PNGARG((png_structp png_ptr,
02222 png_infop info_ptr, png_int_32 offset_x, png_int_32 offset_y,
02223 int unit_type));
02224 #endif
02225
02226 #if defined(PNG_pCAL_SUPPORTED)
02227 extern PNG_EXPORT(png_uint_32,png_get_pCAL) PNGARG((png_structp png_ptr,
02228 png_infop info_ptr, png_charp *purpose, png_int_32 *X0, png_int_32 *X1,
02229 int *type, int *nparams, png_charp *units, png_charpp *params));
02230 #endif
02231
02232 #if defined(PNG_pCAL_SUPPORTED)
02233 extern PNG_EXPORT(void,png_set_pCAL) PNGARG((png_structp png_ptr,
02234 png_infop info_ptr, png_charp purpose, png_int_32 X0, png_int_32 X1,
02235 int type, int nparams, png_charp units, png_charpp params));
02236 #endif
02237
02238 #if defined(PNG_pHYs_SUPPORTED)
02239 extern PNG_EXPORT(png_uint_32,png_get_pHYs) PNGARG((png_structp png_ptr,
02240 png_infop info_ptr, png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type));
02241 #endif
02242
02243 #if defined(PNG_pHYs_SUPPORTED)
02244 extern PNG_EXPORT(void,png_set_pHYs) PNGARG((png_structp png_ptr,
02245 png_infop info_ptr, png_uint_32 res_x, png_uint_32 res_y, int unit_type));
02246 #endif
02247
02248 extern PNG_EXPORT(png_uint_32,png_get_PLTE) PNGARG((png_structp png_ptr,
02249 png_infop info_ptr, png_colorp *palette, int *num_palette));
02250
02251 extern PNG_EXPORT(void,png_set_PLTE) PNGARG((png_structp png_ptr,
02252 png_infop info_ptr, png_colorp palette, int num_palette));
02253
02254 #if defined(PNG_sBIT_SUPPORTED)
02255 extern PNG_EXPORT(png_uint_32,png_get_sBIT) PNGARG((png_structp png_ptr,
02256 png_infop info_ptr, png_color_8p *sig_bit));
02257 #endif
02258
02259 #if defined(PNG_sBIT_SUPPORTED)
02260 extern PNG_EXPORT(void,png_set_sBIT) PNGARG((png_structp png_ptr,
02261 png_infop info_ptr, png_color_8p sig_bit));
02262 #endif
02263
02264 #if defined(PNG_sRGB_SUPPORTED)
02265 extern PNG_EXPORT(png_uint_32,png_get_sRGB) PNGARG((png_structp png_ptr,
02266 png_infop info_ptr, int *intent));
02267 #endif
02268
02269 #if defined(PNG_sRGB_SUPPORTED)
02270 extern PNG_EXPORT(void,png_set_sRGB) PNGARG((png_structp png_ptr,
02271 png_infop info_ptr, int intent));
02272 extern PNG_EXPORT(void,png_set_sRGB_gAMA_and_cHRM) PNGARG((png_structp png_ptr,
02273 png_infop info_ptr, int intent));
02274 #endif
02275
02276 #if defined(PNG_iCCP_SUPPORTED)
02277 extern PNG_EXPORT(png_uint_32,png_get_iCCP) PNGARG((png_structp png_ptr,
02278 png_infop info_ptr, png_charpp name, int *compression_type,
02279 png_charpp profile, png_uint_32 *proflen));
02280
02281 #endif
02282
02283 #if defined(PNG_iCCP_SUPPORTED)
02284 extern PNG_EXPORT(void,png_set_iCCP) PNGARG((png_structp png_ptr,
02285 png_infop info_ptr, png_charp name, int compression_type,
02286 png_charp profile, png_uint_32 proflen));
02287
02288 #endif
02289
02290 #if defined(PNG_sPLT_SUPPORTED)
02291 extern PNG_EXPORT(png_uint_32,png_get_sPLT) PNGARG((png_structp png_ptr,
02292 png_infop info_ptr, png_sPLT_tpp entries));
02293 #endif
02294
02295 #if defined(PNG_sPLT_SUPPORTED)
02296 extern PNG_EXPORT(void,png_set_sPLT) PNGARG((png_structp png_ptr,
02297 png_infop info_ptr, png_sPLT_tp entries, int nentries));
02298 #endif
02299
02300 #if defined(PNG_TEXT_SUPPORTED)
02301
02302 extern PNG_EXPORT(png_uint_32,png_get_text) PNGARG((png_structp png_ptr,
02303 png_infop info_ptr, png_textp *text_ptr, int *num_text));
02304 #endif
02305
02306
02307
02308
02309
02310
02311
02312
02313
02314 #if defined(PNG_TEXT_SUPPORTED)
02315 extern PNG_EXPORT(void,png_set_text) PNGARG((png_structp png_ptr,
02316 png_infop info_ptr, png_textp text_ptr, int num_text));
02317 #endif
02318
02319 #if defined(PNG_tIME_SUPPORTED)
02320 extern PNG_EXPORT(png_uint_32,png_get_tIME) PNGARG((png_structp png_ptr,
02321 png_infop info_ptr, png_timep *mod_time));
02322 #endif
02323
02324 #if defined(PNG_tIME_SUPPORTED)
02325 extern PNG_EXPORT(void,png_set_tIME) PNGARG((png_structp png_ptr,
02326 png_infop info_ptr, png_timep mod_time));
02327 #endif
02328
02329 #if defined(PNG_tRNS_SUPPORTED)
02330 extern PNG_EXPORT(png_uint_32,png_get_tRNS) PNGARG((png_structp png_ptr,
02331 png_infop info_ptr, png_bytep *trans, int *num_trans,
02332 png_color_16p *trans_values));
02333 #endif
02334
02335 #if defined(PNG_tRNS_SUPPORTED)
02336 extern PNG_EXPORT(void,png_set_tRNS) PNGARG((png_structp png_ptr,
02337 png_infop info_ptr, png_bytep trans, int num_trans,
02338 png_color_16p trans_values));
02339 #endif
02340
02341 #if defined(PNG_tRNS_SUPPORTED)
02342 #endif
02343
02344 #if defined(PNG_sCAL_SUPPORTED)
02345 #ifdef PNG_FLOATING_POINT_SUPPORTED
02346 extern PNG_EXPORT(png_uint_32,png_get_sCAL) PNGARG((png_structp png_ptr,
02347 png_infop info_ptr, int *unit, double *width, double *height));
02348 #else
02349 #ifdef PNG_FIXED_POINT_SUPPORTED
02350 extern PNG_EXPORT(png_uint_32,png_get_sCAL_s) PNGARG((png_structp png_ptr,
02351 png_infop info_ptr, int *unit, png_charpp swidth, png_charpp sheight));
02352 #endif
02353 #endif
02354 #endif
02355
02356 #if defined(PNG_sCAL_SUPPORTED)
02357 #ifdef PNG_FLOATING_POINT_SUPPORTED
02358 extern PNG_EXPORT(void,png_set_sCAL) PNGARG((png_structp png_ptr,
02359 png_infop info_ptr, int unit, double width, double height));
02360 #else
02361 #ifdef PNG_FIXED_POINT_SUPPORTED
02362 extern PNG_EXPORT(void,png_set_sCAL_s) PNGARG((png_structp png_ptr,
02363 png_infop info_ptr, int unit, png_charp swidth, png_charp sheight));
02364 #endif
02365 #endif
02366 #endif
02367
02368 #if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
02369
02370
02371
02372
02373
02374
02375
02376
02377
02378 extern PNG_EXPORT(void, png_set_keep_unknown_chunks) PNGARG((png_structp
02379 png_ptr, int keep, png_bytep chunk_list, int num_chunks));
02380 extern PNG_EXPORT(void, png_set_unknown_chunks) PNGARG((png_structp png_ptr,
02381 png_infop info_ptr, png_unknown_chunkp unknowns, int num_unknowns));
02382 extern PNG_EXPORT(void, png_set_unknown_chunk_location)
02383 PNGARG((png_structp png_ptr, png_infop info_ptr, int chunk, int location));
02384 extern PNG_EXPORT(png_uint_32,png_get_unknown_chunks) PNGARG((png_structp
02385 png_ptr, png_infop info_ptr, png_unknown_chunkpp entries));
02386 #endif
02387 #ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
02388 PNG_EXPORT(int,png_handle_as_unknown) PNGARG((png_structp png_ptr, png_bytep
02389 chunk_name));
02390 #endif
02391
02392
02393
02394
02395 extern PNG_EXPORT(void, png_set_invalid) PNGARG((png_structp png_ptr,
02396 png_infop info_ptr, int mask));
02397
02398 #if defined(PNG_INFO_IMAGE_SUPPORTED)
02399
02400 extern PNG_EXPORT(void, png_read_png) PNGARG((png_structp png_ptr,
02401 png_infop info_ptr,
02402 int transforms,
02403 png_voidp params));
02404 extern PNG_EXPORT(void, png_write_png) PNGARG((png_structp png_ptr,
02405 png_infop info_ptr,
02406 int transforms,
02407 png_voidp params));
02408 #endif
02409
02410
02411
02412
02413
02414
02415 #ifdef PNG_DEBUG
02416 #if (PNG_DEBUG > 0)
02417 #if !defined(PNG_DEBUG_FILE) && defined(_MSC_VER)
02418 #include <crtdbg.h>
02419 #if (PNG_DEBUG > 1)
02420 #define png_debug(l,m) _RPT0(_CRT_WARN,m)
02421 #define png_debug1(l,m,p1) _RPT1(_CRT_WARN,m,p1)
02422 #define png_debug2(l,m,p1,p2) _RPT2(_CRT_WARN,m,p1,p2)
02423 #endif
02424 #else
02425 #ifndef PNG_DEBUG_FILE
02426 #define PNG_DEBUG_FILE stderr
02427 #endif
02428 #if (PNG_DEBUG > 1)
02429 #define png_debug(l,m) \
02430 { \
02431 int num_tabs=l; \
02432 fprintf(PNG_DEBUG_FILE,"%s"m,(num_tabs==1 ? "\t" : \
02433 (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":"")))); \
02434 }
02435 #define png_debug1(l,m,p1) \
02436 { \
02437 int num_tabs=l; \
02438 fprintf(PNG_DEBUG_FILE,"%s"m,(num_tabs==1 ? "\t" : \
02439 (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))),p1); \
02440 }
02441 #define png_debug2(l,m,p1,p2) \
02442 { \
02443 int num_tabs=l; \
02444 fprintf(PNG_DEBUG_FILE,"%s"m,(num_tabs==1 ? "\t" : \
02445 (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))),p1,p2); \
02446 }
02447 #endif
02448 #endif
02449 #endif
02450 #endif
02451 #ifndef png_debug
02452 #define png_debug(l, m)
02453 #endif
02454 #ifndef png_debug1
02455 #define png_debug1(l, m, p1)
02456 #endif
02457 #ifndef png_debug2
02458 #define png_debug2(l, m, p1, p2)
02459 #endif
02460
02461 #if 0
02462 extern PNG_EXPORT(png_bytep,png_sig_bytes) PNGARG((void));
02463 #endif
02464
02465 extern PNG_EXPORT(png_charp,png_get_copyright) PNGARG((png_structp png_ptr));
02466 extern PNG_EXPORT(png_charp,png_get_header_ver) PNGARG((png_structp png_ptr));
02467 extern PNG_EXPORT(png_charp,png_get_header_version) PNGARG((png_structp png_ptr));
02468 extern PNG_EXPORT(png_charp,png_get_libpng_ver) PNGARG((png_structp png_ptr));
02469
02470 #ifdef PNG_MNG_FEATURES_SUPPORTED
02471 extern PNG_EXPORT(png_uint_32,png_permit_mng_features) PNGARG((png_structp
02472 png_ptr, png_uint_32 mng_features_permitted));
02473 #endif
02474
02475
02476 #define PNG_HANDLE_CHUNK_AS_DEFAULT 0
02477 #define PNG_HANDLE_CHUNK_NEVER 1
02478 #define PNG_HANDLE_CHUNK_IF_SAFE 2
02479 #define PNG_HANDLE_CHUNK_ALWAYS 3
02480
02481
02482 #if defined(PNG_ASSEMBLER_CODE_SUPPORTED)
02483 #define PNG_ASM_FLAG_MMX_SUPPORT_COMPILED 0x01
02484 #define PNG_ASM_FLAG_MMX_SUPPORT_IN_CPU 0x02
02485 #define PNG_ASM_FLAG_MMX_READ_COMBINE_ROW 0x04
02486 #define PNG_ASM_FLAG_MMX_READ_INTERLACE 0x08
02487 #define PNG_ASM_FLAG_MMX_READ_FILTER_SUB 0x10
02488 #define PNG_ASM_FLAG_MMX_READ_FILTER_UP 0x20
02489 #define PNG_ASM_FLAG_MMX_READ_FILTER_AVG 0x40
02490 #define PNG_ASM_FLAG_MMX_READ_FILTER_PAETH 0x80
02491 #define PNG_ASM_FLAGS_INITIALIZED 0x80000000
02492
02493 #define PNG_MMX_READ_FLAGS ( PNG_ASM_FLAG_MMX_READ_COMBINE_ROW \
02494 | PNG_ASM_FLAG_MMX_READ_INTERLACE \
02495 | PNG_ASM_FLAG_MMX_READ_FILTER_SUB \
02496 | PNG_ASM_FLAG_MMX_READ_FILTER_UP \
02497 | PNG_ASM_FLAG_MMX_READ_FILTER_AVG \
02498 | PNG_ASM_FLAG_MMX_READ_FILTER_PAETH )
02499 #define PNG_MMX_WRITE_FLAGS ( 0 )
02500
02501 #define PNG_MMX_FLAGS ( PNG_ASM_FLAG_MMX_SUPPORT_COMPILED \
02502 | PNG_ASM_FLAG_MMX_SUPPORT_IN_CPU \
02503 | PNG_MMX_READ_FLAGS \
02504 | PNG_MMX_WRITE_FLAGS )
02505
02506 #define PNG_SELECT_READ 1
02507 #define PNG_SELECT_WRITE 2
02508
02509 #if !defined(PNG_1_0_X)
02510
02511 extern PNG_EXPORT(png_uint_32,png_get_mmx_flagmask)
02512 PNGARG((int flag_select, int *compilerID));
02513
02514
02515 extern PNG_EXPORT(png_uint_32,png_get_asm_flagmask)
02516 PNGARG((int flag_select));
02517
02518
02519 extern PNG_EXPORT(png_uint_32,png_get_asm_flags)
02520 PNGARG((png_structp png_ptr));
02521
02522
02523 extern PNG_EXPORT(png_byte,png_get_mmx_bitdepth_threshold)
02524 PNGARG((png_structp png_ptr));
02525
02526
02527 extern PNG_EXPORT(png_uint_32,png_get_mmx_rowbytes_threshold)
02528 PNGARG((png_structp png_ptr));
02529
02530
02531 extern PNG_EXPORT(void,png_set_asm_flags)
02532 PNGARG((png_structp png_ptr, png_uint_32 asm_flags));
02533
02534
02535 extern PNG_EXPORT(void,png_set_mmx_thresholds)
02536 PNGARG((png_structp png_ptr, png_byte mmx_bitdepth_threshold,
02537 png_uint_32 mmx_rowbytes_threshold));
02538
02539 #endif
02540 #endif
02541
02542 #if !defined(PNG_1_0_X)
02543
02544 extern PNG_EXPORT(int,png_mmx_support) PNGARG((void));
02545
02546
02547
02548 #ifdef PNG_ERROR_NUMBERS_SUPPORTED
02549 extern PNG_EXPORT(void,png_set_strip_error_numbers) PNGARG((png_structp
02550 png_ptr, png_uint_32 strip_mode));
02551 #endif
02552
02553 #endif
02554
02555
02556 #ifdef PNG_SET_USER_LIMITS_SUPPORTED
02557 extern PNG_EXPORT(void,png_set_user_limits) PNGARG((png_structp
02558 png_ptr, png_uint_32 user_width_max, png_uint_32 user_height_max));
02559 extern PNG_EXPORT(png_uint_32,png_get_user_width_max) PNGARG((png_structp
02560 png_ptr));
02561 extern PNG_EXPORT(png_uint_32,png_get_user_height_max) PNGARG((png_structp
02562 png_ptr));
02563 #endif
02564
02565
02566
02567 #ifdef PNG_READ_COMPOSITE_NODIV_SUPPORTED
02568
02569
02570
02571
02572
02573
02574
02575
02576
02577
02578
02579
02580
02581
02582 # define png_composite(composite, fg, alpha, bg) \
02583 { png_uint_16 temp = (png_uint_16)((png_uint_16)(fg) * (png_uint_16)(alpha) \
02584 + (png_uint_16)(bg)*(png_uint_16)(255 - \
02585 (png_uint_16)(alpha)) + (png_uint_16)128); \
02586 (composite) = (png_byte)((temp + (temp >> 8)) >> 8); }
02587
02588 # define png_composite_16(composite, fg, alpha, bg) \
02589 { png_uint_32 temp = (png_uint_32)((png_uint_32)(fg) * (png_uint_32)(alpha) \
02590 + (png_uint_32)(bg)*(png_uint_32)(65535L - \
02591 (png_uint_32)(alpha)) + (png_uint_32)32768L); \
02592 (composite) = (png_uint_16)((temp + (temp >> 16)) >> 16); }
02593
02594 #else
02595
02596 # define png_composite(composite, fg, alpha, bg) \
02597 (composite) = (png_byte)(((png_uint_16)(fg) * (png_uint_16)(alpha) + \
02598 (png_uint_16)(bg) * (png_uint_16)(255 - (png_uint_16)(alpha)) + \
02599 (png_uint_16)127) / 255)
02600
02601 # define png_composite_16(composite, fg, alpha, bg) \
02602 (composite) = (png_uint_16)(((png_uint_32)(fg) * (png_uint_32)(alpha) + \
02603 (png_uint_32)(bg)*(png_uint_32)(65535L - (png_uint_32)(alpha)) + \
02604 (png_uint_32)32767) / (png_uint_32)65535L)
02605
02606 #endif
02607
02608
02609
02610
02611
02612
02613
02614
02615
02616 #if defined(PNG_READ_BIG_ENDIAN_SUPPORTED)
02617 # define png_get_uint_32(buf) ( *((png_uint_32p) (buf)))
02618 # define png_get_uint_16(buf) ( *((png_uint_16p) (buf)))
02619 # define png_get_int_32(buf) ( *((png_int_32p) (buf)))
02620 #else
02621 extern PNG_EXPORT(png_uint_32,png_get_uint_32) PNGARG((png_bytep buf));
02622 extern PNG_EXPORT(png_uint_16,png_get_uint_16) PNGARG((png_bytep buf));
02623 extern PNG_EXPORT(png_int_32,png_get_int_32) PNGARG((png_bytep buf));
02624 #endif
02625 extern PNG_EXPORT(png_uint_32,png_get_uint_31)
02626 PNGARG((png_structp png_ptr, png_bytep buf));
02627
02628
02629
02630
02631 extern PNG_EXPORT(void,png_save_uint_32)
02632 PNGARG((png_bytep buf, png_uint_32 i));
02633 extern PNG_EXPORT(void,png_save_int_32)
02634 PNGARG((png_bytep buf, png_int_32 i));
02635
02636
02637
02638
02639
02640 extern PNG_EXPORT(void,png_save_uint_16)
02641 PNGARG((png_bytep buf, unsigned int i));
02642
02643
02644
02645
02646
02647
02648
02649
02650
02651
02652 #if defined(PNG_INTERNAL)
02653
02654
02655
02656
02657 #define PNG_HAVE_IHDR 0x01
02658 #define PNG_HAVE_PLTE 0x02
02659 #define PNG_HAVE_IDAT 0x04
02660 #define PNG_AFTER_IDAT 0x08
02661 #define PNG_HAVE_IEND 0x10
02662 #define PNG_HAVE_gAMA 0x20
02663 #define PNG_HAVE_cHRM 0x40
02664 #define PNG_HAVE_sRGB 0x80
02665 #define PNG_HAVE_CHUNK_HEADER 0x100
02666 #define PNG_WROTE_tIME 0x200
02667 #define PNG_WROTE_INFO_BEFORE_PLTE 0x400
02668 #define PNG_BACKGROUND_IS_GRAY 0x800
02669 #define PNG_HAVE_PNG_SIGNATURE 0x1000
02670 #define PNG_HAVE_CHUNK_AFTER_IDAT 0x2000
02671
02672
02673 #define PNG_BGR 0x0001
02674 #define PNG_INTERLACE 0x0002
02675 #define PNG_PACK 0x0004
02676 #define PNG_SHIFT 0x0008
02677 #define PNG_SWAP_BYTES 0x0010
02678 #define PNG_INVERT_MONO 0x0020
02679 #define PNG_DITHER 0x0040
02680 #define PNG_BACKGROUND 0x0080
02681 #define PNG_BACKGROUND_EXPAND 0x0100
02682
02683 #define PNG_16_TO_8 0x0400
02684 #define PNG_RGBA 0x0800
02685 #define PNG_EXPAND 0x1000
02686 #define PNG_GAMMA 0x2000
02687 #define PNG_GRAY_TO_RGB 0x4000
02688 #define PNG_FILLER 0x8000L
02689 #define PNG_PACKSWAP 0x10000L
02690 #define PNG_SWAP_ALPHA 0x20000L
02691 #define PNG_STRIP_ALPHA 0x40000L
02692 #define PNG_INVERT_ALPHA 0x80000L
02693 #define PNG_USER_TRANSFORM 0x100000L
02694 #define PNG_RGB_TO_GRAY_ERR 0x200000L
02695 #define PNG_RGB_TO_GRAY_WARN 0x400000L
02696 #define PNG_RGB_TO_GRAY 0x600000L
02697
02698 #define PNG_ADD_ALPHA 0x1000000L
02699 #define PNG_EXPAND_tRNS 0x2000000L
02700
02701
02702
02703
02704
02705
02706
02707 #define PNG_STRUCT_PNG 0x0001
02708 #define PNG_STRUCT_INFO 0x0002
02709
02710
02711 #define PNG_WEIGHT_SHIFT 8
02712 #define PNG_WEIGHT_FACTOR (1<<(PNG_WEIGHT_SHIFT))
02713 #define PNG_COST_SHIFT 3
02714 #define PNG_COST_FACTOR (1<<(PNG_COST_SHIFT))
02715
02716
02717 #define PNG_FLAG_ZLIB_CUSTOM_STRATEGY 0x0001
02718 #define PNG_FLAG_ZLIB_CUSTOM_LEVEL 0x0002
02719 #define PNG_FLAG_ZLIB_CUSTOM_MEM_LEVEL 0x0004
02720 #define PNG_FLAG_ZLIB_CUSTOM_WINDOW_BITS 0x0008
02721 #define PNG_FLAG_ZLIB_CUSTOM_METHOD 0x0010
02722 #define PNG_FLAG_ZLIB_FINISHED 0x0020
02723 #define PNG_FLAG_ROW_INIT 0x0040
02724 #define PNG_FLAG_FILLER_AFTER 0x0080
02725 #define PNG_FLAG_CRC_ANCILLARY_USE 0x0100
02726 #define PNG_FLAG_CRC_ANCILLARY_NOWARN 0x0200
02727 #define PNG_FLAG_CRC_CRITICAL_USE 0x0400
02728 #define PNG_FLAG_CRC_CRITICAL_IGNORE 0x0800
02729 #define PNG_FLAG_FREE_PLTE 0x1000
02730 #define PNG_FLAG_FREE_TRNS 0x2000
02731 #define PNG_FLAG_FREE_HIST 0x4000
02732 #define PNG_FLAG_KEEP_UNKNOWN_CHUNKS 0x8000L
02733 #define PNG_FLAG_KEEP_UNSAFE_CHUNKS 0x10000L
02734 #define PNG_FLAG_LIBRARY_MISMATCH 0x20000L
02735 #define PNG_FLAG_STRIP_ERROR_NUMBERS 0x40000L
02736 #define PNG_FLAG_STRIP_ERROR_TEXT 0x80000L
02737 #define PNG_FLAG_MALLOC_NULL_MEM_OK 0x100000L
02738 #define PNG_FLAG_ADD_ALPHA 0x200000L
02739 #define PNG_FLAG_STRIP_ALPHA 0x400000L
02740
02741
02742
02743
02744
02745
02746
02747
02748
02749 #define PNG_FLAG_CRC_ANCILLARY_MASK (PNG_FLAG_CRC_ANCILLARY_USE | \
02750 PNG_FLAG_CRC_ANCILLARY_NOWARN)
02751
02752 #define PNG_FLAG_CRC_CRITICAL_MASK (PNG_FLAG_CRC_CRITICAL_USE | \
02753 PNG_FLAG_CRC_CRITICAL_IGNORE)
02754
02755 #define PNG_FLAG_CRC_MASK (PNG_FLAG_CRC_ANCILLARY_MASK | \
02756 PNG_FLAG_CRC_CRITICAL_MASK)
02757
02758
02759
02760 #define PNG_COLOR_DIST(c1, c2) (abs((int)((c1).red) - (int)((c2).red)) + \
02761 abs((int)((c1).green) - (int)((c2).green)) + \
02762 abs((int)((c1).blue) - (int)((c2).blue)))
02763
02764
02765 #define PNG_ROWBYTES(pixel_bits, width) \
02766 ((pixel_bits) >= 8 ? \
02767 ((width) * (((png_uint_32)(pixel_bits)) >> 3)) : \
02768 (( ((width) * ((png_uint_32)(pixel_bits))) + 7) >> 3) )
02769
02770
02771
02772
02773
02774 #define PNG_OUT_OF_RANGE(value, ideal, delta) \
02775 ( (value) < (ideal)-(delta) || (value) > (ideal)+(delta) )
02776
02777
02778 #if !defined(PNG_NO_EXTERN) || defined(PNG_ALWAYS_EXTERN)
02779
02780 #ifdef PNG_USE_GLOBAL_ARRAYS
02781 PNG_EXPORT_VAR (const png_byte FARDATA) png_sig[8];
02782 #else
02783 #if 0
02784 #define png_sig png_sig_bytes(NULL)
02785 #endif
02786 #endif
02787 #endif
02788
02789
02790
02791
02792
02793 #define PNG_IHDR const png_byte png_IHDR[5] = { 73, 72, 68, 82, '\0'}
02794 #define PNG_IDAT const png_byte png_IDAT[5] = { 73, 68, 65, 84, '\0'}
02795 #define PNG_IEND const png_byte png_IEND[5] = { 73, 69, 78, 68, '\0'}
02796 #define PNG_PLTE const png_byte png_PLTE[5] = { 80, 76, 84, 69, '\0'}
02797 #define PNG_bKGD const png_byte png_bKGD[5] = { 98, 75, 71, 68, '\0'}
02798 #define PNG_cHRM const png_byte png_cHRM[5] = { 99, 72, 82, 77, '\0'}
02799 #define PNG_gAMA const png_byte png_gAMA[5] = {103, 65, 77, 65, '\0'}
02800 #define PNG_hIST const png_byte png_hIST[5] = {104, 73, 83, 84, '\0'}
02801 #define PNG_iCCP const png_byte png_iCCP[5] = {105, 67, 67, 80, '\0'}
02802 #define PNG_iTXt const png_byte png_iTXt[5] = {105, 84, 88, 116, '\0'}
02803 #define PNG_oFFs const png_byte png_oFFs[5] = {111, 70, 70, 115, '\0'}
02804 #define PNG_pCAL const png_byte png_pCAL[5] = {112, 67, 65, 76, '\0'}
02805 #define PNG_sCAL const png_byte png_sCAL[5] = {115, 67, 65, 76, '\0'}
02806 #define PNG_pHYs const png_byte png_pHYs[5] = {112, 72, 89, 115, '\0'}
02807 #define PNG_sBIT const png_byte png_sBIT[5] = {115, 66, 73, 84, '\0'}
02808 #define PNG_sPLT const png_byte png_sPLT[5] = {115, 80, 76, 84, '\0'}
02809 #define PNG_sRGB const png_byte png_sRGB[5] = {115, 82, 71, 66, '\0'}
02810 #define PNG_tEXt const png_byte png_tEXt[5] = {116, 69, 88, 116, '\0'}
02811 #define PNG_tIME const png_byte png_tIME[5] = {116, 73, 77, 69, '\0'}
02812 #define PNG_tRNS const png_byte png_tRNS[5] = {116, 82, 78, 83, '\0'}
02813 #define PNG_zTXt const png_byte png_zTXt[5] = {122, 84, 88, 116, '\0'}
02814
02815 #ifdef PNG_USE_GLOBAL_ARRAYS
02816 PNG_EXPORT_VAR (const png_byte FARDATA) png_IHDR[5];
02817 PNG_EXPORT_VAR (const png_byte FARDATA) png_IDAT[5];
02818 PNG_EXPORT_VAR (const png_byte FARDATA) png_IEND[5];
02819 PNG_EXPORT_VAR (const png_byte FARDATA) png_PLTE[5];
02820 PNG_EXPORT_VAR (const png_byte FARDATA) png_bKGD[5];
02821 PNG_EXPORT_VAR (const png_byte FARDATA) png_cHRM[5];
02822 PNG_EXPORT_VAR (const png_byte FARDATA) png_gAMA[5];
02823 PNG_EXPORT_VAR (const png_byte FARDATA) png_hIST[5];
02824 PNG_EXPORT_VAR (const png_byte FARDATA) png_iCCP[5];
02825 PNG_EXPORT_VAR (const png_byte FARDATA) png_iTXt[5];
02826 PNG_EXPORT_VAR (const png_byte FARDATA) png_oFFs[5];
02827 PNG_EXPORT_VAR (const png_byte FARDATA) png_pCAL[5];
02828 PNG_EXPORT_VAR (const png_byte FARDATA) png_sCAL[5];
02829 PNG_EXPORT_VAR (const png_byte FARDATA) png_pHYs[5];
02830 PNG_EXPORT_VAR (const png_byte FARDATA) png_sBIT[5];
02831 PNG_EXPORT_VAR (const png_byte FARDATA) png_sPLT[5];
02832 PNG_EXPORT_VAR (const png_byte FARDATA) png_sRGB[5];
02833 PNG_EXPORT_VAR (const png_byte FARDATA) png_tEXt[5];
02834 PNG_EXPORT_VAR (const png_byte FARDATA) png_tIME[5];
02835 PNG_EXPORT_VAR (const png_byte FARDATA) png_tRNS[5];
02836 PNG_EXPORT_VAR (const png_byte FARDATA) png_zTXt[5];
02837 #endif
02838
02839 #if defined(PNG_1_0_X) || defined (PNG_1_2_X)
02840
02841
02842
02843 extern PNG_EXPORT(void,png_read_init) PNGARG((png_structp png_ptr));
02844 #undef png_read_init
02845 #define png_read_init(png_ptr) png_read_init_3(&png_ptr, \
02846 PNG_LIBPNG_VER_STRING, png_sizeof(png_struct));
02847 #endif
02848
02849 extern PNG_EXPORT(void,png_read_init_3) PNGARG((png_structpp ptr_ptr,
02850 png_const_charp user_png_ver, png_size_t png_struct_size));
02851 #if defined(PNG_1_0_X) || defined (PNG_1_2_X)
02852 extern PNG_EXPORT(void,png_read_init_2) PNGARG((png_structp png_ptr,
02853 png_const_charp user_png_ver, png_size_t png_struct_size, png_size_t
02854 png_info_size));
02855 #endif
02856
02857 #if defined(PNG_1_0_X) || defined (PNG_1_2_X)
02858
02859
02860
02861 extern PNG_EXPORT(void,png_write_init) PNGARG((png_structp png_ptr));
02862 #undef png_write_init
02863 #define png_write_init(png_ptr) png_write_init_3(&png_ptr, \
02864 PNG_LIBPNG_VER_STRING, png_sizeof(png_struct));
02865 #endif
02866
02867 extern PNG_EXPORT(void,png_write_init_3) PNGARG((png_structpp ptr_ptr,
02868 png_const_charp user_png_ver, png_size_t png_struct_size));
02869 extern PNG_EXPORT(void,png_write_init_2) PNGARG((png_structp png_ptr,
02870 png_const_charp user_png_ver, png_size_t png_struct_size, png_size_t
02871 png_info_size));
02872
02873
02874 PNG_EXTERN png_voidp png_create_struct PNGARG((int type));
02875
02876
02877 PNG_EXTERN void png_destroy_struct PNGARG((png_voidp struct_ptr));
02878
02879 PNG_EXTERN png_voidp png_create_struct_2 PNGARG((int type, png_malloc_ptr
02880 malloc_fn, png_voidp mem_ptr));
02881 PNG_EXTERN void png_destroy_struct_2 PNGARG((png_voidp struct_ptr,
02882 png_free_ptr free_fn, png_voidp mem_ptr));
02883
02884
02885 PNG_EXTERN void png_info_destroy PNGARG((png_structp png_ptr,
02886 png_infop info_ptr));
02887
02888 #ifndef PNG_1_0_X
02889
02890 PNG_EXTERN voidpf png_zalloc PNGARG((voidpf png_ptr, uInt items, uInt size));
02891
02892
02893 PNG_EXTERN void png_zfree PNGARG((voidpf png_ptr, voidpf ptr));
02894
02895 #ifdef PNG_SIZE_T
02896
02897 PNG_EXTERN png_size_t PNGAPI png_convert_size PNGARG((size_t size));
02898 #endif
02899
02900
02901
02902
02903 PNG_EXTERN void PNGAPI png_default_read_data PNGARG((png_structp png_ptr,
02904 png_bytep data, png_size_t length));
02905
02906 #ifdef PNG_PROGRESSIVE_READ_SUPPORTED
02907 PNG_EXTERN void PNGAPI png_push_fill_buffer PNGARG((png_structp png_ptr,
02908 png_bytep buffer, png_size_t length));
02909 #endif
02910
02911 PNG_EXTERN void PNGAPI png_default_write_data PNGARG((png_structp png_ptr,
02912 png_bytep data, png_size_t length));
02913
02914 #if defined(PNG_WRITE_FLUSH_SUPPORTED)
02915 #if !defined(PNG_NO_STDIO)
02916 PNG_EXTERN void PNGAPI png_default_flush PNGARG((png_structp png_ptr));
02917 #endif
02918 #endif
02919 #else
02920 #ifdef PNG_PROGRESSIVE_READ_SUPPORTED
02921 PNG_EXTERN void png_push_fill_buffer PNGARG((png_structp png_ptr,
02922 png_bytep buffer, png_size_t length));
02923 #endif
02924 #endif
02925
02926
02927 PNG_EXTERN void png_reset_crc PNGARG((png_structp png_ptr));
02928
02929
02930 PNG_EXTERN void png_write_data PNGARG((png_structp png_ptr, png_bytep data,
02931 png_size_t length));
02932
02933
02934 PNG_EXTERN void png_read_data PNGARG((png_structp png_ptr, png_bytep data,
02935 png_size_t length));
02936
02937
02938 PNG_EXTERN void png_crc_read PNGARG((png_structp png_ptr, png_bytep buf,
02939 png_size_t length));
02940
02941
02942 #if defined(PNG_zTXt_SUPPORTED) || defined(PNG_iTXt_SUPPORTED) || \
02943 defined(PNG_iCCP_SUPPORTED) || defined(PNG_sPLT_SUPPORTED)
02944 PNG_EXTERN png_charp png_decompress_chunk PNGARG((png_structp png_ptr,
02945 int comp_type, png_charp chunkdata, png_size_t chunklength,
02946 png_size_t prefix_length, png_size_t *data_length));
02947 #endif
02948
02949
02950 PNG_EXTERN int png_crc_finish PNGARG((png_structp png_ptr, png_uint_32 skip));
02951
02952
02953 PNG_EXTERN int png_crc_error PNGARG((png_structp png_ptr));
02954
02955
02956
02957
02958
02959 PNG_EXTERN void png_calculate_crc PNGARG((png_structp png_ptr, png_bytep ptr,
02960 png_size_t length));
02961
02962 #if defined(PNG_WRITE_FLUSH_SUPPORTED)
02963 PNG_EXTERN void png_flush PNGARG((png_structp png_ptr));
02964 #endif
02965
02966
02967 PNG_EXTERN void png_write_sig PNGARG((png_structp png_ptr));
02968
02969
02970
02971
02972
02973
02974 PNG_EXTERN void png_write_IHDR PNGARG((png_structp png_ptr, png_uint_32 width,
02975 png_uint_32 height,
02976 int bit_depth, int color_type, int compression_method, int filter_method,
02977 int interlace_method));
02978
02979 PNG_EXTERN void png_write_PLTE PNGARG((png_structp png_ptr, png_colorp palette,
02980 png_uint_32 num_pal));
02981
02982 PNG_EXTERN void png_write_IDAT PNGARG((png_structp png_ptr, png_bytep data,
02983 png_size_t length));
02984
02985 PNG_EXTERN void png_write_IEND PNGARG((png_structp png_ptr));
02986
02987 #if defined(PNG_WRITE_gAMA_SUPPORTED)
02988 #ifdef PNG_FLOATING_POINT_SUPPORTED
02989 PNG_EXTERN void png_write_gAMA PNGARG((png_structp png_ptr, double file_gamma));
02990 #endif
02991 #ifdef PNG_FIXED_POINT_SUPPORTED
02992 PNG_EXTERN void png_write_gAMA_fixed PNGARG((png_structp png_ptr, png_fixed_point
02993 file_gamma));
02994 #endif
02995 #endif
02996
02997 #if defined(PNG_WRITE_sBIT_SUPPORTED)
02998 PNG_EXTERN void png_write_sBIT PNGARG((png_structp png_ptr, png_color_8p sbit,
02999 int color_type));
03000 #endif
03001
03002 #if defined(PNG_WRITE_cHRM_SUPPORTED)
03003 #ifdef PNG_FLOATING_POINT_SUPPORTED
03004 PNG_EXTERN void png_write_cHRM PNGARG((png_structp png_ptr,
03005 double white_x, double white_y,
03006 double red_x, double red_y, double green_x, double green_y,
03007 double blue_x, double blue_y));
03008 #endif
03009 #ifdef PNG_FIXED_POINT_SUPPORTED
03010 PNG_EXTERN void png_write_cHRM_fixed PNGARG((png_structp png_ptr,
03011 png_fixed_point int_white_x, png_fixed_point int_white_y,
03012 png_fixed_point int_red_x, png_fixed_point int_red_y, png_fixed_point
03013 int_green_x, png_fixed_point int_green_y, png_fixed_point int_blue_x,
03014 png_fixed_point int_blue_y));
03015 #endif
03016 #endif
03017
03018 #if defined(PNG_WRITE_sRGB_SUPPORTED)
03019 PNG_EXTERN void png_write_sRGB PNGARG((png_structp png_ptr,
03020 int intent));
03021 #endif
03022
03023 #if defined(PNG_WRITE_iCCP_SUPPORTED)
03024 PNG_EXTERN void png_write_iCCP PNGARG((png_structp png_ptr,
03025 png_charp name, int compression_type,
03026 png_charp profile, int proflen));
03027
03028 #endif
03029
03030 #if defined(PNG_WRITE_sPLT_SUPPORTED)
03031 PNG_EXTERN void png_write_sPLT PNGARG((png_structp png_ptr,
03032 png_sPLT_tp palette));
03033 #endif
03034
03035 #if defined(PNG_WRITE_tRNS_SUPPORTED)
03036 PNG_EXTERN void png_write_tRNS PNGARG((png_structp png_ptr, png_bytep trans,
03037 png_color_16p values, int number, int color_type));
03038 #endif
03039
03040 #if defined(PNG_WRITE_bKGD_SUPPORTED)
03041 PNG_EXTERN void png_write_bKGD PNGARG((png_structp png_ptr,
03042 png_color_16p values, int color_type));
03043 #endif
03044
03045 #if defined(PNG_WRITE_hIST_SUPPORTED)
03046 PNG_EXTERN void png_write_hIST PNGARG((png_structp png_ptr, png_uint_16p hist,
03047 int num_hist));
03048 #endif
03049
03050 #if defined(PNG_WRITE_TEXT_SUPPORTED) || defined(PNG_WRITE_pCAL_SUPPORTED) || \
03051 defined(PNG_WRITE_iCCP_SUPPORTED) || defined(PNG_WRITE_sPLT_SUPPORTED)
03052 PNG_EXTERN png_size_t png_check_keyword PNGARG((png_structp png_ptr,
03053 png_charp key, png_charpp new_key));
03054 #endif
03055
03056 #if defined(PNG_WRITE_tEXt_SUPPORTED)
03057 PNG_EXTERN void png_write_tEXt PNGARG((png_structp png_ptr, png_charp key,
03058 png_charp text, png_size_t text_len));
03059 #endif
03060
03061 #if defined(PNG_WRITE_zTXt_SUPPORTED)
03062 PNG_EXTERN void png_write_zTXt PNGARG((png_structp png_ptr, png_charp key,
03063 png_charp text, png_size_t text_len, int compression));
03064 #endif
03065
03066 #if defined(PNG_WRITE_iTXt_SUPPORTED)
03067 PNG_EXTERN void png_write_iTXt PNGARG((png_structp png_ptr,
03068 int compression, png_charp key, png_charp lang, png_charp lang_key,
03069 png_charp text));
03070 #endif
03071
03072 #if defined(PNG_TEXT_SUPPORTED)
03073 PNG_EXTERN int png_set_text_2 PNGARG((png_structp png_ptr,
03074 png_infop info_ptr, png_textp text_ptr, int num_text));
03075 #endif
03076
03077 #if defined(PNG_WRITE_oFFs_SUPPORTED)
03078 PNG_EXTERN void png_write_oFFs PNGARG((png_structp png_ptr,
03079 png_int_32 x_offset, png_int_32 y_offset, int unit_type));
03080 #endif
03081
03082 #if defined(PNG_WRITE_pCAL_SUPPORTED)
03083 PNG_EXTERN void png_write_pCAL PNGARG((png_structp png_ptr, png_charp purpose,
03084 png_int_32 X0, png_int_32 X1, int type, int nparams,
03085 png_charp units, png_charpp params));
03086 #endif
03087
03088 #if defined(PNG_WRITE_pHYs_SUPPORTED)
03089 PNG_EXTERN void png_write_pHYs PNGARG((png_structp png_ptr,
03090 png_uint_32 x_pixels_per_unit, png_uint_32 y_pixels_per_unit,
03091 int unit_type));
03092 #endif
03093
03094 #if defined(PNG_WRITE_tIME_SUPPORTED)
03095 PNG_EXTERN void png_write_tIME PNGARG((png_structp png_ptr,
03096 png_timep mod_time));
03097 #endif
03098
03099 #if defined(PNG_WRITE_sCAL_SUPPORTED)
03100 #if defined(PNG_FLOATING_POINT_SUPPORTED) && !defined(PNG_NO_STDIO)
03101 PNG_EXTERN void png_write_sCAL PNGARG((png_structp png_ptr,
03102 int unit, double width, double height));
03103 #else
03104 #ifdef PNG_FIXED_POINT_SUPPORTED
03105 PNG_EXTERN void png_write_sCAL_s PNGARG((png_structp png_ptr,
03106 int unit, png_charp width, png_charp height));
03107 #endif
03108 #endif
03109 #endif
03110
03111
03112 PNG_EXTERN void png_write_finish_row PNGARG((png_structp png_ptr));
03113
03114
03115 PNG_EXTERN void png_write_start_row PNGARG((png_structp png_ptr));
03116
03117 #if defined(PNG_READ_GAMMA_SUPPORTED)
03118 PNG_EXTERN void png_build_gamma_table PNGARG((png_structp png_ptr));
03119 #endif
03120
03121
03122 PNG_EXTERN void png_combine_row PNGARG((png_structp png_ptr, png_bytep row,
03123 int mask));
03124
03125 #if defined(PNG_READ_INTERLACING_SUPPORTED)
03126
03127
03128
03129
03130
03131 PNG_EXTERN void png_do_read_interlace PNGARG((png_structp png_ptr));
03132 #endif
03133
03134
03135
03136 #if defined(PNG_WRITE_INTERLACING_SUPPORTED)
03137
03138 PNG_EXTERN void png_do_write_interlace PNGARG((png_row_infop row_info,
03139 png_bytep row, int pass));
03140 #endif
03141
03142
03143 PNG_EXTERN void png_read_filter_row PNGARG((png_structp png_ptr,
03144 png_row_infop row_info, png_bytep row, png_bytep prev_row, int filter));
03145
03146
03147 PNG_EXTERN void png_write_find_filter PNGARG((png_structp png_ptr,
03148 png_row_infop row_info));
03149
03150
03151 PNG_EXTERN void png_write_filtered_row PNGARG((png_structp png_ptr,
03152 png_bytep filtered_row));
03153
03154 PNG_EXTERN void png_read_finish_row PNGARG((png_structp png_ptr));
03155
03156
03157 PNG_EXTERN void png_read_start_row PNGARG((png_structp png_ptr));
03158
03159 PNG_EXTERN void png_read_transform_info PNGARG((png_structp png_ptr,
03160 png_infop info_ptr));
03161
03162
03163 #if defined(PNG_READ_FILLER_SUPPORTED)
03164 PNG_EXTERN void png_do_read_filler PNGARG((png_row_infop row_info,
03165 png_bytep row, png_uint_32 filler, png_uint_32 flags));
03166 #endif
03167
03168 #if defined(PNG_READ_SWAP_ALPHA_SUPPORTED)
03169 PNG_EXTERN void png_do_read_swap_alpha PNGARG((png_row_infop row_info,
03170 png_bytep row));
03171 #endif
03172
03173 #if defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED)
03174 PNG_EXTERN void png_do_write_swap_alpha PNGARG((png_row_infop row_info,
03175 png_bytep row));
03176 #endif
03177
03178 #if defined(PNG_READ_INVERT_ALPHA_SUPPORTED)
03179 PNG_EXTERN void png_do_read_invert_alpha PNGARG((png_row_infop row_info,
03180 png_bytep row));
03181 #endif
03182
03183 #if defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED)
03184 PNG_EXTERN void png_do_write_invert_alpha PNGARG((png_row_infop row_info,
03185 png_bytep row));
03186 #endif
03187
03188 #if defined(PNG_WRITE_FILLER_SUPPORTED) || \
03189 defined(PNG_READ_STRIP_ALPHA_SUPPORTED)
03190 PNG_EXTERN void png_do_strip_filler PNGARG((png_row_infop row_info,
03191 png_bytep row, png_uint_32 flags));
03192 #endif
03193
03194 #if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED)
03195 PNG_EXTERN void png_do_swap PNGARG((png_row_infop row_info, png_bytep row));
03196 #endif
03197
03198 #if defined(PNG_READ_PACKSWAP_SUPPORTED) || defined(PNG_WRITE_PACKSWAP_SUPPORTED)
03199 PNG_EXTERN void png_do_packswap PNGARG((png_row_infop row_info, png_bytep row));
03200 #endif
03201
03202 #if defined(PNG_READ_RGB_TO_GRAY_SUPPORTED)
03203 PNG_EXTERN int png_do_rgb_to_gray PNGARG((png_structp png_ptr, png_row_infop
03204 row_info, png_bytep row));
03205 #endif
03206
03207 #if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED)
03208 PNG_EXTERN void png_do_gray_to_rgb PNGARG((png_row_infop row_info,
03209 png_bytep row));
03210 #endif
03211
03212 #if defined(PNG_READ_PACK_SUPPORTED)
03213 PNG_EXTERN void png_do_unpack PNGARG((png_row_infop row_info, png_bytep row));
03214 #endif
03215
03216 #if defined(PNG_READ_SHIFT_SUPPORTED)
03217 PNG_EXTERN void png_do_unshift PNGARG((png_row_infop row_info, png_bytep row,
03218 png_color_8p sig_bits));
03219 #endif
03220
03221 #if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED)
03222 PNG_EXTERN void png_do_invert PNGARG((png_row_infop row_info, png_bytep row));
03223 #endif
03224
03225 #if defined(PNG_READ_16_TO_8_SUPPORTED)
03226 PNG_EXTERN void png_do_chop PNGARG((png_row_infop row_info, png_bytep row));
03227 #endif
03228
03229 #if defined(PNG_READ_DITHER_SUPPORTED)
03230 PNG_EXTERN void png_do_dither PNGARG((png_row_infop row_info,
03231 png_bytep row, png_bytep palette_lookup, png_bytep dither_lookup));
03232
03233 # if defined(PNG_CORRECT_PALETTE_SUPPORTED)
03234 PNG_EXTERN void png_correct_palette PNGARG((png_structp png_ptr,
03235 png_colorp palette, int num_palette));
03236 # endif
03237 #endif
03238
03239 #if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED)
03240 PNG_EXTERN void png_do_bgr PNGARG((png_row_infop row_info, png_bytep row));
03241 #endif
03242
03243 #if defined(PNG_WRITE_PACK_SUPPORTED)
03244 PNG_EXTERN void png_do_pack PNGARG((png_row_infop row_info,
03245 png_bytep row, png_uint_32 bit_depth));
03246 #endif
03247
03248 #if defined(PNG_WRITE_SHIFT_SUPPORTED)
03249 PNG_EXTERN void png_do_shift PNGARG((png_row_infop row_info, png_bytep row,
03250 png_color_8p bit_depth));
03251 #endif
03252
03253 #if defined(PNG_READ_BACKGROUND_SUPPORTED)
03254 #if defined(PNG_READ_GAMMA_SUPPORTED)
03255 PNG_EXTERN void png_do_background PNGARG((png_row_infop row_info, png_bytep row,
03256 png_color_16p trans_values, png_color_16p background,
03257 png_color_16p background_1,
03258 png_bytep gamma_table, png_bytep gamma_from_1, png_bytep gamma_to_1,
03259 png_uint_16pp gamma_16, png_uint_16pp gamma_16_from_1,
03260 png_uint_16pp gamma_16_to_1, int gamma_shift));
03261 #else
03262 PNG_EXTERN void png_do_background PNGARG((png_row_infop row_info, png_bytep row,
03263 png_color_16p trans_values, png_color_16p background));
03264 #endif
03265 #endif
03266
03267 #if defined(PNG_READ_GAMMA_SUPPORTED)
03268 PNG_EXTERN void png_do_gamma PNGARG((png_row_infop row_info, png_bytep row,
03269 png_bytep gamma_table, png_uint_16pp gamma_16_table,
03270 int gamma_shift));
03271 #endif
03272
03273 #if defined(PNG_READ_EXPAND_SUPPORTED)
03274 PNG_EXTERN void png_do_expand_palette PNGARG((png_row_infop row_info,
03275 png_bytep row, png_colorp palette, png_bytep trans, int num_trans));
03276 PNG_EXTERN void png_do_expand PNGARG((png_row_infop row_info,
03277 png_bytep row, png_color_16p trans_value));
03278 #endif
03279
03280
03281
03282
03283
03284
03285 PNG_EXTERN void png_handle_IHDR PNGARG((png_structp png_ptr, png_infop info_ptr,
03286 png_uint_32 length));
03287 PNG_EXTERN void png_handle_PLTE PNGARG((png_structp png_ptr, png_infop info_ptr,
03288 png_uint_32 length));
03289 PNG_EXTERN void png_handle_IEND PNGARG((png_structp png_ptr, png_infop info_ptr,
03290 png_uint_32 length));
03291
03292 #if defined(PNG_READ_bKGD_SUPPORTED)
03293 PNG_EXTERN void png_handle_bKGD PNGARG((png_structp png_ptr, png_infop info_ptr,
03294 png_uint_32 length));
03295 #endif
03296
03297 #if defined(PNG_READ_cHRM_SUPPORTED)
03298 PNG_EXTERN void png_handle_cHRM PNGARG((png_structp png_ptr, png_infop info_ptr,
03299 png_uint_32 length));
03300 #endif
03301
03302 #if defined(PNG_READ_gAMA_SUPPORTED)
03303 PNG_EXTERN void png_handle_gAMA PNGARG((png_structp png_ptr, png_infop info_ptr,
03304 png_uint_32 length));
03305 #endif
03306
03307 #if defined(PNG_READ_hIST_SUPPORTED)
03308 PNG_EXTERN void png_handle_hIST PNGARG((png_structp png_ptr, png_infop info_ptr,
03309 png_uint_32 length));
03310 #endif
03311
03312 #if defined(PNG_READ_iCCP_SUPPORTED)
03313 extern void png_handle_iCCP PNGARG((png_structp png_ptr, png_infop info_ptr,
03314 png_uint_32 length));
03315 #endif
03316
03317 #if defined(PNG_READ_iTXt_SUPPORTED)
03318 PNG_EXTERN void png_handle_iTXt PNGARG((png_structp png_ptr, png_infop info_ptr,
03319 png_uint_32 length));
03320 #endif
03321
03322 #if defined(PNG_READ_oFFs_SUPPORTED)
03323 PNG_EXTERN void png_handle_oFFs PNGARG((png_structp png_ptr, png_infop info_ptr,
03324 png_uint_32 length));
03325 #endif
03326
03327 #if defined(PNG_READ_pCAL_SUPPORTED)
03328 PNG_EXTERN void png_handle_pCAL PNGARG((png_structp png_ptr, png_infop info_ptr,
03329 png_uint_32 length));
03330 #endif
03331
03332 #if defined(PNG_READ_pHYs_SUPPORTED)
03333 PNG_EXTERN void png_handle_pHYs PNGARG((png_structp png_ptr, png_infop info_ptr,
03334 png_uint_32 length));
03335 #endif
03336
03337 #if defined(PNG_READ_sBIT_SUPPORTED)
03338 PNG_EXTERN void png_handle_sBIT PNGARG((png_structp png_ptr, png_infop info_ptr,
03339 png_uint_32 length));
03340 #endif
03341
03342 #if defined(PNG_READ_sCAL_SUPPORTED)
03343 PNG_EXTERN void png_handle_sCAL PNGARG((png_structp png_ptr, png_infop info_ptr,
03344 png_uint_32 length));
03345 #endif
03346
03347 #if defined(PNG_READ_sPLT_SUPPORTED)
03348 extern void png_handle_sPLT PNGARG((png_structp png_ptr, png_infop info_ptr,
03349 png_uint_32 length));
03350 #endif
03351
03352 #if defined(PNG_READ_sRGB_SUPPORTED)
03353 PNG_EXTERN void png_handle_sRGB PNGARG((png_structp png_ptr, png_infop info_ptr,
03354 png_uint_32 length));
03355 #endif
03356
03357 #if defined(PNG_READ_tEXt_SUPPORTED)
03358 PNG_EXTERN void png_handle_tEXt PNGARG((png_structp png_ptr, png_infop info_ptr,
03359 png_uint_32 length));
03360 #endif
03361
03362 #if defined(PNG_READ_tIME_SUPPORTED)
03363 PNG_EXTERN void png_handle_tIME PNGARG((png_structp png_ptr, png_infop info_ptr,
03364 png_uint_32 length));
03365 #endif
03366
03367 #if defined(PNG_READ_tRNS_SUPPORTED)
03368 PNG_EXTERN void png_handle_tRNS PNGARG((png_structp png_ptr, png_infop info_ptr,
03369 png_uint_32 length));
03370 #endif
03371
03372 #if defined(PNG_READ_zTXt_SUPPORTED)
03373 PNG_EXTERN void png_handle_zTXt PNGARG((png_structp png_ptr, png_infop info_ptr,
03374 png_uint_32 length));
03375 #endif
03376
03377 PNG_EXTERN void png_handle_unknown PNGARG((png_structp png_ptr,
03378 png_infop info_ptr, png_uint_32 length));
03379
03380 PNG_EXTERN void png_check_chunk_name PNGARG((png_structp png_ptr,
03381 png_bytep chunk_name));
03382
03383
03384 PNG_EXTERN void png_do_read_transformations PNGARG((png_structp png_ptr));
03385 PNG_EXTERN void png_do_write_transformations PNGARG((png_structp png_ptr));
03386
03387 PNG_EXTERN void png_init_read_transformations PNGARG((png_structp png_ptr));
03388
03389 #ifdef PNG_PROGRESSIVE_READ_SUPPORTED
03390 PNG_EXTERN void png_push_read_chunk PNGARG((png_structp png_ptr,
03391 png_infop info_ptr));
03392 PNG_EXTERN void png_push_read_sig PNGARG((png_structp png_ptr,
03393 png_infop info_ptr));
03394 PNG_EXTERN void png_push_check_crc PNGARG((png_structp png_ptr));
03395 PNG_EXTERN void png_push_crc_skip PNGARG((png_structp png_ptr,
03396 png_uint_32 length));
03397 PNG_EXTERN void png_push_crc_finish PNGARG((png_structp png_ptr));
03398 PNG_EXTERN void png_push_save_buffer PNGARG((png_structp png_ptr));
03399 PNG_EXTERN void png_push_restore_buffer PNGARG((png_structp png_ptr,
03400 png_bytep buffer, png_size_t buffer_length));
03401 PNG_EXTERN void png_push_read_IDAT PNGARG((png_structp png_ptr));
03402 PNG_EXTERN void png_process_IDAT_data PNGARG((png_structp png_ptr,
03403 png_bytep buffer, png_size_t buffer_length));
03404 PNG_EXTERN void png_push_process_row PNGARG((png_structp png_ptr));
03405 PNG_EXTERN void png_push_handle_unknown PNGARG((png_structp png_ptr,
03406 png_infop info_ptr, png_uint_32 length));
03407 PNG_EXTERN void png_push_have_info PNGARG((png_structp png_ptr,
03408 png_infop info_ptr));
03409 PNG_EXTERN void png_push_have_end PNGARG((png_structp png_ptr,
03410 png_infop info_ptr));
03411 PNG_EXTERN void png_push_have_row PNGARG((png_structp png_ptr, png_bytep row));
03412 PNG_EXTERN void png_push_read_end PNGARG((png_structp png_ptr,
03413 png_infop info_ptr));
03414 PNG_EXTERN void png_process_some_data PNGARG((png_structp png_ptr,
03415 png_infop info_ptr));
03416 PNG_EXTERN void png_read_push_finish_row PNGARG((png_structp png_ptr));
03417 #if defined(PNG_READ_tEXt_SUPPORTED)
03418 PNG_EXTERN void png_push_handle_tEXt PNGARG((png_structp png_ptr,
03419 png_infop info_ptr, png_uint_32 length));
03420 PNG_EXTERN void png_push_read_tEXt PNGARG((png_structp png_ptr,
03421 png_infop info_ptr));
03422 #endif
03423 #if defined(PNG_READ_zTXt_SUPPORTED)
03424 PNG_EXTERN void png_push_handle_zTXt PNGARG((png_structp png_ptr,
03425 png_infop info_ptr, png_uint_32 length));
03426 PNG_EXTERN void png_push_read_zTXt PNGARG((png_structp png_ptr,
03427 png_infop info_ptr));
03428 #endif
03429 #if defined(PNG_READ_iTXt_SUPPORTED)
03430 PNG_EXTERN void png_push_handle_iTXt PNGARG((png_structp png_ptr,
03431 png_infop info_ptr, png_uint_32 length));
03432 PNG_EXTERN void png_push_read_iTXt PNGARG((png_structp png_ptr,
03433 png_infop info_ptr));
03434 #endif
03435
03436 #endif
03437
03438 #ifdef PNG_MNG_FEATURES_SUPPORTED
03439 PNG_EXTERN void png_do_read_intrapixel PNGARG((png_row_infop row_info,
03440 png_bytep row));
03441 PNG_EXTERN void png_do_write_intrapixel PNGARG((png_row_infop row_info,
03442 png_bytep row));
03443 #endif
03444
03445 #if defined(PNG_ASSEMBLER_CODE_SUPPORTED)
03446
03447 PNG_EXTERN void png_init_mmx_flags PNGARG((png_structp png_ptr));
03448 #endif
03449
03450 #if defined(PNG_INCH_CONVERSIONS) && defined(PNG_FLOATING_POINT_SUPPORTED)
03451 PNG_EXTERN png_uint_32 png_get_pixels_per_inch PNGARG((png_structp png_ptr,
03452 png_infop info_ptr));
03453
03454 PNG_EXTERN png_uint_32 png_get_x_pixels_per_inch PNGARG((png_structp png_ptr,
03455 png_infop info_ptr));
03456
03457 PNG_EXTERN png_uint_32 png_get_y_pixels_per_inch PNGARG((png_structp png_ptr,
03458 png_infop info_ptr));
03459
03460 PNG_EXTERN float png_get_x_offset_inches PNGARG((png_structp png_ptr,
03461 png_infop info_ptr));
03462
03463 PNG_EXTERN float png_get_y_offset_inches PNGARG((png_structp png_ptr,
03464 png_infop info_ptr));
03465
03466 #if defined(PNG_pHYs_SUPPORTED)
03467 PNG_EXTERN png_uint_32 png_get_pHYs_dpi PNGARG((png_structp png_ptr,
03468 png_infop info_ptr, png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type));
03469 #endif
03470 #endif
03471
03472
03473
03474 #endif
03475
03476 #ifdef __cplusplus
03477 }
03478 #endif
03479
03480 #endif
03481
03482 #endif