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