1189
1246
#ifdef PNG_SETJMP_SUPPORTED
1190
1247
jmp_buf jmpbuf; /* used in png_error */
1192
png_error_ptr error_fn; /* function for printing errors and aborting */
1193
png_error_ptr warning_fn; /* function for printing warnings */
1194
png_voidp error_ptr; /* user supplied struct for error functions */
1195
png_rw_ptr write_data_fn; /* function for writing output data */
1196
png_rw_ptr read_data_fn; /* function for reading input data */
1197
png_voidp io_ptr; /* ptr to application struct for I/O functions */
1249
png_error_ptr error_fn PNG_DEPSTRUCT; /* function for printing errors and aborting */
1250
png_error_ptr warning_fn PNG_DEPSTRUCT; /* function for printing warnings */
1251
png_voidp error_ptr PNG_DEPSTRUCT; /* user supplied struct for error functions */
1252
png_rw_ptr write_data_fn PNG_DEPSTRUCT; /* function for writing output data */
1253
png_rw_ptr read_data_fn PNG_DEPSTRUCT; /* function for reading input data */
1254
png_voidp io_ptr PNG_DEPSTRUCT; /* ptr to application struct for I/O functions */
1199
#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED)
1200
png_user_transform_ptr read_user_transform_fn; /* user read transform */
1256
#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED
1257
png_user_transform_ptr read_user_transform_fn PNG_DEPSTRUCT; /* user read transform */
1203
#if defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
1204
png_user_transform_ptr write_user_transform_fn; /* user write transform */
1260
#ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED
1261
png_user_transform_ptr write_user_transform_fn PNG_DEPSTRUCT; /* user write transform */
1207
1264
/* These were added in libpng-1.0.2 */
1208
#if defined(PNG_USER_TRANSFORM_PTR_SUPPORTED)
1265
#ifdef PNG_USER_TRANSFORM_PTR_SUPPORTED
1209
1266
#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \
1210
1267
defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
1211
png_voidp user_transform_ptr; /* user supplied struct for user transform */
1212
png_byte user_transform_depth; /* bit depth of user transformed pixels */
1213
png_byte user_transform_channels; /* channels in user transformed pixels */
1217
png_uint_32 mode; /* tells us where we are in the PNG file */
1218
png_uint_32 flags; /* flags indicating various things to libpng */
1219
png_uint_32 transformations; /* which transformations to perform */
1221
z_stream zstream; /* pointer to decompression structure (below) */
1222
png_bytep zbuf; /* buffer for zlib */
1223
png_size_t zbuf_size; /* size of zbuf */
1224
int zlib_level; /* holds zlib compression level */
1225
int zlib_method; /* holds zlib compression method */
1226
int zlib_window_bits; /* holds zlib compression window bits */
1227
int zlib_mem_level; /* holds zlib compression memory level */
1228
int zlib_strategy; /* holds zlib compression strategy */
1230
png_uint_32 width; /* width of image in pixels */
1231
png_uint_32 height; /* height of image in pixels */
1232
png_uint_32 num_rows; /* number of rows in current pass */
1233
png_uint_32 usr_width; /* width of row at start of write */
1234
png_uint_32 rowbytes; /* size of row in bytes */
1235
png_uint_32 irowbytes; /* size of current interlaced row in bytes */
1236
png_uint_32 iwidth; /* width of current interlaced row in pixels */
1237
png_uint_32 row_number; /* current row in interlace pass */
1238
png_bytep prev_row; /* buffer to save previous (unfiltered) row */
1239
png_bytep row_buf; /* buffer to save current (unfiltered) row */
1268
png_voidp user_transform_ptr PNG_DEPSTRUCT; /* user supplied struct for user transform */
1269
png_byte user_transform_depth PNG_DEPSTRUCT; /* bit depth of user transformed pixels */
1270
png_byte user_transform_channels PNG_DEPSTRUCT; /* channels in user transformed pixels */
1274
png_uint_32 mode PNG_DEPSTRUCT; /* tells us where we are in the PNG file */
1275
png_uint_32 flags PNG_DEPSTRUCT; /* flags indicating various things to libpng */
1276
png_uint_32 transformations PNG_DEPSTRUCT; /* which transformations to perform */
1278
z_stream zstream PNG_DEPSTRUCT; /* pointer to decompression structure (below) */
1279
png_bytep zbuf PNG_DEPSTRUCT; /* buffer for zlib */
1280
png_size_t zbuf_size PNG_DEPSTRUCT; /* size of zbuf */
1281
int zlib_level PNG_DEPSTRUCT; /* holds zlib compression level */
1282
int zlib_method PNG_DEPSTRUCT; /* holds zlib compression method */
1283
int zlib_window_bits PNG_DEPSTRUCT; /* holds zlib compression window bits */
1284
int zlib_mem_level PNG_DEPSTRUCT; /* holds zlib compression memory level */
1285
int zlib_strategy PNG_DEPSTRUCT; /* holds zlib compression strategy */
1287
png_uint_32 width PNG_DEPSTRUCT; /* width of image in pixels */
1288
png_uint_32 height PNG_DEPSTRUCT; /* height of image in pixels */
1289
png_uint_32 num_rows PNG_DEPSTRUCT; /* number of rows in current pass */
1290
png_uint_32 usr_width PNG_DEPSTRUCT; /* width of row at start of write */
1291
png_uint_32 rowbytes PNG_DEPSTRUCT; /* size of row in bytes */
1292
#if 0 /* Replaced with the following in libpng-1.2.43 */
1293
png_size_t irowbytes PNG_DEPSTRUCT;
1295
/* Added in libpng-1.2.43 */
1296
#ifdef PNG_USER_LIMITS_SUPPORTED
1297
/* Added in libpng-1.4.0: Total number of sPLT, text, and unknown
1298
* chunks that can be stored (0 means unlimited).
1300
png_uint_32 user_chunk_cache_max PNG_DEPSTRUCT;
1302
png_uint_32 iwidth PNG_DEPSTRUCT; /* width of current interlaced row in pixels */
1303
png_uint_32 row_number PNG_DEPSTRUCT; /* current row in interlace pass */
1304
png_bytep prev_row PNG_DEPSTRUCT; /* buffer to save previous (unfiltered) row */
1305
png_bytep row_buf PNG_DEPSTRUCT; /* buffer to save current (unfiltered) row */
1240
1306
#ifndef PNG_NO_WRITE_FILTER
1241
png_bytep sub_row; /* buffer to save "sub" row when filtering */
1242
png_bytep up_row; /* buffer to save "up" row when filtering */
1243
png_bytep avg_row; /* buffer to save "avg" row when filtering */
1244
png_bytep paeth_row; /* buffer to save "Paeth" row when filtering */
1307
png_bytep sub_row PNG_DEPSTRUCT; /* buffer to save "sub" row when filtering */
1308
png_bytep up_row PNG_DEPSTRUCT; /* buffer to save "up" row when filtering */
1309
png_bytep avg_row PNG_DEPSTRUCT; /* buffer to save "avg" row when filtering */
1310
png_bytep paeth_row PNG_DEPSTRUCT; /* buffer to save "Paeth" row when filtering */
1246
png_row_info row_info; /* used for transformation routines */
1312
png_row_info row_info PNG_DEPSTRUCT; /* used for transformation routines */
1248
png_uint_32 idat_size; /* current IDAT size for read */
1249
png_uint_32 crc; /* current chunk CRC value */
1250
png_colorp palette; /* palette from the input file */
1251
png_uint_16 num_palette; /* number of color entries in palette */
1252
png_uint_16 num_trans; /* number of transparency values */
1253
png_byte chunk_name[5]; /* null-terminated name of current chunk */
1254
png_byte compression; /* file compression type (always 0) */
1255
png_byte filter; /* file filter type (always 0) */
1256
png_byte interlaced; /* PNG_INTERLACE_NONE, PNG_INTERLACE_ADAM7 */
1257
png_byte pass; /* current interlace pass (0 - 6) */
1258
png_byte do_filter; /* row filter flags (see PNG_FILTER_ below ) */
1259
png_byte color_type; /* color type of file */
1260
png_byte bit_depth; /* bit depth of file */
1261
png_byte usr_bit_depth; /* bit depth of users row */
1262
png_byte pixel_depth; /* number of bits per pixel */
1263
png_byte channels; /* number of channels in file */
1264
png_byte usr_channels; /* channels at start of write */
1265
png_byte sig_bytes; /* magic bytes read/written from start of file */
1314
png_uint_32 idat_size PNG_DEPSTRUCT; /* current IDAT size for read */
1315
png_uint_32 crc PNG_DEPSTRUCT; /* current chunk CRC value */
1316
png_colorp palette PNG_DEPSTRUCT; /* palette from the input file */
1317
png_uint_16 num_palette PNG_DEPSTRUCT; /* number of color entries in palette */
1318
png_uint_16 num_trans PNG_DEPSTRUCT; /* number of transparency values */
1319
png_byte chunk_name[5] PNG_DEPSTRUCT; /* null-terminated name of current chunk */
1320
png_byte compression PNG_DEPSTRUCT; /* file compression type (always 0) */
1321
png_byte filter PNG_DEPSTRUCT; /* file filter type (always 0) */
1322
png_byte interlaced PNG_DEPSTRUCT; /* PNG_INTERLACE_NONE, PNG_INTERLACE_ADAM7 */
1323
png_byte pass PNG_DEPSTRUCT; /* current interlace pass (0 - 6) */
1324
png_byte do_filter PNG_DEPSTRUCT; /* row filter flags (see PNG_FILTER_ below ) */
1325
png_byte color_type PNG_DEPSTRUCT; /* color type of file */
1326
png_byte bit_depth PNG_DEPSTRUCT; /* bit depth of file */
1327
png_byte usr_bit_depth PNG_DEPSTRUCT; /* bit depth of users row */
1328
png_byte pixel_depth PNG_DEPSTRUCT; /* number of bits per pixel */
1329
png_byte channels PNG_DEPSTRUCT; /* number of channels in file */
1330
png_byte usr_channels PNG_DEPSTRUCT; /* channels at start of write */
1331
png_byte sig_bytes PNG_DEPSTRUCT; /* magic bytes read/written from start of file */
1267
1333
#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED)
1268
1334
#ifdef PNG_LEGACY_SUPPORTED
1269
png_byte filler; /* filler byte for pixel expansion */
1335
png_byte filler PNG_DEPSTRUCT; /* filler byte for pixel expansion */
1271
png_uint_16 filler; /* filler bytes for pixel expansion */
1337
png_uint_16 filler PNG_DEPSTRUCT; /* filler bytes for pixel expansion */
1275
#if defined(PNG_bKGD_SUPPORTED)
1276
png_byte background_gamma_type;
1341
#ifdef PNG_bKGD_SUPPORTED
1342
png_byte background_gamma_type PNG_DEPSTRUCT;
1277
1343
# ifdef PNG_FLOATING_POINT_SUPPORTED
1278
float background_gamma;
1344
float background_gamma PNG_DEPSTRUCT;
1280
png_color_16 background; /* background color in screen gamma space */
1281
#if defined(PNG_READ_GAMMA_SUPPORTED)
1282
png_color_16 background_1; /* background normalized to gamma 1.0 */
1346
png_color_16 background PNG_DEPSTRUCT; /* background color in screen gamma space */
1347
#ifdef PNG_READ_GAMMA_SUPPORTED
1348
png_color_16 background_1 PNG_DEPSTRUCT; /* background normalized to gamma 1.0 */
1284
1350
#endif /* PNG_bKGD_SUPPORTED */
1286
#if defined(PNG_WRITE_FLUSH_SUPPORTED)
1287
png_flush_ptr output_flush_fn;/* Function for flushing output */
1288
png_uint_32 flush_dist; /* how many rows apart to flush, 0 - no flush */
1289
png_uint_32 flush_rows; /* number of rows written since last flush */
1352
#ifdef PNG_WRITE_FLUSH_SUPPORTED
1353
png_flush_ptr output_flush_fn PNG_DEPSTRUCT; /* Function for flushing output */
1354
png_uint_32 flush_dist PNG_DEPSTRUCT; /* how many rows apart to flush, 0 - no flush */
1355
png_uint_32 flush_rows PNG_DEPSTRUCT; /* number of rows written since last flush */
1292
1358
#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
1293
int gamma_shift; /* number of "insignificant" bits 16-bit gamma */
1359
int gamma_shift PNG_DEPSTRUCT; /* number of "insignificant" bits 16-bit gamma */
1294
1360
#ifdef PNG_FLOATING_POINT_SUPPORTED
1295
float gamma; /* file gamma value */
1296
float screen_gamma; /* screen gamma value (display_exponent) */
1361
float gamma PNG_DEPSTRUCT; /* file gamma value */
1362
float screen_gamma PNG_DEPSTRUCT; /* screen gamma value (display_exponent) */
1300
1366
#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
1301
png_bytep gamma_table; /* gamma table for 8-bit depth files */
1302
png_bytep gamma_from_1; /* converts from 1.0 to screen */
1303
png_bytep gamma_to_1; /* converts from file to 1.0 */
1304
png_uint_16pp gamma_16_table; /* gamma table for 16-bit depth files */
1305
png_uint_16pp gamma_16_from_1; /* converts from 1.0 to screen */
1306
png_uint_16pp gamma_16_to_1; /* converts from file to 1.0 */
1367
png_bytep gamma_table PNG_DEPSTRUCT; /* gamma table for 8-bit depth files */
1368
png_bytep gamma_from_1 PNG_DEPSTRUCT; /* converts from 1.0 to screen */
1369
png_bytep gamma_to_1 PNG_DEPSTRUCT; /* converts from file to 1.0 */
1370
png_uint_16pp gamma_16_table PNG_DEPSTRUCT; /* gamma table for 16-bit depth files */
1371
png_uint_16pp gamma_16_from_1 PNG_DEPSTRUCT; /* converts from 1.0 to screen */
1372
png_uint_16pp gamma_16_to_1 PNG_DEPSTRUCT; /* converts from file to 1.0 */
1309
1375
#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_sBIT_SUPPORTED)
1310
png_color_8 sig_bit; /* significant bits in each available channel */
1376
png_color_8 sig_bit PNG_DEPSTRUCT; /* significant bits in each available channel */
1313
1379
#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED)
1314
png_color_8 shift; /* shift for significant bit tranformation */
1380
png_color_8 shift PNG_DEPSTRUCT; /* shift for significant bit tranformation */
1317
1383
#if defined(PNG_tRNS_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) \
1318
1384
|| defined(PNG_READ_EXPAND_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
1319
png_bytep trans; /* transparency values for paletted files */
1320
png_color_16 trans_values; /* transparency values for non-paletted files */
1385
png_bytep trans PNG_DEPSTRUCT; /* transparency values for paletted files */
1386
png_color_16 trans_values PNG_DEPSTRUCT; /* transparency values for non-paletted files */
1323
png_read_status_ptr read_row_fn; /* called after each row is decoded */
1324
png_write_status_ptr write_row_fn; /* called after each row is encoded */
1389
png_read_status_ptr read_row_fn PNG_DEPSTRUCT; /* called after each row is decoded */
1390
png_write_status_ptr write_row_fn PNG_DEPSTRUCT; /* called after each row is encoded */
1325
1391
#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
1326
png_progressive_info_ptr info_fn; /* called after header data fully read */
1327
png_progressive_row_ptr row_fn; /* called after each prog. row is decoded */
1328
png_progressive_end_ptr end_fn; /* called after image is complete */
1329
png_bytep save_buffer_ptr; /* current location in save_buffer */
1330
png_bytep save_buffer; /* buffer for previously read data */
1331
png_bytep current_buffer_ptr; /* current location in current_buffer */
1332
png_bytep current_buffer; /* buffer for recently used data */
1333
png_uint_32 push_length; /* size of current input chunk */
1334
png_uint_32 skip_length; /* bytes to skip in input data */
1335
png_size_t save_buffer_size; /* amount of data now in save_buffer */
1336
png_size_t save_buffer_max; /* total size of save_buffer */
1337
png_size_t buffer_size; /* total amount of available input data */
1338
png_size_t current_buffer_size; /* amount of data now in current_buffer */
1339
int process_mode; /* what push library is currently doing */
1340
int cur_palette; /* current push library palette index */
1392
png_progressive_info_ptr info_fn PNG_DEPSTRUCT; /* called after header data fully read */
1393
png_progressive_row_ptr row_fn PNG_DEPSTRUCT; /* called after each prog. row is decoded */
1394
png_progressive_end_ptr end_fn PNG_DEPSTRUCT; /* called after image is complete */
1395
png_bytep save_buffer_ptr PNG_DEPSTRUCT; /* current location in save_buffer */
1396
png_bytep save_buffer PNG_DEPSTRUCT; /* buffer for previously read data */
1397
png_bytep current_buffer_ptr PNG_DEPSTRUCT; /* current location in current_buffer */
1398
png_bytep current_buffer PNG_DEPSTRUCT; /* buffer for recently used data */
1399
png_uint_32 push_length PNG_DEPSTRUCT; /* size of current input chunk */
1400
png_uint_32 skip_length PNG_DEPSTRUCT; /* bytes to skip in input data */
1401
png_size_t save_buffer_size PNG_DEPSTRUCT; /* amount of data now in save_buffer */
1402
png_size_t save_buffer_max PNG_DEPSTRUCT; /* total size of save_buffer */
1403
png_size_t buffer_size PNG_DEPSTRUCT; /* total amount of available input data */
1404
png_size_t current_buffer_size PNG_DEPSTRUCT; /* amount of data now in current_buffer */
1405
int process_mode PNG_DEPSTRUCT; /* what push library is currently doing */
1406
int cur_palette PNG_DEPSTRUCT; /* current push library palette index */
1342
# if defined(PNG_TEXT_SUPPORTED)
1343
png_size_t current_text_size; /* current size of text input data */
1344
png_size_t current_text_left; /* how much text left to read in input */
1345
png_charp current_text; /* current text chunk buffer */
1346
png_charp current_text_ptr; /* current location in current_text */
1408
# ifdef PNG_TEXT_SUPPORTED
1409
png_size_t current_text_size PNG_DEPSTRUCT; /* current size of text input data */
1410
png_size_t current_text_left PNG_DEPSTRUCT; /* how much text left to read in input */
1411
png_charp current_text PNG_DEPSTRUCT; /* current text chunk buffer */
1412
png_charp current_text_ptr PNG_DEPSTRUCT; /* current location in current_text */
1347
1413
# endif /* PNG_TEXT_SUPPORTED */
1348
1414
#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */
1350
1416
#if defined(__TURBOC__) && !defined(_Windows) && !defined(__FLAT__)
1351
1417
/* for the Borland special 64K segment handler */
1352
png_bytepp offset_table_ptr;
1353
png_bytep offset_table;
1354
png_uint_16 offset_table_number;
1355
png_uint_16 offset_table_count;
1356
png_uint_16 offset_table_count_free;
1418
png_bytepp offset_table_ptr PNG_DEPSTRUCT;
1419
png_bytep offset_table PNG_DEPSTRUCT;
1420
png_uint_16 offset_table_number PNG_DEPSTRUCT;
1421
png_uint_16 offset_table_count PNG_DEPSTRUCT;
1422
png_uint_16 offset_table_count_free PNG_DEPSTRUCT;
1359
#if defined(PNG_READ_DITHER_SUPPORTED)
1360
png_bytep palette_lookup; /* lookup table for dithering */
1361
png_bytep dither_index; /* index translation for palette files */
1425
#ifdef PNG_READ_DITHER_SUPPORTED
1426
png_bytep palette_lookup PNG_DEPSTRUCT; /* lookup table for dithering */
1427
png_bytep dither_index PNG_DEPSTRUCT; /* index translation for palette files */
1364
1430
#if defined(PNG_READ_DITHER_SUPPORTED) || defined(PNG_hIST_SUPPORTED)
1365
png_uint_16p hist; /* histogram */
1368
#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED)
1369
png_byte heuristic_method; /* heuristic for row filter selection */
1370
png_byte num_prev_filters; /* number of weights for previous rows */
1371
png_bytep prev_filters; /* filter type(s) of previous row(s) */
1372
png_uint_16p filter_weights; /* weight(s) for previous line(s) */
1373
png_uint_16p inv_filter_weights; /* 1/weight(s) for previous line(s) */
1374
png_uint_16p filter_costs; /* relative filter calculation cost */
1375
png_uint_16p inv_filter_costs; /* 1/relative filter calculation cost */
1378
#if defined(PNG_TIME_RFC1123_SUPPORTED)
1379
png_charp time_buffer; /* String to hold RFC 1123 time text */
1431
png_uint_16p hist PNG_DEPSTRUCT; /* histogram */
1434
#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED
1435
png_byte heuristic_method PNG_DEPSTRUCT; /* heuristic for row filter selection */
1436
png_byte num_prev_filters PNG_DEPSTRUCT; /* number of weights for previous rows */
1437
png_bytep prev_filters PNG_DEPSTRUCT; /* filter type(s) of previous row(s) */
1438
png_uint_16p filter_weights PNG_DEPSTRUCT; /* weight(s) for previous line(s) */
1439
png_uint_16p inv_filter_weights PNG_DEPSTRUCT; /* 1/weight(s) for previous line(s) */
1440
png_uint_16p filter_costs PNG_DEPSTRUCT; /* relative filter calculation cost */
1441
png_uint_16p inv_filter_costs PNG_DEPSTRUCT; /* 1/relative filter calculation cost */
1444
#ifdef PNG_TIME_RFC1123_SUPPORTED
1445
png_charp time_buffer PNG_DEPSTRUCT; /* String to hold RFC 1123 time text */
1382
1448
/* New members added in libpng-1.0.6 */
1384
1450
#ifdef PNG_FREE_ME_SUPPORTED
1385
png_uint_32 free_me; /* flags items libpng is responsible for freeing */
1388
#if defined(PNG_USER_CHUNKS_SUPPORTED)
1389
png_voidp user_chunk_ptr;
1390
png_user_chunk_ptr read_user_chunk_fn; /* user read chunk handler */
1393
#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
1395
png_bytep chunk_list;
1451
png_uint_32 free_me PNG_DEPSTRUCT; /* flags items libpng is responsible for freeing */
1454
#ifdef PNG_USER_CHUNKS_SUPPORTED
1455
png_voidp user_chunk_ptr PNG_DEPSTRUCT;
1456
png_user_chunk_ptr read_user_chunk_fn PNG_DEPSTRUCT; /* user read chunk handler */
1459
#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
1460
int num_chunk_list PNG_DEPSTRUCT;
1461
png_bytep chunk_list PNG_DEPSTRUCT;
1398
1464
/* New members added in libpng-1.0.3 */
1399
#if defined(PNG_READ_RGB_TO_GRAY_SUPPORTED)
1400
png_byte rgb_to_gray_status;
1465
#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED
1466
png_byte rgb_to_gray_status PNG_DEPSTRUCT;
1401
1467
/* These were changed from png_byte in libpng-1.0.6 */
1402
png_uint_16 rgb_to_gray_red_coeff;
1403
png_uint_16 rgb_to_gray_green_coeff;
1404
png_uint_16 rgb_to_gray_blue_coeff;
1468
png_uint_16 rgb_to_gray_red_coeff PNG_DEPSTRUCT;
1469
png_uint_16 rgb_to_gray_green_coeff PNG_DEPSTRUCT;
1470
png_uint_16 rgb_to_gray_blue_coeff PNG_DEPSTRUCT;
1407
1473
/* New member added in libpng-1.0.4 (renamed in 1.0.9) */
1408
1474
#if defined(PNG_MNG_FEATURES_SUPPORTED) || \
1409
1475
defined(PNG_READ_EMPTY_PLTE_SUPPORTED) || \
1410
1476
defined(PNG_WRITE_EMPTY_PLTE_SUPPORTED)
1411
/* changed from png_byte to png_uint_32 at version 1.2.0 */
1477
/* Changed from png_byte to png_uint_32 at version 1.2.0 */
1412
1478
#ifdef PNG_1_0_X
1413
png_byte mng_features_permitted;
1479
png_byte mng_features_permitted PNG_DEPSTRUCT;
1415
png_uint_32 mng_features_permitted;
1481
png_uint_32 mng_features_permitted PNG_DEPSTRUCT;
1416
1482
#endif /* PNG_1_0_X */
1419
1485
/* New member added in libpng-1.0.7 */
1420
1486
#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
1421
png_fixed_point int_gamma;
1487
png_fixed_point int_gamma PNG_DEPSTRUCT;
1424
1490
/* New member added in libpng-1.0.9, ifdef'ed out in 1.0.12, enabled in 1.2.0 */
1425
#if defined(PNG_MNG_FEATURES_SUPPORTED)
1426
png_byte filter_type;
1491
#ifdef PNG_MNG_FEATURES_SUPPORTED
1492
png_byte filter_type PNG_DEPSTRUCT;
1429
#if defined(PNG_1_0_X)
1430
1496
/* New member added in libpng-1.0.10, ifdef'ed out in 1.2.0 */
1431
png_uint_32 row_buf_size;
1497
png_uint_32 row_buf_size PNG_DEPSTRUCT;
1434
1500
/* New members added in libpng-1.2.0 */
1435
#if defined(PNG_ASSEMBLER_CODE_SUPPORTED)
1436
# if !defined(PNG_1_0_X)
1437
# if defined(PNG_MMX_CODE_SUPPORTED)
1438
png_byte mmx_bitdepth_threshold;
1439
png_uint_32 mmx_rowbytes_threshold;
1501
#ifdef PNG_ASSEMBLER_CODE_SUPPORTED
1503
# ifdef PNG_MMX_CODE_SUPPORTED
1504
png_byte mmx_bitdepth_threshold PNG_DEPSTRUCT;
1505
png_uint_32 mmx_rowbytes_threshold PNG_DEPSTRUCT;
1441
png_uint_32 asm_flags;
1507
png_uint_32 asm_flags PNG_DEPSTRUCT;
1445
1511
/* New members added in libpng-1.0.2 but first enabled by default in 1.2.0 */
1446
1512
#ifdef PNG_USER_MEM_SUPPORTED
1447
png_voidp mem_ptr; /* user supplied struct for mem functions */
1448
png_malloc_ptr malloc_fn; /* function for allocating memory */
1449
png_free_ptr free_fn; /* function for freeing memory */
1513
png_voidp mem_ptr PNG_DEPSTRUCT; /* user supplied struct for mem functions */
1514
png_malloc_ptr malloc_fn PNG_DEPSTRUCT; /* function for allocating memory */
1515
png_free_ptr free_fn PNG_DEPSTRUCT; /* function for freeing memory */
1452
1518
/* New member added in libpng-1.0.13 and 1.2.0 */
1453
png_bytep big_row_buf; /* buffer to save current (unfiltered) row */
1519
png_bytep big_row_buf PNG_DEPSTRUCT; /* buffer to save current (unfiltered) row */
1455
#if defined(PNG_READ_DITHER_SUPPORTED)
1521
#ifdef PNG_READ_DITHER_SUPPORTED
1456
1522
/* The following three members were added at version 1.0.14 and 1.2.4 */
1457
png_bytep dither_sort; /* working sort array */
1458
png_bytep index_to_palette; /* where the original index currently is */
1459
/* in the palette */
1460
png_bytep palette_to_index; /* which original index points to this */
1523
png_bytep dither_sort PNG_DEPSTRUCT; /* working sort array */
1524
png_bytep index_to_palette PNG_DEPSTRUCT; /* where the original index currently is */
1525
/* in the palette */
1526
png_bytep palette_to_index PNG_DEPSTRUCT; /* which original index points to this */
1464
1530
/* New members added in libpng-1.0.16 and 1.2.6 */
1465
png_byte compression_type;
1531
png_byte compression_type PNG_DEPSTRUCT;
1467
#ifdef PNG_SET_USER_LIMITS_SUPPORTED
1468
png_uint_32 user_width_max;
1469
png_uint_32 user_height_max;
1533
#ifdef PNG_USER_LIMITS_SUPPORTED
1534
png_uint_32 user_width_max PNG_DEPSTRUCT;
1535
png_uint_32 user_height_max PNG_DEPSTRUCT;
1472
1538
/* New member added in libpng-1.0.25 and 1.2.17 */
1473
#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
1474
/* storage for unknown chunk that the library doesn't recognize. */
1475
png_unknown_chunk unknown_chunk;
1539
#ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED
1540
/* Storage for unknown chunk that the library doesn't recognize. */
1541
png_unknown_chunk unknown_chunk PNG_DEPSTRUCT;
1478
1544
/* New members added in libpng-1.2.26 */
1479
png_uint_32 old_big_row_buf_size, old_prev_row_size;
1545
png_uint_32 old_big_row_buf_size PNG_DEPSTRUCT;
1546
png_uint_32 old_prev_row_size PNG_DEPSTRUCT;
1481
1548
/* New member added in libpng-1.2.30 */
1482
png_charp chunkdata; /* buffer for reading chunk data */
1549
png_charp chunkdata PNG_DEPSTRUCT; /* buffer for reading chunk data */
3144
3238
PNG_EXTERN void png_write_IHDR PNGARG((png_structp png_ptr, png_uint_32 width,
3145
3239
png_uint_32 height,
3146
3240
int bit_depth, int color_type, int compression_method, int filter_method,
3147
int interlace_method));
3241
int interlace_method)) PNG_PRIVATE;
3149
3243
PNG_EXTERN void png_write_PLTE PNGARG((png_structp png_ptr, png_colorp palette,
3150
png_uint_32 num_pal));
3244
png_uint_32 num_pal)) PNG_PRIVATE;
3152
3246
PNG_EXTERN void png_write_IDAT PNGARG((png_structp png_ptr, png_bytep data,
3153
png_size_t length));
3155
PNG_EXTERN void png_write_IEND PNGARG((png_structp png_ptr));
3157
#if defined(PNG_WRITE_gAMA_SUPPORTED)
3247
png_size_t length)) PNG_PRIVATE;
3249
PNG_EXTERN void png_write_IEND PNGARG((png_structp png_ptr)) PNG_PRIVATE;
3251
#ifdef PNG_WRITE_gAMA_SUPPORTED
3158
3252
#ifdef PNG_FLOATING_POINT_SUPPORTED
3159
PNG_EXTERN void png_write_gAMA PNGARG((png_structp png_ptr, double file_gamma));
3253
PNG_EXTERN void png_write_gAMA PNGARG((png_structp png_ptr, double file_gamma))
3161
3256
#ifdef PNG_FIXED_POINT_SUPPORTED
3162
PNG_EXTERN void png_write_gAMA_fixed PNGARG((png_structp png_ptr, png_fixed_point
3257
PNG_EXTERN void png_write_gAMA_fixed PNGARG((png_structp png_ptr,
3258
png_fixed_point file_gamma)) PNG_PRIVATE;
3167
#if defined(PNG_WRITE_sBIT_SUPPORTED)
3262
#ifdef PNG_WRITE_sBIT_SUPPORTED
3168
3263
PNG_EXTERN void png_write_sBIT PNGARG((png_structp png_ptr, png_color_8p sbit,
3264
int color_type)) PNG_PRIVATE;
3172
#if defined(PNG_WRITE_cHRM_SUPPORTED)
3267
#ifdef PNG_WRITE_cHRM_SUPPORTED
3173
3268
#ifdef PNG_FLOATING_POINT_SUPPORTED
3174
3269
PNG_EXTERN void png_write_cHRM PNGARG((png_structp png_ptr,
3175
3270
double white_x, double white_y,
3176
3271
double red_x, double red_y, double green_x, double green_y,
3177
double blue_x, double blue_y));
3272
double blue_x, double blue_y)) PNG_PRIVATE;
3179
3274
#ifdef PNG_FIXED_POINT_SUPPORTED
3180
3275
PNG_EXTERN void png_write_cHRM_fixed PNGARG((png_structp png_ptr,
3181
3276
png_fixed_point int_white_x, png_fixed_point int_white_y,
3182
3277
png_fixed_point int_red_x, png_fixed_point int_red_y, png_fixed_point
3183
3278
int_green_x, png_fixed_point int_green_y, png_fixed_point int_blue_x,
3184
png_fixed_point int_blue_y));
3279
png_fixed_point int_blue_y)) PNG_PRIVATE;
3188
#if defined(PNG_WRITE_sRGB_SUPPORTED)
3283
#ifdef PNG_WRITE_sRGB_SUPPORTED
3189
3284
PNG_EXTERN void png_write_sRGB PNGARG((png_structp png_ptr,
3285
int intent)) PNG_PRIVATE;
3193
#if defined(PNG_WRITE_iCCP_SUPPORTED)
3288
#ifdef PNG_WRITE_iCCP_SUPPORTED
3194
3289
PNG_EXTERN void png_write_iCCP PNGARG((png_structp png_ptr,
3195
3290
png_charp name, int compression_type,
3196
png_charp profile, int proflen));
3291
png_charp profile, int proflen)) PNG_PRIVATE;
3197
3292
/* Note to maintainer: profile should be png_bytep */
3200
#if defined(PNG_WRITE_sPLT_SUPPORTED)
3295
#ifdef PNG_WRITE_sPLT_SUPPORTED
3201
3296
PNG_EXTERN void png_write_sPLT PNGARG((png_structp png_ptr,
3202
png_sPLT_tp palette));
3297
png_sPLT_tp palette)) PNG_PRIVATE;
3205
#if defined(PNG_WRITE_tRNS_SUPPORTED)
3300
#ifdef PNG_WRITE_tRNS_SUPPORTED
3206
3301
PNG_EXTERN void png_write_tRNS PNGARG((png_structp png_ptr, png_bytep trans,
3207
png_color_16p values, int number, int color_type));
3302
png_color_16p values, int number, int color_type)) PNG_PRIVATE;
3210
#if defined(PNG_WRITE_bKGD_SUPPORTED)
3305
#ifdef PNG_WRITE_bKGD_SUPPORTED
3211
3306
PNG_EXTERN void png_write_bKGD PNGARG((png_structp png_ptr,
3212
png_color_16p values, int color_type));
3307
png_color_16p values, int color_type)) PNG_PRIVATE;
3215
#if defined(PNG_WRITE_hIST_SUPPORTED)
3310
#ifdef PNG_WRITE_hIST_SUPPORTED
3216
3311
PNG_EXTERN void png_write_hIST PNGARG((png_structp png_ptr, png_uint_16p hist,
3312
int num_hist)) PNG_PRIVATE;
3220
3315
#if defined(PNG_WRITE_TEXT_SUPPORTED) || defined(PNG_WRITE_pCAL_SUPPORTED) || \
3221
3316
defined(PNG_WRITE_iCCP_SUPPORTED) || defined(PNG_WRITE_sPLT_SUPPORTED)
3222
3317
PNG_EXTERN png_size_t png_check_keyword PNGARG((png_structp png_ptr,
3223
png_charp key, png_charpp new_key));
3318
png_charp key, png_charpp new_key)) PNG_PRIVATE;
3226
#if defined(PNG_WRITE_tEXt_SUPPORTED)
3321
#ifdef PNG_WRITE_tEXt_SUPPORTED
3227
3322
PNG_EXTERN void png_write_tEXt PNGARG((png_structp png_ptr, png_charp key,
3228
png_charp text, png_size_t text_len));
3323
png_charp text, png_size_t text_len)) PNG_PRIVATE;
3231
#if defined(PNG_WRITE_zTXt_SUPPORTED)
3326
#ifdef PNG_WRITE_zTXt_SUPPORTED
3232
3327
PNG_EXTERN void png_write_zTXt PNGARG((png_structp png_ptr, png_charp key,
3233
png_charp text, png_size_t text_len, int compression));
3328
png_charp text, png_size_t text_len, int compression)) PNG_PRIVATE;
3236
#if defined(PNG_WRITE_iTXt_SUPPORTED)
3331
#ifdef PNG_WRITE_iTXt_SUPPORTED
3237
3332
PNG_EXTERN void png_write_iTXt PNGARG((png_structp png_ptr,
3238
3333
int compression, png_charp key, png_charp lang, png_charp lang_key,
3334
png_charp text)) PNG_PRIVATE;
3242
#if defined(PNG_TEXT_SUPPORTED) /* Added at version 1.0.14 and 1.2.4 */
3337
#ifdef PNG_TEXT_SUPPORTED /* Added at version 1.0.14 and 1.2.4 */
3243
3338
PNG_EXTERN int png_set_text_2 PNGARG((png_structp png_ptr,
3244
png_infop info_ptr, png_textp text_ptr, int num_text));
3339
png_infop info_ptr, png_textp text_ptr, int num_text)) PNG_PRIVATE;
3247
#if defined(PNG_WRITE_oFFs_SUPPORTED)
3342
#ifdef PNG_WRITE_oFFs_SUPPORTED
3248
3343
PNG_EXTERN void png_write_oFFs PNGARG((png_structp png_ptr,
3249
png_int_32 x_offset, png_int_32 y_offset, int unit_type));
3344
png_int_32 x_offset, png_int_32 y_offset, int unit_type)) PNG_PRIVATE;
3252
#if defined(PNG_WRITE_pCAL_SUPPORTED)
3347
#ifdef PNG_WRITE_pCAL_SUPPORTED
3253
3348
PNG_EXTERN void png_write_pCAL PNGARG((png_structp png_ptr, png_charp purpose,
3254
3349
png_int_32 X0, png_int_32 X1, int type, int nparams,
3255
png_charp units, png_charpp params));
3350
png_charp units, png_charpp params)) PNG_PRIVATE;
3258
#if defined(PNG_WRITE_pHYs_SUPPORTED)
3353
#ifdef PNG_WRITE_pHYs_SUPPORTED
3259
3354
PNG_EXTERN void png_write_pHYs PNGARG((png_structp png_ptr,
3260
3355
png_uint_32 x_pixels_per_unit, png_uint_32 y_pixels_per_unit,
3356
int unit_type)) PNG_PRIVATE;
3264
#if defined(PNG_WRITE_tIME_SUPPORTED)
3359
#ifdef PNG_WRITE_tIME_SUPPORTED
3265
3360
PNG_EXTERN void png_write_tIME PNGARG((png_structp png_ptr,
3266
png_timep mod_time));
3361
png_timep mod_time)) PNG_PRIVATE;
3269
#if defined(PNG_WRITE_sCAL_SUPPORTED)
3364
#ifdef PNG_WRITE_sCAL_SUPPORTED
3270
3365
#if defined(PNG_FLOATING_POINT_SUPPORTED) && !defined(PNG_NO_STDIO)
3271
3366
PNG_EXTERN void png_write_sCAL PNGARG((png_structp png_ptr,
3272
int unit, double width, double height));
3367
int unit, double width, double height)) PNG_PRIVATE;
3274
3369
#ifdef PNG_FIXED_POINT_SUPPORTED
3275
3370
PNG_EXTERN void png_write_sCAL_s PNGARG((png_structp png_ptr,
3276
int unit, png_charp width, png_charp height));
3371
int unit, png_charp width, png_charp height)) PNG_PRIVATE;
3281
3376
/* Called when finished processing a row of data */
3282
PNG_EXTERN void png_write_finish_row PNGARG((png_structp png_ptr));
3377
PNG_EXTERN void png_write_finish_row PNGARG((png_structp png_ptr)) PNG_PRIVATE;
3284
3379
/* Internal use only. Called before first row of data */
3285
PNG_EXTERN void png_write_start_row PNGARG((png_structp png_ptr));
3380
PNG_EXTERN void png_write_start_row PNGARG((png_structp png_ptr)) PNG_PRIVATE;
3287
#if defined(PNG_READ_GAMMA_SUPPORTED)
3288
PNG_EXTERN void png_build_gamma_table PNGARG((png_structp png_ptr));
3382
#ifdef PNG_READ_GAMMA_SUPPORTED
3383
PNG_EXTERN void png_build_gamma_table PNGARG((png_structp png_ptr)) PNG_PRIVATE;
3291
/* combine a row of data, dealing with alpha, etc. if requested */
3386
/* Combine a row of data, dealing with alpha, etc. if requested */
3292
3387
PNG_EXTERN void png_combine_row PNGARG((png_structp png_ptr, png_bytep row,
3388
int mask)) PNG_PRIVATE;
3295
#if defined(PNG_READ_INTERLACING_SUPPORTED)
3296
/* expand an interlaced row */
3390
#ifdef PNG_READ_INTERLACING_SUPPORTED
3391
/* Expand an interlaced row */
3297
3392
/* OLD pre-1.0.9 interface:
3298
3393
PNG_EXTERN void png_do_read_interlace PNGARG((png_row_infop row_info,
3299
png_bytep row, int pass, png_uint_32 transformations));
3394
png_bytep row, int pass, png_uint_32 transformations)) PNG_PRIVATE;
3301
PNG_EXTERN void png_do_read_interlace PNGARG((png_structp png_ptr));
3396
PNG_EXTERN void png_do_read_interlace PNGARG((png_structp png_ptr)) PNG_PRIVATE;
3304
3399
/* GRR TO DO (2.0 or whenever): simplify other internal calling interfaces */
3306
#if defined(PNG_WRITE_INTERLACING_SUPPORTED)
3307
/* grab pixels out of a row for an interlaced pass */
3401
#ifdef PNG_WRITE_INTERLACING_SUPPORTED
3402
/* Grab pixels out of a row for an interlaced pass */
3308
3403
PNG_EXTERN void png_do_write_interlace PNGARG((png_row_infop row_info,
3309
png_bytep row, int pass));
3404
png_bytep row, int pass)) PNG_PRIVATE;
3312
/* unfilter a row */
3407
/* Unfilter a row */
3313
3408
PNG_EXTERN void png_read_filter_row PNGARG((png_structp png_ptr,
3314
png_row_infop row_info, png_bytep row, png_bytep prev_row, int filter));
3409
png_row_infop row_info, png_bytep row, png_bytep prev_row,
3410
int filter)) PNG_PRIVATE;
3316
3412
/* Choose the best filter to use and filter the row data */
3317
3413
PNG_EXTERN void png_write_find_filter PNGARG((png_structp png_ptr,
3318
png_row_infop row_info));
3414
png_row_infop row_info)) PNG_PRIVATE;
3320
3416
/* Write out the filtered row. */
3321
3417
PNG_EXTERN void png_write_filtered_row PNGARG((png_structp png_ptr,
3322
png_bytep filtered_row));
3323
/* finish a row while reading, dealing with interlacing passes, etc. */
3418
png_bytep filtered_row)) PNG_PRIVATE;
3419
/* Finish a row while reading, dealing with interlacing passes, etc. */
3324
3420
PNG_EXTERN void png_read_finish_row PNGARG((png_structp png_ptr));
3326
/* initialize the row buffers, etc. */
3327
PNG_EXTERN void png_read_start_row PNGARG((png_structp png_ptr));
3328
/* optional call to update the users info structure */
3422
/* Initialize the row buffers, etc. */
3423
PNG_EXTERN void png_read_start_row PNGARG((png_structp png_ptr)) PNG_PRIVATE;
3424
/* Optional call to update the users info structure */
3329
3425
PNG_EXTERN void png_read_transform_info PNGARG((png_structp png_ptr,
3330
png_infop info_ptr));
3426
png_infop info_ptr)) PNG_PRIVATE;
3332
/* these are the functions that do the transformations */
3333
#if defined(PNG_READ_FILLER_SUPPORTED)
3428
/* These are the functions that do the transformations */
3429
#ifdef PNG_READ_FILLER_SUPPORTED
3334
3430
PNG_EXTERN void png_do_read_filler PNGARG((png_row_infop row_info,
3335
png_bytep row, png_uint_32 filler, png_uint_32 flags));
3431
png_bytep row, png_uint_32 filler, png_uint_32 flags)) PNG_PRIVATE;
3338
#if defined(PNG_READ_SWAP_ALPHA_SUPPORTED)
3434
#ifdef PNG_READ_SWAP_ALPHA_SUPPORTED
3339
3435
PNG_EXTERN void png_do_read_swap_alpha PNGARG((png_row_infop row_info,
3436
png_bytep row)) PNG_PRIVATE;
3343
#if defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED)
3439
#ifdef PNG_WRITE_SWAP_ALPHA_SUPPORTED
3344
3440
PNG_EXTERN void png_do_write_swap_alpha PNGARG((png_row_infop row_info,
3441
png_bytep row)) PNG_PRIVATE;
3348
#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED)
3444
#ifdef PNG_READ_INVERT_ALPHA_SUPPORTED
3349
3445
PNG_EXTERN void png_do_read_invert_alpha PNGARG((png_row_infop row_info,
3446
png_bytep row)) PNG_PRIVATE;
3353
#if defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED)
3449
#ifdef PNG_WRITE_INVERT_ALPHA_SUPPORTED
3354
3450
PNG_EXTERN void png_do_write_invert_alpha PNGARG((png_row_infop row_info,
3451
png_bytep row)) PNG_PRIVATE;
3358
3454
#if defined(PNG_WRITE_FILLER_SUPPORTED) || \
3359
3455
defined(PNG_READ_STRIP_ALPHA_SUPPORTED)
3360
3456
PNG_EXTERN void png_do_strip_filler PNGARG((png_row_infop row_info,
3361
png_bytep row, png_uint_32 flags));
3457
png_bytep row, png_uint_32 flags)) PNG_PRIVATE;
3364
3460
#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED)
3365
PNG_EXTERN void png_do_swap PNGARG((png_row_infop row_info, png_bytep row));
3461
PNG_EXTERN void png_do_swap PNGARG((png_row_infop row_info,
3462
png_bytep row)) PNG_PRIVATE;
3368
3465
#if defined(PNG_READ_PACKSWAP_SUPPORTED) || defined(PNG_WRITE_PACKSWAP_SUPPORTED)
3369
PNG_EXTERN void png_do_packswap PNGARG((png_row_infop row_info, png_bytep row));
3466
PNG_EXTERN void png_do_packswap PNGARG((png_row_infop row_info,
3467
png_bytep row)) PNG_PRIVATE;
3372
#if defined(PNG_READ_RGB_TO_GRAY_SUPPORTED)
3470
#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED
3373
3471
PNG_EXTERN int png_do_rgb_to_gray PNGARG((png_structp png_ptr, png_row_infop
3374
row_info, png_bytep row));
3472
row_info, png_bytep row)) PNG_PRIVATE;
3377
#if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED)
3475
#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED
3378
3476
PNG_EXTERN void png_do_gray_to_rgb PNGARG((png_row_infop row_info,
3382
#if defined(PNG_READ_PACK_SUPPORTED)
3383
PNG_EXTERN void png_do_unpack PNGARG((png_row_infop row_info, png_bytep row));
3386
#if defined(PNG_READ_SHIFT_SUPPORTED)
3477
png_bytep row)) PNG_PRIVATE;
3480
#ifdef PNG_READ_PACK_SUPPORTED
3481
PNG_EXTERN void png_do_unpack PNGARG((png_row_infop row_info,
3482
png_bytep row)) PNG_PRIVATE;
3485
#ifdef PNG_READ_SHIFT_SUPPORTED
3387
3486
PNG_EXTERN void png_do_unshift PNGARG((png_row_infop row_info, png_bytep row,
3388
png_color_8p sig_bits));
3487
png_color_8p sig_bits)) PNG_PRIVATE;
3391
3490
#if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED)
3392
PNG_EXTERN void png_do_invert PNGARG((png_row_infop row_info, png_bytep row));
3395
#if defined(PNG_READ_16_TO_8_SUPPORTED)
3396
PNG_EXTERN void png_do_chop PNGARG((png_row_infop row_info, png_bytep row));
3399
#if defined(PNG_READ_DITHER_SUPPORTED)
3491
PNG_EXTERN void png_do_invert PNGARG((png_row_infop row_info,
3492
png_bytep row)) PNG_PRIVATE;
3495
#ifdef PNG_READ_16_TO_8_SUPPORTED
3496
PNG_EXTERN void png_do_chop PNGARG((png_row_infop row_info,
3497
png_bytep row)) PNG_PRIVATE;
3500
#ifdef PNG_READ_DITHER_SUPPORTED
3400
3501
PNG_EXTERN void png_do_dither PNGARG((png_row_infop row_info,
3401
png_bytep row, png_bytep palette_lookup, png_bytep dither_lookup));
3502
png_bytep row, png_bytep palette_lookup,
3503
png_bytep dither_lookup)) PNG_PRIVATE;
3403
# if defined(PNG_CORRECT_PALETTE_SUPPORTED)
3505
# ifdef PNG_CORRECT_PALETTE_SUPPORTED
3404
3506
PNG_EXTERN void png_correct_palette PNGARG((png_structp png_ptr,
3405
png_colorp palette, int num_palette));
3507
png_colorp palette, int num_palette)) PNG_PRIVATE;
3409
3511
#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED)
3410
PNG_EXTERN void png_do_bgr PNGARG((png_row_infop row_info, png_bytep row));
3512
PNG_EXTERN void png_do_bgr PNGARG((png_row_infop row_info,
3513
png_bytep row)) PNG_PRIVATE;
3413
#if defined(PNG_WRITE_PACK_SUPPORTED)
3516
#ifdef PNG_WRITE_PACK_SUPPORTED
3414
3517
PNG_EXTERN void png_do_pack PNGARG((png_row_infop row_info,
3415
png_bytep row, png_uint_32 bit_depth));
3518
png_bytep row, png_uint_32 bit_depth)) PNG_PRIVATE;
3418
#if defined(PNG_WRITE_SHIFT_SUPPORTED)
3521
#ifdef PNG_WRITE_SHIFT_SUPPORTED
3419
3522
PNG_EXTERN void png_do_shift PNGARG((png_row_infop row_info, png_bytep row,
3420
png_color_8p bit_depth));
3523
png_color_8p bit_depth)) PNG_PRIVATE;
3423
#if defined(PNG_READ_BACKGROUND_SUPPORTED)
3424
#if defined(PNG_READ_GAMMA_SUPPORTED)
3526
#ifdef PNG_READ_BACKGROUND_SUPPORTED
3527
#ifdef PNG_READ_GAMMA_SUPPORTED
3425
3528
PNG_EXTERN void png_do_background PNGARG((png_row_infop row_info, png_bytep row,
3426
3529
png_color_16p trans_values, png_color_16p background,
3427
3530
png_color_16p background_1,
3428
3531
png_bytep gamma_table, png_bytep gamma_from_1, png_bytep gamma_to_1,
3429
3532
png_uint_16pp gamma_16, png_uint_16pp gamma_16_from_1,
3430
png_uint_16pp gamma_16_to_1, int gamma_shift));
3533
png_uint_16pp gamma_16_to_1, int gamma_shift)) PNG_PRIVATE;
3432
3535
PNG_EXTERN void png_do_background PNGARG((png_row_infop row_info, png_bytep row,
3433
png_color_16p trans_values, png_color_16p background));
3536
png_color_16p trans_values, png_color_16p background)) PNG_PRIVATE;
3437
#if defined(PNG_READ_GAMMA_SUPPORTED)
3540
#ifdef PNG_READ_GAMMA_SUPPORTED
3438
3541
PNG_EXTERN void png_do_gamma PNGARG((png_row_infop row_info, png_bytep row,
3439
3542
png_bytep gamma_table, png_uint_16pp gamma_16_table,
3543
int gamma_shift)) PNG_PRIVATE;
3443
#if defined(PNG_READ_EXPAND_SUPPORTED)
3546
#ifdef PNG_READ_EXPAND_SUPPORTED
3444
3547
PNG_EXTERN void png_do_expand_palette PNGARG((png_row_infop row_info,
3445
png_bytep row, png_colorp palette, png_bytep trans, int num_trans));
3548
png_bytep row, png_colorp palette, png_bytep trans,
3549
int num_trans)) PNG_PRIVATE;
3446
3550
PNG_EXTERN void png_do_expand PNGARG((png_row_infop row_info,
3447
png_bytep row, png_color_16p trans_value));
3551
png_bytep row, png_color_16p trans_value)) PNG_PRIVATE;
3450
3554
/* The following decodes the appropriate chunks, and does error correction,
3451
3555
* then calls the appropriate callback for the chunk if it is valid.
3454
/* decode the IHDR chunk */
3558
/* Decode the IHDR chunk */
3455
3559
PNG_EXTERN void png_handle_IHDR PNGARG((png_structp png_ptr, png_infop info_ptr,
3456
png_uint_32 length));
3560
png_uint_32 length)) PNG_PRIVATE;
3457
3561
PNG_EXTERN void png_handle_PLTE PNGARG((png_structp png_ptr, png_infop info_ptr,
3458
3562
png_uint_32 length));
3459
3563
PNG_EXTERN void png_handle_IEND PNGARG((png_structp png_ptr, png_infop info_ptr,
3460
3564
png_uint_32 length));
3462
#if defined(PNG_READ_bKGD_SUPPORTED)
3566
#ifdef PNG_READ_bKGD_SUPPORTED
3463
3567
PNG_EXTERN void png_handle_bKGD PNGARG((png_structp png_ptr, png_infop info_ptr,
3464
png_uint_32 length));
3568
png_uint_32 length)) PNG_PRIVATE;
3467
#if defined(PNG_READ_cHRM_SUPPORTED)
3571
#ifdef PNG_READ_cHRM_SUPPORTED
3468
3572
PNG_EXTERN void png_handle_cHRM PNGARG((png_structp png_ptr, png_infop info_ptr,
3469
png_uint_32 length));
3573
png_uint_32 length)) PNG_PRIVATE;
3472
#if defined(PNG_READ_gAMA_SUPPORTED)
3576
#ifdef PNG_READ_gAMA_SUPPORTED
3473
3577
PNG_EXTERN void png_handle_gAMA PNGARG((png_structp png_ptr, png_infop info_ptr,
3474
png_uint_32 length));
3578
png_uint_32 length)) PNG_PRIVATE;
3477
#if defined(PNG_READ_hIST_SUPPORTED)
3581
#ifdef PNG_READ_hIST_SUPPORTED
3478
3582
PNG_EXTERN void png_handle_hIST PNGARG((png_structp png_ptr, png_infop info_ptr,
3479
png_uint_32 length));
3583
png_uint_32 length)) PNG_PRIVATE;
3482
#if defined(PNG_READ_iCCP_SUPPORTED)
3586
#ifdef PNG_READ_iCCP_SUPPORTED
3483
3587
extern void png_handle_iCCP PNGARG((png_structp png_ptr, png_infop info_ptr,
3484
3588
png_uint_32 length));
3485
3589
#endif /* PNG_READ_iCCP_SUPPORTED */
3487
#if defined(PNG_READ_iTXt_SUPPORTED)
3591
#ifdef PNG_READ_iTXt_SUPPORTED
3488
3592
PNG_EXTERN void png_handle_iTXt PNGARG((png_structp png_ptr, png_infop info_ptr,
3489
png_uint_32 length));
3593
png_uint_32 length)) PNG_PRIVATE;
3492
#if defined(PNG_READ_oFFs_SUPPORTED)
3596
#ifdef PNG_READ_oFFs_SUPPORTED
3493
3597
PNG_EXTERN void png_handle_oFFs PNGARG((png_structp png_ptr, png_infop info_ptr,
3494
png_uint_32 length));
3598
png_uint_32 length)) PNG_PRIVATE;
3497
#if defined(PNG_READ_pCAL_SUPPORTED)
3601
#ifdef PNG_READ_pCAL_SUPPORTED
3498
3602
PNG_EXTERN void png_handle_pCAL PNGARG((png_structp png_ptr, png_infop info_ptr,
3499
png_uint_32 length));
3603
png_uint_32 length)) PNG_PRIVATE;
3502
#if defined(PNG_READ_pHYs_SUPPORTED)
3606
#ifdef PNG_READ_pHYs_SUPPORTED
3503
3607
PNG_EXTERN void png_handle_pHYs PNGARG((png_structp png_ptr, png_infop info_ptr,
3504
png_uint_32 length));
3608
png_uint_32 length)) PNG_PRIVATE;
3507
#if defined(PNG_READ_sBIT_SUPPORTED)
3611
#ifdef PNG_READ_sBIT_SUPPORTED
3508
3612
PNG_EXTERN void png_handle_sBIT PNGARG((png_structp png_ptr, png_infop info_ptr,
3509
png_uint_32 length));
3613
png_uint_32 length)) PNG_PRIVATE;
3512
#if defined(PNG_READ_sCAL_SUPPORTED)
3616
#ifdef PNG_READ_sCAL_SUPPORTED
3513
3617
PNG_EXTERN void png_handle_sCAL PNGARG((png_structp png_ptr, png_infop info_ptr,
3514
png_uint_32 length));
3618
png_uint_32 length)) PNG_PRIVATE;
3517
#if defined(PNG_READ_sPLT_SUPPORTED)
3621
#ifdef PNG_READ_sPLT_SUPPORTED
3518
3622
extern void png_handle_sPLT PNGARG((png_structp png_ptr, png_infop info_ptr,
3519
png_uint_32 length));
3623
png_uint_32 length)) PNG_PRIVATE;
3520
3624
#endif /* PNG_READ_sPLT_SUPPORTED */
3522
#if defined(PNG_READ_sRGB_SUPPORTED)
3626
#ifdef PNG_READ_sRGB_SUPPORTED
3523
3627
PNG_EXTERN void png_handle_sRGB PNGARG((png_structp png_ptr, png_infop info_ptr,
3524
png_uint_32 length));
3628
png_uint_32 length)) PNG_PRIVATE;
3527
#if defined(PNG_READ_tEXt_SUPPORTED)
3631
#ifdef PNG_READ_tEXt_SUPPORTED
3528
3632
PNG_EXTERN void png_handle_tEXt PNGARG((png_structp png_ptr, png_infop info_ptr,
3529
png_uint_32 length));
3633
png_uint_32 length)) PNG_PRIVATE;
3532
#if defined(PNG_READ_tIME_SUPPORTED)
3636
#ifdef PNG_READ_tIME_SUPPORTED
3533
3637
PNG_EXTERN void png_handle_tIME PNGARG((png_structp png_ptr, png_infop info_ptr,
3534
png_uint_32 length));
3638
png_uint_32 length)) PNG_PRIVATE;
3537
#if defined(PNG_READ_tRNS_SUPPORTED)
3641
#ifdef PNG_READ_tRNS_SUPPORTED
3538
3642
PNG_EXTERN void png_handle_tRNS PNGARG((png_structp png_ptr, png_infop info_ptr,
3539
png_uint_32 length));
3643
png_uint_32 length)) PNG_PRIVATE;
3542
#if defined(PNG_READ_zTXt_SUPPORTED)
3646
#ifdef PNG_READ_zTXt_SUPPORTED
3543
3647
PNG_EXTERN void png_handle_zTXt PNGARG((png_structp png_ptr, png_infop info_ptr,
3544
png_uint_32 length));
3648
png_uint_32 length)) PNG_PRIVATE;
3547
3651
PNG_EXTERN void png_handle_unknown PNGARG((png_structp png_ptr,
3548
png_infop info_ptr, png_uint_32 length));
3652
png_infop info_ptr, png_uint_32 length)) PNG_PRIVATE;
3550
3654
PNG_EXTERN void png_check_chunk_name PNGARG((png_structp png_ptr,
3551
png_bytep chunk_name));
3553
/* handle the transformations for reading and writing */
3554
PNG_EXTERN void png_do_read_transformations PNGARG((png_structp png_ptr));
3555
PNG_EXTERN void png_do_write_transformations PNGARG((png_structp png_ptr));
3557
PNG_EXTERN void png_init_read_transformations PNGARG((png_structp png_ptr));
3655
png_bytep chunk_name)) PNG_PRIVATE;
3657
/* Handle the transformations for reading and writing */
3658
PNG_EXTERN void png_do_read_transformations
3659
PNGARG((png_structp png_ptr)) PNG_PRIVATE;
3660
PNG_EXTERN void png_do_write_transformations
3661
PNGARG((png_structp png_ptr)) PNG_PRIVATE;
3663
PNG_EXTERN void png_init_read_transformations
3664
PNGARG((png_structp png_ptr)) PNG_PRIVATE;
3559
3666
#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
3560
3667
PNG_EXTERN void png_push_read_chunk PNGARG((png_structp png_ptr,
3561
png_infop info_ptr));
3668
png_infop info_ptr)) PNG_PRIVATE;
3562
3669
PNG_EXTERN void png_push_read_sig PNGARG((png_structp png_ptr,
3563
png_infop info_ptr));
3564
PNG_EXTERN void png_push_check_crc PNGARG((png_structp png_ptr));
3670
png_infop info_ptr)) PNG_PRIVATE;
3671
PNG_EXTERN void png_push_check_crc PNGARG((png_structp png_ptr)) PNG_PRIVATE;
3565
3672
PNG_EXTERN void png_push_crc_skip PNGARG((png_structp png_ptr,
3566
png_uint_32 length));
3567
PNG_EXTERN void png_push_crc_finish PNGARG((png_structp png_ptr));
3568
PNG_EXTERN void png_push_save_buffer PNGARG((png_structp png_ptr));
3673
png_uint_32 length)) PNG_PRIVATE;
3674
PNG_EXTERN void png_push_crc_finish PNGARG((png_structp png_ptr)) PNG_PRIVATE;
3675
PNG_EXTERN void png_push_save_buffer PNGARG((png_structp png_ptr)) PNG_PRIVATE;
3569
3676
PNG_EXTERN void png_push_restore_buffer PNGARG((png_structp png_ptr,
3570
png_bytep buffer, png_size_t buffer_length));
3571
PNG_EXTERN void png_push_read_IDAT PNGARG((png_structp png_ptr));
3677
png_bytep buffer, png_size_t buffer_length)) PNG_PRIVATE;
3678
PNG_EXTERN void png_push_read_IDAT PNGARG((png_structp png_ptr)) PNG_PRIVATE;
3572
3679
PNG_EXTERN void png_process_IDAT_data PNGARG((png_structp png_ptr,
3573
png_bytep buffer, png_size_t buffer_length));
3574
PNG_EXTERN void png_push_process_row PNGARG((png_structp png_ptr));
3680
png_bytep buffer, png_size_t buffer_length)) PNG_PRIVATE;
3681
PNG_EXTERN void png_push_process_row PNGARG((png_structp png_ptr)) PNG_PRIVATE;
3575
3682
PNG_EXTERN void png_push_handle_unknown PNGARG((png_structp png_ptr,
3576
png_infop info_ptr, png_uint_32 length));
3683
png_infop info_ptr, png_uint_32 length)) PNG_PRIVATE;
3577
3684
PNG_EXTERN void png_push_have_info PNGARG((png_structp png_ptr,
3578
png_infop info_ptr));
3685
png_infop info_ptr)) PNG_PRIVATE;
3579
3686
PNG_EXTERN void png_push_have_end PNGARG((png_structp png_ptr,
3580
png_infop info_ptr));
3581
PNG_EXTERN void png_push_have_row PNGARG((png_structp png_ptr, png_bytep row));
3687
png_infop info_ptr)) PNG_PRIVATE;
3688
PNG_EXTERN void png_push_have_row PNGARG((png_structp png_ptr,
3689
png_bytep row)) PNG_PRIVATE;
3582
3690
PNG_EXTERN void png_push_read_end PNGARG((png_structp png_ptr,
3583
png_infop info_ptr));
3691
png_infop info_ptr)) PNG_PRIVATE;
3584
3692
PNG_EXTERN void png_process_some_data PNGARG((png_structp png_ptr,
3585
png_infop info_ptr));
3586
PNG_EXTERN void png_read_push_finish_row PNGARG((png_structp png_ptr));
3587
#if defined(PNG_READ_tEXt_SUPPORTED)
3693
png_infop info_ptr)) PNG_PRIVATE;
3694
PNG_EXTERN void png_read_push_finish_row
3695
PNGARG((png_structp png_ptr)) PNG_PRIVATE;
3696
#ifdef PNG_READ_tEXt_SUPPORTED
3588
3697
PNG_EXTERN void png_push_handle_tEXt PNGARG((png_structp png_ptr,
3589
png_infop info_ptr, png_uint_32 length));
3698
png_infop info_ptr, png_uint_32 length)) PNG_PRIVATE;
3590
3699
PNG_EXTERN void png_push_read_tEXt PNGARG((png_structp png_ptr,
3591
png_infop info_ptr));
3700
png_infop info_ptr)) PNG_PRIVATE;
3593
#if defined(PNG_READ_zTXt_SUPPORTED)
3702
#ifdef PNG_READ_zTXt_SUPPORTED
3594
3703
PNG_EXTERN void png_push_handle_zTXt PNGARG((png_structp png_ptr,
3595
png_infop info_ptr, png_uint_32 length));
3704
png_infop info_ptr, png_uint_32 length)) PNG_PRIVATE;
3596
3705
PNG_EXTERN void png_push_read_zTXt PNGARG((png_structp png_ptr,
3597
png_infop info_ptr));
3706
png_infop info_ptr)) PNG_PRIVATE;
3599
#if defined(PNG_READ_iTXt_SUPPORTED)
3708
#ifdef PNG_READ_iTXt_SUPPORTED
3600
3709
PNG_EXTERN void png_push_handle_iTXt PNGARG((png_structp png_ptr,
3601
png_infop info_ptr, png_uint_32 length));
3710
png_infop info_ptr, png_uint_32 length)) PNG_PRIVATE;
3602
3711
PNG_EXTERN void png_push_read_iTXt PNGARG((png_structp png_ptr,
3603
png_infop info_ptr));
3712
png_infop info_ptr)) PNG_PRIVATE;
3606
3715
#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */
3608
3717
#ifdef PNG_MNG_FEATURES_SUPPORTED
3609
3718
PNG_EXTERN void png_do_read_intrapixel PNGARG((png_row_infop row_info,
3719
png_bytep row)) PNG_PRIVATE;
3611
3720
PNG_EXTERN void png_do_write_intrapixel PNGARG((png_row_infop row_info,
3721
png_bytep row)) PNG_PRIVATE;
3615
#if defined(PNG_ASSEMBLER_CODE_SUPPORTED)
3616
#if defined(PNG_MMX_CODE_SUPPORTED)
3724
#ifdef PNG_ASSEMBLER_CODE_SUPPORTED
3725
#ifdef PNG_MMX_CODE_SUPPORTED
3617
3726
/* png.c */ /* PRIVATE */
3618
PNG_EXTERN void png_init_mmx_flags PNGARG((png_structp png_ptr));
3727
PNG_EXTERN void png_init_mmx_flags PNGARG((png_structp png_ptr)) PNG_PRIVATE;
3732
/* The following six functions will be exported in libpng-1.4.0. */
3622
3733
#if defined(PNG_INCH_CONVERSIONS) && defined(PNG_FLOATING_POINT_SUPPORTED)
3623
3734
PNG_EXTERN png_uint_32 png_get_pixels_per_inch PNGARG((png_structp png_ptr,
3624
3735
png_infop info_ptr));