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 #ifndef _PNG_H
00196 #define _PNG_H
00197
00198
00199
00200
00201
00202
00203
00204
00205 #include "zlib.h"
00206
00207
00208 #include "pngconf.h"
00209
00210
00211 #ifdef __cplusplus
00212 extern "C" {
00213 #endif
00214
00215
00216
00217
00218
00219
00220
00221
00222 #define PNG_LIBPNG_VER_STRING "1.0.5"
00223
00224
00225
00226
00227
00228
00229 #define PNG_LIBPNG_VER 10005
00230
00231
00232
00233
00234 #if !defined(PNG_NO_EXTERN) || defined(PNG_ALWAYS_EXTERN)
00235
00236
00237
00238 extern char png_libpng_ver[12];
00239
00240
00241 extern int FARDATA png_pass_start[7];
00242 extern int FARDATA png_pass_inc[7];
00243 extern int FARDATA png_pass_ystart[7];
00244 extern int FARDATA png_pass_yinc[7];
00245 extern int FARDATA png_pass_mask[7];
00246 extern int FARDATA png_pass_dsp_mask[7];
00247
00248
00249
00250
00251
00252 #endif
00253
00254
00255
00256
00257
00258 typedef struct png_color_struct
00259 {
00260 png_byte red;
00261 png_byte green;
00262 png_byte blue;
00263 } png_color;
00264 typedef png_color FAR * png_colorp;
00265 typedef png_color FAR * FAR * png_colorpp;
00266
00267 typedef struct png_color_16_struct
00268 {
00269 png_byte index;
00270 png_uint_16 red;
00271 png_uint_16 green;
00272 png_uint_16 blue;
00273 png_uint_16 gray;
00274 } png_color_16;
00275 typedef png_color_16 FAR * png_color_16p;
00276 typedef png_color_16 FAR * FAR * png_color_16pp;
00277
00278 typedef struct png_color_8_struct
00279 {
00280 png_byte red;
00281 png_byte green;
00282 png_byte blue;
00283 png_byte gray;
00284 png_byte alpha;
00285 } png_color_8;
00286 typedef png_color_8 FAR * png_color_8p;
00287 typedef png_color_8 FAR * FAR * png_color_8pp;
00288
00289
00290
00291 typedef struct png_text_struct
00292 {
00293 int compression;
00294 png_charp key;
00295 png_charp text;
00296 png_size_t text_length;
00297 } png_text;
00298 typedef png_text FAR * png_textp;
00299 typedef png_text FAR * FAR * png_textpp;
00300
00301
00302
00303 #define PNG_TEXT_COMPRESSION_NONE_WR -3
00304 #define PNG_TEXT_COMPRESSION_zTXt_WR -2
00305 #define PNG_TEXT_COMPRESSION_NONE -1
00306 #define PNG_TEXT_COMPRESSION_zTXt 0
00307 #define PNG_TEXT_COMPRESSION_LAST 1
00308
00309
00310
00311
00312
00313
00314
00315 typedef struct png_time_struct
00316 {
00317 png_uint_16 year;
00318 png_byte month;
00319 png_byte day;
00320 png_byte hour;
00321 png_byte minute;
00322 png_byte second;
00323 } png_time;
00324 typedef png_time FAR * png_timep;
00325 typedef png_time FAR * FAR * png_timepp;
00326
00327
00328
00329
00330
00331
00332
00333
00334
00335
00336
00337
00338
00339
00340
00341
00342
00343
00344
00345
00346
00347
00348 typedef struct png_info_struct
00349 {
00350
00351 png_uint_32 width;
00352 png_uint_32 height;
00353 png_uint_32 valid;
00354 png_uint_32 rowbytes;
00355 png_colorp palette;
00356 png_uint_16 num_palette;
00357 png_uint_16 num_trans;
00358 png_byte bit_depth;
00359 png_byte color_type;
00360 png_byte compression_type;
00361 png_byte filter_type;
00362 png_byte interlace_type;
00363
00364
00365 png_byte channels;
00366 png_byte pixel_depth;
00367 png_byte spare_byte;
00368 png_byte signature[8];
00369
00370
00371
00372
00373
00374
00375
00376 #if defined(PNG_READ_gAMA_SUPPORTED) || defined(PNG_WRITE_gAMA_SUPPORTED) || \
00377 defined(PNG_READ_GAMMA_SUPPORTED)
00378
00379
00380
00381
00382 float gamma;
00383 #endif
00384
00385 #if defined(PNG_READ_sRGB_SUPPORTED) || defined(PNG_WRITE_sRGB_SUPPORTED)
00386
00387
00388 png_byte srgb_intent;
00389 #endif
00390
00391 #if defined(PNG_READ_tEXt_SUPPORTED) || defined(PNG_WRITE_tEXt_SUPPORTED) || \
00392 defined(PNG_READ_zTXt_SUPPORTED) || defined(PNG_WRITE_zTXt_SUPPORTED)
00393
00394
00395
00396
00397
00398
00399
00400 int num_text;
00401 int max_text;
00402 png_textp text;
00403 #endif
00404 #if defined(PNG_READ_tIME_SUPPORTED) || defined(PNG_WRITE_tIME_SUPPORTED)
00405
00406
00407
00408 png_time mod_time;
00409 #endif
00410 #if defined(PNG_READ_sBIT_SUPPORTED) || defined(PNG_WRITE_sBIT_SUPPORTED)
00411
00412
00413
00414
00415
00416
00417 png_color_8 sig_bit;
00418 #endif
00419 #if defined(PNG_READ_tRNS_SUPPORTED) || defined(PNG_WRITE_tRNS_SUPPORTED) || \
00420 defined(PNG_READ_EXPAND_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
00421
00422
00423
00424
00425
00426
00427
00428
00429
00430 png_bytep trans;
00431 png_color_16 trans_values;
00432 #endif
00433 #if defined(PNG_READ_bKGD_SUPPORTED) || defined(PNG_WRITE_bKGD_SUPPORTED) || \
00434 defined(PNG_READ_BACKGROUND_SUPPORTED)
00435
00436
00437
00438
00439
00440
00441 png_color_16 background;
00442 #endif
00443 #if defined(PNG_READ_oFFs_SUPPORTED) || defined(PNG_WRITE_oFFs_SUPPORTED)
00444
00445
00446
00447
00448
00449 png_uint_32 x_offset;
00450 png_uint_32 y_offset;
00451 png_byte offset_unit_type;
00452 #endif
00453 #if defined(PNG_READ_pHYs_SUPPORTED) || defined(PNG_WRITE_pHYs_SUPPORTED)
00454
00455
00456
00457
00458 png_uint_32 x_pixels_per_unit;
00459 png_uint_32 y_pixels_per_unit;
00460 png_byte phys_unit_type;
00461 #endif
00462 #if defined(PNG_READ_hIST_SUPPORTED) || defined(PNG_WRITE_hIST_SUPPORTED)
00463
00464
00465
00466
00467
00468
00469 png_uint_16p hist;
00470 #endif
00471 #if defined(PNG_READ_cHRM_SUPPORTED) || defined(PNG_WRITE_cHRM_SUPPORTED)
00472
00473
00474
00475
00476
00477
00478 float x_white;
00479 float y_white;
00480 float x_red;
00481 float y_red;
00482 float x_green;
00483 float y_green;
00484 float x_blue;
00485 float y_blue;
00486 #endif
00487 #if defined(PNG_READ_pCAL_SUPPORTED) || defined(PNG_WRITE_pCAL_SUPPORTED)
00488
00489
00490
00491
00492
00493
00494
00495
00496
00497
00498
00499
00500 png_charp pcal_purpose;
00501 png_int_32 pcal_X0;
00502 png_int_32 pcal_X1;
00503 png_charp pcal_units;
00504 png_charpp pcal_params;
00505 png_byte pcal_type;
00506 png_byte pcal_nparams;
00507 #endif
00508 } png_info;
00509 typedef png_info FAR * png_infop;
00510 typedef png_info FAR * FAR * png_infopp;
00511
00512
00513 #define PNG_MAX_UINT ((png_uint_32)0x7fffffffL)
00514
00515
00516
00517 #define PNG_COLOR_MASK_PALETTE 1
00518 #define PNG_COLOR_MASK_COLOR 2
00519 #define PNG_COLOR_MASK_ALPHA 4
00520
00521
00522 #define PNG_COLOR_TYPE_GRAY 0
00523 #define PNG_COLOR_TYPE_PALETTE (PNG_COLOR_MASK_COLOR | PNG_COLOR_MASK_PALETTE)
00524 #define PNG_COLOR_TYPE_RGB (PNG_COLOR_MASK_COLOR)
00525 #define PNG_COLOR_TYPE_RGB_ALPHA (PNG_COLOR_MASK_COLOR | PNG_COLOR_MASK_ALPHA)
00526 #define PNG_COLOR_TYPE_GRAY_ALPHA (PNG_COLOR_MASK_ALPHA)
00527
00528
00529 #define PNG_COMPRESSION_TYPE_BASE 0
00530 #define PNG_COMPRESSION_TYPE_DEFAULT PNG_COMPRESSION_TYPE_BASE
00531
00532
00533 #define PNG_FILTER_TYPE_BASE 0
00534 #define PNG_FILTER_TYPE_DEFAULT PNG_FILTER_TYPE_BASE
00535
00536
00537 #define PNG_INTERLACE_NONE 0
00538 #define PNG_INTERLACE_ADAM7 1
00539 #define PNG_INTERLACE_LAST 2
00540
00541
00542 #define PNG_OFFSET_PIXEL 0
00543 #define PNG_OFFSET_MICROMETER 1
00544 #define PNG_OFFSET_LAST 2
00545
00546
00547 #define PNG_EQUATION_LINEAR 0
00548 #define PNG_EQUATION_BASE_E 1
00549 #define PNG_EQUATION_ARBITRARY 2
00550 #define PNG_EQUATION_HYPERBOLIC 3
00551 #define PNG_EQUATION_LAST 4
00552
00553
00554 #define PNG_RESOLUTION_UNKNOWN 0
00555 #define PNG_RESOLUTION_METER 1
00556 #define PNG_RESOLUTION_LAST 2
00557
00558
00559 #define PNG_sRGB_INTENT_SATURATION 0
00560 #define PNG_sRGB_INTENT_PERCEPTUAL 1
00561 #define PNG_sRGB_INTENT_ABSOLUTE 2
00562 #define PNG_sRGB_INTENT_RELATIVE 3
00563 #define PNG_sRGB_INTENT_LAST 4
00564
00565
00566
00567
00568
00569
00570
00571
00572 #define PNG_INFO_gAMA 0x0001
00573 #define PNG_INFO_sBIT 0x0002
00574 #define PNG_INFO_cHRM 0x0004
00575 #define PNG_INFO_PLTE 0x0008
00576 #define PNG_INFO_tRNS 0x0010
00577 #define PNG_INFO_bKGD 0x0020
00578 #define PNG_INFO_hIST 0x0040
00579 #define PNG_INFO_pHYs 0x0080
00580 #define PNG_INFO_oFFs 0x0100
00581 #define PNG_INFO_tIME 0x0200
00582 #define PNG_INFO_pCAL 0x0400
00583 #define PNG_INFO_sRGB 0x0800
00584
00585
00586
00587
00588
00589 typedef struct png_row_info_struct
00590 {
00591 png_uint_32 width;
00592 png_uint_32 rowbytes;
00593 png_byte color_type;
00594 png_byte bit_depth;
00595 png_byte channels;
00596 png_byte pixel_depth;
00597 } png_row_info;
00598
00599 typedef png_row_info FAR * png_row_infop;
00600 typedef png_row_info FAR * FAR * png_row_infopp;
00601
00602
00603
00604
00605
00606
00607
00608 typedef struct png_struct_def png_struct;
00609 typedef png_struct FAR * png_structp;
00610
00611 typedef void (*png_error_ptr) PNGARG((png_structp, png_const_charp));
00612 typedef void (*png_rw_ptr) PNGARG((png_structp, png_bytep, png_size_t));
00613 typedef void (*png_flush_ptr) PNGARG((png_structp));
00614 typedef void (*png_read_status_ptr) PNGARG((png_structp, png_uint_32, int));
00615 typedef void (*png_write_status_ptr) PNGARG((png_structp, png_uint_32, int));
00616 #ifdef PNG_PROGRESSIVE_READ_SUPPORTED
00617 typedef void (*png_progressive_info_ptr) PNGARG((png_structp, png_infop));
00618 typedef void (*png_progressive_end_ptr) PNGARG((png_structp, png_infop));
00619 typedef void (*png_progressive_row_ptr) PNGARG((png_structp, png_bytep,
00620 png_uint_32, int));
00621 #endif
00622
00623 #if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \
00624 defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
00625 typedef void (*png_user_transform_ptr) PNGARG((png_structp,
00626 png_row_infop, png_bytep));
00627 #endif
00628
00629 typedef png_voidp (*png_malloc_ptr) PNGARG((png_structp, png_size_t));
00630 typedef void (*png_free_ptr) PNGARG((png_structp, png_voidp));
00631
00632
00633
00634
00635
00636
00637
00638
00639 struct png_struct_def
00640 {
00641 jmp_buf jmpbuf;
00642
00643 png_error_ptr error_fn;
00644 png_error_ptr warning_fn;
00645 png_voidp error_ptr;
00646 png_rw_ptr write_data_fn;
00647 png_rw_ptr read_data_fn;
00648 png_voidp io_ptr;
00649 #if defined(PNG_READ_USER_TRANSFORM_SUPPORTED)
00650 png_user_transform_ptr read_user_transform_fn;
00651 #endif
00652 #if defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
00653 png_user_transform_ptr write_user_transform_fn;
00654 #endif
00655 #if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \
00656 defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
00657 png_voidp user_transform_ptr;
00658 png_byte user_transform_depth;
00659 png_byte user_transform_channels;
00660 #endif
00661
00662 png_uint_32 mode;
00663 png_uint_32 flags;
00664 png_uint_32 transformations;
00665
00666 z_stream zstream;
00667 png_bytep zbuf;
00668 png_size_t zbuf_size;
00669 int zlib_level;
00670 int zlib_method;
00671 int zlib_window_bits;
00672 int zlib_mem_level;
00673 int zlib_strategy;
00674
00675 png_uint_32 width;
00676 png_uint_32 height;
00677 png_uint_32 num_rows;
00678 png_uint_32 usr_width;
00679 png_uint_32 rowbytes;
00680 png_uint_32 irowbytes;
00681 png_uint_32 iwidth;
00682 png_uint_32 row_number;
00683 png_bytep prev_row;
00684 png_bytep row_buf;
00685 png_bytep sub_row;
00686 png_bytep up_row;
00687 png_bytep avg_row;
00688 png_bytep paeth_row;
00689 png_row_info row_info;
00690
00691 png_uint_32 idat_size;
00692 png_uint_32 crc;
00693 png_colorp palette;
00694 png_uint_16 num_palette;
00695 png_uint_16 num_trans;
00696 png_byte chunk_name[5];
00697 png_byte compression;
00698 png_byte filter;
00699 png_byte interlaced;
00700 png_byte pass;
00701 png_byte do_filter;
00702 png_byte color_type;
00703 png_byte bit_depth;
00704 png_byte usr_bit_depth;
00705 png_byte pixel_depth;
00706 png_byte channels;
00707 png_byte usr_channels;
00708 png_byte sig_bytes;
00709
00710 #if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED)
00711 png_uint_16 filler;
00712 #endif
00713 #if defined(PNG_READ_bKGD_SUPPORTED)
00714 png_byte background_gamma_type;
00715 float background_gamma;
00716 png_color_16 background;
00717 #if defined(PNG_READ_GAMMA_SUPPORTED)
00718 png_color_16 background_1;
00719 #endif
00720 #endif
00721 #if defined(PNG_WRITE_FLUSH_SUPPORTED)
00722 png_flush_ptr output_flush_fn;
00723 png_uint_32 flush_dist;
00724 png_uint_32 flush_rows;
00725 #endif
00726 #if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
00727 int gamma_shift;
00728 float gamma;
00729 float screen_gamma;
00730 #endif
00731 #if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
00732 png_bytep gamma_table;
00733 png_bytep gamma_from_1;
00734 png_bytep gamma_to_1;
00735 png_uint_16pp gamma_16_table;
00736 png_uint_16pp gamma_16_from_1;
00737 png_uint_16pp gamma_16_to_1;
00738 #endif
00739 #if defined(PNG_READ_GAMMA_SUPPORTED) || defined (PNG_READ_sBIT_SUPPORTED)
00740 png_color_8 sig_bit;
00741 #endif
00742 #if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED)
00743 png_color_8 shift;
00744 #endif
00745 #if defined(PNG_READ_tRNS_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) \
00746 || defined(PNG_READ_EXPAND_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
00747 png_bytep trans;
00748 png_color_16 trans_values;
00749 #endif
00750 png_read_status_ptr read_row_fn;
00751 png_write_status_ptr write_row_fn;
00752 #ifdef PNG_PROGRESSIVE_READ_SUPPORTED
00753 png_progressive_info_ptr info_fn;
00754 png_progressive_row_ptr row_fn;
00755 png_progressive_end_ptr end_fn;
00756 png_bytep save_buffer_ptr;
00757 png_bytep save_buffer;
00758 png_bytep current_buffer_ptr;
00759 png_bytep current_buffer;
00760 png_uint_32 push_length;
00761 png_uint_32 skip_length;
00762 png_size_t save_buffer_size;
00763 png_size_t save_buffer_max;
00764 png_size_t buffer_size;
00765 png_size_t current_buffer_size;
00766 int process_mode;
00767 int cur_palette;
00768 #if defined(PNG_READ_tEXt_SUPPORTED) || defined(PNG_READ_zTXt_SUPPORTED)
00769 png_size_t current_text_size;
00770 png_size_t current_text_left;
00771 png_charp current_text;
00772 png_charp current_text_ptr;
00773 #endif
00774 #endif
00775 #if defined(__TURBOC__) && !defined(_Windows) && !defined(__FLAT__)
00776
00777 png_bytepp offset_table_ptr;
00778 png_bytep offset_table;
00779 png_uint_16 offset_table_number;
00780 png_uint_16 offset_table_count;
00781 png_uint_16 offset_table_count_free;
00782 #endif
00783 #if defined(PNG_READ_DITHER_SUPPORTED)
00784 png_bytep palette_lookup;
00785 png_bytep dither_index;
00786 #endif
00787 #if defined(PNG_READ_DITHER_SUPPORTED) || defined(PNG_READ_hIST_SUPPORTED)
00788 png_uint_16p hist;
00789 #endif
00790 #if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED)
00791 png_byte heuristic_method;
00792 png_byte num_prev_filters;
00793 png_bytep prev_filters;
00794 png_uint_16p filter_weights;
00795 png_uint_16p inv_filter_weights;
00796 png_uint_16p filter_costs;
00797 png_uint_16p inv_filter_costs;
00798 #endif
00799 #if defined(PNG_TIME_RFC1123_SUPPORTED)
00800 png_charp time_buffer;
00801 #endif
00802 #ifdef PNG_USER_MEM_SUPPORTED
00803 png_voidp mem_ptr;
00804 png_malloc_ptr malloc_fn;
00805 png_free_ptr free_fn;
00806 #endif
00807 #if defined(PNG_READ_RGB_TO_GRAY_SUPPORTED)
00808 png_byte rgb_to_gray_status;
00809 png_byte rgb_to_gray_red_coeff;
00810 png_byte rgb_to_gray_green_coeff;
00811 png_byte rgb_to_gray_blue_coeff;
00812 #endif
00813 #if defined(PNG_READ_EMPTY_PLTE_SUPPORTED) || \
00814 defined(PNG_WRITE_EMPTY_PLTE_SUPPORTED)
00815 png_byte empty_plte_permitted;
00816 #endif
00817 };
00818
00819
00820
00821
00822 typedef png_structp version_1_0_5;
00823
00824 typedef png_struct FAR * FAR * png_structpp;
00825
00826
00827
00828
00829
00830
00831
00832
00833
00834
00835 extern PNG_EXPORT(void,png_set_sig_bytes) PNGARG((png_structp png_ptr,
00836 int num_bytes));
00837
00838
00839
00840
00841
00842
00843 extern PNG_EXPORT(int,png_sig_cmp) PNGARG((png_bytep sig, png_size_t start,
00844 png_size_t num_to_check));
00845
00846
00847
00848
00849 extern PNG_EXPORT(int,png_check_sig) PNGARG((png_bytep sig, int num));
00850
00851
00852 extern PNG_EXPORT(png_structp,png_create_read_struct)
00853 PNGARG((png_const_charp user_png_ver, png_voidp error_ptr,
00854 png_error_ptr error_fn, png_error_ptr warn_fn));
00855
00856
00857 extern PNG_EXPORT(png_structp,png_create_write_struct)
00858 PNGARG((png_const_charp user_png_ver, png_voidp error_ptr,
00859 png_error_ptr error_fn, png_error_ptr warn_fn));
00860
00861 #ifdef PNG_USER_MEM_SUPPORTED
00862 extern PNG_EXPORT(png_structp,png_create_read_struct_2)
00863 PNGARG((png_const_charp user_png_ver, png_voidp error_ptr,
00864 png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr,
00865 png_malloc_ptr malloc_fn, png_free_ptr free_fn));
00866 extern PNG_EXPORT(png_structp,png_create_write_struct_2)
00867 PNGARG((png_const_charp user_png_ver, png_voidp error_ptr,
00868 png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr,
00869 png_malloc_ptr malloc_fn, png_free_ptr free_fn));
00870 #endif
00871
00872
00873 extern PNG_EXPORT(void,png_write_chunk) PNGARG((png_structp png_ptr,
00874 png_bytep chunk_name, png_bytep data, png_size_t length));
00875
00876
00877 extern PNG_EXPORT(void,png_write_chunk_start) PNGARG((png_structp png_ptr,
00878 png_bytep chunk_name, png_uint_32 length));
00879
00880
00881 extern PNG_EXPORT(void,png_write_chunk_data) PNGARG((png_structp png_ptr,
00882 png_bytep data, png_size_t length));
00883
00884
00885 extern PNG_EXPORT(void,png_write_chunk_end) PNGARG((png_structp png_ptr));
00886
00887
00888 extern PNG_EXPORT(png_infop,png_create_info_struct)
00889 PNGARG((png_structp png_ptr));
00890
00891
00892 extern void png_info_init PNGARG((png_infop info_ptr));
00893
00894
00895 extern PNG_EXPORT(void,png_write_info) PNGARG((png_structp png_ptr,
00896 png_infop info_ptr));
00897
00898
00899 extern PNG_EXPORT(void,png_read_info) PNGARG((png_structp png_ptr,
00900 png_infop info_ptr));
00901
00902 #if defined(PNG_TIME_RFC1123_SUPPORTED)
00903 extern PNG_EXPORT(png_charp,png_convert_to_rfc1123)
00904 PNGARG((png_structp png_ptr, png_timep ptime));
00905 #endif
00906
00907 #if defined(PNG_WRITE_tIME_SUPPORTED)
00908
00909 extern PNG_EXPORT(void,png_convert_from_struct_tm) PNGARG((png_timep ptime,
00910 struct tm FAR * ttime));
00911
00912
00913 extern PNG_EXPORT(void,png_convert_from_time_t) PNGARG((png_timep ptime,
00914 time_t ttime));
00915 #endif
00916
00917 #if defined(PNG_READ_EXPAND_SUPPORTED)
00918
00919 extern PNG_EXPORT(void,png_set_expand) PNGARG((png_structp png_ptr));
00920 extern PNG_EXPORT(void,png_set_gray_1_2_4_to_8) PNGARG((png_structp png_ptr));
00921 extern PNG_EXPORT(void,png_set_palette_to_rgb) PNGARG((png_structp png_ptr));
00922 extern PNG_EXPORT(void,png_set_tRNS_to_alpha) PNGARG((png_structp png_ptr));
00923 #endif
00924
00925 #if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED)
00926
00927 extern PNG_EXPORT(void,png_set_bgr) PNGARG((png_structp png_ptr));
00928 #endif
00929
00930 #if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED)
00931
00932 extern PNG_EXPORT(void,png_set_gray_to_rgb) PNGARG((png_structp png_ptr));
00933 #endif
00934
00935 #if defined(PNG_READ_RGB_TO_GRAY_SUPPORTED)
00936
00937 extern PNG_EXPORT(void,png_set_rgb_to_gray) PNGARG((png_structp png_ptr,
00938 int error_action, double red, double green ));
00939 extern PNG_EXPORT(png_byte,png_get_rgb_to_gray_status) PNGARG((png_structp
00940 png_ptr));
00941 #endif
00942
00943 extern PNG_EXPORT(void,png_build_grayscale_palette) PNGARG((int bit_depth,
00944 png_colorp palette));
00945
00946 #if defined(PNG_READ_STRIP_ALPHA_SUPPORTED)
00947 extern PNG_EXPORT(void,png_set_strip_alpha) PNGARG((png_structp png_ptr));
00948 #endif
00949
00950 #if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) || \
00951 defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED)
00952 extern PNG_EXPORT(void,png_set_swap_alpha) PNGARG((png_structp png_ptr));
00953 #endif
00954
00955 #if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) || \
00956 defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED)
00957 extern PNG_EXPORT(void,png_set_invert_alpha) PNGARG((png_structp png_ptr));
00958 #endif
00959
00960 #if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED)
00961
00962 extern PNG_EXPORT(void,png_set_filler) PNGARG((png_structp png_ptr,
00963 png_uint_32 filler, int flags));
00964
00965
00966 #define PNG_FILLER_BEFORE 0
00967 #define PNG_FILLER_AFTER 1
00968 #endif
00969
00970 #if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED)
00971
00972 extern PNG_EXPORT(void,png_set_swap) PNGARG((png_structp png_ptr));
00973 #endif
00974
00975 #if defined(PNG_READ_PACK_SUPPORTED) || defined(PNG_WRITE_PACK_SUPPORTED)
00976
00977 extern PNG_EXPORT(void,png_set_packing) PNGARG((png_structp png_ptr));
00978 #endif
00979
00980 #if defined(PNG_READ_PACKSWAP_SUPPORTED) || defined(PNG_WRITE_PACKSWAP_SUPPORTED)
00981
00982 extern PNG_EXPORT(void,png_set_packswap) PNGARG((png_structp png_ptr));
00983 #endif
00984
00985 #if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED)
00986
00987 extern PNG_EXPORT(void,png_set_shift) PNGARG((png_structp png_ptr,
00988 png_color_8p true_bits));
00989 #endif
00990
00991 #if defined(PNG_READ_INTERLACING_SUPPORTED) || \
00992 defined(PNG_WRITE_INTERLACING_SUPPORTED)
00993
00994 extern PNG_EXPORT(int,png_set_interlace_handling) PNGARG((png_structp png_ptr));
00995 #endif
00996
00997 #if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED)
00998
00999 extern PNG_EXPORT(void,png_set_invert_mono) PNGARG((png_structp png_ptr));
01000 #endif
01001
01002 #if defined(PNG_READ_BACKGROUND_SUPPORTED)
01003
01004 extern PNG_EXPORT(void,png_set_background) PNGARG((png_structp png_ptr,
01005 png_color_16p background_color, int background_gamma_code,
01006 int need_expand, double background_gamma));
01007 #define PNG_BACKGROUND_GAMMA_UNKNOWN 0
01008 #define PNG_BACKGROUND_GAMMA_SCREEN 1
01009 #define PNG_BACKGROUND_GAMMA_FILE 2
01010 #define PNG_BACKGROUND_GAMMA_UNIQUE 3
01011 #endif
01012
01013 #if defined(PNG_READ_16_TO_8_SUPPORTED)
01014
01015 extern PNG_EXPORT(void,png_set_strip_16) PNGARG((png_structp png_ptr));
01016 #endif
01017
01018 #if defined(PNG_READ_DITHER_SUPPORTED)
01019
01020 extern PNG_EXPORT(void,png_set_dither) PNGARG((png_structp png_ptr,
01021 png_colorp palette, int num_palette, int maximum_colors,
01022 png_uint_16p histogram, int full_dither));
01023 #endif
01024
01025 #if defined(PNG_READ_GAMMA_SUPPORTED)
01026
01027 extern PNG_EXPORT(void,png_set_gamma) PNGARG((png_structp png_ptr,
01028 double screen_gamma, double default_file_gamma));
01029 #endif
01030
01031 #if defined(PNG_READ_EMPTY_PLTE_SUPPORTED) || \
01032 defined(PNG_WRITE_EMPTY_PLTE_SUPPORTED)
01033
01034 extern PNG_EXPORT(void,png_permit_empty_plte) PNGARG((png_structp png_ptr,
01035 int empty_plte_permitted));
01036 #endif
01037
01038 #if defined(PNG_WRITE_FLUSH_SUPPORTED)
01039
01040 extern PNG_EXPORT(void,png_set_flush) PNGARG((png_structp png_ptr, int nrows));
01041
01042
01043 extern PNG_EXPORT(void,png_write_flush) PNGARG((png_structp png_ptr));
01044 #endif
01045
01046
01047 extern PNG_EXPORT(void,png_start_read_image) PNGARG((png_structp png_ptr));
01048
01049
01050 extern PNG_EXPORT(void,png_read_update_info) PNGARG((png_structp png_ptr,
01051 png_infop info_ptr));
01052
01053
01054 extern PNG_EXPORT(void,png_read_rows) PNGARG((png_structp png_ptr,
01055 png_bytepp row, png_bytepp display_row, png_uint_32 num_rows));
01056
01057
01058 extern PNG_EXPORT(void,png_read_row) PNGARG((png_structp png_ptr,
01059 png_bytep row,
01060 png_bytep display_row));
01061
01062
01063 extern PNG_EXPORT(void,png_read_image) PNGARG((png_structp png_ptr,
01064 png_bytepp image));
01065
01066
01067 extern PNG_EXPORT(void,png_write_row) PNGARG((png_structp png_ptr,
01068 png_bytep row));
01069
01070
01071 extern PNG_EXPORT(void,png_write_rows) PNGARG((png_structp png_ptr,
01072 png_bytepp row, png_uint_32 num_rows));
01073
01074
01075 extern PNG_EXPORT(void,png_write_image) PNGARG((png_structp png_ptr,
01076 png_bytepp image));
01077
01078
01079 extern PNG_EXPORT(void,png_write_end) PNGARG((png_structp png_ptr,
01080 png_infop info_ptr));
01081
01082
01083 extern PNG_EXPORT(void,png_read_end) PNGARG((png_structp png_ptr,
01084 png_infop info_ptr));
01085
01086
01087 extern PNG_EXPORT(void,png_destroy_info_struct) PNGARG((png_structp png_ptr,
01088 png_infopp info_ptr_ptr));
01089
01090
01091 extern PNG_EXPORT(void,png_destroy_read_struct) PNGARG((png_structpp
01092 png_ptr_ptr, png_infopp info_ptr_ptr, png_infopp end_info_ptr_ptr));
01093
01094
01095 extern void png_read_destroy PNGARG((png_structp png_ptr, png_infop info_ptr,
01096 png_infop end_info_ptr));
01097
01098
01099 extern PNG_EXPORT(void,png_destroy_write_struct)
01100 PNGARG((png_structpp png_ptr_ptr, png_infopp info_ptr_ptr));
01101
01102
01103 extern void png_write_destroy_info PNGARG((png_infop info_ptr));
01104
01105
01106 extern void png_write_destroy PNGARG((png_structp png_ptr));
01107
01108
01109 extern PNG_EXPORT(void,png_set_crc_action) PNGARG((png_structp png_ptr,
01110 int crit_action, int ancil_action));
01111
01112
01113
01114
01115
01116
01117
01118
01119
01120
01121 #define PNG_CRC_DEFAULT 0
01122 #define PNG_CRC_ERROR_QUIT 1
01123 #define PNG_CRC_WARN_DISCARD 2
01124 #define PNG_CRC_WARN_USE 3
01125 #define PNG_CRC_QUIET_USE 4
01126 #define PNG_CRC_NO_CHANGE 5
01127
01128
01129
01130
01131
01132
01133
01134
01135
01136
01137
01138
01139 extern PNG_EXPORT(void,png_set_filter) PNGARG((png_structp png_ptr, int method,
01140 int filters));
01141
01142
01143
01144
01145
01146
01147 #define PNG_NO_FILTERS 0x00
01148 #define PNG_FILTER_NONE 0x08
01149 #define PNG_FILTER_SUB 0x10
01150 #define PNG_FILTER_UP 0x20
01151 #define PNG_FILTER_AVG 0x40
01152 #define PNG_FILTER_PAETH 0x80
01153 #define PNG_ALL_FILTERS (PNG_FILTER_NONE | PNG_FILTER_SUB | PNG_FILTER_UP | \
01154 PNG_FILTER_AVG | PNG_FILTER_PAETH)
01155
01156
01157
01158
01159 #define PNG_FILTER_VALUE_NONE 0
01160 #define PNG_FILTER_VALUE_SUB 1
01161 #define PNG_FILTER_VALUE_UP 2
01162 #define PNG_FILTER_VALUE_AVG 3
01163 #define PNG_FILTER_VALUE_PAETH 4
01164 #define PNG_FILTER_VALUE_LAST 5
01165
01166 #if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED)
01167
01168
01169
01170
01171
01172
01173
01174
01175
01176
01177
01178
01179
01180
01181
01182
01183
01184
01185
01186
01187
01188
01189
01190
01191
01192
01193
01194
01195 extern PNG_EXPORT(void,png_set_filter_heuristics) PNGARG((png_structp png_ptr,
01196 int heuristic_method, int num_weights, png_doublep filter_weights,
01197 png_doublep filter_costs));
01198 #endif
01199
01200
01201
01202
01203 #define PNG_FILTER_HEURISTIC_DEFAULT 0
01204 #define PNG_FILTER_HEURISTIC_UNWEIGHTED 1
01205 #define PNG_FILTER_HEURISTIC_WEIGHTED 2
01206 #define PNG_FILTER_HEURISTIC_LAST 3
01207
01208
01209
01210
01211
01212
01213
01214
01215 extern PNG_EXPORT(void,png_set_compression_level) PNGARG((png_structp png_ptr,
01216 int level));
01217
01218 extern PNG_EXPORT(void,png_set_compression_mem_level)
01219 PNGARG((png_structp png_ptr, int mem_level));
01220
01221 extern PNG_EXPORT(void,png_set_compression_strategy)
01222 PNGARG((png_structp png_ptr, int strategy));
01223
01224 extern PNG_EXPORT(void,png_set_compression_window_bits)
01225 PNGARG((png_structp png_ptr, int window_bits));
01226
01227 extern PNG_EXPORT(void,png_set_compression_method) PNGARG((png_structp png_ptr,
01228 int method));
01229
01230
01231
01232
01233
01234
01235
01236
01237
01238
01239 #if !defined(PNG_NO_STDIO)
01240
01241 extern PNG_EXPORT(void,png_init_io) PNGARG((png_structp png_ptr, FILE *fp));
01242 #endif
01243
01244
01245
01246
01247
01248
01249
01250
01251
01252 extern PNG_EXPORT(void,png_set_error_fn) PNGARG((png_structp png_ptr,
01253 png_voidp error_ptr, png_error_ptr error_fn, png_error_ptr warning_fn));
01254
01255
01256 extern PNG_EXPORT(png_voidp,png_get_error_ptr) PNGARG((png_structp png_ptr));
01257
01258
01259
01260
01261
01262
01263 extern PNG_EXPORT(void,png_set_write_fn) PNGARG((png_structp png_ptr,
01264 png_voidp io_ptr, png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn));
01265
01266
01267 extern PNG_EXPORT(void,png_set_read_fn) PNGARG((png_structp png_ptr,
01268 png_voidp io_ptr, png_rw_ptr read_data_fn));
01269
01270
01271 extern PNG_EXPORT(png_voidp,png_get_io_ptr) PNGARG((png_structp png_ptr));
01272
01273 extern PNG_EXPORT(void,png_set_read_status_fn) PNGARG((png_structp png_ptr,
01274 png_read_status_ptr read_row_fn));
01275
01276 extern PNG_EXPORT(void,png_set_write_status_fn) PNGARG((png_structp png_ptr,
01277 png_write_status_ptr write_row_fn));
01278
01279 #ifdef PNG_USER_MEM_SUPPORTED
01280
01281 extern PNG_EXPORT(void,png_set_mem_fn) PNGARG((png_structp png_ptr,
01282 png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn));
01283
01284
01285 extern PNG_EXPORT(png_voidp,png_get_mem_ptr) PNGARG((png_structp png_ptr));
01286 #endif
01287
01288 #ifdef PNG_READ_USER_TRANSFORM_SUPPORTED
01289 extern PNG_EXPORT(void,png_set_read_user_transform_fn) PNGARG((png_structp
01290 png_ptr, png_user_transform_ptr read_user_transform_fn));
01291 #endif
01292
01293 #ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED
01294 extern PNG_EXPORT(void,png_set_write_user_transform_fn) PNGARG((png_structp
01295 png_ptr, png_user_transform_ptr write_user_transform_fn));
01296 #endif
01297
01298 #if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \
01299 defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
01300 extern PNG_EXPORT(void,png_set_user_transform_info) PNGARG((png_structp
01301 png_ptr, png_voidp user_transform_ptr, int user_transform_depth,
01302 int user_transform_channels));
01303
01304 extern PNG_EXPORT(png_voidp,png_get_user_transform_ptr)
01305 PNGARG((png_structp png_ptr));
01306 #endif
01307
01308 #ifdef PNG_PROGRESSIVE_READ_SUPPORTED
01309
01310
01311
01312 extern PNG_EXPORT(void,png_set_progressive_read_fn) PNGARG((png_structp png_ptr,
01313 png_voidp progressive_ptr,
01314 png_progressive_info_ptr info_fn, png_progressive_row_ptr row_fn,
01315 png_progressive_end_ptr end_fn));
01316
01317
01318 extern PNG_EXPORT(png_voidp,png_get_progressive_ptr)
01319 PNGARG((png_structp png_ptr));
01320
01321
01322 extern PNG_EXPORT(void,png_process_data) PNGARG((png_structp png_ptr,
01323 png_infop info_ptr, png_bytep buffer, png_size_t buffer_size));
01324
01325
01326
01327
01328 extern PNG_EXPORT(void,png_progressive_combine_row) PNGARG((png_structp png_ptr,
01329 png_bytep old_row, png_bytep new_row));
01330 #endif
01331
01332 extern PNG_EXPORT(png_voidp,png_malloc) PNGARG((png_structp png_ptr,
01333 png_uint_32 size));
01334
01335
01336 extern PNG_EXPORT(void,png_free) PNGARG((png_structp png_ptr, png_voidp ptr));
01337
01338 #ifdef PNG_USER_MEM_SUPPORTED
01339 extern PNG_EXPORT(png_voidp,png_malloc_default) PNGARG((png_structp png_ptr,
01340 png_uint_32 size));
01341 extern PNG_EXPORT(void,png_free_default) PNGARG((png_structp png_ptr,
01342 png_voidp ptr));
01343 #endif
01344
01345 extern PNG_EXPORT(png_voidp,png_memcpy_check) PNGARG((png_structp png_ptr,
01346 png_voidp s1, png_voidp s2, png_uint_32 size));
01347
01348 extern PNG_EXPORT(png_voidp,png_memset_check) PNGARG((png_structp png_ptr,
01349 png_voidp s1, int value, png_uint_32 size));
01350
01351 #if defined(USE_FAR_KEYWORD)
01352 extern void *png_far_to_near PNGARG((png_structp png_ptr,png_voidp ptr,
01353 int check));
01354 #endif
01355
01356
01357 extern PNG_EXPORT(void,png_error) PNGARG((png_structp png_ptr,
01358 png_const_charp error));
01359
01360
01361 extern PNG_EXPORT(void,png_chunk_error) PNGARG((png_structp png_ptr,
01362 png_const_charp error));
01363
01364
01365 extern PNG_EXPORT(void,png_warning) PNGARG((png_structp png_ptr,
01366 png_const_charp message));
01367
01368
01369 extern PNG_EXPORT(void,png_chunk_warning) PNGARG((png_structp png_ptr,
01370 png_const_charp message));
01371
01372
01373
01374
01375
01376
01377
01378
01379
01380
01381
01382
01383
01384
01385 extern PNG_EXPORT(png_uint_32,png_get_valid) PNGARG((png_structp png_ptr,
01386 png_infop info_ptr, png_uint_32 flag));
01387
01388
01389 extern PNG_EXPORT(png_uint_32,png_get_rowbytes) PNGARG((png_structp png_ptr,
01390 png_infop info_ptr));
01391
01392
01393 extern PNG_EXPORT(png_byte,png_get_channels) PNGARG((png_structp png_ptr,
01394 png_infop info_ptr));
01395
01396 #ifdef PNG_EASY_ACCESS_SUPPORTED
01397
01398 extern PNG_EXPORT(png_uint_32, png_get_image_width) PNGARG((png_structp
01399 png_ptr, png_infop info_ptr));
01400
01401
01402 extern PNG_EXPORT(png_uint_32, png_get_image_height) PNGARG((png_structp
01403 png_ptr, png_infop info_ptr));
01404
01405
01406 extern PNG_EXPORT(png_byte, png_get_bit_depth) PNGARG((png_structp
01407 png_ptr, png_infop info_ptr));
01408
01409
01410 extern PNG_EXPORT(png_byte, png_get_color_type) PNGARG((png_structp
01411 png_ptr, png_infop info_ptr));
01412
01413
01414 extern PNG_EXPORT(png_byte, png_get_filter_type) PNGARG((png_structp
01415 png_ptr, png_infop info_ptr));
01416
01417
01418 extern PNG_EXPORT(png_byte, png_get_interlace_type) PNGARG((png_structp
01419 png_ptr, png_infop info_ptr));
01420
01421
01422 extern PNG_EXPORT(png_byte, png_get_compression_type) PNGARG((png_structp
01423 png_ptr, png_infop info_ptr));
01424
01425
01426 extern PNG_EXPORT(png_uint_32, png_get_pixels_per_meter) PNGARG((png_structp
01427 png_ptr, png_infop info_ptr));
01428 extern PNG_EXPORT(png_uint_32, png_get_x_pixels_per_meter) PNGARG((png_structp
01429 png_ptr, png_infop info_ptr));
01430 extern PNG_EXPORT(png_uint_32, png_get_y_pixels_per_meter) PNGARG((png_structp
01431 png_ptr, png_infop info_ptr));
01432
01433
01434 extern PNG_EXPORT(float, png_get_pixel_aspect_ratio) PNGARG((png_structp
01435 png_ptr, png_infop info_ptr));
01436
01437
01438 extern PNG_EXPORT(png_uint_32, png_get_x_offset_pixels) PNGARG((png_structp
01439 png_ptr, png_infop info_ptr));
01440 extern PNG_EXPORT(png_uint_32, png_get_y_offset_pixels) PNGARG((png_structp
01441 png_ptr, png_infop info_ptr));
01442 extern PNG_EXPORT(png_uint_32, png_get_x_offset_microns) PNGARG((png_structp
01443 png_ptr, png_infop info_ptr));
01444 extern PNG_EXPORT(png_uint_32, png_get_y_offset_microns) PNGARG((png_structp
01445 png_ptr, png_infop info_ptr));
01446
01447 #endif
01448
01449
01450 extern PNG_EXPORT(png_bytep,png_get_signature) PNGARG((png_structp png_ptr,
01451 png_infop info_ptr));
01452
01453 #if defined(PNG_READ_bKGD_SUPPORTED)
01454 extern PNG_EXPORT(png_uint_32,png_get_bKGD) PNGARG((png_structp png_ptr,
01455 png_infop info_ptr, png_color_16p *background));
01456 #endif
01457
01458 #if defined(PNG_READ_bKGD_SUPPORTED) || defined(PNG_WRITE_bKGD_SUPPORTED)
01459 extern PNG_EXPORT(void,png_set_bKGD) PNGARG((png_structp png_ptr,
01460 png_infop info_ptr, png_color_16p background));
01461 #endif
01462
01463 #if defined(PNG_READ_cHRM_SUPPORTED)
01464 extern PNG_EXPORT(png_uint_32,png_get_cHRM) PNGARG((png_structp png_ptr,
01465 png_infop info_ptr, double *white_x, double *white_y, double *red_x,
01466 double *red_y, double *green_x, double *green_y, double *blue_x,
01467 double *blue_y));
01468 #endif
01469
01470 #if defined(PNG_READ_cHRM_SUPPORTED) || defined(PNG_WRITE_cHRM_SUPPORTED)
01471 extern PNG_EXPORT(void,png_set_cHRM) PNGARG((png_structp png_ptr,
01472 png_infop info_ptr, double white_x, double white_y, double red_x,
01473 double red_y, double green_x, double green_y, double blue_x, double blue_y));
01474 #endif
01475
01476 #if defined(PNG_READ_gAMA_SUPPORTED)
01477 extern PNG_EXPORT(png_uint_32,png_get_gAMA) PNGARG((png_structp png_ptr,
01478 png_infop info_ptr, double *file_gamma));
01479 #endif
01480
01481 #if defined(PNG_READ_gAMA_SUPPORTED) || defined(PNG_WRITE_gAMA_SUPPORTED)
01482 extern PNG_EXPORT(void,png_set_gAMA) PNGARG((png_structp png_ptr,
01483 png_infop info_ptr, double file_gamma));
01484 #endif
01485
01486 #if defined(PNG_READ_hIST_SUPPORTED)
01487 extern PNG_EXPORT(png_uint_32,png_get_hIST) PNGARG((png_structp png_ptr,
01488 png_infop info_ptr, png_uint_16p *hist));
01489 #endif
01490
01491 #if defined(PNG_READ_hIST_SUPPORTED) || defined(PNG_WRITE_hIST_SUPPORTED)
01492 extern PNG_EXPORT(void,png_set_hIST) PNGARG((png_structp png_ptr,
01493 png_infop info_ptr, png_uint_16p hist));
01494 #endif
01495
01496 extern PNG_EXPORT(png_uint_32,png_get_IHDR) PNGARG((png_structp png_ptr,
01497 png_infop info_ptr, png_uint_32 *width, png_uint_32 *height,
01498 int *bit_depth, int *color_type, int *interlace_type,
01499 int *compression_type, int *filter_type));
01500
01501 extern PNG_EXPORT(void,png_set_IHDR) PNGARG((png_structp png_ptr,
01502 png_infop info_ptr, png_uint_32 width, png_uint_32 height, int bit_depth,
01503 int color_type, int interlace_type, int compression_type, int filter_type));
01504
01505 #if defined(PNG_READ_oFFs_SUPPORTED)
01506 extern PNG_EXPORT(png_uint_32,png_get_oFFs) PNGARG((png_structp png_ptr,
01507 png_infop info_ptr, png_uint_32 *offset_x, png_uint_32 *offset_y,
01508 int *unit_type));
01509 #endif
01510
01511 #if defined(PNG_READ_oFFs_SUPPORTED) || defined(PNG_WRITE_oFFs_SUPPORTED)
01512 extern PNG_EXPORT(void,png_set_oFFs) PNGARG((png_structp png_ptr,
01513 png_infop info_ptr, png_uint_32 offset_x, png_uint_32 offset_y,
01514 int unit_type));
01515 #endif
01516
01517 #if defined(PNG_READ_pCAL_SUPPORTED)
01518 extern PNG_EXPORT(png_uint_32,png_get_pCAL) PNGARG((png_structp png_ptr,
01519 png_infop info_ptr, png_charp *purpose, png_int_32 *X0, png_int_32 *X1,
01520 int *type, int *nparams, png_charp *units, png_charpp *params));
01521 #endif
01522
01523 #if defined(PNG_READ_pCAL_SUPPORTED) || defined(PNG_WRITE_pCAL_SUPPORTED)
01524 extern PNG_EXPORT(void,png_set_pCAL) PNGARG((png_structp png_ptr,
01525 png_infop info_ptr, png_charp purpose, png_int_32 X0, png_int_32 X1,
01526 int type, int nparams, png_charp units, png_charpp params));
01527 #endif
01528
01529 #if defined(PNG_READ_pHYs_SUPPORTED)
01530 extern PNG_EXPORT(png_uint_32,png_get_pHYs) PNGARG((png_structp png_ptr,
01531 png_infop info_ptr, png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type));
01532 #endif
01533
01534 #if defined(PNG_READ_pHYs_SUPPORTED) || defined(PNG_WRITE_pHYs_SUPPORTED)
01535 extern PNG_EXPORT(void,png_set_pHYs) PNGARG((png_structp png_ptr,
01536 png_infop info_ptr, png_uint_32 res_x, png_uint_32 res_y, int unit_type));
01537 #endif
01538
01539 extern PNG_EXPORT(png_uint_32,png_get_PLTE) PNGARG((png_structp png_ptr,
01540 png_infop info_ptr, png_colorp *palette, int *num_palette));
01541
01542 extern PNG_EXPORT(void,png_set_PLTE) PNGARG((png_structp png_ptr,
01543 png_infop info_ptr, png_colorp palette, int num_palette));
01544
01545 #if defined(PNG_READ_sBIT_SUPPORTED)
01546 extern PNG_EXPORT(png_uint_32,png_get_sBIT) PNGARG((png_structp png_ptr,
01547 png_infop info_ptr, png_color_8p *sig_bit));
01548 #endif
01549
01550 #if defined(PNG_READ_sBIT_SUPPORTED) || defined(PNG_WRITE_sBIT_SUPPORTED)
01551 extern PNG_EXPORT(void,png_set_sBIT) PNGARG((png_structp png_ptr,
01552 png_infop info_ptr, png_color_8p sig_bit));
01553 #endif
01554
01555 #if defined(PNG_READ_sRGB_SUPPORTED)
01556 extern PNG_EXPORT(png_uint_32,png_get_sRGB) PNGARG((png_structp png_ptr,
01557 png_infop info_ptr, int *intent));
01558 #endif
01559
01560 #if defined(PNG_READ_sRGB_SUPPORTED) || defined(PNG_WRITE_sRGB_SUPPORTED)
01561 extern PNG_EXPORT(void,png_set_sRGB) PNGARG((png_structp png_ptr,
01562 png_infop info_ptr, int intent));
01563 extern PNG_EXPORT(void,png_set_sRGB_gAMA_and_cHRM) PNGARG((png_structp png_ptr,
01564 png_infop info_ptr, int intent));
01565 #endif
01566
01567 #if defined(PNG_READ_tEXt_SUPPORTED) || defined(PNG_READ_zTXt_SUPPORTED)
01568
01569 extern PNG_EXPORT(png_uint_32,png_get_text) PNGARG((png_structp png_ptr,
01570 png_infop info_ptr, png_textp *text_ptr, int *num_text));
01571 #endif
01572
01573 #if defined(PNG_READ_tEXt_SUPPORTED) || defined(PNG_WRITE_tEXt_SUPPORTED) || \
01574 defined(PNG_READ_zTXt_SUPPORTED) || defined(PNG_WRITE_zTXt_SUPPORTED)
01575 extern PNG_EXPORT(void,png_set_text) PNGARG((png_structp png_ptr,
01576 png_infop info_ptr, png_textp text_ptr, int num_text));
01577 #endif
01578
01579 #if defined(PNG_READ_tIME_SUPPORTED)
01580 extern PNG_EXPORT(png_uint_32,png_get_tIME) PNGARG((png_structp png_ptr,
01581 png_infop info_ptr, png_timep *mod_time));
01582 #endif
01583
01584 #if defined(PNG_READ_tIME_SUPPORTED) || defined(PNG_WRITE_tIME_SUPPORTED)
01585 extern PNG_EXPORT(void,png_set_tIME) PNGARG((png_structp png_ptr,
01586 png_infop info_ptr, png_timep mod_time));
01587 #endif
01588
01589 #if defined(PNG_READ_tRNS_SUPPORTED)
01590 extern PNG_EXPORT(png_uint_32,png_get_tRNS) PNGARG((png_structp png_ptr,
01591 png_infop info_ptr, png_bytep *trans, int *num_trans,
01592 png_color_16p *trans_values));
01593 #endif
01594
01595 #if defined(PNG_READ_tRNS_SUPPORTED) || defined(PNG_WRITE_tRNS_SUPPORTED)
01596 extern PNG_EXPORT(void,png_set_tRNS) PNGARG((png_structp png_ptr,
01597 png_infop info_ptr, png_bytep trans, int num_trans,
01598 png_color_16p trans_values));
01599 #endif
01600
01601
01602
01603
01604
01605
01606 #ifdef PNG_DEBUG
01607 #if (PNG_DEBUG > 0)
01608 #ifndef PNG_DEBUG_FILE
01609 #define PNG_DEBUG_FILE stderr
01610 #endif
01611
01612 #define png_debug(l,m) if (PNG_DEBUG > l) \
01613 fprintf(PNG_DEBUG_FILE,"%s"m,(l==1 ? "\t" : \
01614 (l==2 ? "\t\t":(l>2 ? "\t\t\t":""))))
01615 #define png_debug1(l,m,p1) if (PNG_DEBUG > l) \
01616 fprintf(PNG_DEBUG_FILE,"%s"m,(l==1 ? "\t" : \
01617 (l==2 ? "\t\t":(l>2 ? "\t\t\t":""))),p1)
01618 #define png_debug2(l,m,p1,p2) if (PNG_DEBUG > l) \
01619 fprintf(PNG_DEBUG_FILE,"%s"m,(l==1 ? "\t" : \
01620 (l==2 ? "\t\t":(l>2 ? "\t\t\t":""))),p1,p2)
01621 #endif
01622 #endif
01623 #ifndef png_debug
01624 #define png_debug(l, m)
01625 #endif
01626 #ifndef png_debug1
01627 #define png_debug1(l, m, p1)
01628 #endif
01629 #ifndef png_debug2
01630 #define png_debug2(l, m, p1, p2)
01631 #endif
01632
01633 extern PNG_EXPORT(png_charp,png_get_copyright) PNGARG((png_structp png_ptr));
01634 extern PNG_EXPORT(png_charp,png_get_header_version) PNGARG((png_structp png_ptr));
01635
01636 #ifdef PNG_NO_EXTERN
01637
01638
01639 #define PNG_GET_HEADER \
01640 png_charp \
01641 png_get_header_version(png_structp png_ptr) \
01642 { \
01643 if(png_ptr != NULL) \
01644 return("\n libpng version 1.0.5 - October 15, 1999 (header)\n"); \
01645 return("\n libpng version 1.0.5 - October 15, 1999 (header)\n"); \
01646 }
01647 #endif
01648
01649 #ifdef PNG_READ_COMPOSITE_NODIV_SUPPORTED
01650
01651
01652
01653
01654
01655
01656
01657
01658
01659
01660
01661
01662
01663
01664 # define png_composite(composite, fg, alpha, bg) \
01665 { png_uint_16 temp = (png_uint_16)((png_uint_16)(fg) * (png_uint_16)(alpha) \
01666 + (png_uint_16)(bg)*(png_uint_16)(255 - \
01667 (png_uint_16)(alpha)) + (png_uint_16)128); \
01668 (composite) = (png_byte)((temp + (temp >> 8)) >> 8); }
01669
01670 # define png_composite_16(composite, fg, alpha, bg) \
01671 { png_uint_32 temp = (png_uint_32)((png_uint_32)(fg) * (png_uint_32)(alpha) \
01672 + (png_uint_32)(bg)*(png_uint_32)(65535L - \
01673 (png_uint_32)(alpha)) + (png_uint_32)32768L); \
01674 (composite) = (png_uint_16)((temp + (temp >> 16)) >> 16); }
01675
01676 #else
01677
01678 # define png_composite(composite, fg, alpha, bg) \
01679 (composite) = (png_byte)(((png_uint_16)(fg) * (png_uint_16)(alpha) + \
01680 (png_uint_16)(bg) * (png_uint_16)(255 - (png_uint_16)(alpha)) + \
01681 (png_uint_16)127) / 255)
01682
01683 # define png_composite_16(composite, fg, alpha, bg) \
01684 (composite) = (png_uint_16)(((png_uint_32)(fg) * (png_uint_32)(alpha) + \
01685 (png_uint_32)(bg)*(png_uint_32)(65535L - (png_uint_32)(alpha)) + \
01686 (png_uint_32)32767) / (png_uint_32)65535L)
01687
01688 #endif
01689
01690
01691
01692
01693
01694
01695
01696 #if defined(PNG_INTERNAL)
01697
01698
01699
01700
01701 #define PNG_BEFORE_IHDR 0x00
01702 #define PNG_HAVE_IHDR 0x01
01703 #define PNG_HAVE_PLTE 0x02
01704 #define PNG_HAVE_IDAT 0x04
01705 #define PNG_AFTER_IDAT 0x08
01706 #define PNG_HAVE_IEND 0x10
01707 #define PNG_HAVE_gAMA 0x20
01708 #define PNG_HAVE_cHRM 0x40
01709 #define PNG_HAVE_sRGB 0x80
01710
01711
01712 #define PNG_READ_SIG_MODE 0
01713 #define PNG_READ_CHUNK_MODE 1
01714 #define PNG_READ_IDAT_MODE 2
01715 #define PNG_SKIP_MODE 3
01716 #define PNG_READ_tEXt_MODE 4
01717 #define PNG_READ_zTXt_MODE 5
01718 #define PNG_READ_DONE_MODE 6
01719 #define PNG_ERROR_MODE 7
01720
01721
01722 #define PNG_BGR 0x0001
01723 #define PNG_INTERLACE 0x0002
01724 #define PNG_PACK 0x0004
01725 #define PNG_SHIFT 0x0008
01726 #define PNG_SWAP_BYTES 0x0010
01727 #define PNG_INVERT_MONO 0x0020
01728 #define PNG_DITHER 0x0040
01729 #define PNG_BACKGROUND 0x0080
01730 #define PNG_BACKGROUND_EXPAND 0x0100
01731
01732 #define PNG_16_TO_8 0x0400
01733 #define PNG_RGBA 0x0800
01734 #define PNG_EXPAND 0x1000
01735 #define PNG_GAMMA 0x2000
01736 #define PNG_GRAY_TO_RGB 0x4000
01737 #define PNG_FILLER 0x8000
01738 #define PNG_PACKSWAP 0x10000L
01739 #define PNG_SWAP_ALPHA 0x20000L
01740 #define PNG_STRIP_ALPHA 0x40000L
01741 #define PNG_INVERT_ALPHA 0x80000L
01742 #define PNG_USER_TRANSFORM 0x100000L
01743 #define PNG_RGB_TO_GRAY_ERR 0x200000L
01744 #define PNG_RGB_TO_GRAY_WARN 0x400000L
01745 #define PNG_RGB_TO_GRAY 0x600000L
01746
01747
01748 #define PNG_STRUCT_PNG 0x0001
01749 #define PNG_STRUCT_INFO 0x0002
01750
01751
01752 #define PNG_WEIGHT_SHIFT 8
01753 #define PNG_WEIGHT_FACTOR (1<<(PNG_WEIGHT_SHIFT))
01754 #define PNG_COST_SHIFT 3
01755 #define PNG_COST_FACTOR (1<<(PNG_COST_SHIFT))
01756
01757
01758 #define PNG_FLAG_ZLIB_CUSTOM_STRATEGY 0x0001
01759 #define PNG_FLAG_ZLIB_CUSTOM_LEVEL 0x0002
01760 #define PNG_FLAG_ZLIB_CUSTOM_MEM_LEVEL 0x0004
01761 #define PNG_FLAG_ZLIB_CUSTOM_WINDOW_BITS 0x0008
01762 #define PNG_FLAG_ZLIB_CUSTOM_METHOD 0x0010
01763 #define PNG_FLAG_ZLIB_FINISHED 0x0020
01764 #define PNG_FLAG_ROW_INIT 0x0040
01765 #define PNG_FLAG_FILLER_AFTER 0x0080
01766 #define PNG_FLAG_CRC_ANCILLARY_USE 0x0100
01767 #define PNG_FLAG_CRC_ANCILLARY_NOWARN 0x0200
01768 #define PNG_FLAG_CRC_CRITICAL_USE 0x0400
01769 #define PNG_FLAG_CRC_CRITICAL_IGNORE 0x0800
01770 #define PNG_FLAG_FREE_PALETTE 0x1000
01771 #define PNG_FLAG_FREE_TRANS 0x2000
01772 #define PNG_FLAG_FREE_HIST 0x4000
01773 #define PNG_FLAG_HAVE_CHUNK_HEADER 0x8000L
01774 #define PNG_FLAG_WROTE_tIME 0x10000L
01775 #define PNG_FLAG_BACKGROUND_IS_GRAY 0x20000L
01776
01777 #define PNG_FLAG_CRC_ANCILLARY_MASK (PNG_FLAG_CRC_ANCILLARY_USE | \
01778 PNG_FLAG_CRC_ANCILLARY_NOWARN)
01779
01780 #define PNG_FLAG_CRC_CRITICAL_MASK (PNG_FLAG_CRC_CRITICAL_USE | \
01781 PNG_FLAG_CRC_CRITICAL_IGNORE)
01782
01783 #define PNG_FLAG_CRC_MASK (PNG_FLAG_CRC_ANCILLARY_MASK | \
01784 PNG_FLAG_CRC_CRITICAL_MASK)
01785
01786
01787 #define PNG_COLOR_DIST(c1, c2) (abs((int)((c1).red) - (int)((c2).red)) + \
01788 abs((int)((c1).green) - (int)((c2).green)) + \
01789 abs((int)((c1).blue) - (int)((c2).blue)))
01790
01791
01792 #if !defined(PNG_NO_EXTERN) || defined(PNG_ALWAYS_EXTERN)
01793
01794 extern png_byte FARDATA png_sig[8];
01795
01796
01797
01798
01799
01800
01801 extern png_byte FARDATA png_IHDR[5];
01802 extern png_byte FARDATA png_IDAT[5];
01803 extern png_byte FARDATA png_IEND[5];
01804 extern png_byte FARDATA png_PLTE[5];
01805 extern png_byte FARDATA png_bKGD[5];
01806 extern png_byte FARDATA png_cHRM[5];
01807 extern png_byte FARDATA png_gAMA[5];
01808 extern png_byte FARDATA png_hIST[5];
01809 extern png_byte FARDATA png_oFFs[5];
01810 extern png_byte FARDATA png_pCAL[5];
01811 extern png_byte FARDATA png_pHYs[5];
01812 extern png_byte FARDATA png_sBIT[5];
01813 extern png_byte FARDATA png_sRGB[5];
01814 extern png_byte FARDATA png_tEXt[5];
01815 extern png_byte FARDATA png_tIME[5];
01816 extern png_byte FARDATA png_tRNS[5];
01817 extern png_byte FARDATA png_zTXt[5];
01818
01819 #endif
01820
01821
01822
01823
01824
01825
01826
01827
01828
01829 #if defined(PNG_READ_BIG_ENDIAN_SUPPORTED)
01830 #if defined(PNG_READ_pCAL_SUPPORTED)
01831 #define png_get_int_32(buf) ( *((png_int_32p) (buf)))
01832 #endif
01833 #define png_get_uint_32(buf) ( *((png_uint_32p) (buf)))
01834 #define png_get_uint_16(buf) ( *((png_uint_16p) (buf)))
01835 #else
01836 #if defined(PNG_READ_pCAL_SUPPORTED)
01837 PNG_EXTERN png_int_32 png_get_int_32 PNGARG((png_bytep buf));
01838 #endif
01839 PNG_EXTERN png_uint_32 png_get_uint_32 PNGARG((png_bytep buf));
01840 PNG_EXTERN png_uint_16 png_get_uint_16 PNGARG((png_bytep buf));
01841 #endif
01842
01843
01844
01845
01846 extern void png_read_init PNGARG((png_structp png_ptr));
01847
01848
01849
01850
01851 extern void png_write_init PNGARG((png_structp png_ptr));
01852
01853
01854 PNG_EXTERN png_voidp png_create_struct PNGARG((int type));
01855
01856
01857 PNG_EXTERN void png_destroy_struct PNGARG((png_voidp struct_ptr));
01858
01859 PNG_EXTERN png_voidp png_create_struct_2 PNGARG((int type, png_malloc_ptr
01860 malloc_fn));
01861 PNG_EXTERN void png_destroy_struct_2 PNGARG((png_voidp struct_ptr,
01862 png_free_ptr free_fn));
01863
01864
01865 PNG_EXTERN void png_info_destroy PNGARG((png_structp png_ptr,
01866 png_infop info_ptr));
01867
01868
01869 PNG_EXTERN voidpf png_zalloc PNGARG((voidpf png_ptr, uInt items, uInt size));
01870
01871
01872 PNG_EXTERN void png_zfree PNGARG((voidpf png_ptr, voidpf ptr));
01873
01874
01875 PNG_EXTERN void png_reset_crc PNGARG((png_structp png_ptr));
01876
01877
01878 PNG_EXTERN void png_write_data PNGARG((png_structp png_ptr, png_bytep data,
01879 png_size_t length));
01880
01881
01882 PNG_EXTERN void png_read_data PNGARG((png_structp png_ptr, png_bytep data,
01883 png_size_t length));
01884
01885
01886 PNG_EXTERN void png_crc_read PNGARG((png_structp png_ptr, png_bytep buf,
01887 png_size_t length));
01888
01889
01890 PNG_EXTERN int png_crc_finish PNGARG((png_structp png_ptr, png_uint_32 skip));
01891
01892
01893 PNG_EXTERN int png_crc_error PNGARG((png_structp png_ptr));
01894
01895
01896
01897
01898
01899 PNG_EXTERN void png_calculate_crc PNGARG((png_structp png_ptr, png_bytep ptr,
01900 png_size_t length));
01901
01902 #if defined(PNG_WRITE_FLUSH_SUPPORTED)
01903 PNG_EXTERN void png_flush PNGARG((png_structp png_ptr));
01904 #endif
01905
01906
01907
01908
01909
01910 PNG_EXTERN void png_save_uint_32 PNGARG((png_bytep buf, png_uint_32 i));
01911
01912 #if defined(PNG_WRITE_pCAL_SUPPORTED)
01913 PNG_EXTERN void png_save_int_32 PNGARG((png_bytep buf, png_int_32 i));
01914 #endif
01915
01916
01917
01918
01919
01920 PNG_EXTERN void png_save_uint_16 PNGARG((png_bytep buf, unsigned int i));
01921
01922
01923 PNG_EXTERN void png_write_sig PNGARG((png_structp png_ptr));
01924
01925
01926
01927
01928
01929
01930 PNG_EXTERN void png_write_IHDR PNGARG((png_structp png_ptr, png_uint_32 width,
01931 png_uint_32 height,
01932 int bit_depth, int color_type, int compression_type, int filter_type,
01933 int interlace_type));
01934
01935 PNG_EXTERN void png_write_PLTE PNGARG((png_structp png_ptr, png_colorp palette,
01936 png_uint_32 num_pal));
01937
01938 PNG_EXTERN void png_write_IDAT PNGARG((png_structp png_ptr, png_bytep data,
01939 png_size_t length));
01940
01941 PNG_EXTERN void png_write_IEND PNGARG((png_structp png_ptr));
01942
01943 #if defined(PNG_WRITE_gAMA_SUPPORTED)
01944 PNG_EXTERN void png_write_gAMA PNGARG((png_structp png_ptr, double file_gamma));
01945 #endif
01946
01947 #if defined(PNG_WRITE_sBIT_SUPPORTED)
01948 PNG_EXTERN void png_write_sBIT PNGARG((png_structp png_ptr, png_color_8p sbit,
01949 int color_type));
01950 #endif
01951
01952 #if defined(PNG_WRITE_cHRM_SUPPORTED)
01953 PNG_EXTERN void png_write_cHRM PNGARG((png_structp png_ptr,
01954 double white_x, double white_y,
01955 double red_x, double red_y, double green_x, double green_y,
01956 double blue_x, double blue_y));
01957 #endif
01958
01959 #if defined(PNG_WRITE_sRGB_SUPPORTED)
01960 PNG_EXTERN void png_write_sRGB PNGARG((png_structp png_ptr,
01961 int intent));
01962 #endif
01963
01964 #if defined(PNG_WRITE_tRNS_SUPPORTED)
01965 PNG_EXTERN void png_write_tRNS PNGARG((png_structp png_ptr, png_bytep trans,
01966 png_color_16p values, int number, int color_type));
01967 #endif
01968
01969 #if defined(PNG_WRITE_bKGD_SUPPORTED)
01970 PNG_EXTERN void png_write_bKGD PNGARG((png_structp png_ptr,
01971 png_color_16p values, int color_type));
01972 #endif
01973
01974 #if defined(PNG_WRITE_hIST_SUPPORTED)
01975 PNG_EXTERN void png_write_hIST PNGARG((png_structp png_ptr, png_uint_16p hist,
01976 int num_hist));
01977 #endif
01978
01979 #if defined(PNG_WRITE_tEXt_SUPPORTED) || defined(PNG_WRITE_zTXt_SUPPORTED) || \
01980 defined(PNG_WRITE_pCAL_SUPPORTED)
01981 PNG_EXTERN png_size_t png_check_keyword PNGARG((png_structp png_ptr,
01982 png_charp key, png_charpp new_key));
01983 #endif
01984
01985 #if defined(PNG_WRITE_tEXt_SUPPORTED)
01986 PNG_EXTERN void png_write_tEXt PNGARG((png_structp png_ptr, png_charp key,
01987 png_charp text, png_size_t text_len));
01988 #endif
01989
01990 #if defined(PNG_WRITE_zTXt_SUPPORTED)
01991 PNG_EXTERN void png_write_zTXt PNGARG((png_structp png_ptr, png_charp key,
01992 png_charp text, png_size_t text_len, int compression));
01993 #endif
01994
01995 #if defined(PNG_WRITE_oFFs_SUPPORTED)
01996 PNG_EXTERN void png_write_oFFs PNGARG((png_structp png_ptr,
01997 png_uint_32 x_offset, png_uint_32 y_offset, int unit_type));
01998 #endif
01999
02000 #if defined(PNG_WRITE_pCAL_SUPPORTED)
02001 PNG_EXTERN void png_write_pCAL PNGARG((png_structp png_ptr, png_charp purpose,
02002 png_int_32 X0, png_int_32 X1, int type, int nparams,
02003 png_charp units, png_charpp params));
02004 #endif
02005
02006 #if defined(PNG_WRITE_pHYs_SUPPORTED)
02007 PNG_EXTERN void png_write_pHYs PNGARG((png_structp png_ptr,
02008 png_uint_32 x_pixels_per_unit, png_uint_32 y_pixels_per_unit,
02009 int unit_type));
02010 #endif
02011
02012 #if defined(PNG_WRITE_tIME_SUPPORTED)
02013 PNG_EXTERN void png_write_tIME PNGARG((png_structp png_ptr,
02014 png_timep mod_time));
02015 #endif
02016
02017
02018 PNG_EXTERN void png_write_finish_row PNGARG((png_structp png_ptr));
02019
02020
02021 PNG_EXTERN void png_write_start_row PNGARG((png_structp png_ptr));
02022
02023 #if defined(PNG_READ_GAMMA_SUPPORTED)
02024 PNG_EXTERN void png_build_gamma_table PNGARG((png_structp png_ptr));
02025 #endif
02026
02027
02028 PNG_EXTERN void png_combine_row PNGARG((png_structp png_ptr, png_bytep row,
02029 int mask));
02030
02031 #if defined(PNG_READ_INTERLACING_SUPPORTED)
02032
02033 PNG_EXTERN void png_do_read_interlace PNGARG((png_row_infop row_info,
02034 png_bytep row, int pass, png_uint_32 transformations));
02035 #endif
02036
02037 #if defined(PNG_WRITE_INTERLACING_SUPPORTED)
02038
02039 PNG_EXTERN void png_do_write_interlace PNGARG((png_row_infop row_info,
02040 png_bytep row, int pass));
02041 #endif
02042
02043
02044 PNG_EXTERN void png_read_filter_row PNGARG((png_structp png_ptr,
02045 png_row_infop row_info, png_bytep row, png_bytep prev_row, int filter));
02046
02047
02048 PNG_EXTERN void png_write_find_filter PNGARG((png_structp png_ptr,
02049 png_row_infop row_info));
02050
02051
02052 PNG_EXTERN void png_write_filtered_row PNGARG((png_structp png_ptr,
02053 png_bytep filtered_row));
02054
02055 PNG_EXTERN void png_read_finish_row PNGARG((png_structp png_ptr));
02056
02057
02058 PNG_EXTERN void png_read_start_row PNGARG((png_structp png_ptr));
02059
02060 PNG_EXTERN void png_read_transform_info PNGARG((png_structp png_ptr,
02061 png_infop info_ptr));
02062
02063
02064 #if defined(PNG_READ_FILLER_SUPPORTED)
02065 PNG_EXTERN void png_do_read_filler PNGARG((png_row_infop row_info,
02066 png_bytep row, png_uint_32 filler, png_uint_32 flags));
02067 #endif
02068
02069 #if defined(PNG_READ_SWAP_ALPHA_SUPPORTED)
02070 PNG_EXTERN void png_do_read_swap_alpha PNGARG((png_row_infop row_info,
02071 png_bytep row));
02072 #endif
02073
02074 #if defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED)
02075 PNG_EXTERN void png_do_write_swap_alpha PNGARG((png_row_infop row_info,
02076 png_bytep row));
02077 #endif
02078
02079 #if defined(PNG_READ_INVERT_ALPHA_SUPPORTED)
02080 PNG_EXTERN void png_do_read_invert_alpha PNGARG((png_row_infop row_info,
02081 png_bytep row));
02082 #endif
02083
02084 #if defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED)
02085 PNG_EXTERN void png_do_write_invert_alpha PNGARG((png_row_infop row_info,
02086 png_bytep row));
02087 #endif
02088
02089 #if defined(PNG_WRITE_FILLER_SUPPORTED) || \
02090 defined(PNG_READ_STRIP_ALPHA_SUPPORTED)
02091 PNG_EXTERN void png_do_strip_filler PNGARG((png_row_infop row_info,
02092 png_bytep row, png_uint_32 flags));
02093 #endif
02094
02095 #if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED)
02096 PNG_EXTERN void png_do_swap PNGARG((png_row_infop row_info, png_bytep row));
02097 #endif
02098
02099 #if defined(PNG_READ_PACKSWAP_SUPPORTED) || defined(PNG_WRITE_PACKSWAP_SUPPORTED)
02100 PNG_EXTERN void png_do_packswap PNGARG((png_row_infop row_info, png_bytep row));
02101 #endif
02102
02103 #if defined(PNG_READ_RGB_TO_GRAY_SUPPORTED)
02104 PNG_EXTERN int png_do_rgb_to_gray PNGARG((png_structp png_ptr, png_row_infop
02105 row_info, png_bytep row));
02106 #endif
02107
02108 #if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED)
02109 PNG_EXTERN void png_do_gray_to_rgb PNGARG((png_row_infop row_info,
02110 png_bytep row));
02111 #endif
02112
02113 #if defined(PNG_READ_PACK_SUPPORTED)
02114 PNG_EXTERN void png_do_unpack PNGARG((png_row_infop row_info, png_bytep row));
02115 #endif
02116
02117 #if defined(PNG_READ_SHIFT_SUPPORTED)
02118 PNG_EXTERN void png_do_unshift PNGARG((png_row_infop row_info, png_bytep row,
02119 png_color_8p sig_bits));
02120 #endif
02121
02122 #if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED)
02123 PNG_EXTERN void png_do_invert PNGARG((png_row_infop row_info, png_bytep row));
02124 #endif
02125
02126 #if defined(PNG_READ_16_TO_8_SUPPORTED)
02127 PNG_EXTERN void png_do_chop PNGARG((png_row_infop row_info, png_bytep row));
02128 #endif
02129
02130 #if defined(PNG_READ_DITHER_SUPPORTED)
02131 PNG_EXTERN void png_do_dither PNGARG((png_row_infop row_info,
02132 png_bytep row, png_bytep palette_lookup, png_bytep dither_lookup));
02133
02134 # if defined(PNG_CORRECT_PALETTE_SUPPORTED)
02135 PNG_EXTERN void png_correct_palette PNGARG((png_structp png_ptr,
02136 png_colorp palette, int num_palette));
02137 # endif
02138 #endif
02139
02140 #if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED)
02141 PNG_EXTERN void png_do_bgr PNGARG((png_row_infop row_info, png_bytep row));
02142 #endif
02143
02144 #if defined(PNG_WRITE_PACK_SUPPORTED)
02145 PNG_EXTERN void png_do_pack PNGARG((png_row_infop row_info,
02146 png_bytep row, png_uint_32 bit_depth));
02147 #endif
02148
02149 #if defined(PNG_WRITE_SHIFT_SUPPORTED)
02150 PNG_EXTERN void png_do_shift PNGARG((png_row_infop row_info, png_bytep row,
02151 png_color_8p bit_depth));
02152 #endif
02153
02154 #if defined(PNG_READ_BACKGROUND_SUPPORTED)
02155 PNG_EXTERN void png_do_background PNGARG((png_row_infop row_info, png_bytep row,
02156 png_color_16p trans_values, png_color_16p background,
02157 png_color_16p background_1,
02158 png_bytep gamma_table, png_bytep gamma_from_1, png_bytep gamma_to_1,
02159 png_uint_16pp gamma_16, png_uint_16pp gamma_16_from_1,
02160 png_uint_16pp gamma_16_to_1, int gamma_shift));
02161 #endif
02162
02163 #if defined(PNG_READ_GAMMA_SUPPORTED)
02164 PNG_EXTERN void png_do_gamma PNGARG((png_row_infop row_info, png_bytep row,
02165 png_bytep gamma_table, png_uint_16pp gamma_16_table,
02166 int gamma_shift));
02167 #endif
02168
02169 #if defined(PNG_READ_EXPAND_SUPPORTED)
02170 PNG_EXTERN void png_do_expand_palette PNGARG((png_row_infop row_info,
02171 png_bytep row, png_colorp palette, png_bytep trans, int num_trans));
02172 PNG_EXTERN void png_do_expand PNGARG((png_row_infop row_info,
02173 png_bytep row, png_color_16p trans_value));
02174 #endif
02175
02176
02177
02178
02179
02180
02181 PNG_EXTERN void png_handle_IHDR PNGARG((png_structp png_ptr, png_infop info_ptr,
02182 png_uint_32 length));
02183 PNG_EXTERN void png_handle_PLTE PNGARG((png_structp png_ptr, png_infop info_ptr,
02184 png_uint_32 length));
02185 PNG_EXTERN void png_handle_IEND PNGARG((png_structp png_ptr, png_infop info_ptr,
02186 png_uint_32 length));
02187
02188 #if defined(PNG_READ_gAMA_SUPPORTED)
02189 PNG_EXTERN void png_handle_gAMA PNGARG((png_structp png_ptr, png_infop info_ptr,
02190 png_uint_32 length));
02191 #endif
02192
02193 #if defined(PNG_READ_sBIT_SUPPORTED)
02194 PNG_EXTERN void png_handle_sBIT PNGARG((png_structp png_ptr, png_infop info_ptr,
02195 png_uint_32 length));
02196 #endif
02197
02198 #if defined(PNG_READ_cHRM_SUPPORTED)
02199 PNG_EXTERN void png_handle_cHRM PNGARG((png_structp png_ptr, png_infop info_ptr,
02200 png_uint_32 length));
02201 #endif
02202
02203 #if defined(PNG_READ_sRGB_SUPPORTED)
02204 PNG_EXTERN void png_handle_sRGB PNGARG((png_structp png_ptr, png_infop info_ptr,
02205 png_uint_32 length));
02206 #endif
02207
02208 #if defined(PNG_READ_tRNS_SUPPORTED)
02209 PNG_EXTERN void png_handle_tRNS PNGARG((png_structp png_ptr, png_infop info_ptr,
02210 png_uint_32 length));
02211 #endif
02212
02213 #if defined(PNG_READ_bKGD_SUPPORTED)
02214 PNG_EXTERN void png_handle_bKGD PNGARG((png_structp png_ptr, png_infop info_ptr,
02215 png_uint_32 length));
02216 #endif
02217
02218 #if defined(PNG_READ_hIST_SUPPORTED)
02219 PNG_EXTERN void png_handle_hIST PNGARG((png_structp png_ptr, png_infop info_ptr,
02220 png_uint_32 length));
02221 #endif
02222
02223 #if defined(PNG_READ_oFFs_SUPPORTED)
02224 PNG_EXTERN void png_handle_oFFs PNGARG((png_structp png_ptr, png_infop info_ptr,
02225 png_uint_32 length));
02226 #endif
02227
02228 #if defined(PNG_READ_pCAL_SUPPORTED)
02229 PNG_EXTERN void png_handle_pCAL PNGARG((png_structp png_ptr, png_infop info_ptr,
02230 png_uint_32 length));
02231 #endif
02232
02233 #if defined(PNG_READ_pHYs_SUPPORTED)
02234 PNG_EXTERN void png_handle_pHYs PNGARG((png_structp png_ptr, png_infop info_ptr,
02235 png_uint_32 length));
02236 #endif
02237
02238 #if defined(PNG_READ_tIME_SUPPORTED)
02239 PNG_EXTERN void png_handle_tIME PNGARG((png_structp png_ptr, png_infop info_ptr,
02240 png_uint_32 length));
02241 #endif
02242
02243 #if defined(PNG_READ_tEXt_SUPPORTED)
02244 PNG_EXTERN void png_handle_tEXt PNGARG((png_structp png_ptr, png_infop info_ptr,
02245 png_uint_32 length));
02246 #endif
02247
02248 #if defined(PNG_READ_zTXt_SUPPORTED)
02249 PNG_EXTERN void png_handle_zTXt PNGARG((png_structp png_ptr, png_infop info_ptr,
02250 png_uint_32 length));
02251 #endif
02252
02253 PNG_EXTERN void png_handle_unknown PNGARG((png_structp png_ptr,
02254 png_infop info_ptr, png_uint_32 length));
02255
02256 PNG_EXTERN void png_check_chunk_name PNGARG((png_structp png_ptr,
02257 png_bytep chunk_name));
02258
02259
02260 PNG_EXTERN void png_do_read_transformations PNGARG((png_structp png_ptr));
02261 PNG_EXTERN void png_do_write_transformations PNGARG((png_structp png_ptr));
02262
02263 PNG_EXTERN void png_init_read_transformations PNGARG((png_structp png_ptr));
02264
02265 #ifdef PNG_PROGRESSIVE_READ_SUPPORTED
02266 PNG_EXTERN void png_push_read_chunk PNGARG((png_structp png_ptr,
02267 png_infop info_ptr));
02268 PNG_EXTERN void png_push_read_sig PNGARG((png_structp png_ptr,
02269 png_infop info_ptr));
02270 PNG_EXTERN void png_push_check_crc PNGARG((png_structp png_ptr));
02271 PNG_EXTERN void png_push_crc_skip PNGARG((png_structp png_ptr,
02272 png_uint_32 length));
02273 PNG_EXTERN void png_push_crc_finish PNGARG((png_structp png_ptr));
02274 PNG_EXTERN void png_push_fill_buffer PNGARG((png_structp png_ptr,
02275 png_bytep buffer, png_size_t length));
02276 PNG_EXTERN void png_push_save_buffer PNGARG((png_structp png_ptr));
02277 PNG_EXTERN void png_push_restore_buffer PNGARG((png_structp png_ptr,
02278 png_bytep buffer, png_size_t buffer_length));
02279 PNG_EXTERN void png_push_read_IDAT PNGARG((png_structp png_ptr));
02280 PNG_EXTERN void png_process_IDAT_data PNGARG((png_structp png_ptr,
02281 png_bytep buffer, png_size_t buffer_length));
02282 PNG_EXTERN void png_push_process_row PNGARG((png_structp png_ptr));
02283 PNG_EXTERN void png_push_handle_unknown PNGARG((png_structp png_ptr,
02284 png_infop info_ptr, png_uint_32 length));
02285 PNG_EXTERN void png_push_have_info PNGARG((png_structp png_ptr,
02286 png_infop info_ptr));
02287 PNG_EXTERN void png_push_have_end PNGARG((png_structp png_ptr,
02288 png_infop info_ptr));
02289 PNG_EXTERN void png_push_have_row PNGARG((png_structp png_ptr, png_bytep row));
02290 PNG_EXTERN void png_push_read_end PNGARG((png_structp png_ptr,
02291 png_infop info_ptr));
02292 PNG_EXTERN void png_process_some_data PNGARG((png_structp png_ptr,
02293 png_infop info_ptr));
02294 PNG_EXTERN void png_read_push_finish_row PNGARG((png_structp png_ptr));
02295 #if defined(PNG_READ_tEXt_SUPPORTED)
02296 PNG_EXTERN void png_push_handle_tEXt PNGARG((png_structp png_ptr,
02297 png_infop info_ptr, png_uint_32 length));
02298 PNG_EXTERN void png_push_read_tEXt PNGARG((png_structp png_ptr,
02299 png_infop info_ptr));
02300 #endif
02301 #if defined(PNG_READ_zTXt_SUPPORTED)
02302 PNG_EXTERN void png_push_handle_zTXt PNGARG((png_structp png_ptr,
02303 png_infop info_ptr, png_uint_32 length));
02304 PNG_EXTERN void png_push_read_zTXt PNGARG((png_structp png_ptr,
02305 png_infop info_ptr));
02306 #endif
02307
02308 #endif
02309
02310 #endif
02311
02312 #ifdef __cplusplus
02313 }
02314 #endif
02315
02316
02317 #endif