18b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 28b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* png.h - header file for PNG reference library 38b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 48b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * libpng version 1.2.19 - August 18, 2007 58b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Copyright (c) 1998-2007 Glenn Randers-Pehrson 68b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) 78b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) 88b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 98b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Authors and maintainers: 108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat 118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * libpng versions 0.89c, June 1996, through 0.96, May 1997: Andreas Dilger 128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * libpng versions 0.97, January 1998, through 1.2.19 - August 18, 2007: Glenn 138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * See also "Contributing Authors", below. 148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Note about libpng version numbers: 168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Due to various miscommunications, unforeseen code incompatibilities 188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * and occasional factors outside the authors' control, version numbering 198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * on the library has not always been consistent and straightforward. 208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * The following table summarizes matters since version 0.89c, which was 218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * the first widely used release: 228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * source png.h png.h shared-lib 248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * version string int version 258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * ------- ------ ----- ---------- 268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 0.89c "1.0 beta 3" 0.89 89 1.0.89 278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 0.90 "1.0 beta 4" 0.90 90 0.90 [should have been 2.0.90] 288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 0.95 "1.0 beta 5" 0.95 95 0.95 [should have been 2.0.95] 298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 0.96 "1.0 beta 6" 0.96 96 0.96 [should have been 2.0.96] 308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 0.97b "1.00.97 beta 7" 1.00.97 97 1.0.1 [should have been 2.0.97] 318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 0.97c 0.97 97 2.0.97 328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 0.98 0.98 98 2.0.98 338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 0.99 0.99 98 2.0.99 348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 0.99a-m 0.99 99 2.0.99 358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.00 1.00 100 2.1.0 [100 should be 10000] 368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.0 (from here on, the 100 2.1.0 [100 should be 10000] 378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.1 png.h string is 10001 2.1.0 388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.1a-e identical to the 10002 from here on, the shared library 398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.2 source version) 10002 is 2.V where V is the source code 408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.2a-b 10003 version, except as noted. 418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.3 10003 428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.3a-d 10004 438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.4 10004 448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.4a-f 10005 458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.5 (+ 2 patches) 10005 468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.5a-d 10006 478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.5e-r 10100 (not source compatible) 488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.5s-v 10006 (not binary compatible) 498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.6 (+ 3 patches) 10006 (still binary incompatible) 508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.6d-f 10007 (still binary incompatible) 518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.6g 10007 528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.6h 10007 10.6h (testing xy.z so-numbering) 538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.6i 10007 10.6i 548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.6j 10007 2.1.0.6j (incompatible with 1.0.0) 558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.7beta11-14 DLLNUM 10007 2.1.0.7beta11-14 (binary compatible) 568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.7beta15-18 1 10007 2.1.0.7beta15-18 (binary compatible) 578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.7rc1-2 1 10007 2.1.0.7rc1-2 (binary compatible) 588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.7 1 10007 (still compatible) 598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.8beta1-4 1 10008 2.1.0.8beta1-4 608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.8rc1 1 10008 2.1.0.8rc1 618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.8 1 10008 2.1.0.8 628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.9beta1-6 1 10009 2.1.0.9beta1-6 638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.9rc1 1 10009 2.1.0.9rc1 648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.9beta7-10 1 10009 2.1.0.9beta7-10 658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.9rc2 1 10009 2.1.0.9rc2 668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.9 1 10009 2.1.0.9 678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.10beta1 1 10010 2.1.0.10beta1 688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.10rc1 1 10010 2.1.0.10rc1 698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.10 1 10010 2.1.0.10 708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.11beta1-3 1 10011 2.1.0.11beta1-3 718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.11rc1 1 10011 2.1.0.11rc1 728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.11 1 10011 2.1.0.11 738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.12beta1-2 2 10012 2.1.0.12beta1-2 748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.12rc1 2 10012 2.1.0.12rc1 758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.12 2 10012 2.1.0.12 768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.1.0a-f - 10100 2.1.1.0a-f (branch abandoned) 778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.0beta1-2 2 10200 2.1.2.0beta1-2 788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.0beta3-5 3 10200 3.1.2.0beta3-5 798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.0rc1 3 10200 3.1.2.0rc1 808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.0 3 10200 3.1.2.0 818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.1beta1-4 3 10201 3.1.2.1beta1-4 828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.1rc1-2 3 10201 3.1.2.1rc1-2 838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.1 3 10201 3.1.2.1 848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.2beta1-6 12 10202 12.so.0.1.2.2beta1-6 858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.13beta1 10 10013 10.so.0.1.0.13beta1 868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.13rc1 10 10013 10.so.0.1.0.13rc1 878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.2rc1 12 10202 12.so.0.1.2.2rc1 888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.13 10 10013 10.so.0.1.0.13 898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.2 12 10202 12.so.0.1.2.2 908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.3rc1-6 12 10203 12.so.0.1.2.3rc1-6 918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.3 12 10203 12.so.0.1.2.3 928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.4beta1-3 13 10204 12.so.0.1.2.4beta1-3 938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.14rc1 13 10014 10.so.0.1.0.14rc1 948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.4rc1 13 10204 12.so.0.1.2.4rc1 958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.14 10 10014 10.so.0.1.0.14 968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.4 13 10204 12.so.0.1.2.4 978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.5beta1-2 13 10205 12.so.0.1.2.5beta1-2 988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.15rc1-3 10 10015 10.so.0.1.0.15rc1-3 998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.5rc1-3 13 10205 12.so.0.1.2.5rc1-3 1008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.15 10 10015 10.so.0.1.0.15 1018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.5 13 10205 12.so.0.1.2.5 1028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.6beta1-4 13 10206 12.so.0.1.2.6beta1-4 1038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.16 10 10016 10.so.0.1.0.16 1048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.6 13 10206 12.so.0.1.2.6 1058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.7beta1-2 13 10207 12.so.0.1.2.7beta1-2 1068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.17rc1 10 10017 10.so.0.1.0.17rc1 1078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.7rc1 13 10207 12.so.0.1.2.7rc1 1088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.17 10 10017 10.so.0.1.0.17 1098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.7 13 10207 12.so.0.1.2.7 1108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.8beta1-5 13 10208 12.so.0.1.2.8beta1-5 1118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.18rc1-5 10 10018 10.so.0.1.0.18rc1-5 1128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.8rc1-5 13 10208 12.so.0.1.2.8rc1-5 1138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.18 10 10018 10.so.0.1.0.18 1148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.8 13 10208 12.so.0.1.2.8 1158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.9beta1-3 13 10209 12.so.0.1.2.9beta1-3 1168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.9beta4-11 13 10209 12.so.0.9[.0] 1178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.9rc1 13 10209 12.so.0.9[.0] 1188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.9 13 10209 12.so.0.9[.0] 1198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.10beta1-8 13 10210 12.so.0.10[.0] 1208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.10rc1-3 13 10210 12.so.0.10[.0] 1218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.10 13 10210 12.so.0.10[.0] 1228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.11beta1-4 13 10211 12.so.0.11[.0] 1238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.19rc1-5 10 10019 10.so.0.19[.0] 1248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.11rc1-5 13 10211 12.so.0.11[.0] 1258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.19 10 10019 10.so.0.19[.0] 1268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.11 13 10211 12.so.0.11[.0] 1278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.20 10 10020 10.so.0.20[.0] 1288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.12 13 10212 12.so.0.12[.0] 1298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.13beta1 13 10213 12.so.0.13[.0] 1308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.21 10 10021 10.so.0.21[.0] 1318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.13 13 10213 12.so.0.13[.0] 1328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.14beta1-2 13 10214 12.so.0.14[.0] 1338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.22rc1 10 10022 10.so.0.22[.0] 1348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.14rc1 13 10214 12.so.0.14[.0] 1358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.22 10 10022 10.so.0.22[.0] 1368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.14 13 10214 12.so.0.14[.0] 1378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.15beta1-6 13 10215 12.so.0.15[.0] 1388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.23rc1-5 10 10023 10.so.0.23[.0] 1398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.15rc1-5 13 10215 12.so.0.15[.0] 1408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.23 10 10023 10.so.0.23[.0] 1418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.15 13 10215 12.so.0.15[.0] 1428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.16beta1-2 13 10216 12.so.0.16[.0] 1438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.16rc1 13 10216 12.so.0.16[.0] 1448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.24 10 10024 10.so.0.24[.0] 1458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.16 13 10216 12.so.0.16[.0] 1468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.17beta1-2 13 10217 12.so.0.17[.0] 1478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.25rc1 10 10025 10.so.0.25[.0] 1488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.17rc1-3 13 10217 12.so.0.17[.0] 1498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.25 10 10025 10.so.0.25[.0] 1508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.17 13 10217 12.so.0.17[.0] 1518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.26 10 10026 10.so.0.26[.0] 1528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.18 13 10218 12.so.0.18[.0] 1538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.19beta1-31 13 10219 12.so.0.19[.0] 1548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.27rc1-6 10 10027 10.so.0.27[.0] 1558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.19rc1-6 13 10219 12.so.0.19[.0] 1568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.0.27 10 10027 10.so.0.27[.0] 1578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1.2.19 13 10219 12.so.0.19[.0] 1588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Henceforth the source version will match the shared-library major 1608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * and minor numbers; the shared-library major version number will be 1618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * used for changes in backward compatibility, as it is intended. The 1628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * PNG_LIBPNG_VER macro, which is not used within libpng but is available 1638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * for applications, is an unsigned integer of the form xyyzz corresponding 1648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * to the source version x.y.z (leading zeros in y and z). Beta versions 1658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * were given the previous public release number plus a letter, until 1668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * version 1.0.6j; from then on they were given the upcoming public 1678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * release number plus "betaNN" or "rcN". 1688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Binary incompatibility exists only when applications make direct access 1708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * to the info_ptr or png_ptr members through png.h, and the compiled 1718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * application is loaded with a different version of the library. 1728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * DLLNUM will change each time there are forward or backward changes 1748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * in binary compatibility (e.g., when a new feature is added). 1758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * See libpng.txt or libpng.3 for more information. The PNG specification 1778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * is available as a W3C Recommendation and as an ISO Specification, 1788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * <http://www.w3.org/TR/2003/REC-PNG-20031110/ 1798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 1808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* 1828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * COPYRIGHT NOTICE, DISCLAIMER, and LICENSE: 1838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * If you modify libpng you may insert additional notices immediately following 1858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * this sentence. 1868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * libpng versions 1.2.6, August 15, 2004, through 1.2.19, August 18, 2007, are 1888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Copyright (c) 2004, 2006-2007 Glenn Randers-Pehrson, and are 1898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * distributed according to the same disclaimer and license as libpng-1.2.5 1908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * with the following individual added to the list of Contributing Authors: 1918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Cosmin Truta 1938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * libpng versions 1.0.7, July 1, 2000, through 1.2.5, October 3, 2002, are 1958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are 1968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * distributed according to the same disclaimer and license as libpng-1.0.6 1978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * with the following individuals added to the list of Contributing Authors: 1988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Simon-Pierre Cadieux 2008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Eric S. Raymond 2018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Gilles Vollant 2028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 2038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * and with the following additions to the disclaimer: 2048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 2058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * There is no warranty against interference with your enjoyment of the 2068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * library or against infringement. There is no warranty that our 2078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * efforts or the library will fulfill any of your particular purposes 2088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * or needs. This library is provided with all faults, and the entire 2098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * risk of satisfactory quality, performance, accuracy, and effort is with 2108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * the user. 2118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 2128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are 2138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson, and are 2148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * distributed according to the same disclaimer and license as libpng-0.96, 2158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * with the following individuals added to the list of Contributing Authors: 2168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 2178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Tom Lane 2188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Glenn Randers-Pehrson 2198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Willem van Schaik 2208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 2218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * libpng versions 0.89, June 1996, through 0.96, May 1997, are 2228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Copyright (c) 1996, 1997 Andreas Dilger 2238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Distributed according to the same disclaimer and license as libpng-0.88, 2248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * with the following individuals added to the list of Contributing Authors: 2258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 2268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * John Bowler 2278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Kevin Bracey 2288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Sam Bushell 2298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Magnus Holmgren 2308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Greg Roelofs 2318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Tom Tanner 2328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 2338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * libpng versions 0.5, May 1995, through 0.88, January 1996, are 2348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc. 2358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 2368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * For the purposes of this copyright and license, "Contributing Authors" 2378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * is defined as the following set of individuals: 2388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 2398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Andreas Dilger 2408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Dave Martindale 2418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Guy Eric Schalnat 2428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Paul Schmidt 2438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Tim Wegner 2448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 2458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * The PNG Reference Library is supplied "AS IS". The Contributing Authors 2468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * and Group 42, Inc. disclaim all warranties, expressed or implied, 2478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * including, without limitation, the warranties of merchantability and of 2488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * fitness for any purpose. The Contributing Authors and Group 42, Inc. 2498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * assume no liability for direct, indirect, incidental, special, exemplary, 2508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * or consequential damages, which may result from the use of the PNG 2518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Reference Library, even if advised of the possibility of such damage. 2528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 2538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Permission is hereby granted to use, copy, modify, and distribute this 2548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * source code, or portions hereof, for any purpose, without fee, subject 2558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * to the following restrictions: 2568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 2578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 1. The origin of this source code must not be misrepresented. 2588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 2598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 2. Altered versions must be plainly marked as such and 2608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * must not be misrepresented as being the original source. 2618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 2628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 3. This Copyright notice may not be removed or altered from 2638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * any source or altered source distribution. 2648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 2658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * The Contributing Authors and Group 42, Inc. specifically permit, without 2668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * fee, and encourage the use of this source code as a component to 2678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * supporting the PNG file format in commercial products. If you use this 2688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * source code in a product, acknowledgment is not required but would be 2698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * appreciated. 2708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 2718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* 2738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * A "png_get_copyright" function is available, for convenient use in "about" 2748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * boxes and the like: 2758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 2768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * printf("%s",png_get_copyright(NULL)); 2778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 2788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Also, the PNG logo (in PNG format, of course) is supplied in the 2798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * files "pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31). 2808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 2818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* 2838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Libpng is OSI Certified Open Source Software. OSI Certified is a 2848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * certification mark of the Open Source Initiative. 2858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 2868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* 2888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * The contributing authors would like to thank all those who helped 2898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * with testing, bug fixes, and patience. This wouldn't have been 2908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * possible without all of you. 2918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 2928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Thanks to Frank J. T. Wojcik for helping with the documentation. 2938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 2948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* 2968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Y2K compliance in libpng: 2978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * ========================= 2988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 2998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * August 18, 2007 3008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 3018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Since the PNG Development group is an ad-hoc body, we can't make 3028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * an official declaration. 3038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 3048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * This is your unofficial assurance that libpng from version 0.71 and 3058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * upward through 1.2.19 are Y2K compliant. It is my belief that earlier 3068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * versions were also Y2K compliant. 3078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 3088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Libpng only has three year fields. One is a 2-byte unsigned integer 3098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * that will hold years up to 65535. The other two hold the date in text 3108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * format, and will hold years up to 9999. 3118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 3128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * The integer is 3138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * "png_uint_16 year" in png_time_struct. 3148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 3158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * The strings are 3168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * "png_charp time_buffer" in png_struct and 3178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * "near_time_buffer", which is a local character string in png.c. 3188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 3198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * There are seven time-related functions: 3208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * png.c: png_convert_to_rfc_1123() in png.c 3218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * (formerly png_convert_to_rfc_1152() in error) 3228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * png_convert_from_struct_tm() in pngwrite.c, called in pngwrite.c 3238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * png_convert_from_time_t() in pngwrite.c 3248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * png_get_tIME() in pngget.c 3258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * png_handle_tIME() in pngrutil.c, called in pngread.c 3268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * png_set_tIME() in pngset.c 3278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * png_write_tIME() in pngwutil.c, called in pngwrite.c 3288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 3298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * All handle dates properly in a Y2K environment. The 3308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * png_convert_from_time_t() function calls gmtime() to convert from system 3318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * clock time, which returns (year - 1900), which we properly convert to 3328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * the full 4-digit year. There is a possibility that applications using 3338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * libpng are not passing 4-digit years into the png_convert_to_rfc_1123() 3348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * function, or that they are incorrectly passing only a 2-digit year 3358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * instead of "year - 1900" into the png_convert_from_struct_tm() function, 3368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * but this is not under our control. The libpng documentation has always 3378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * stated that it works with 4-digit years, and the APIs have been 3388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * documented as such. 3398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 3408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * The tIME chunk itself is also Y2K compliant. It uses a 2-byte unsigned 3418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * integer to hold the year, and can hold years as large as 65535. 3428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 3438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * zlib, upon which libpng depends, is also Y2K compliant. It contains 3448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * no date-related code. 3458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 3468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Glenn Randers-Pehrson 3478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * libpng maintainer 3488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * PNG Development Group 3498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 3508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 3518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef PNG_H 3528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_H 3538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 3548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* This is not the place to learn how to use libpng. The file libpng.txt 3558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * describes how to use libpng, and the file example.c summarizes it 3568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * with some code on which to build. This file is useful for looking 3578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * at the actual function definitions and structure components. 3588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 3598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 3608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Version information for png.h - this should match the version in png.c */ 3618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_LIBPNG_VER_STRING "1.2.19" 3628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_HEADER_VERSION_STRING \ 3638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project " libpng version 1.2.19 - August 18, 2007\n" 3648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 3658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_LIBPNG_VER_SONUM 0 3668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_LIBPNG_VER_DLLNUM 13 3678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 3688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* These should match the first 3 components of PNG_LIBPNG_VER_STRING: */ 3698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_LIBPNG_VER_MAJOR 1 3708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_LIBPNG_VER_MINOR 2 3718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_LIBPNG_VER_RELEASE 19 3728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* This should match the numeric part of the final component of 3738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * PNG_LIBPNG_VER_STRING, omitting any leading zero: */ 3748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 3758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_LIBPNG_VER_BUILD 0 3768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 3778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Release Status */ 3788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_LIBPNG_BUILD_ALPHA 1 3798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_LIBPNG_BUILD_BETA 2 3808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_LIBPNG_BUILD_RC 3 3818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_LIBPNG_BUILD_STABLE 4 3828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_LIBPNG_BUILD_RELEASE_STATUS_MASK 7 3838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 3848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Release-Specific Flags */ 3858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_LIBPNG_BUILD_PATCH 8 /* Can be OR'ed with 3868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project PNG_LIBPNG_BUILD_STABLE only */ 3878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_LIBPNG_BUILD_PRIVATE 16 /* Cannot be OR'ed with 3888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project PNG_LIBPNG_BUILD_SPECIAL */ 3898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_LIBPNG_BUILD_SPECIAL 32 /* Cannot be OR'ed with 3908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project PNG_LIBPNG_BUILD_PRIVATE */ 3918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 3928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_LIBPNG_BUILD_BASE_TYPE PNG_LIBPNG_BUILD_STABLE 3938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 3948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Careful here. At one time, Guy wanted to use 082, but that would be octal. 3958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * We must not include leading zeros. 3968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Versions 0.7 through 1.0.0 were in the range 0 to 100 here (only 3978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * version 1.0.0 was mis-numbered 100 instead of 10000). From 3988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * version 1.0.1 it's xxyyzz, where x=major, y=minor, z=release */ 3998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_LIBPNG_VER 10219 /* 1.2.19 */ 4008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 4018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef PNG_VERSION_INFO_ONLY 4028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* include the compression library's header */ 4038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "zlib.h" 4048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 4058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 4068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* include all user configurable info, including optional assembler routines */ 4078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "pngconf.h" 4088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 4098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* 4108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Added at libpng-1.2.8 */ 4118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Ref MSDN: Private as priority over Special 4128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * VS_FF_PRIVATEBUILD File *was not* built using standard release 4138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * procedures. If this value is given, the StringFileInfo block must 4148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * contain a PrivateBuild string. 4158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 4168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * VS_FF_SPECIALBUILD File *was* built by the original company using 4178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * standard release procedures but is a variation of the standard 4188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * file of the same version number. If this value is given, the 4198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * StringFileInfo block must contain a SpecialBuild string. 4208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 4218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 4228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_USER_PRIVATEBUILD) 4238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PNG_LIBPNG_BUILD_TYPE \ 4248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project (PNG_LIBPNG_BUILD_BASE_TYPE | PNG_LIBPNG_BUILD_PRIVATE) 4258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 4268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# if defined(PNG_LIBPNG_SPECIALBUILD) 4278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PNG_LIBPNG_BUILD_TYPE \ 4288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project (PNG_LIBPNG_BUILD_BASE_TYPE | PNG_LIBPNG_BUILD_SPECIAL) 4298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# else 4308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PNG_LIBPNG_BUILD_TYPE (PNG_LIBPNG_BUILD_BASE_TYPE) 4318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# endif 4328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 4338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 4348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef PNG_VERSION_INFO_ONLY 4358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 4368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Inhibit C++ name-mangling for libpng functions but not for system calls. */ 4378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef __cplusplus 4388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern "C" { 4398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* __cplusplus */ 4408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 4418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* This file is arranged in several sections. The first section contains 4428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * structure and type definitions. The second section contains the external 4438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * library functions, while the third has the internal library functions, 4448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * which applications aren't expected to use directly. 4458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 4468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 4478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef PNG_NO_TYPECAST_NULL 4488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define int_p_NULL (int *)NULL 4498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define png_bytep_NULL (png_bytep)NULL 4508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define png_bytepp_NULL (png_bytepp)NULL 4518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define png_doublep_NULL (png_doublep)NULL 4528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define png_error_ptr_NULL (png_error_ptr)NULL 4538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define png_flush_ptr_NULL (png_flush_ptr)NULL 4548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define png_free_ptr_NULL (png_free_ptr)NULL 4558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define png_infopp_NULL (png_infopp)NULL 4568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define png_malloc_ptr_NULL (png_malloc_ptr)NULL 4578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define png_read_status_ptr_NULL (png_read_status_ptr)NULL 4588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define png_rw_ptr_NULL (png_rw_ptr)NULL 4598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define png_structp_NULL (png_structp)NULL 4608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define png_uint_16p_NULL (png_uint_16p)NULL 4618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define png_voidp_NULL (png_voidp)NULL 4628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define png_write_status_ptr_NULL (png_write_status_ptr)NULL 4638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 4648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define int_p_NULL NULL 4658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define png_bytep_NULL NULL 4668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define png_bytepp_NULL NULL 4678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define png_doublep_NULL NULL 4688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define png_error_ptr_NULL NULL 4698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define png_flush_ptr_NULL NULL 4708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define png_free_ptr_NULL NULL 4718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define png_infopp_NULL NULL 4728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define png_malloc_ptr_NULL NULL 4738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define png_read_status_ptr_NULL NULL 4748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define png_rw_ptr_NULL NULL 4758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define png_structp_NULL NULL 4768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define png_uint_16p_NULL NULL 4778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define png_voidp_NULL NULL 4788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define png_write_status_ptr_NULL NULL 4798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 4808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 4818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* variables declared in png.c - only it needs to define PNG_NO_EXTERN */ 4828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if !defined(PNG_NO_EXTERN) || defined(PNG_ALWAYS_EXTERN) 4838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Version information for C files, stored in png.c. This had better match 4848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * the version above. 4858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 4868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_USE_GLOBAL_ARRAYS 4878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXPORT_VAR (PNG_CONST char) png_libpng_ver[18]; 4888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* need room for 99.99.99beta99z */ 4898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 4908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define png_libpng_ver png_get_header_ver(NULL) 4918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 4928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 4938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_USE_GLOBAL_ARRAYS 4948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* This was removed in version 1.0.5c */ 4958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Structures to facilitate easy interlacing. See png.c for more details */ 4968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXPORT_VAR (PNG_CONST int FARDATA) png_pass_start[7]; 4978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXPORT_VAR (PNG_CONST int FARDATA) png_pass_inc[7]; 4988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXPORT_VAR (PNG_CONST int FARDATA) png_pass_ystart[7]; 4998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXPORT_VAR (PNG_CONST int FARDATA) png_pass_yinc[7]; 5008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXPORT_VAR (PNG_CONST int FARDATA) png_pass_mask[7]; 5018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXPORT_VAR (PNG_CONST int FARDATA) png_pass_dsp_mask[7]; 5028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_HAVE_MMX_COMBINE_ROW) || defined(PNG_OPTIMIZED_CODE_SUPPORTED) 5038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXPORT_VAR (PNG_CONST int FARDATA) png_pass_width[7]; 5048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 5058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* This isn't currently used. If you need it, see png.c for more details. 5068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXPORT_VAR (PNG_CONST int FARDATA) png_pass_height[7]; 5078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project*/ 5088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 5098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 5108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* PNG_NO_EXTERN */ 5118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 5128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Three color definitions. The order of the red, green, and blue, (and the 5138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * exact size) is not important, although the size of the fields need to 5148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * be png_byte or png_uint_16 (as defined below). 5158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 5168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct png_color_struct 5178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 5188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte red; 5198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte green; 5208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte blue; 5218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} png_color; 5228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef png_color FAR * png_colorp; 5238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef png_color FAR * FAR * png_colorpp; 5248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 5258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct png_color_16_struct 5268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 5278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte index; /* used for palette files */ 5288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_16 red; /* for use in red green blue files */ 5298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_16 green; 5308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_16 blue; 5318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_16 gray; /* for use in grayscale files */ 5328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} png_color_16; 5338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef png_color_16 FAR * png_color_16p; 5348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef png_color_16 FAR * FAR * png_color_16pp; 5358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 5368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct png_color_8_struct 5378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 5388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte red; /* for use in red green blue files */ 5398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte green; 5408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte blue; 5418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte gray; /* for use in grayscale files */ 5428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte alpha; /* for alpha channel files */ 5438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} png_color_8; 5448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef png_color_8 FAR * png_color_8p; 5458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef png_color_8 FAR * FAR * png_color_8pp; 5468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 5478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* 5488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * The following two structures are used for the in-core representation 5498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * of sPLT chunks. 5508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 5518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct png_sPLT_entry_struct 5528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 5538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_16 red; 5548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_16 green; 5558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_16 blue; 5568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_16 alpha; 5578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_16 frequency; 5588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} png_sPLT_entry; 5598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef png_sPLT_entry FAR * png_sPLT_entryp; 5608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef png_sPLT_entry FAR * FAR * png_sPLT_entrypp; 5618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 5628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* When the depth of the sPLT palette is 8 bits, the color and alpha samples 5638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * occupy the LSB of their respective members, and the MSB of each member 5648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * is zero-filled. The frequency member always occupies the full 16 bits. 5658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 5668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 5678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct png_sPLT_struct 5688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 5698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_charp name; /* palette name */ 5708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte depth; /* depth of palette samples */ 5718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_sPLT_entryp entries; /* palette entries */ 5728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_int_32 nentries; /* number of palette entries */ 5738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} png_sPLT_t; 5748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef png_sPLT_t FAR * png_sPLT_tp; 5758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef png_sPLT_t FAR * FAR * png_sPLT_tpp; 5768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 5778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_TEXT_SUPPORTED 5788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* png_text holds the contents of a text/ztxt/itxt chunk in a PNG file, 5798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * and whether that contents is compressed or not. The "key" field 5808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * points to a regular zero-terminated C string. The "text", "lang", and 5818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * "lang_key" fields can be regular C strings, empty strings, or NULL pointers. 5828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * However, the * structure returned by png_get_text() will always contain 5838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * regular zero-terminated C strings (possibly empty), never NULL pointers, 5848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * so they can be safely used in printf() and other string-handling functions. 5858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 5868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct png_text_struct 5878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 5888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int compression; /* compression value: 5898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project -1: tEXt, none 5908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 0: zTXt, deflate 5918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1: iTXt, none 5928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2: iTXt, deflate */ 5938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_charp key; /* keyword, 1-79 character description of "text" */ 5948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_charp text; /* comment, may be an empty string (ie "") 5958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project or a NULL pointer */ 5968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_size_t text_length; /* length of the text string */ 5978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_iTXt_SUPPORTED 5988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_size_t itxt_length; /* length of the itxt string */ 5998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_charp lang; /* language code, 0-79 characters 6008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project or a NULL pointer */ 6018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_charp lang_key; /* keyword translated UTF-8 string, 0 or more 6028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project chars or a NULL pointer */ 6038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 6048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} png_text; 6058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef png_text FAR * png_textp; 6068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef png_text FAR * FAR * png_textpp; 6078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 6088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 6098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Supported compression types for text in PNG files (tEXt, and zTXt). 6108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * The values of the PNG_TEXT_COMPRESSION_ defines should NOT be changed. */ 6118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_TEXT_COMPRESSION_NONE_WR -3 6128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_TEXT_COMPRESSION_zTXt_WR -2 6138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_TEXT_COMPRESSION_NONE -1 6148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_TEXT_COMPRESSION_zTXt 0 6158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_ITXT_COMPRESSION_NONE 1 6168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_ITXT_COMPRESSION_zTXt 2 6178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_TEXT_COMPRESSION_LAST 3 /* Not a valid value */ 6188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 6198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* png_time is a way to hold the time in an machine independent way. 6208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Two conversions are provided, both from time_t and struct tm. There 6218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * is no portable way to convert to either of these structures, as far 6228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * as I know. If you know of a portable way, send it to me. As a side 6238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * note - PNG has always been Year 2000 compliant! 6248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 6258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct png_time_struct 6268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 6278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_16 year; /* full year, as in, 1995 */ 6288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte month; /* month of year, 1 - 12 */ 6298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte day; /* day of month, 1 - 31 */ 6308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte hour; /* hour of day, 0 - 23 */ 6318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte minute; /* minute of hour, 0 - 59 */ 6328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte second; /* second of minute, 0 - 60 (for leap seconds) */ 6338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} png_time; 6348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef png_time FAR * png_timep; 6358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef png_time FAR * FAR * png_timepp; 6368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 6378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED) 6388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* png_unknown_chunk is a structure to hold queued chunks for which there is 6398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * no specific support. The idea is that we can use this to queue 6408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * up private chunks for output even though the library doesn't actually 6418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * know about their semantics. 6428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 6438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct png_unknown_chunk_t 6448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 6458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte name[5]; 6468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte *data; 6478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_size_t size; 6488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 6498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* libpng-using applications should NOT directly modify this byte. */ 6508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte location; /* mode of operation at read time */ 6518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 6528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_unknown_chunk; 6538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef png_unknown_chunk FAR * png_unknown_chunkp; 6548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef png_unknown_chunk FAR * FAR * png_unknown_chunkpp; 6558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 6568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 6578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* png_info is a structure that holds the information in a PNG file so 6588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * that the application can find out the characteristics of the image. 6598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * If you are reading the file, this structure will tell you what is 6608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * in the PNG file. If you are writing the file, fill in the information 6618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * you want to put into the PNG file, then call png_write_info(). 6628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * The names chosen should be very close to the PNG specification, so 6638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * consult that document for information about the meaning of each field. 6648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 6658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * With libpng < 0.95, it was only possible to directly set and read the 6668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * the values in the png_info_struct, which meant that the contents and 6678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * order of the values had to remain fixed. With libpng 0.95 and later, 6688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * however, there are now functions that abstract the contents of 6698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * png_info_struct from the application, so this makes it easier to use 6708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * libpng with dynamic libraries, and even makes it possible to use 6718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * libraries that don't have all of the libpng ancillary chunk-handing 6728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * functionality. 6738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 6748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * In any case, the order of the parameters in png_info_struct should NOT 6758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * be changed for as long as possible to keep compatibility with applications 6768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * that use the old direct-access method with png_info_struct. 6778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 6788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * The following members may have allocated storage attached that should be 6798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * cleaned up before the structure is discarded: palette, trans, text, 6808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * pcal_purpose, pcal_units, pcal_params, hist, iccp_name, iccp_profile, 6818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * splt_palettes, scal_unit, row_pointers, and unknowns. By default, these 6828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * are automatically freed when the info structure is deallocated, if they were 6838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * allocated internally by libpng. This behavior can be changed by means 6848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * of the png_data_freer() function. 6858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 6868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * More allocation details: all the chunk-reading functions that 6878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * change these members go through the corresponding png_set_* 6888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * functions. A function to clear these members is available: see 6898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * png_free_data(). The png_set_* functions do not depend on being 6908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * able to point info structure members to any of the storage they are 6918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * passed (they make their own copies), EXCEPT that the png_set_text 6928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * functions use the same storage passed to them in the text_ptr or 6938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * itxt_ptr structure argument, and the png_set_rows and png_set_unknowns 6948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * functions do not make their own copies. 6958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 6968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct png_info_struct 6978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 6988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* the following are necessary for every PNG file */ 6998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 width; /* width of image in pixels (from IHDR) */ 7008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 height; /* height of image in pixels (from IHDR) */ 7018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 valid; /* valid chunk data (see PNG_INFO_ below) */ 7028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 rowbytes; /* bytes needed to hold an untransformed row */ 7038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_colorp palette; /* array of color values (valid & PNG_INFO_PLTE) */ 7048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_16 num_palette; /* number of color entries in "palette" (PLTE) */ 7058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_16 num_trans; /* number of transparent palette color (tRNS) */ 7068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte bit_depth; /* 1, 2, 4, 8, or 16 bits/channel (from IHDR) */ 7078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte color_type; /* see PNG_COLOR_TYPE_ below (from IHDR) */ 7088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* The following three should have been named *_method not *_type */ 7098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte compression_type; /* must be PNG_COMPRESSION_TYPE_BASE (IHDR) */ 7108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte filter_type; /* must be PNG_FILTER_TYPE_BASE (from IHDR) */ 7118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte interlace_type; /* One of PNG_INTERLACE_NONE, PNG_INTERLACE_ADAM7 */ 7128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 7138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* The following is informational only on read, and not used on writes. */ 7148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte channels; /* number of data channels per pixel (1, 2, 3, 4) */ 7158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte pixel_depth; /* number of bits per pixel */ 7168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte spare_byte; /* to align the data, and for future use */ 7178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte signature[8]; /* magic bytes read by libpng from start of file */ 7188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 7198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* The rest of the data is optional. If you are reading, check the 7208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * valid field to see if the information in these are valid. If you 7218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * are writing, set the valid field to those chunks you want written, 7228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * and initialize the appropriate fields below. 7238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 7248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 7258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_gAMA_SUPPORTED) && defined(PNG_FLOATING_POINT_SUPPORTED) 7268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* The gAMA chunk describes the gamma characteristics of the system 7278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * on which the image was created, normally in the range [1.0, 2.5]. 7288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Data is valid if (valid & PNG_INFO_gAMA) is non-zero. 7298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 7308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project float gamma; /* gamma value of image, if (valid & PNG_INFO_gAMA) */ 7318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 7328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 7338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_sRGB_SUPPORTED) 7348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* GR-P, 0.96a */ 7358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* Data valid if (valid & PNG_INFO_sRGB) non-zero. */ 7368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte srgb_intent; /* sRGB rendering intent [0, 1, 2, or 3] */ 7378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 7388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 7398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_TEXT_SUPPORTED) 7408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* The tEXt, and zTXt chunks contain human-readable textual data in 7418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * uncompressed, compressed, and optionally compressed forms, respectively. 7428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * The data in "text" is an array of pointers to uncompressed, 7438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * null-terminated C strings. Each chunk has a keyword that describes the 7448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * textual data contained in that chunk. Keywords are not required to be 7458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * unique, and the text string may be empty. Any number of text chunks may 7468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * be in an image. 7478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 7488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int num_text; /* number of comments read/to write */ 7498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int max_text; /* current size of text array */ 7508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_textp text; /* array of comments read/to write */ 7518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* PNG_TEXT_SUPPORTED */ 7528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 7538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_tIME_SUPPORTED) 7548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* The tIME chunk holds the last time the displayed image data was 7558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * modified. See the png_time struct for the contents of this struct. 7568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 7578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_time mod_time; 7588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 7598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 7608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_sBIT_SUPPORTED) 7618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* The sBIT chunk specifies the number of significant high-order bits 7628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * in the pixel data. Values are in the range [1, bit_depth], and are 7638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * only specified for the channels in the pixel data. The contents of 7648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * the low-order bits is not specified. Data is valid if 7658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * (valid & PNG_INFO_sBIT) is non-zero. 7668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 7678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_color_8 sig_bit; /* significant bits in color channels */ 7688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 7698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 7708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_tRNS_SUPPORTED) || defined(PNG_READ_EXPAND_SUPPORTED) || \ 7718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectdefined(PNG_READ_BACKGROUND_SUPPORTED) 7728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* The tRNS chunk supplies transparency data for paletted images and 7738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * other image types that don't need a full alpha channel. There are 7748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * "num_trans" transparency values for a paletted image, stored in the 7758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * same order as the palette colors, starting from index 0. Values 7768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * for the data are in the range [0, 255], ranging from fully transparent 7778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * to fully opaque, respectively. For non-paletted images, there is a 7788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * single color specified that should be treated as fully transparent. 7798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Data is valid if (valid & PNG_INFO_tRNS) is non-zero. 7808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 7818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep trans; /* transparent values for paletted image */ 7828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_color_16 trans_values; /* transparent color for non-palette image */ 7838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 7848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 7858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_bKGD_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) 7868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* The bKGD chunk gives the suggested image background color if the 7878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * display program does not have its own background color and the image 7888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * is needs to composited onto a background before display. The colors 7898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * in "background" are normally in the same color space/depth as the 7908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * pixel data. Data is valid if (valid & PNG_INFO_bKGD) is non-zero. 7918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 7928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_color_16 background; 7938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 7948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 7958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_oFFs_SUPPORTED) 7968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* The oFFs chunk gives the offset in "offset_unit_type" units rightwards 7978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * and downwards from the top-left corner of the display, page, or other 7988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * application-specific co-ordinate space. See the PNG_OFFSET_ defines 7998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * below for the unit types. Valid if (valid & PNG_INFO_oFFs) non-zero. 8008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 8018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_int_32 x_offset; /* x offset on page */ 8028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_int_32 y_offset; /* y offset on page */ 8038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte offset_unit_type; /* offset units type */ 8048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 8058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 8068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_pHYs_SUPPORTED) 8078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* The pHYs chunk gives the physical pixel density of the image for 8088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * display or printing in "phys_unit_type" units (see PNG_RESOLUTION_ 8098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * defines below). Data is valid if (valid & PNG_INFO_pHYs) is non-zero. 8108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 8118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 x_pixels_per_unit; /* horizontal pixel density */ 8128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 y_pixels_per_unit; /* vertical pixel density */ 8138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte phys_unit_type; /* resolution type (see PNG_RESOLUTION_ below) */ 8148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 8158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 8168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_hIST_SUPPORTED) 8178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* The hIST chunk contains the relative frequency or importance of the 8188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * various palette entries, so that a viewer can intelligently select a 8198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * reduced-color palette, if required. Data is an array of "num_palette" 8208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * values in the range [0,65535]. Data valid if (valid & PNG_INFO_hIST) 8218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * is non-zero. 8228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 8238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_16p hist; 8248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 8258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 8268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_cHRM_SUPPORTED 8278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* The cHRM chunk describes the CIE color characteristics of the monitor 8288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * on which the PNG was created. This data allows the viewer to do gamut 8298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * mapping of the input image to ensure that the viewer sees the same 8308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * colors in the image as the creator. Values are in the range 8318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * [0.0, 0.8]. Data valid if (valid & PNG_INFO_cHRM) non-zero. 8328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 8338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_FLOATING_POINT_SUPPORTED 8348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project float x_white; 8358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project float y_white; 8368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project float x_red; 8378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project float y_red; 8388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project float x_green; 8398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project float y_green; 8408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project float x_blue; 8418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project float y_blue; 8428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 8438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 8448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 8458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_pCAL_SUPPORTED) 8468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* The pCAL chunk describes a transformation between the stored pixel 8478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * values and original physical data values used to create the image. 8488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * The integer range [0, 2^bit_depth - 1] maps to the floating-point 8498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * range given by [pcal_X0, pcal_X1], and are further transformed by a 8508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * (possibly non-linear) transformation function given by "pcal_type" 8518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * and "pcal_params" into "pcal_units". Please see the PNG_EQUATION_ 8528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * defines below, and the PNG-Group's PNG extensions document for a 8538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * complete description of the transformations and how they should be 8548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * implemented, and for a description of the ASCII parameter strings. 8558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Data values are valid if (valid & PNG_INFO_pCAL) non-zero. 8568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 8578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_charp pcal_purpose; /* pCAL chunk description string */ 8588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_int_32 pcal_X0; /* minimum value */ 8598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_int_32 pcal_X1; /* maximum value */ 8608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_charp pcal_units; /* Latin-1 string giving physical units */ 8618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_charpp pcal_params; /* ASCII strings containing parameter values */ 8628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte pcal_type; /* equation type (see PNG_EQUATION_ below) */ 8638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte pcal_nparams; /* number of parameters given in pcal_params */ 8648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 8658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 8668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* New members added in libpng-1.0.6 */ 8678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_FREE_ME_SUPPORTED 8688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 free_me; /* flags items libpng is responsible for freeing */ 8698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 8708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 8718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED) 8728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* storage for unknown chunks that the library doesn't recognize. */ 8738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_unknown_chunkp unknown_chunks; 8748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_size_t unknown_chunks_num; 8758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 8768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 8778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_iCCP_SUPPORTED) 8788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* iCCP chunk data. */ 8798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_charp iccp_name; /* profile name */ 8808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_charp iccp_profile; /* International Color Consortium profile data */ 8818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* Note to maintainer: should be png_bytep */ 8828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 iccp_proflen; /* ICC profile data length */ 8838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte iccp_compression; /* Always zero */ 8848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 8858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 8868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_sPLT_SUPPORTED) 8878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* data on sPLT chunks (there may be more than one). */ 8888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_sPLT_tp splt_palettes; 8898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 splt_palettes_num; 8908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 8918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 8928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_sCAL_SUPPORTED) 8938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* The sCAL chunk describes the actual physical dimensions of the 8948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * subject matter of the graphic. The chunk contains a unit specification 8958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * a byte value, and two ASCII strings representing floating-point 8968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * values. The values are width and height corresponsing to one pixel 8978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * in the image. This external representation is converted to double 8988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * here. Data values are valid if (valid & PNG_INFO_sCAL) is non-zero. 8998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 9008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte scal_unit; /* unit of physical scale */ 9018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_FLOATING_POINT_SUPPORTED 9028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project double scal_pixel_width; /* width of one pixel */ 9038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project double scal_pixel_height; /* height of one pixel */ 9048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 9058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_FIXED_POINT_SUPPORTED 9068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_charp scal_s_width; /* string containing height */ 9078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_charp scal_s_height; /* string containing width */ 9088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 9098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 9108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 9118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_INFO_IMAGE_SUPPORTED) 9128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* Memory has been allocated if (valid & PNG_ALLOCATED_INFO_ROWS) non-zero */ 9138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* Data valid if (valid & PNG_INFO_IDAT) non-zero */ 9148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytepp row_pointers; /* the image bits */ 9158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 9168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 9178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_FIXED_POINT_SUPPORTED) && defined(PNG_gAMA_SUPPORTED) 9188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_fixed_point int_gamma; /* gamma of image, if (valid & PNG_INFO_gAMA) */ 9198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 9208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 9218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_cHRM_SUPPORTED) && defined(PNG_FIXED_POINT_SUPPORTED) 9228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_fixed_point int_x_white; 9238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_fixed_point int_y_white; 9248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_fixed_point int_x_red; 9258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_fixed_point int_y_red; 9268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_fixed_point int_x_green; 9278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_fixed_point int_y_green; 9288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_fixed_point int_x_blue; 9298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_fixed_point int_y_blue; 9308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 9318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 9328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} png_info; 9338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 9348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef png_info FAR * png_infop; 9358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef png_info FAR * FAR * png_infopp; 9368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 9378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Maximum positive integer used in PNG is (2^31)-1 */ 9388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_UINT_31_MAX ((png_uint_32)0x7fffffffL) 9398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_UINT_32_MAX ((png_uint_32)(-1)) 9408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_SIZE_MAX ((png_size_t)(-1)) 9418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_1_0_X) || defined (PNG_1_2_X) 9428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* PNG_MAX_UINT is deprecated; use PNG_UINT_31_MAX instead. */ 9438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_MAX_UINT PNG_UINT_31_MAX 9448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 9458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 9468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* These describe the color_type field in png_info. */ 9478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* color type masks */ 9488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_COLOR_MASK_PALETTE 1 9498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_COLOR_MASK_COLOR 2 9508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_COLOR_MASK_ALPHA 4 9518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 9528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* color types. Note that not all combinations are legal */ 9538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_COLOR_TYPE_GRAY 0 9548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_COLOR_TYPE_PALETTE (PNG_COLOR_MASK_COLOR | PNG_COLOR_MASK_PALETTE) 9558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_COLOR_TYPE_RGB (PNG_COLOR_MASK_COLOR) 9568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_COLOR_TYPE_RGB_ALPHA (PNG_COLOR_MASK_COLOR | PNG_COLOR_MASK_ALPHA) 9578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_COLOR_TYPE_GRAY_ALPHA (PNG_COLOR_MASK_ALPHA) 9588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* aliases */ 9598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_COLOR_TYPE_RGBA PNG_COLOR_TYPE_RGB_ALPHA 9608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_COLOR_TYPE_GA PNG_COLOR_TYPE_GRAY_ALPHA 9618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 9628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* This is for compression type. PNG 1.0-1.2 only define the single type. */ 9638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_COMPRESSION_TYPE_BASE 0 /* Deflate method 8, 32K window */ 9648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_COMPRESSION_TYPE_DEFAULT PNG_COMPRESSION_TYPE_BASE 9658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 9668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* This is for filter type. PNG 1.0-1.2 only define the single type. */ 9678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FILTER_TYPE_BASE 0 /* Single row per-byte filtering */ 9688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_INTRAPIXEL_DIFFERENCING 64 /* Used only in MNG datastreams */ 9698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FILTER_TYPE_DEFAULT PNG_FILTER_TYPE_BASE 9708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 9718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* These are for the interlacing type. These values should NOT be changed. */ 9728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_INTERLACE_NONE 0 /* Non-interlaced image */ 9738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_INTERLACE_ADAM7 1 /* Adam7 interlacing */ 9748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_INTERLACE_LAST 2 /* Not a valid value */ 9758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 9768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* These are for the oFFs chunk. These values should NOT be changed. */ 9778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_OFFSET_PIXEL 0 /* Offset in pixels */ 9788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_OFFSET_MICROMETER 1 /* Offset in micrometers (1/10^6 meter) */ 9798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_OFFSET_LAST 2 /* Not a valid value */ 9808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 9818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* These are for the pCAL chunk. These values should NOT be changed. */ 9828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_EQUATION_LINEAR 0 /* Linear transformation */ 9838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_EQUATION_BASE_E 1 /* Exponential base e transform */ 9848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_EQUATION_ARBITRARY 2 /* Arbitrary base exponential transform */ 9858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_EQUATION_HYPERBOLIC 3 /* Hyperbolic sine transformation */ 9868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_EQUATION_LAST 4 /* Not a valid value */ 9878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 9888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* These are for the sCAL chunk. These values should NOT be changed. */ 9898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_SCALE_UNKNOWN 0 /* unknown unit (image scale) */ 9908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_SCALE_METER 1 /* meters per pixel */ 9918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_SCALE_RADIAN 2 /* radians per pixel */ 9928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_SCALE_LAST 3 /* Not a valid value */ 9938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 9948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* These are for the pHYs chunk. These values should NOT be changed. */ 9958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_RESOLUTION_UNKNOWN 0 /* pixels/unknown unit (aspect ratio) */ 9968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_RESOLUTION_METER 1 /* pixels/meter */ 9978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_RESOLUTION_LAST 2 /* Not a valid value */ 9988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 9998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* These are for the sRGB chunk. These values should NOT be changed. */ 10008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_sRGB_INTENT_PERCEPTUAL 0 10018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_sRGB_INTENT_RELATIVE 1 10028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_sRGB_INTENT_SATURATION 2 10038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_sRGB_INTENT_ABSOLUTE 3 10048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_sRGB_INTENT_LAST 4 /* Not a valid value */ 10058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 10068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* This is for text chunks */ 10078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_KEYWORD_MAX_LENGTH 79 10088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 10098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Maximum number of entries in PLTE/sPLT/tRNS arrays */ 10108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_MAX_PALETTE_LENGTH 256 10118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 10128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* These determine if an ancillary chunk's data has been successfully read 10138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * from the PNG header, or if the application has filled in the corresponding 10148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * data in the info_struct to be written into the output file. The values 10158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * of the PNG_INFO_<chunk> defines should NOT be changed. 10168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 10178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_INFO_gAMA 0x0001 10188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_INFO_sBIT 0x0002 10198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_INFO_cHRM 0x0004 10208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_INFO_PLTE 0x0008 10218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_INFO_tRNS 0x0010 10228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_INFO_bKGD 0x0020 10238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_INFO_hIST 0x0040 10248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_INFO_pHYs 0x0080 10258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_INFO_oFFs 0x0100 10268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_INFO_tIME 0x0200 10278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_INFO_pCAL 0x0400 10288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_INFO_sRGB 0x0800 /* GR-P, 0.96a */ 10298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_INFO_iCCP 0x1000 /* ESR, 1.0.6 */ 10308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_INFO_sPLT 0x2000 /* ESR, 1.0.6 */ 10318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_INFO_sCAL 0x4000 /* ESR, 1.0.6 */ 10328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_INFO_IDAT 0x8000L /* ESR, 1.0.6 */ 10338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 10348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* This is used for the transformation routines, as some of them 10358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * change these values for the row. It also should enable using 10368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * the routines for other purposes. 10378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 10388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct png_row_info_struct 10398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 10408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 width; /* width of row */ 10418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 rowbytes; /* number of bytes in row */ 10428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte color_type; /* color type of row */ 10438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte bit_depth; /* bit depth of row */ 10448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte channels; /* number of channels (1, 2, 3, or 4) */ 10458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte pixel_depth; /* bits per pixel (depth * channels) */ 10468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} png_row_info; 10478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 10488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef png_row_info FAR * png_row_infop; 10498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef png_row_info FAR * FAR * png_row_infopp; 10508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 10518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* These are the function types for the I/O functions and for the functions 10528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * that allow the user to override the default I/O functions with his or her 10538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * own. The png_error_ptr type should match that of user-supplied warning 10548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * and error functions, while the png_rw_ptr type should match that of the 10558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * user read/write data functions. 10568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 10578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct png_struct_def png_struct; 10588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef png_struct FAR * png_structp; 10598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 10608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef void (PNGAPI *png_error_ptr) PNGARG((png_structp, png_const_charp)); 10618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef void (PNGAPI *png_rw_ptr) PNGARG((png_structp, png_bytep, png_size_t)); 10628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef void (PNGAPI *png_flush_ptr) PNGARG((png_structp)); 10638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef void (PNGAPI *png_read_status_ptr) PNGARG((png_structp, png_uint_32, 10648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int)); 10658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef void (PNGAPI *png_write_status_ptr) PNGARG((png_structp, png_uint_32, 10668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int)); 10678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 10688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_PROGRESSIVE_READ_SUPPORTED 10698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef void (PNGAPI *png_progressive_info_ptr) PNGARG((png_structp, png_infop)); 10708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef void (PNGAPI *png_progressive_end_ptr) PNGARG((png_structp, png_infop)); 10718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef void (PNGAPI *png_progressive_row_ptr) PNGARG((png_structp, png_bytep, 10728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32, int)); 10738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 10748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 10758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ 10768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) || \ 10778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project defined(PNG_LEGACY_SUPPORTED) 10788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef void (PNGAPI *png_user_transform_ptr) PNGARG((png_structp, 10798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_row_infop, png_bytep)); 10808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 10818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 10828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_USER_CHUNKS_SUPPORTED) 10838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef int (PNGAPI *png_user_chunk_ptr) PNGARG((png_structp, png_unknown_chunkp)); 10848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 10858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED) 10868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef void (PNGAPI *png_unknown_chunk_ptr) PNGARG((png_structp)); 10878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 10888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 10898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Transform masks for the high-level interface */ 10908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_TRANSFORM_IDENTITY 0x0000 /* read and write */ 10918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_TRANSFORM_STRIP_16 0x0001 /* read only */ 10928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_TRANSFORM_STRIP_ALPHA 0x0002 /* read only */ 10938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_TRANSFORM_PACKING 0x0004 /* read and write */ 10948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_TRANSFORM_PACKSWAP 0x0008 /* read and write */ 10958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_TRANSFORM_EXPAND 0x0010 /* read only */ 10968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_TRANSFORM_INVERT_MONO 0x0020 /* read and write */ 10978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_TRANSFORM_SHIFT 0x0040 /* read and write */ 10988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_TRANSFORM_BGR 0x0080 /* read and write */ 10998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_TRANSFORM_SWAP_ALPHA 0x0100 /* read and write */ 11008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_TRANSFORM_SWAP_ENDIAN 0x0200 /* read and write */ 11018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_TRANSFORM_INVERT_ALPHA 0x0400 /* read and write */ 11028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_TRANSFORM_STRIP_FILLER 0x0800 /* WRITE only */ 11038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 11048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Flags for MNG supported features */ 11058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FLAG_MNG_EMPTY_PLTE 0x01 11068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FLAG_MNG_FILTER_64 0x04 11078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_ALL_MNG_FEATURES 0x05 11088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 11098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef png_voidp (*png_malloc_ptr) PNGARG((png_structp, png_size_t)); 11108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef void (*png_free_ptr) PNGARG((png_structp, png_voidp)); 11118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 11128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The structure that holds the information to read and write PNG files. 11138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * The only people who need to care about what is inside of this are the 11148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * people who will be modifying the library for their own special needs. 11158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * It should NOT be accessed directly by an application, except to store 11168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * the jmp_buf. 11178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 11188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 11198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstruct png_struct_def 11208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 11218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_SETJMP_SUPPORTED 11228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project jmp_buf jmpbuf; /* used in png_error */ 11238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 11248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_error_ptr error_fn; /* function for printing errors and aborting */ 11258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_error_ptr warning_fn; /* function for printing warnings */ 11268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_voidp error_ptr; /* user supplied struct for error functions */ 11278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_rw_ptr write_data_fn; /* function for writing output data */ 11288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_rw_ptr read_data_fn; /* function for reading input data */ 11298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_voidp io_ptr; /* ptr to application struct for I/O functions */ 11308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 11318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) 11328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_user_transform_ptr read_user_transform_fn; /* user read transform */ 11338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 11348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 11358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) 11368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_user_transform_ptr write_user_transform_fn; /* user write transform */ 11378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 11388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 11398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* These were added in libpng-1.0.2 */ 11408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_USER_TRANSFORM_PTR_SUPPORTED) 11418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ 11428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) 11438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_voidp user_transform_ptr; /* user supplied struct for user transform */ 11448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte user_transform_depth; /* bit depth of user transformed pixels */ 11458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte user_transform_channels; /* channels in user transformed pixels */ 11468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 11478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 11488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 11498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 mode; /* tells us where we are in the PNG file */ 11508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 flags; /* flags indicating various things to libpng */ 11518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 transformations; /* which transformations to perform */ 11528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 11538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project z_stream zstream; /* pointer to decompression structure (below) */ 11548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep zbuf; /* buffer for zlib */ 11558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_size_t zbuf_size; /* size of zbuf */ 11568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int zlib_level; /* holds zlib compression level */ 11578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int zlib_method; /* holds zlib compression method */ 11588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int zlib_window_bits; /* holds zlib compression window bits */ 11598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int zlib_mem_level; /* holds zlib compression memory level */ 11608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int zlib_strategy; /* holds zlib compression strategy */ 11618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 11628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 width; /* width of image in pixels */ 11638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 height; /* height of image in pixels */ 11648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 num_rows; /* number of rows in current pass */ 11658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 usr_width; /* width of row at start of write */ 11668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 rowbytes; /* size of row in bytes */ 11678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 irowbytes; /* size of current interlaced row in bytes */ 11688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 iwidth; /* width of current interlaced row in pixels */ 11698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 row_number; /* current row in interlace pass */ 11708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep prev_row; /* buffer to save previous (unfiltered) row */ 11718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep row_buf; /* buffer to save current (unfiltered) row */ 11728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep sub_row; /* buffer to save "sub" row when filtering */ 11738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep up_row; /* buffer to save "up" row when filtering */ 11748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep avg_row; /* buffer to save "avg" row when filtering */ 11758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep paeth_row; /* buffer to save "Paeth" row when filtering */ 11768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_row_info row_info; /* used for transformation routines */ 11778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 11788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 idat_size; /* current IDAT size for read */ 11798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 crc; /* current chunk CRC value */ 11808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_colorp palette; /* palette from the input file */ 11818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_16 num_palette; /* number of color entries in palette */ 11828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_16 num_trans; /* number of transparency values */ 11838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte chunk_name[5]; /* null-terminated name of current chunk */ 11848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte compression; /* file compression type (always 0) */ 11858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte filter; /* file filter type (always 0) */ 11868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte interlaced; /* PNG_INTERLACE_NONE, PNG_INTERLACE_ADAM7 */ 11878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte pass; /* current interlace pass (0 - 6) */ 11888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte do_filter; /* row filter flags (see PNG_FILTER_ below ) */ 11898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte color_type; /* color type of file */ 11908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte bit_depth; /* bit depth of file */ 11918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte usr_bit_depth; /* bit depth of users row */ 11928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte pixel_depth; /* number of bits per pixel */ 11938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte channels; /* number of channels in file */ 11948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte usr_channels; /* channels at start of write */ 11958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte sig_bytes; /* magic bytes read/written from start of file */ 11968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 11978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED) 11988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_LEGACY_SUPPORTED 11998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte filler; /* filler byte for pixel expansion */ 12008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 12018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_16 filler; /* filler bytes for pixel expansion */ 12028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 12038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 12048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 12058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_bKGD_SUPPORTED) 12068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte background_gamma_type; 12078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# ifdef PNG_FLOATING_POINT_SUPPORTED 12088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project float background_gamma; 12098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# endif 12108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_color_16 background; /* background color in screen gamma space */ 12118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_GAMMA_SUPPORTED) 12128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_color_16 background_1; /* background normalized to gamma 1.0 */ 12138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 12148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* PNG_bKGD_SUPPORTED */ 12158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 12168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_WRITE_FLUSH_SUPPORTED) 12178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_flush_ptr output_flush_fn;/* Function for flushing output */ 12188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 flush_dist; /* how many rows apart to flush, 0 - no flush */ 12198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 flush_rows; /* number of rows written since last flush */ 12208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 12218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 12228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) 12238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int gamma_shift; /* number of "insignificant" bits 16-bit gamma */ 12248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_FLOATING_POINT_SUPPORTED 12258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project float gamma; /* file gamma value */ 12268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project float screen_gamma; /* screen gamma value (display_exponent) */ 12278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 12288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 12298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 12308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) 12318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep gamma_table; /* gamma table for 8-bit depth files */ 12328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep gamma_from_1; /* converts from 1.0 to screen */ 12338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep gamma_to_1; /* converts from file to 1.0 */ 12348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_16pp gamma_16_table; /* gamma table for 16-bit depth files */ 12358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_16pp gamma_16_from_1; /* converts from 1.0 to screen */ 12368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_16pp gamma_16_to_1; /* converts from file to 1.0 */ 12378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 12388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 12398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_sBIT_SUPPORTED) 12408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_color_8 sig_bit; /* significant bits in each available channel */ 12418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 12428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 12438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED) 12448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_color_8 shift; /* shift for significant bit tranformation */ 12458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 12468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 12478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_tRNS_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) \ 12488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project || defined(PNG_READ_EXPAND_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) 12498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep trans; /* transparency values for paletted files */ 12508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_color_16 trans_values; /* transparency values for non-paletted files */ 12518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 12528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 12538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_read_status_ptr read_row_fn; /* called after each row is decoded */ 12548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_write_status_ptr write_row_fn; /* called after each row is encoded */ 12558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_PROGRESSIVE_READ_SUPPORTED 12568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_progressive_info_ptr info_fn; /* called after header data fully read */ 12578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_progressive_row_ptr row_fn; /* called after each prog. row is decoded */ 12588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_progressive_end_ptr end_fn; /* called after image is complete */ 12598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep save_buffer_ptr; /* current location in save_buffer */ 12608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep save_buffer; /* buffer for previously read data */ 12618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep current_buffer_ptr; /* current location in current_buffer */ 12628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep current_buffer; /* buffer for recently used data */ 12638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 push_length; /* size of current input chunk */ 12648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 skip_length; /* bytes to skip in input data */ 12658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_size_t save_buffer_size; /* amount of data now in save_buffer */ 12668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_size_t save_buffer_max; /* total size of save_buffer */ 12678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_size_t buffer_size; /* total amount of available input data */ 12688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_size_t current_buffer_size; /* amount of data now in current_buffer */ 12698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int process_mode; /* what push library is currently doing */ 12708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int cur_palette; /* current push library palette index */ 12718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 12728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# if defined(PNG_TEXT_SUPPORTED) 12738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_size_t current_text_size; /* current size of text input data */ 12748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_size_t current_text_left; /* how much text left to read in input */ 12758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_charp current_text; /* current text chunk buffer */ 12768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_charp current_text_ptr; /* current location in current_text */ 12778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# endif /* PNG_PROGRESSIVE_READ_SUPPORTED && PNG_TEXT_SUPPORTED */ 12788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 12798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */ 12808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 12818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(__TURBOC__) && !defined(_Windows) && !defined(__FLAT__) 12828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* for the Borland special 64K segment handler */ 12838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytepp offset_table_ptr; 12848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep offset_table; 12858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_16 offset_table_number; 12868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_16 offset_table_count; 12878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_16 offset_table_count_free; 12888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 12898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 12908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_DITHER_SUPPORTED) 12918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep palette_lookup; /* lookup table for dithering */ 12928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep dither_index; /* index translation for palette files */ 12938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 12948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 12958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_DITHER_SUPPORTED) || defined(PNG_hIST_SUPPORTED) 12968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_16p hist; /* histogram */ 12978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 12988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 12998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED) 13008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte heuristic_method; /* heuristic for row filter selection */ 13018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte num_prev_filters; /* number of weights for previous rows */ 13028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep prev_filters; /* filter type(s) of previous row(s) */ 13038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_16p filter_weights; /* weight(s) for previous line(s) */ 13048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_16p inv_filter_weights; /* 1/weight(s) for previous line(s) */ 13058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_16p filter_costs; /* relative filter calculation cost */ 13068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_16p inv_filter_costs; /* 1/relative filter calculation cost */ 13078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 13088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 13098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_TIME_RFC1123_SUPPORTED) 13108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_charp time_buffer; /* String to hold RFC 1123 time text */ 13118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 13128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 13138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* New members added in libpng-1.0.6 */ 13148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 13158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_FREE_ME_SUPPORTED 13168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 free_me; /* flags items libpng is responsible for freeing */ 13178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 13188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 13198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_USER_CHUNKS_SUPPORTED) 13208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_voidp user_chunk_ptr; 13218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_user_chunk_ptr read_user_chunk_fn; /* user read chunk handler */ 13228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 13238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 13248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED) 13258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int num_chunk_list; 13268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep chunk_list; 13278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 13288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 13298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* New members added in libpng-1.0.3 */ 13308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_RGB_TO_GRAY_SUPPORTED) 13318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte rgb_to_gray_status; 13328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* These were changed from png_byte in libpng-1.0.6 */ 13338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_16 rgb_to_gray_red_coeff; 13348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_16 rgb_to_gray_green_coeff; 13358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_16 rgb_to_gray_blue_coeff; 13368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 13378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 13388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* New member added in libpng-1.0.4 (renamed in 1.0.9) */ 13398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_MNG_FEATURES_SUPPORTED) || \ 13408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project defined(PNG_READ_EMPTY_PLTE_SUPPORTED) || \ 13418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project defined(PNG_WRITE_EMPTY_PLTE_SUPPORTED) 13428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* changed from png_byte to png_uint_32 at version 1.2.0 */ 13438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_1_0_X 13448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte mng_features_permitted; 13458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 13468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 mng_features_permitted; 13478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* PNG_1_0_X */ 13488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 13498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 13508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* New member added in libpng-1.0.7 */ 13518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) 13528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_fixed_point int_gamma; 13538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 13548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 13558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* New member added in libpng-1.0.9, ifdef'ed out in 1.0.12, enabled in 1.2.0 */ 13568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_MNG_FEATURES_SUPPORTED) 13578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte filter_type; 13588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 13598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 13608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_1_0_X) 13618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* New member added in libpng-1.0.10, ifdef'ed out in 1.2.0 */ 13628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 row_buf_size; 13638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 13648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 13658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* New members added in libpng-1.2.0 */ 13668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_ASSEMBLER_CODE_SUPPORTED) 13678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# if !defined(PNG_1_0_X) 13688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# if defined(PNG_MMX_CODE_SUPPORTED) 13698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte mmx_bitdepth_threshold; 13708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 mmx_rowbytes_threshold; 13718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# endif 13728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 asm_flags; 13738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# endif 13748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 13758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 13768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* New members added in libpng-1.0.2 but first enabled by default in 1.2.0 */ 13778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_USER_MEM_SUPPORTED 13788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_voidp mem_ptr; /* user supplied struct for mem functions */ 13798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_malloc_ptr malloc_fn; /* function for allocating memory */ 13808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_free_ptr free_fn; /* function for freeing memory */ 13818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 13828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 13838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* New member added in libpng-1.0.13 and 1.2.0 */ 13848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep big_row_buf; /* buffer to save current (unfiltered) row */ 13858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 13868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_DITHER_SUPPORTED) 13878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The following three members were added at version 1.0.14 and 1.2.4 */ 13888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep dither_sort; /* working sort array */ 13898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep index_to_palette; /* where the original index currently is */ 13908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* in the palette */ 13918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep palette_to_index; /* which original index points to this */ 13928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* palette color */ 13938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 13948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 13958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* New members added in libpng-1.0.16 and 1.2.6 */ 13968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_byte compression_type; 13978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 13988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_SET_USER_LIMITS_SUPPORTED 13998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 user_width_max; 14008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 user_height_max; 14018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 14028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 14038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* New member added in libpng-1.0.25 and 1.2.17 */ 14048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED) 14058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* storage for unknown chunk that the library doesn't recognize. */ 14068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_unknown_chunk unknown_chunk; 14078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 14088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}; 14098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 14108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 14118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* This triggers a compiler error in png.c, if png.c and png.h 14128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * do not agree upon the version number. 14138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 14148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef png_structp version_1_2_19; 14158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 14168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef png_struct FAR * FAR * png_structpp; 14178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 14188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Here are the function definitions most commonly used. This is not 14198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * the place to find out how to use libpng. See libpng.txt for the 14208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * full explanation, see example.c for the summary. This just provides 14218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * a simple one line description of the use of each function. 14228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 14238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 14248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Returns the version number of the library */ 14258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_uint_32,png_access_version_number) PNGARG((void)); 14268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 14278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Tell lib we have already handled the first <num_bytes> magic bytes. 14288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Handling more than 8 bytes from the beginning of the file is an error. 14298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 14308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_sig_bytes) PNGARG((png_structp png_ptr, 14318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int num_bytes)); 14328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 14338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Check sig[start] through sig[start + num_to_check - 1] to see if it's a 14348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * PNG file. Returns zero if the supplied bytes match the 8-byte PNG 14358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * signature, and non-zero otherwise. Having num_to_check == 0 or 14368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * start > 7 will always fail (ie return non-zero). 14378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 14388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(int,png_sig_cmp) PNGARG((png_bytep sig, png_size_t start, 14398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_size_t num_to_check)); 14408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 14418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Simple signature checking function. This is the same as calling 14428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * png_check_sig(sig, n) := !png_sig_cmp(sig, 0, n). 14438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 14448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(int,png_check_sig) PNGARG((png_bytep sig, int num)); 14458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 14468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Allocate and initialize png_ptr struct for reading, and any other memory. */ 14478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_structp,png_create_read_struct) 14488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project PNGARG((png_const_charp user_png_ver, png_voidp error_ptr, 14498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_error_ptr error_fn, png_error_ptr warn_fn)); 14508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 14518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Allocate and initialize png_ptr struct for writing, and any other memory */ 14528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_structp,png_create_write_struct) 14538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project PNGARG((png_const_charp user_png_ver, png_voidp error_ptr, 14548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_error_ptr error_fn, png_error_ptr warn_fn)); 14558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 14568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_WRITE_SUPPORTED 14578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_uint_32,png_get_compression_buffer_size) 14588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project PNGARG((png_structp png_ptr)); 14598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 14608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 14618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_WRITE_SUPPORTED 14628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_compression_buffer_size) 14638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project PNGARG((png_structp png_ptr, png_uint_32 size)); 14648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 14658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 14668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Reset the compression stream */ 14678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(int,png_reset_zstream) PNGARG((png_structp png_ptr)); 14688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 14698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* New functions added in libpng-1.0.2 (not enabled by default until 1.2.0) */ 14708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_USER_MEM_SUPPORTED 14718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_structp,png_create_read_struct_2) 14728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project PNGARG((png_const_charp user_png_ver, png_voidp error_ptr, 14738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr, 14748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_malloc_ptr malloc_fn, png_free_ptr free_fn)); 14758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_structp,png_create_write_struct_2) 14768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project PNGARG((png_const_charp user_png_ver, png_voidp error_ptr, 14778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr, 14788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_malloc_ptr malloc_fn, png_free_ptr free_fn)); 14798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 14808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 14818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Write a PNG chunk - size, type, (optional) data, CRC. */ 14828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_write_chunk) PNGARG((png_structp png_ptr, 14838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep chunk_name, png_bytep data, png_size_t length)); 14848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 14858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Write the start of a PNG chunk - length and chunk name. */ 14868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_write_chunk_start) PNGARG((png_structp png_ptr, 14878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep chunk_name, png_uint_32 length)); 14888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 14898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Write the data of a PNG chunk started with png_write_chunk_start(). */ 14908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_write_chunk_data) PNGARG((png_structp png_ptr, 14918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep data, png_size_t length)); 14928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 14938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Finish a chunk started with png_write_chunk_start() (includes CRC). */ 14948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_write_chunk_end) PNGARG((png_structp png_ptr)); 14958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 14968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Allocate and initialize the info structure */ 14978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_infop,png_create_info_struct) 14988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project PNGARG((png_structp png_ptr)); 14998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 15008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_1_0_X) || defined (PNG_1_2_X) 15018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Initialize the info structure (old interface - DEPRECATED) */ 15028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_info_init) PNGARG((png_infop info_ptr)); 15038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#undef png_info_init 15048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define png_info_init(info_ptr) png_info_init_3(&info_ptr,\ 15058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_sizeof(png_info)); 15068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 15078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 15088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_info_init_3) PNGARG((png_infopp info_ptr, 15098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_size_t png_info_struct_size)); 15108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 15118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Writes all the PNG information before the image. */ 15128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_write_info_before_PLTE) PNGARG((png_structp png_ptr, 15138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr)); 15148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_write_info) PNGARG((png_structp png_ptr, 15158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr)); 15168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 15178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED 15188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* read the information before the actual image data. */ 15198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_read_info) PNGARG((png_structp png_ptr, 15208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr)); 15218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 15228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 15238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_TIME_RFC1123_SUPPORTED) 15248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_charp,png_convert_to_rfc1123) 15258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project PNGARG((png_structp png_ptr, png_timep ptime)); 15268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 15278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 15288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if !defined(_WIN32_WCE) 15298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* "time.h" functions are not supported on WindowsCE */ 15308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_WRITE_tIME_SUPPORTED) 15318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* convert from a struct tm to png_time */ 15328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_convert_from_struct_tm) PNGARG((png_timep ptime, 15338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project struct tm FAR * ttime)); 15348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 15358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* convert from time_t to png_time. Uses gmtime() */ 15368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_convert_from_time_t) PNGARG((png_timep ptime, 15378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project time_t ttime)); 15388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* PNG_WRITE_tIME_SUPPORTED */ 15398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* _WIN32_WCE */ 15408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 15418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_EXPAND_SUPPORTED) 15428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Expand data to 24-bit RGB, or 8-bit grayscale, with alpha if available. */ 15438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_expand) PNGARG((png_structp png_ptr)); 15448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if !defined(PNG_1_0_X) 15458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_expand_gray_1_2_4_to_8) PNGARG((png_structp 15468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_ptr)); 15478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 15488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_palette_to_rgb) PNGARG((png_structp png_ptr)); 15498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_tRNS_to_alpha) PNGARG((png_structp png_ptr)); 15508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_1_0_X) || defined (PNG_1_2_X) 15518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Deprecated */ 15528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_gray_1_2_4_to_8) PNGARG((png_structp png_ptr)); 15538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 15548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 15558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 15568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED) 15578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Use blue, green, red order for pixels. */ 15588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_bgr) PNGARG((png_structp png_ptr)); 15598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 15608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 15618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED) 15628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Expand the grayscale to 24-bit RGB if necessary. */ 15638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_gray_to_rgb) PNGARG((png_structp png_ptr)); 15648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 15658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 15668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_RGB_TO_GRAY_SUPPORTED) 15678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Reduce RGB to grayscale. */ 15688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_FLOATING_POINT_SUPPORTED 15698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_rgb_to_gray) PNGARG((png_structp png_ptr, 15708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int error_action, double red, double green )); 15718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 15728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_rgb_to_gray_fixed) PNGARG((png_structp png_ptr, 15738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int error_action, png_fixed_point red, png_fixed_point green )); 15748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_byte,png_get_rgb_to_gray_status) PNGARG((png_structp 15758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_ptr)); 15768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 15778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 15788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_build_grayscale_palette) PNGARG((int bit_depth, 15798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_colorp palette)); 15808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 15818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_STRIP_ALPHA_SUPPORTED) 15828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_strip_alpha) PNGARG((png_structp png_ptr)); 15838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 15848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 15858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) || \ 15868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED) 15878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_swap_alpha) PNGARG((png_structp png_ptr)); 15888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 15898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 15908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) || \ 15918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED) 15928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_invert_alpha) PNGARG((png_structp png_ptr)); 15938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 15948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 15958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED) 15968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Add a filler byte to 8-bit Gray or 24-bit RGB images. */ 15978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_filler) PNGARG((png_structp png_ptr, 15988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 filler, int flags)); 15998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The values of the PNG_FILLER_ defines should NOT be changed */ 16008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FILLER_BEFORE 0 16018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FILLER_AFTER 1 16028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Add an alpha byte to 8-bit Gray or 24-bit RGB images. */ 16038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if !defined(PNG_1_0_X) 16048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_add_alpha) PNGARG((png_structp png_ptr, 16058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 filler, int flags)); 16068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 16078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* PNG_READ_FILLER_SUPPORTED || PNG_WRITE_FILLER_SUPPORTED */ 16088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 16098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED) 16108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Swap bytes in 16-bit depth files. */ 16118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_swap) PNGARG((png_structp png_ptr)); 16128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 16138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 16148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_PACK_SUPPORTED) || defined(PNG_WRITE_PACK_SUPPORTED) 16158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Use 1 byte per pixel in 1, 2, or 4-bit depth files. */ 16168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_packing) PNGARG((png_structp png_ptr)); 16178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 16188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 16198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_PACKSWAP_SUPPORTED) || defined(PNG_WRITE_PACKSWAP_SUPPORTED) 16208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Swap packing order of pixels in bytes. */ 16218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_packswap) PNGARG((png_structp png_ptr)); 16228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 16238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 16248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED) 16258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Converts files to legal bit depths. */ 16268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_shift) PNGARG((png_structp png_ptr, 16278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_color_8p true_bits)); 16288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 16298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 16308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_INTERLACING_SUPPORTED) || \ 16318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project defined(PNG_WRITE_INTERLACING_SUPPORTED) 16328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Have the code handle the interlacing. Returns the number of passes. */ 16338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(int,png_set_interlace_handling) PNGARG((png_structp png_ptr)); 16348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 16358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 16368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED) 16378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Invert monochrome files */ 16388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_invert_mono) PNGARG((png_structp png_ptr)); 16398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 16408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 16418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_BACKGROUND_SUPPORTED) 16428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Handle alpha and tRNS by replacing with a background color. */ 16438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_FLOATING_POINT_SUPPORTED 16448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_background) PNGARG((png_structp png_ptr, 16458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_color_16p background_color, int background_gamma_code, 16468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int need_expand, double background_gamma)); 16478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 16488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_BACKGROUND_GAMMA_UNKNOWN 0 16498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_BACKGROUND_GAMMA_SCREEN 1 16508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_BACKGROUND_GAMMA_FILE 2 16518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_BACKGROUND_GAMMA_UNIQUE 3 16528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 16538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 16548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_16_TO_8_SUPPORTED) 16558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* strip the second byte of information from a 16-bit depth file. */ 16568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_strip_16) PNGARG((png_structp png_ptr)); 16578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 16588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 16598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_DITHER_SUPPORTED) 16608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Turn on dithering, and reduce the palette to the number of colors available. */ 16618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_dither) PNGARG((png_structp png_ptr, 16628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_colorp palette, int num_palette, int maximum_colors, 16638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_16p histogram, int full_dither)); 16648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 16658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 16668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_GAMMA_SUPPORTED) 16678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Handle gamma correction. Screen_gamma=(display_exponent) */ 16688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_FLOATING_POINT_SUPPORTED 16698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_gamma) PNGARG((png_structp png_ptr, 16708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project double screen_gamma, double default_file_gamma)); 16718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 16728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 16738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 16748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_1_0_X) || defined (PNG_1_2_X) 16758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_EMPTY_PLTE_SUPPORTED) || \ 16768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project defined(PNG_WRITE_EMPTY_PLTE_SUPPORTED) 16778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Permit or disallow empty PLTE (0: not permitted, 1: permitted) */ 16788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Deprecated and will be removed. Use png_permit_mng_features() instead. */ 16798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_permit_empty_plte) PNGARG((png_structp png_ptr, 16808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int empty_plte_permitted)); 16818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 16828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 16838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 16848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_WRITE_FLUSH_SUPPORTED) 16858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Set how many lines between output flushes - 0 for no flushing */ 16868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_flush) PNGARG((png_structp png_ptr, int nrows)); 16878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Flush the current PNG output buffer */ 16888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_write_flush) PNGARG((png_structp png_ptr)); 16898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 16908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 16918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* optional update palette with requested transformations */ 16928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_start_read_image) PNGARG((png_structp png_ptr)); 16938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 16948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* optional call to update the users info structure */ 16958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_read_update_info) PNGARG((png_structp png_ptr, 16968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr)); 16978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 16988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED 16998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* read one or more rows of image data. */ 17008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_read_rows) PNGARG((png_structp png_ptr, 17018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytepp row, png_bytepp display_row, png_uint_32 num_rows)); 17028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 17038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 17048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED 17058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* read a row of data. */ 17068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_read_row) PNGARG((png_structp png_ptr, 17078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep row, 17088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep display_row)); 17098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 17108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 17118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED 17128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* read the whole image into memory at once. */ 17138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_read_image) PNGARG((png_structp png_ptr, 17148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytepp image)); 17158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 17168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 17178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* write a row of image data */ 17188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_write_row) PNGARG((png_structp png_ptr, 17198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep row)); 17208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 17218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* write a few rows of image data */ 17228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_write_rows) PNGARG((png_structp png_ptr, 17238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytepp row, png_uint_32 num_rows)); 17248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 17258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* write the image data */ 17268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_write_image) PNGARG((png_structp png_ptr, 17278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytepp image)); 17288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 17298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* writes the end of the PNG file. */ 17308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_write_end) PNGARG((png_structp png_ptr, 17318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr)); 17328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 17338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED 17348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* read the end of the PNG file. */ 17358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_read_end) PNGARG((png_structp png_ptr, 17368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr)); 17378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 17388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 17398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* free any memory associated with the png_info_struct */ 17408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_destroy_info_struct) PNGARG((png_structp png_ptr, 17418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infopp info_ptr_ptr)); 17428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 17438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* free any memory associated with the png_struct and the png_info_structs */ 17448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_destroy_read_struct) PNGARG((png_structpp 17458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_ptr_ptr, png_infopp info_ptr_ptr, png_infopp end_info_ptr_ptr)); 17468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 17478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* free all memory used by the read (old method - NOT DLL EXPORTED) */ 17488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern void png_read_destroy PNGARG((png_structp png_ptr, png_infop info_ptr, 17498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop end_info_ptr)); 17508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 17518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* free any memory associated with the png_struct and the png_info_structs */ 17528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_destroy_write_struct) 17538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project PNGARG((png_structpp png_ptr_ptr, png_infopp info_ptr_ptr)); 17548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 17558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* free any memory used in png_ptr struct (old method - NOT DLL EXPORTED) */ 17568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern void png_write_destroy PNGARG((png_structp png_ptr)); 17578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 17588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* set the libpng method of handling chunk CRC errors */ 17598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_crc_action) PNGARG((png_structp png_ptr, 17608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int crit_action, int ancil_action)); 17618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 17628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Values for png_set_crc_action() to say how to handle CRC errors in 17638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * ancillary and critical chunks, and whether to use the data contained 17648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * therein. Note that it is impossible to "discard" data in a critical 17658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * chunk. For versions prior to 0.90, the action was always error/quit, 17668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * whereas in version 0.90 and later, the action for CRC errors in ancillary 17678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * chunks is warn/discard. These values should NOT be changed. 17688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 17698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * value action:critical action:ancillary 17708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 17718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_CRC_DEFAULT 0 /* error/quit warn/discard data */ 17728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_CRC_ERROR_QUIT 1 /* error/quit error/quit */ 17738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_CRC_WARN_DISCARD 2 /* (INVALID) warn/discard data */ 17748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_CRC_WARN_USE 3 /* warn/use data warn/use data */ 17758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_CRC_QUIET_USE 4 /* quiet/use data quiet/use data */ 17768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_CRC_NO_CHANGE 5 /* use current value use current value */ 17778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 17788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* These functions give the user control over the scan-line filtering in 17798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * libpng and the compression methods used by zlib. These functions are 17808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * mainly useful for testing, as the defaults should work with most users. 17818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Those users who are tight on memory or want faster performance at the 17828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * expense of compression can modify them. See the compression library 17838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * header file (zlib.h) for an explination of the compression functions. 17848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 17858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 17868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* set the filtering method(s) used by libpng. Currently, the only valid 17878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * value for "method" is 0. 17888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 17898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_filter) PNGARG((png_structp png_ptr, int method, 17908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int filters)); 17918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 17928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Flags for png_set_filter() to say which filters to use. The flags 17938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * are chosen so that they don't conflict with real filter types 17948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * below, in case they are supplied instead of the #defined constants. 17958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * These values should NOT be changed. 17968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 17978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_NO_FILTERS 0x00 17988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FILTER_NONE 0x08 17998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FILTER_SUB 0x10 18008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FILTER_UP 0x20 18018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FILTER_AVG 0x40 18028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FILTER_PAETH 0x80 18038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_ALL_FILTERS (PNG_FILTER_NONE | PNG_FILTER_SUB | PNG_FILTER_UP | \ 18048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project PNG_FILTER_AVG | PNG_FILTER_PAETH) 18058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 18068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Filter values (not flags) - used in pngwrite.c, pngwutil.c for now. 18078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * These defines should NOT be changed. 18088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 18098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FILTER_VALUE_NONE 0 18108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FILTER_VALUE_SUB 1 18118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FILTER_VALUE_UP 2 18128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FILTER_VALUE_AVG 3 18138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FILTER_VALUE_PAETH 4 18148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FILTER_VALUE_LAST 5 18158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 18168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED) /* EXPERIMENTAL */ 18178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The "heuristic_method" is given by one of the PNG_FILTER_HEURISTIC_ 18188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * defines, either the default (minimum-sum-of-absolute-differences), or 18198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * the experimental method (weighted-minimum-sum-of-absolute-differences). 18208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 18218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Weights are factors >= 1.0, indicating how important it is to keep the 18228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * filter type consistent between rows. Larger numbers mean the current 18238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * filter is that many times as likely to be the same as the "num_weights" 18248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * previous filters. This is cumulative for each previous row with a weight. 18258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * There needs to be "num_weights" values in "filter_weights", or it can be 18268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * NULL if the weights aren't being specified. Weights have no influence on 18278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * the selection of the first row filter. Well chosen weights can (in theory) 18288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * improve the compression for a given image. 18298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 18308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Costs are factors >= 1.0 indicating the relative decoding costs of a 18318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * filter type. Higher costs indicate more decoding expense, and are 18328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * therefore less likely to be selected over a filter with lower computational 18338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * costs. There needs to be a value in "filter_costs" for each valid filter 18348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * type (given by PNG_FILTER_VALUE_LAST), or it can be NULL if you aren't 18358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * setting the costs. Costs try to improve the speed of decompression without 18368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * unduly increasing the compressed image size. 18378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 18388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * A negative weight or cost indicates the default value is to be used, and 18398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * values in the range [0.0, 1.0) indicate the value is to remain unchanged. 18408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * The default values for both weights and costs are currently 1.0, but may 18418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * change if good general weighting/cost heuristics can be found. If both 18428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * the weights and costs are set to 1.0, this degenerates the WEIGHTED method 18438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * to the UNWEIGHTED method, but with added encoding time/computation. 18448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 18458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_FLOATING_POINT_SUPPORTED 18468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_filter_heuristics) PNGARG((png_structp png_ptr, 18478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int heuristic_method, int num_weights, png_doublep filter_weights, 18488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_doublep filter_costs)); 18498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 18508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* PNG_WRITE_WEIGHTED_FILTER_SUPPORTED */ 18518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 18528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Heuristic used for row filter selection. These defines should NOT be 18538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * changed. 18548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 18558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FILTER_HEURISTIC_DEFAULT 0 /* Currently "UNWEIGHTED" */ 18568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FILTER_HEURISTIC_UNWEIGHTED 1 /* Used by libpng < 0.95 */ 18578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FILTER_HEURISTIC_WEIGHTED 2 /* Experimental feature */ 18588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FILTER_HEURISTIC_LAST 3 /* Not a valid value */ 18598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 18608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Set the library compression level. Currently, valid values range from 18618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 0 - 9, corresponding directly to the zlib compression levels 0 - 9 18628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * (0 - no compression, 9 - "maximal" compression). Note that tests have 18638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * shown that zlib compression levels 3-6 usually perform as well as level 9 18648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * for PNG images, and do considerably fewer caclulations. In the future, 18658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * these values may not correspond directly to the zlib compression levels. 18668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 18678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_compression_level) PNGARG((png_structp png_ptr, 18688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int level)); 18698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 18708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_compression_mem_level) 18718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project PNGARG((png_structp png_ptr, int mem_level)); 18728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 18738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_compression_strategy) 18748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project PNGARG((png_structp png_ptr, int strategy)); 18758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 18768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_compression_window_bits) 18778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project PNGARG((png_structp png_ptr, int window_bits)); 18788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 18798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_compression_method) PNGARG((png_structp png_ptr, 18808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int method)); 18818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 18828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* These next functions are called for input/output, memory, and error 18838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * handling. They are in the file pngrio.c, pngwio.c, and pngerror.c, 18848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * and call standard C I/O routines such as fread(), fwrite(), and 18858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * fprintf(). These functions can be made to use other I/O routines 18868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * at run time for those applications that need to handle I/O in a 18878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * different manner by calling png_set_???_fn(). See libpng.txt for 18888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * more information. 18898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 18908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 18918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if !defined(PNG_NO_STDIO) 18928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Initialize the input/output for the PNG file to the default functions. */ 18938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_init_io) PNGARG((png_structp png_ptr, png_FILE_p fp)); 18948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 18958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 18968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Replace the (error and abort), and warning functions with user 18978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * supplied functions. If no messages are to be printed you must still 18988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * write and use replacement functions. The replacement error_fn should 18998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * still do a longjmp to the last setjmp location if you are using this 19008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * method of error handling. If error_fn or warning_fn is NULL, the 19018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * default function will be used. 19028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 19038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 19048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_error_fn) PNGARG((png_structp png_ptr, 19058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_voidp error_ptr, png_error_ptr error_fn, png_error_ptr warning_fn)); 19068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 19078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Return the user pointer associated with the error functions */ 19088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_voidp,png_get_error_ptr) PNGARG((png_structp png_ptr)); 19098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 19108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Replace the default data output functions with a user supplied one(s). 19118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * If buffered output is not used, then output_flush_fn can be set to NULL. 19128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * If PNG_WRITE_FLUSH_SUPPORTED is not defined at libpng compile time 19138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * output_flush_fn will be ignored (and thus can be NULL). 19148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 19158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_write_fn) PNGARG((png_structp png_ptr, 19168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_voidp io_ptr, png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn)); 19178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 19188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Replace the default data input function with a user supplied one. */ 19198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_read_fn) PNGARG((png_structp png_ptr, 19208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_voidp io_ptr, png_rw_ptr read_data_fn)); 19218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 19228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Return the user pointer associated with the I/O functions */ 19238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_voidp,png_get_io_ptr) PNGARG((png_structp png_ptr)); 19248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 19258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_read_status_fn) PNGARG((png_structp png_ptr, 19268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_read_status_ptr read_row_fn)); 19278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 19288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_write_status_fn) PNGARG((png_structp png_ptr, 19298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_write_status_ptr write_row_fn)); 19308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 19318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_USER_MEM_SUPPORTED 19328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Replace the default memory allocation functions with user supplied one(s). */ 19338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_mem_fn) PNGARG((png_structp png_ptr, 19348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn)); 19358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Return the user pointer associated with the memory functions */ 19368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_voidp,png_get_mem_ptr) PNGARG((png_structp png_ptr)); 19378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 19388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 19398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ 19408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project defined(PNG_LEGACY_SUPPORTED) 19418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_read_user_transform_fn) PNGARG((png_structp 19428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_ptr, png_user_transform_ptr read_user_transform_fn)); 19438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 19448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 19458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) || \ 19468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project defined(PNG_LEGACY_SUPPORTED) 19478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_write_user_transform_fn) PNGARG((png_structp 19488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_ptr, png_user_transform_ptr write_user_transform_fn)); 19498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 19508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 19518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ 19528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) || \ 19538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project defined(PNG_LEGACY_SUPPORTED) 19548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_user_transform_info) PNGARG((png_structp 19558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_ptr, png_voidp user_transform_ptr, int user_transform_depth, 19568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int user_transform_channels)); 19578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Return the user pointer associated with the user transform functions */ 19588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_voidp,png_get_user_transform_ptr) 19598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project PNGARG((png_structp png_ptr)); 19608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 19618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 19628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_USER_CHUNKS_SUPPORTED 19638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_read_user_chunk_fn) PNGARG((png_structp png_ptr, 19648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_voidp user_chunk_ptr, png_user_chunk_ptr read_user_chunk_fn)); 19658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_voidp,png_get_user_chunk_ptr) PNGARG((png_structp 19668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_ptr)); 19678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 19688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 19698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_PROGRESSIVE_READ_SUPPORTED 19708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Sets the function callbacks for the push reader, and a pointer to a 19718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * user-defined structure available to the callback functions. 19728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 19738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_progressive_read_fn) PNGARG((png_structp png_ptr, 19748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_voidp progressive_ptr, 19758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_progressive_info_ptr info_fn, png_progressive_row_ptr row_fn, 19768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_progressive_end_ptr end_fn)); 19778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 19788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* returns the user pointer associated with the push read functions */ 19798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_voidp,png_get_progressive_ptr) 19808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project PNGARG((png_structp png_ptr)); 19818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 19828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* function to be called when data becomes available */ 19838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_process_data) PNGARG((png_structp png_ptr, 19848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, png_bytep buffer, png_size_t buffer_size)); 19858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 19868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* function that combines rows. Not very much different than the 19878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * png_combine_row() call. Is this even used????? 19888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 19898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_progressive_combine_row) PNGARG((png_structp png_ptr, 19908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep old_row, png_bytep new_row)); 19918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */ 19928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 19938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_voidp,png_malloc) PNGARG((png_structp png_ptr, 19948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 size)); 19958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 19968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_1_0_X) 19978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define png_malloc_warn png_malloc 19988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 19998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Added at libpng version 1.2.4 */ 20008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_voidp,png_malloc_warn) PNGARG((png_structp png_ptr, 20018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 size)); 20028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 20038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 20048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* frees a pointer allocated by png_malloc() */ 20058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_free) PNGARG((png_structp png_ptr, png_voidp ptr)); 20068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 20078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_1_0_X) 20088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Function to allocate memory for zlib. */ 20098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(voidpf,png_zalloc) PNGARG((voidpf png_ptr, uInt items, 20108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project uInt size)); 20118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 20128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Function to free memory for zlib */ 20138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_zfree) PNGARG((voidpf png_ptr, voidpf ptr)); 20148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 20158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 20168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Free data that was allocated internally */ 20178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_free_data) PNGARG((png_structp png_ptr, 20188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, png_uint_32 free_me, int num)); 20198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_FREE_ME_SUPPORTED 20208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Reassign responsibility for freeing existing data, whether allocated 20218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * by libpng or by the application */ 20228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_data_freer) PNGARG((png_structp png_ptr, 20238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, int freer, png_uint_32 mask)); 20248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 20258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* assignments for png_data_freer */ 20268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_DESTROY_WILL_FREE_DATA 1 20278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_SET_WILL_FREE_DATA 1 20288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_USER_WILL_FREE_DATA 2 20298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Flags for png_ptr->free_me and info_ptr->free_me */ 20308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FREE_HIST 0x0008 20318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FREE_ICCP 0x0010 20328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FREE_SPLT 0x0020 20338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FREE_ROWS 0x0040 20348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FREE_PCAL 0x0080 20358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FREE_SCAL 0x0100 20368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FREE_UNKN 0x0200 20378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FREE_LIST 0x0400 20388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FREE_PLTE 0x1000 20398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FREE_TRNS 0x2000 20408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FREE_TEXT 0x4000 20418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FREE_ALL 0x7fff 20428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FREE_MUL 0x4220 /* PNG_FREE_SPLT|PNG_FREE_TEXT|PNG_FREE_UNKN */ 20438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 20448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_USER_MEM_SUPPORTED 20458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_voidp,png_malloc_default) PNGARG((png_structp png_ptr, 20468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 size)); 20478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_free_default) PNGARG((png_structp png_ptr, 20488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_voidp ptr)); 20498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 20508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 20518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_voidp,png_memcpy_check) PNGARG((png_structp png_ptr, 20528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_voidp s1, png_voidp s2, png_uint_32 size)); 20538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 20548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_voidp,png_memset_check) PNGARG((png_structp png_ptr, 20558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_voidp s1, int value, png_uint_32 size)); 20568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 20578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(USE_FAR_KEYWORD) /* memory model conversion function */ 20588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern void *png_far_to_near PNGARG((png_structp png_ptr,png_voidp ptr, 20598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int check)); 20608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* USE_FAR_KEYWORD */ 20618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 20628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Fatal error in PNG image of libpng - can't continue */ 20638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_error) PNGARG((png_structp png_ptr, 20648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_const_charp error_message)); 20658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 20668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The same, but the chunk name is prepended to the error string. */ 20678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_chunk_error) PNGARG((png_structp png_ptr, 20688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_const_charp error_message)); 20698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 20708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef PNG_NO_WARNINGS 20718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Non-fatal error in libpng. Can continue, but may have a problem. */ 20728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_warning) PNGARG((png_structp png_ptr, 20738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_const_charp warning_message)); 20748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 20758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_READ_SUPPORTED 20768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Non-fatal error in libpng, chunk name is prepended to message. */ 20778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_chunk_warning) PNGARG((png_structp png_ptr, 20788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_const_charp warning_message)); 20798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* PNG_READ_SUPPORTED */ 20808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* PNG_NO_WARNINGS */ 20818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 20828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The png_set_<chunk> functions are for storing values in the png_info_struct. 20838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Similarly, the png_get_<chunk> calls are used to read values from the 20848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * png_info_struct, either storing the parameters in the passed variables, or 20858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * setting pointers into the png_info_struct where the data is stored. The 20868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * png_get_<chunk> functions return a non-zero value if the data was available 20878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * in info_ptr, or return zero and do not change any of the parameters if the 20888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * data was not available. 20898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 20908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * These functions should be used instead of directly accessing png_info 20918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * to avoid problems with future changes in the size and internal layout of 20928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * png_info_struct. 20938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 20948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Returns "flag" if chunk data is valid in info_ptr. */ 20958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_uint_32,png_get_valid) PNGARG((png_structp png_ptr, 20968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_infop info_ptr, png_uint_32 flag)); 20978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 20988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Returns number of bytes needed to hold a transformed row. */ 20998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_uint_32,png_get_rowbytes) PNGARG((png_structp png_ptr, 21008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_infop info_ptr)); 21018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 21028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_INFO_IMAGE_SUPPORTED) 21038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Returns row_pointers, which is an array of pointers to scanlines that was 21048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectreturned from png_read_png(). */ 21058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_bytepp,png_get_rows) PNGARG((png_structp png_ptr, 21068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_infop info_ptr)); 21078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Set row_pointers, which is an array of pointers to scanlines for use 21088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectby png_write_png(). */ 21098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_rows) PNGARG((png_structp png_ptr, 21108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, png_bytepp row_pointers)); 21118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 21128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 21138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Returns number of color channels in image. */ 21148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_byte,png_get_channels) PNGARG((png_structp png_ptr, 21158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_infop info_ptr)); 21168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 21178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_EASY_ACCESS_SUPPORTED 21188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Returns image width in pixels. */ 21198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_uint_32, png_get_image_width) PNGARG((png_structp 21208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_ptr, png_infop info_ptr)); 21218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 21228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Returns image height in pixels. */ 21238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_uint_32, png_get_image_height) PNGARG((png_structp 21248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_ptr, png_infop info_ptr)); 21258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 21268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Returns image bit_depth. */ 21278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_byte, png_get_bit_depth) PNGARG((png_structp 21288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_ptr, png_infop info_ptr)); 21298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 21308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Returns image color_type. */ 21318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_byte, png_get_color_type) PNGARG((png_structp 21328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_ptr, png_infop info_ptr)); 21338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 21348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Returns image filter_type. */ 21358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_byte, png_get_filter_type) PNGARG((png_structp 21368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_ptr, png_infop info_ptr)); 21378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 21388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Returns image interlace_type. */ 21398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_byte, png_get_interlace_type) PNGARG((png_structp 21408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_ptr, png_infop info_ptr)); 21418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 21428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Returns image compression_type. */ 21438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_byte, png_get_compression_type) PNGARG((png_structp 21448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_ptr, png_infop info_ptr)); 21458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 21468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Returns image resolution in pixels per meter, from pHYs chunk data. */ 21478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_uint_32, png_get_pixels_per_meter) PNGARG((png_structp 21488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_ptr, png_infop info_ptr)); 21498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_uint_32, png_get_x_pixels_per_meter) PNGARG((png_structp 21508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_ptr, png_infop info_ptr)); 21518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_uint_32, png_get_y_pixels_per_meter) PNGARG((png_structp 21528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_ptr, png_infop info_ptr)); 21538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 21548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Returns pixel aspect ratio, computed from pHYs chunk data. */ 21558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_FLOATING_POINT_SUPPORTED 21568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(float, png_get_pixel_aspect_ratio) PNGARG((png_structp 21578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_ptr, png_infop info_ptr)); 21588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 21598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 21608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Returns image x, y offset in pixels or microns, from oFFs chunk data. */ 21618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_int_32, png_get_x_offset_pixels) PNGARG((png_structp 21628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_ptr, png_infop info_ptr)); 21638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_int_32, png_get_y_offset_pixels) PNGARG((png_structp 21648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_ptr, png_infop info_ptr)); 21658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_int_32, png_get_x_offset_microns) PNGARG((png_structp 21668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_ptr, png_infop info_ptr)); 21678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_int_32, png_get_y_offset_microns) PNGARG((png_structp 21688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_ptr, png_infop info_ptr)); 21698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 21708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* PNG_EASY_ACCESS_SUPPORTED */ 21718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 21728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Returns pointer to signature string read from PNG header */ 21738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_bytep,png_get_signature) PNGARG((png_structp png_ptr, 21748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_infop info_ptr)); 21758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 21768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_bKGD_SUPPORTED) 21778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_uint_32,png_get_bKGD) PNGARG((png_structp png_ptr, 21788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, png_color_16p *background)); 21798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 21808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 21818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_bKGD_SUPPORTED) 21828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_bKGD) PNGARG((png_structp png_ptr, 21838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, png_color_16p background)); 21848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 21858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 21868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_cHRM_SUPPORTED) 21878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_FLOATING_POINT_SUPPORTED 21888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_uint_32,png_get_cHRM) PNGARG((png_structp png_ptr, 21898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, double *white_x, double *white_y, double *red_x, 21908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project double *red_y, double *green_x, double *green_y, double *blue_x, 21918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project double *blue_y)); 21928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 21938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_FIXED_POINT_SUPPORTED 21948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_uint_32,png_get_cHRM_fixed) PNGARG((png_structp png_ptr, 21958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, png_fixed_point *int_white_x, png_fixed_point 21968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *int_white_y, png_fixed_point *int_red_x, png_fixed_point *int_red_y, 21978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_fixed_point *int_green_x, png_fixed_point *int_green_y, png_fixed_point 21988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *int_blue_x, png_fixed_point *int_blue_y)); 21998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 22008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 22018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 22028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_cHRM_SUPPORTED) 22038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_FLOATING_POINT_SUPPORTED 22048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_cHRM) PNGARG((png_structp png_ptr, 22058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, double white_x, double white_y, double red_x, 22068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project double red_y, double green_x, double green_y, double blue_x, double blue_y)); 22078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 22088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_FIXED_POINT_SUPPORTED 22098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_cHRM_fixed) PNGARG((png_structp png_ptr, 22108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, png_fixed_point int_white_x, png_fixed_point int_white_y, 22118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_fixed_point int_red_x, png_fixed_point int_red_y, png_fixed_point 22128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int_green_x, png_fixed_point int_green_y, png_fixed_point int_blue_x, 22138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_fixed_point int_blue_y)); 22148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 22158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 22168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 22178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_gAMA_SUPPORTED) 22188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_FLOATING_POINT_SUPPORTED 22198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_uint_32,png_get_gAMA) PNGARG((png_structp png_ptr, 22208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, double *file_gamma)); 22218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 22228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_uint_32,png_get_gAMA_fixed) PNGARG((png_structp png_ptr, 22238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, png_fixed_point *int_file_gamma)); 22248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 22258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 22268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_gAMA_SUPPORTED) 22278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_FLOATING_POINT_SUPPORTED 22288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_gAMA) PNGARG((png_structp png_ptr, 22298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, double file_gamma)); 22308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 22318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_gAMA_fixed) PNGARG((png_structp png_ptr, 22328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, png_fixed_point int_file_gamma)); 22338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 22348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 22358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_hIST_SUPPORTED) 22368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_uint_32,png_get_hIST) PNGARG((png_structp png_ptr, 22378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, png_uint_16p *hist)); 22388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 22398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 22408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_hIST_SUPPORTED) 22418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_hIST) PNGARG((png_structp png_ptr, 22428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, png_uint_16p hist)); 22438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 22448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 22458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_uint_32,png_get_IHDR) PNGARG((png_structp png_ptr, 22468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, png_uint_32 *width, png_uint_32 *height, 22478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int *bit_depth, int *color_type, int *interlace_method, 22488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int *compression_method, int *filter_method)); 22498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 22508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_IHDR) PNGARG((png_structp png_ptr, 22518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, png_uint_32 width, png_uint_32 height, int bit_depth, 22528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int color_type, int interlace_method, int compression_method, 22538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int filter_method)); 22548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 22558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_oFFs_SUPPORTED) 22568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_uint_32,png_get_oFFs) PNGARG((png_structp png_ptr, 22578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, png_int_32 *offset_x, png_int_32 *offset_y, 22588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int *unit_type)); 22598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 22608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 22618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_oFFs_SUPPORTED) 22628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_oFFs) PNGARG((png_structp png_ptr, 22638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, png_int_32 offset_x, png_int_32 offset_y, 22648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int unit_type)); 22658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 22668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 22678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_pCAL_SUPPORTED) 22688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_uint_32,png_get_pCAL) PNGARG((png_structp png_ptr, 22698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, png_charp *purpose, png_int_32 *X0, png_int_32 *X1, 22708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int *type, int *nparams, png_charp *units, png_charpp *params)); 22718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 22728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 22738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_pCAL_SUPPORTED) 22748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_pCAL) PNGARG((png_structp png_ptr, 22758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, png_charp purpose, png_int_32 X0, png_int_32 X1, 22768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int type, int nparams, png_charp units, png_charpp params)); 22778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 22788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 22798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_pHYs_SUPPORTED) 22808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_uint_32,png_get_pHYs) PNGARG((png_structp png_ptr, 22818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type)); 22828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 22838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 22848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_pHYs_SUPPORTED) 22858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_pHYs) PNGARG((png_structp png_ptr, 22868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, png_uint_32 res_x, png_uint_32 res_y, int unit_type)); 22878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 22888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 22898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_uint_32,png_get_PLTE) PNGARG((png_structp png_ptr, 22908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, png_colorp *palette, int *num_palette)); 22918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 22928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_PLTE) PNGARG((png_structp png_ptr, 22938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, png_colorp palette, int num_palette)); 22948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 22958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_sBIT_SUPPORTED) 22968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_uint_32,png_get_sBIT) PNGARG((png_structp png_ptr, 22978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, png_color_8p *sig_bit)); 22988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 22998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 23008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_sBIT_SUPPORTED) 23018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_sBIT) PNGARG((png_structp png_ptr, 23028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, png_color_8p sig_bit)); 23038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 23048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 23058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_sRGB_SUPPORTED) 23068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_uint_32,png_get_sRGB) PNGARG((png_structp png_ptr, 23078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, int *intent)); 23088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 23098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 23108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_sRGB_SUPPORTED) 23118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_sRGB) PNGARG((png_structp png_ptr, 23128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, int intent)); 23138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_sRGB_gAMA_and_cHRM) PNGARG((png_structp png_ptr, 23148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, int intent)); 23158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 23168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 23178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_iCCP_SUPPORTED) 23188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_uint_32,png_get_iCCP) PNGARG((png_structp png_ptr, 23198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, png_charpp name, int *compression_type, 23208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_charpp profile, png_uint_32 *proflen)); 23218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* Note to maintainer: profile should be png_bytepp */ 23228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 23238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 23248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_iCCP_SUPPORTED) 23258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_iCCP) PNGARG((png_structp png_ptr, 23268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, png_charp name, int compression_type, 23278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_charp profile, png_uint_32 proflen)); 23288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* Note to maintainer: profile should be png_bytep */ 23298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 23308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 23318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_sPLT_SUPPORTED) 23328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_uint_32,png_get_sPLT) PNGARG((png_structp png_ptr, 23338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, png_sPLT_tpp entries)); 23348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 23358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 23368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_sPLT_SUPPORTED) 23378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_sPLT) PNGARG((png_structp png_ptr, 23388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, png_sPLT_tp entries, int nentries)); 23398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 23408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 23418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_TEXT_SUPPORTED) 23428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* png_get_text also returns the number of text chunks in *num_text */ 23438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_uint_32,png_get_text) PNGARG((png_structp png_ptr, 23448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, png_textp *text_ptr, int *num_text)); 23458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 23468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 23478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* 23488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Note while png_set_text() will accept a structure whose text, 23498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * language, and translated keywords are NULL pointers, the structure 23508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * returned by png_get_text will always contain regular 23518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * zero-terminated C strings. They might be empty strings but 23528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * they will never be NULL pointers. 23538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 23548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 23558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_TEXT_SUPPORTED) 23568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_text) PNGARG((png_structp png_ptr, 23578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, png_textp text_ptr, int num_text)); 23588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 23598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 23608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_tIME_SUPPORTED) 23618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_uint_32,png_get_tIME) PNGARG((png_structp png_ptr, 23628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, png_timep *mod_time)); 23638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 23648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 23658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_tIME_SUPPORTED) 23668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_tIME) PNGARG((png_structp png_ptr, 23678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, png_timep mod_time)); 23688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 23698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 23708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_tRNS_SUPPORTED) 23718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_uint_32,png_get_tRNS) PNGARG((png_structp png_ptr, 23728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, png_bytep *trans, int *num_trans, 23738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_color_16p *trans_values)); 23748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 23758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 23768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_tRNS_SUPPORTED) 23778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_tRNS) PNGARG((png_structp png_ptr, 23788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, png_bytep trans, int num_trans, 23798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_color_16p trans_values)); 23808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 23818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 23828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_tRNS_SUPPORTED) 23838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 23848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 23858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_sCAL_SUPPORTED) 23868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_FLOATING_POINT_SUPPORTED 23878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_uint_32,png_get_sCAL) PNGARG((png_structp png_ptr, 23888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, int *unit, double *width, double *height)); 23898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 23908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_FIXED_POINT_SUPPORTED 23918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_uint_32,png_get_sCAL_s) PNGARG((png_structp png_ptr, 23928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, int *unit, png_charpp swidth, png_charpp sheight)); 23938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 23948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 23958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* PNG_sCAL_SUPPORTED */ 23968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 23978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_sCAL_SUPPORTED) 23988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_FLOATING_POINT_SUPPORTED 23998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_sCAL) PNGARG((png_structp png_ptr, 24008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, int unit, double width, double height)); 24018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 24028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_FIXED_POINT_SUPPORTED 24038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_sCAL_s) PNGARG((png_structp png_ptr, 24048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, int unit, png_charp swidth, png_charp sheight)); 24058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 24068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 24078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* PNG_sCAL_SUPPORTED || PNG_WRITE_sCAL_SUPPORTED */ 24088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 24098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED) 24108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* provide a list of chunks and how they are to be handled, if the built-in 24118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project handling or default unknown chunk handling is not desired. Any chunks not 24128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project listed will be handled in the default manner. The IHDR and IEND chunks 24138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project must not be listed. 24148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project keep = 0: follow default behaviour 24158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project = 1: do not keep 24168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project = 2: keep only if safe-to-copy 24178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project = 3: keep even if unsafe-to-copy 24188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project*/ 24198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void, png_set_keep_unknown_chunks) PNGARG((png_structp 24208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_ptr, int keep, png_bytep chunk_list, int num_chunks)); 24218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void, png_set_unknown_chunks) PNGARG((png_structp png_ptr, 24228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, png_unknown_chunkp unknowns, int num_unknowns)); 24238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void, png_set_unknown_chunk_location) 24248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project PNGARG((png_structp png_ptr, png_infop info_ptr, int chunk, int location)); 24258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_uint_32,png_get_unknown_chunks) PNGARG((png_structp 24268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_ptr, png_infop info_ptr, png_unknown_chunkpp entries)); 24278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 24288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED 24298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXPORT(int,png_handle_as_unknown) PNGARG((png_structp png_ptr, png_bytep 24308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project chunk_name)); 24318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 24328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 24338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Png_free_data() will turn off the "valid" flag for anything it frees. 24348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project If you need to turn it off for a chunk that your application has freed, 24358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project you can use png_set_invalid(png_ptr, info_ptr, PNG_INFO_CHNK); */ 24368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void, png_set_invalid) PNGARG((png_structp png_ptr, 24378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, int mask)); 24388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 24398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_INFO_IMAGE_SUPPORTED) 24408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The "params" pointer is currently not used and is for future expansion. */ 24418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void, png_read_png) PNGARG((png_structp png_ptr, 24428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, 24438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int transforms, 24448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_voidp params)); 24458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void, png_write_png) PNGARG((png_structp png_ptr, 24468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, 24478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int transforms, 24488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_voidp params)); 24498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 24508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 24518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Define PNG_DEBUG at compile time for debugging information. Higher 24528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * numbers for PNG_DEBUG mean more debugging information. This has 24538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * only been added since version 0.95 so it is not implemented throughout 24548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * libpng yet, but more support will be added as needed. 24558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 24568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_DEBUG 24578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if (PNG_DEBUG > 0) 24588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if !defined(PNG_DEBUG_FILE) && defined(_MSC_VER) 24598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include <crtdbg.h> 24608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if (PNG_DEBUG > 1) 24618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define png_debug(l,m) _RPT0(_CRT_WARN,m) 24628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define png_debug1(l,m,p1) _RPT1(_CRT_WARN,m,p1) 24638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define png_debug2(l,m,p1,p2) _RPT2(_CRT_WARN,m,p1,p2) 24648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 24658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else /* PNG_DEBUG_FILE || !_MSC_VER */ 24668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef PNG_DEBUG_FILE 24678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_DEBUG_FILE stderr 24688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* PNG_DEBUG_FILE */ 24698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if (PNG_DEBUG > 1) 24708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define png_debug(l,m) \ 24718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ \ 24728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int num_tabs=l; \ 24738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project fprintf(PNG_DEBUG_FILE,"%s"m,(num_tabs==1 ? "\t" : \ 24748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":"")))); \ 24758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 24768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define png_debug1(l,m,p1) \ 24778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ \ 24788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int num_tabs=l; \ 24798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project fprintf(PNG_DEBUG_FILE,"%s"m,(num_tabs==1 ? "\t" : \ 24808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))),p1); \ 24818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 24828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define png_debug2(l,m,p1,p2) \ 24838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ \ 24848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int num_tabs=l; \ 24858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project fprintf(PNG_DEBUG_FILE,"%s"m,(num_tabs==1 ? "\t" : \ 24868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))),p1,p2); \ 24878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 24888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* (PNG_DEBUG > 1) */ 24898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* _MSC_VER */ 24908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* (PNG_DEBUG > 0) */ 24918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* PNG_DEBUG */ 24928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef png_debug 24938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define png_debug(l, m) 24948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 24958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef png_debug1 24968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define png_debug1(l, m, p1) 24978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 24988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef png_debug2 24998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define png_debug2(l, m, p1, p2) 25008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 25018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 25028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_charp,png_get_copyright) PNGARG((png_structp png_ptr)); 25038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_charp,png_get_header_ver) PNGARG((png_structp png_ptr)); 25048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_charp,png_get_header_version) PNGARG((png_structp png_ptr)); 25058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_charp,png_get_libpng_ver) PNGARG((png_structp png_ptr)); 25068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 25078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_MNG_FEATURES_SUPPORTED 25088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_uint_32,png_permit_mng_features) PNGARG((png_structp 25098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_ptr, png_uint_32 mng_features_permitted)); 25108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 25118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 25128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* For use in png_set_keep_unknown, added to version 1.2.6 */ 25138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_HANDLE_CHUNK_AS_DEFAULT 0 25148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_HANDLE_CHUNK_NEVER 1 25158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_HANDLE_CHUNK_IF_SAFE 2 25168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_HANDLE_CHUNK_ALWAYS 3 25178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 25188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Added to version 1.2.0 */ 25198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_ASSEMBLER_CODE_SUPPORTED) 25208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_MMX_CODE_SUPPORTED) 25218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_ASM_FLAG_MMX_SUPPORT_COMPILED 0x01 /* not user-settable */ 25228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_ASM_FLAG_MMX_SUPPORT_IN_CPU 0x02 /* not user-settable */ 25238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_ASM_FLAG_MMX_READ_COMBINE_ROW 0x04 25248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_ASM_FLAG_MMX_READ_INTERLACE 0x08 25258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_ASM_FLAG_MMX_READ_FILTER_SUB 0x10 25268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_ASM_FLAG_MMX_READ_FILTER_UP 0x20 25278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_ASM_FLAG_MMX_READ_FILTER_AVG 0x40 25288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_ASM_FLAG_MMX_READ_FILTER_PAETH 0x80 25298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_ASM_FLAGS_INITIALIZED 0x80000000 /* not user-settable */ 25308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 25318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_MMX_READ_FLAGS ( PNG_ASM_FLAG_MMX_READ_COMBINE_ROW \ 25328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project | PNG_ASM_FLAG_MMX_READ_INTERLACE \ 25338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project | PNG_ASM_FLAG_MMX_READ_FILTER_SUB \ 25348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project | PNG_ASM_FLAG_MMX_READ_FILTER_UP \ 25358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project | PNG_ASM_FLAG_MMX_READ_FILTER_AVG \ 25368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project | PNG_ASM_FLAG_MMX_READ_FILTER_PAETH ) 25378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_MMX_WRITE_FLAGS ( 0 ) 25388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 25398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_MMX_FLAGS ( PNG_ASM_FLAG_MMX_SUPPORT_COMPILED \ 25408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project | PNG_ASM_FLAG_MMX_SUPPORT_IN_CPU \ 25418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project | PNG_MMX_READ_FLAGS \ 25428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project | PNG_MMX_WRITE_FLAGS ) 25438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 25448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_SELECT_READ 1 25458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_SELECT_WRITE 2 25468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* PNG_MMX_CODE_SUPPORTED */ 25478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 25488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if !defined(PNG_1_0_X) 25498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* pngget.c */ 25508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_uint_32,png_get_mmx_flagmask) 25518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project PNGARG((int flag_select, int *compilerID)); 25528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 25538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* pngget.c */ 25548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_uint_32,png_get_asm_flagmask) 25558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project PNGARG((int flag_select)); 25568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 25578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* pngget.c */ 25588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_uint_32,png_get_asm_flags) 25598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project PNGARG((png_structp png_ptr)); 25608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 25618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* pngget.c */ 25628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_byte,png_get_mmx_bitdepth_threshold) 25638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project PNGARG((png_structp png_ptr)); 25648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 25658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* pngget.c */ 25668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_uint_32,png_get_mmx_rowbytes_threshold) 25678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project PNGARG((png_structp png_ptr)); 25688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 25698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* pngset.c */ 25708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_asm_flags) 25718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project PNGARG((png_structp png_ptr, png_uint_32 asm_flags)); 25728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 25738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* pngset.c */ 25748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_mmx_thresholds) 25758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project PNGARG((png_structp png_ptr, png_byte mmx_bitdepth_threshold, 25768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 mmx_rowbytes_threshold)); 25778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 25788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* PNG_1_0_X */ 25798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 25808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if !defined(PNG_1_0_X) 25818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* png.c, pnggccrd.c, or pngvcrd.c */ 25828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(int,png_mmx_support) PNGARG((void)); 25838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* PNG_ASSEMBLER_CODE_SUPPORTED */ 25848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 25858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Strip the prepended error numbers ("#nnn ") from error and warning 25868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * messages before passing them to the error or warning handler. */ 25878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_ERROR_NUMBERS_SUPPORTED 25888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_strip_error_numbers) PNGARG((png_structp 25898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_ptr, png_uint_32 strip_mode)); 25908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 25918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 25928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* PNG_1_0_X */ 25938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 25948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Added at libpng-1.2.6 */ 25958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_SET_USER_LIMITS_SUPPORTED 25968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_set_user_limits) PNGARG((png_structp 25978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_ptr, png_uint_32 user_width_max, png_uint_32 user_height_max)); 25988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_uint_32,png_get_user_width_max) PNGARG((png_structp 25998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_ptr)); 26008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_uint_32,png_get_user_height_max) PNGARG((png_structp 26018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_ptr)); 26028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 26038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 26048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Maintainer: Put new public prototypes here ^, in libpng.3, and project defs */ 26058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 26068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_READ_COMPOSITE_NODIV_SUPPORTED 26078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* With these routines we avoid an integer divide, which will be slower on 26088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * most machines. However, it does take more operations than the corresponding 26098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * divide method, so it may be slower on a few RISC systems. There are two 26108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * shifts (by 8 or 16 bits) and an addition, versus a single integer divide. 26118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 26128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Note that the rounding factors are NOT supposed to be the same! 128 and 26138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 32768 are correct for the NODIV code; 127 and 32767 are correct for the 26148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * standard method. 26158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 26168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * [Optimized code by Greg Roelofs and Mark Adler...blame us for bugs. :-) ] 26178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 26188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 26198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* fg and bg should be in `gamma 1.0' space; alpha is the opacity */ 26208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 26218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define png_composite(composite, fg, alpha, bg) \ 26228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project { png_uint_16 temp = (png_uint_16)((png_uint_16)(fg) * (png_uint_16)(alpha) \ 26238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project + (png_uint_16)(bg)*(png_uint_16)(255 - \ 26248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project (png_uint_16)(alpha)) + (png_uint_16)128); \ 26258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project (composite) = (png_byte)((temp + (temp >> 8)) >> 8); } 26268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 26278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define png_composite_16(composite, fg, alpha, bg) \ 26288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project { png_uint_32 temp = (png_uint_32)((png_uint_32)(fg) * (png_uint_32)(alpha) \ 26298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project + (png_uint_32)(bg)*(png_uint_32)(65535L - \ 26308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project (png_uint_32)(alpha)) + (png_uint_32)32768L); \ 26318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project (composite) = (png_uint_16)((temp + (temp >> 16)) >> 16); } 26328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 26338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else /* standard method using integer division */ 26348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 26358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define png_composite(composite, fg, alpha, bg) \ 26368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project (composite) = (png_byte)(((png_uint_16)(fg) * (png_uint_16)(alpha) + \ 26378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project (png_uint_16)(bg) * (png_uint_16)(255 - (png_uint_16)(alpha)) + \ 26388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project (png_uint_16)127) / 255) 26398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 26408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define png_composite_16(composite, fg, alpha, bg) \ 26418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project (composite) = (png_uint_16)(((png_uint_32)(fg) * (png_uint_32)(alpha) + \ 26428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project (png_uint_32)(bg)*(png_uint_32)(65535L - (png_uint_32)(alpha)) + \ 26438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project (png_uint_32)32767) / (png_uint_32)65535L) 26448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 26458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* PNG_READ_COMPOSITE_NODIV_SUPPORTED */ 26468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 26478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Inline macros to do direct reads of bytes from the input buffer. These 26488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * require that you are using an architecture that uses PNG byte ordering 26498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * (MSB first) and supports unaligned data storage. I think that PowerPC 26508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * in big-endian mode and 680x0 are the only ones that will support this. 26518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * The x86 line of processors definitely do not. The png_get_int_32() 26528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * routine also assumes we are using two's complement format for negative 26538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * values, which is almost certainly true. 26548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 26558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_BIG_ENDIAN_SUPPORTED) 26568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define png_get_uint_32(buf) ( *((png_uint_32p) (buf))) 26578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define png_get_uint_16(buf) ( *((png_uint_16p) (buf))) 26588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define png_get_int_32(buf) ( *((png_int_32p) (buf))) 26598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 26608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_uint_32,png_get_uint_32) PNGARG((png_bytep buf)); 26618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_uint_16,png_get_uint_16) PNGARG((png_bytep buf)); 26628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_int_32,png_get_int_32) PNGARG((png_bytep buf)); 26638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* !PNG_READ_BIG_ENDIAN_SUPPORTED */ 26648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(png_uint_32,png_get_uint_31) 26658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project PNGARG((png_structp png_ptr, png_bytep buf)); 26668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* No png_get_int_16 -- may be added if there's a real need for it. */ 26678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 26688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Place a 32-bit number into a buffer in PNG byte order (big-endian). 26698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 26708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_save_uint_32) 26718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project PNGARG((png_bytep buf, png_uint_32 i)); 26728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_save_int_32) 26738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project PNGARG((png_bytep buf, png_int_32 i)); 26748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 26758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Place a 16-bit number into a buffer in PNG byte order. 26768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * The parameter is declared unsigned int, not png_uint_16, 26778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * just to avoid potential problems on pre-ANSI C compilers. 26788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 26798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_save_uint_16) 26808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project PNGARG((png_bytep buf, unsigned int i)); 26818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* No png_save_int_16 -- may be added if there's a real need for it. */ 26828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 26838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* ************************************************************************* */ 26848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 26858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* These next functions are used internally in the code. They generally 26868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * shouldn't be used unless you are writing code to add or replace some 26878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * functionality in libpng. More information about most functions can 26888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * be found in the files where the functions are located. 26898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 26908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 26918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 26928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Various modes of operation, that are visible to applications because 26938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * they are used for unknown chunk location. 26948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 26958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_HAVE_IHDR 0x01 26968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_HAVE_PLTE 0x02 26978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_HAVE_IDAT 0x04 26988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_AFTER_IDAT 0x08 /* Have complete zlib datastream */ 26998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_HAVE_IEND 0x10 27008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 27018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_INTERNAL) 27028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 27038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* More modes of operation. Note that after an init, mode is set to 27048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * zero automatically when the structure is created. 27058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 27068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_HAVE_gAMA 0x20 27078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_HAVE_cHRM 0x40 27088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_HAVE_sRGB 0x80 27098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_HAVE_CHUNK_HEADER 0x100 27108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_WROTE_tIME 0x200 27118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_WROTE_INFO_BEFORE_PLTE 0x400 27128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_BACKGROUND_IS_GRAY 0x800 27138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_HAVE_PNG_SIGNATURE 0x1000 27148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_HAVE_CHUNK_AFTER_IDAT 0x2000 /* Have another chunk after IDAT */ 27158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 27168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* flags for the transformations the PNG library does on the image data */ 27178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_BGR 0x0001 27188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_INTERLACE 0x0002 27198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_PACK 0x0004 27208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_SHIFT 0x0008 27218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_SWAP_BYTES 0x0010 27228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_INVERT_MONO 0x0020 27238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_DITHER 0x0040 27248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_BACKGROUND 0x0080 27258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_BACKGROUND_EXPAND 0x0100 27268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* 0x0200 unused */ 27278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_16_TO_8 0x0400 27288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_RGBA 0x0800 27298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_EXPAND 0x1000 27308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_GAMMA 0x2000 27318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_GRAY_TO_RGB 0x4000 27328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FILLER 0x8000L 27338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_PACKSWAP 0x10000L 27348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_SWAP_ALPHA 0x20000L 27358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_STRIP_ALPHA 0x40000L 27368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_INVERT_ALPHA 0x80000L 27378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_USER_TRANSFORM 0x100000L 27388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_RGB_TO_GRAY_ERR 0x200000L 27398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_RGB_TO_GRAY_WARN 0x400000L 27408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_RGB_TO_GRAY 0x600000L /* two bits, RGB_TO_GRAY_ERR|WARN */ 27418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* 0x800000L Unused */ 27428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_ADD_ALPHA 0x1000000L /* Added to libpng-1.2.7 */ 27438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_EXPAND_tRNS 0x2000000L /* Added to libpng-1.2.9 */ 27448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* 0x4000000L unused */ 27458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* 0x8000000L unused */ 27468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* 0x10000000L unused */ 27478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* 0x20000000L unused */ 27488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* 0x40000000L unused */ 27498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 27508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* flags for png_create_struct */ 27518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_STRUCT_PNG 0x0001 27528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_STRUCT_INFO 0x0002 27538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 27548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Scaling factor for filter heuristic weighting calculations */ 27558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_WEIGHT_SHIFT 8 27568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_WEIGHT_FACTOR (1<<(PNG_WEIGHT_SHIFT)) 27578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_COST_SHIFT 3 27588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_COST_FACTOR (1<<(PNG_COST_SHIFT)) 27598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 27608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* flags for the png_ptr->flags rather than declaring a byte for each one */ 27618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FLAG_ZLIB_CUSTOM_STRATEGY 0x0001 27628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FLAG_ZLIB_CUSTOM_LEVEL 0x0002 27638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FLAG_ZLIB_CUSTOM_MEM_LEVEL 0x0004 27648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FLAG_ZLIB_CUSTOM_WINDOW_BITS 0x0008 27658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FLAG_ZLIB_CUSTOM_METHOD 0x0010 27668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FLAG_ZLIB_FINISHED 0x0020 27678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FLAG_ROW_INIT 0x0040 27688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FLAG_FILLER_AFTER 0x0080 27698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FLAG_CRC_ANCILLARY_USE 0x0100 27708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FLAG_CRC_ANCILLARY_NOWARN 0x0200 27718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FLAG_CRC_CRITICAL_USE 0x0400 27728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FLAG_CRC_CRITICAL_IGNORE 0x0800 27738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FLAG_FREE_PLTE 0x1000 27748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FLAG_FREE_TRNS 0x2000 27758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FLAG_FREE_HIST 0x4000 27768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FLAG_KEEP_UNKNOWN_CHUNKS 0x8000L 27778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FLAG_KEEP_UNSAFE_CHUNKS 0x10000L 27788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FLAG_LIBRARY_MISMATCH 0x20000L 27798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FLAG_STRIP_ERROR_NUMBERS 0x40000L 27808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FLAG_STRIP_ERROR_TEXT 0x80000L 27818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FLAG_MALLOC_NULL_MEM_OK 0x100000L 27828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FLAG_ADD_ALPHA 0x200000L /* Added to libpng-1.2.8 */ 27838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FLAG_STRIP_ALPHA 0x400000L /* Added to libpng-1.2.8 */ 27848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* 0x800000L unused */ 27858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* 0x1000000L unused */ 27868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* 0x2000000L unused */ 27878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* 0x4000000L unused */ 27888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* 0x8000000L unused */ 27898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* 0x10000000L unused */ 27908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* 0x20000000L unused */ 27918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* 0x40000000L unused */ 27928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 27938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FLAG_CRC_ANCILLARY_MASK (PNG_FLAG_CRC_ANCILLARY_USE | \ 27948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project PNG_FLAG_CRC_ANCILLARY_NOWARN) 27958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 27968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FLAG_CRC_CRITICAL_MASK (PNG_FLAG_CRC_CRITICAL_USE | \ 27978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project PNG_FLAG_CRC_CRITICAL_IGNORE) 27988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 27998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_FLAG_CRC_MASK (PNG_FLAG_CRC_ANCILLARY_MASK | \ 28008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project PNG_FLAG_CRC_CRITICAL_MASK) 28018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 28028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* save typing and make code easier to understand */ 28038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 28048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_COLOR_DIST(c1, c2) (abs((int)((c1).red) - (int)((c2).red)) + \ 28058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project abs((int)((c1).green) - (int)((c2).green)) + \ 28068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project abs((int)((c1).blue) - (int)((c2).blue))) 28078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 28088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Added to libpng-1.2.6 JB */ 28098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_ROWBYTES(pixel_bits, width) \ 28108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project ((pixel_bits) >= 8 ? \ 28118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project ((width) * (((png_uint_32)(pixel_bits)) >> 3)) : \ 28128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project (( ((width) * ((png_uint_32)(pixel_bits))) + 7) >> 3) ) 28138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 28148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* PNG_OUT_OF_RANGE returns true if value is outside the range 28158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project ideal-delta..ideal+delta. Each argument is evaluated twice. 28168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project "ideal" and "delta" should be constants, normally simple 28178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project integers, "value" a variable. Added to libpng-1.2.6 JB */ 28188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_OUT_OF_RANGE(value, ideal, delta) \ 28198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project ( (value) < (ideal)-(delta) || (value) > (ideal)+(delta) ) 28208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 28218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* variables declared in png.c - only it needs to define PNG_NO_EXTERN */ 28228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if !defined(PNG_NO_EXTERN) || defined(PNG_ALWAYS_EXTERN) 28238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* place to hold the signature string for a PNG file. */ 28248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_USE_GLOBAL_ARRAYS 28258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project PNG_EXPORT_VAR (PNG_CONST png_byte FARDATA) png_sig[8]; 28268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 28278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 28288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* PNG_NO_EXTERN */ 28298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 28308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Constant strings for known chunk types. If you need to add a chunk, 28318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * define the name here, and add an invocation of the macro in png.c and 28328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * wherever it's needed. 28338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 28348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_IHDR png_byte png_IHDR[5] = { 73, 72, 68, 82, '\0'} 28358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_IDAT png_byte png_IDAT[5] = { 73, 68, 65, 84, '\0'} 28368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_IEND png_byte png_IEND[5] = { 73, 69, 78, 68, '\0'} 28378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_PLTE png_byte png_PLTE[5] = { 80, 76, 84, 69, '\0'} 28388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_bKGD png_byte png_bKGD[5] = { 98, 75, 71, 68, '\0'} 28398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_cHRM png_byte png_cHRM[5] = { 99, 72, 82, 77, '\0'} 28408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_gAMA png_byte png_gAMA[5] = {103, 65, 77, 65, '\0'} 28418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_hIST png_byte png_hIST[5] = {104, 73, 83, 84, '\0'} 28428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_iCCP png_byte png_iCCP[5] = {105, 67, 67, 80, '\0'} 28438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_iTXt png_byte png_iTXt[5] = {105, 84, 88, 116, '\0'} 28448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_oFFs png_byte png_oFFs[5] = {111, 70, 70, 115, '\0'} 28458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_pCAL png_byte png_pCAL[5] = {112, 67, 65, 76, '\0'} 28468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_sCAL png_byte png_sCAL[5] = {115, 67, 65, 76, '\0'} 28478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_pHYs png_byte png_pHYs[5] = {112, 72, 89, 115, '\0'} 28488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_sBIT png_byte png_sBIT[5] = {115, 66, 73, 84, '\0'} 28498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_sPLT png_byte png_sPLT[5] = {115, 80, 76, 84, '\0'} 28508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_sRGB png_byte png_sRGB[5] = {115, 82, 71, 66, '\0'} 28518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_tEXt png_byte png_tEXt[5] = {116, 69, 88, 116, '\0'} 28528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_tIME png_byte png_tIME[5] = {116, 73, 77, 69, '\0'} 28538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_tRNS png_byte png_tRNS[5] = {116, 82, 78, 83, '\0'} 28548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define PNG_zTXt png_byte png_zTXt[5] = {122, 84, 88, 116, '\0'} 28558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 28568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_USE_GLOBAL_ARRAYS 28578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXPORT_VAR (png_byte FARDATA) png_IHDR[5]; 28588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXPORT_VAR (png_byte FARDATA) png_IDAT[5]; 28598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXPORT_VAR (png_byte FARDATA) png_IEND[5]; 28608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXPORT_VAR (png_byte FARDATA) png_PLTE[5]; 28618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXPORT_VAR (png_byte FARDATA) png_bKGD[5]; 28628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXPORT_VAR (png_byte FARDATA) png_cHRM[5]; 28638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXPORT_VAR (png_byte FARDATA) png_gAMA[5]; 28648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXPORT_VAR (png_byte FARDATA) png_hIST[5]; 28658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXPORT_VAR (png_byte FARDATA) png_iCCP[5]; 28668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXPORT_VAR (png_byte FARDATA) png_iTXt[5]; 28678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXPORT_VAR (png_byte FARDATA) png_oFFs[5]; 28688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXPORT_VAR (png_byte FARDATA) png_pCAL[5]; 28698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXPORT_VAR (png_byte FARDATA) png_sCAL[5]; 28708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXPORT_VAR (png_byte FARDATA) png_pHYs[5]; 28718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXPORT_VAR (png_byte FARDATA) png_sBIT[5]; 28728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXPORT_VAR (png_byte FARDATA) png_sPLT[5]; 28738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXPORT_VAR (png_byte FARDATA) png_sRGB[5]; 28748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXPORT_VAR (png_byte FARDATA) png_tEXt[5]; 28758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXPORT_VAR (png_byte FARDATA) png_tIME[5]; 28768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXPORT_VAR (png_byte FARDATA) png_tRNS[5]; 28778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXPORT_VAR (png_byte FARDATA) png_zTXt[5]; 28788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* PNG_USE_GLOBAL_ARRAYS */ 28798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 28808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_1_0_X) || defined (PNG_1_2_X) 28818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Initialize png_ptr struct for reading, and allocate any other memory. 28828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * (old interface - DEPRECATED - use png_create_read_struct instead). 28838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 28848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_read_init) PNGARG((png_structp png_ptr)); 28858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#undef png_read_init 28868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define png_read_init(png_ptr) png_read_init_3(&png_ptr, \ 28878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project PNG_LIBPNG_VER_STRING, png_sizeof(png_struct)); 28888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 28898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 28908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_read_init_3) PNGARG((png_structpp ptr_ptr, 28918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_const_charp user_png_ver, png_size_t png_struct_size)); 28928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_1_0_X) || defined (PNG_1_2_X) 28938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_read_init_2) PNGARG((png_structp png_ptr, 28948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_const_charp user_png_ver, png_size_t png_struct_size, png_size_t 28958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_info_size)); 28968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 28978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 28988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_1_0_X) || defined (PNG_1_2_X) 28998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Initialize png_ptr struct for writing, and allocate any other memory. 29008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * (old interface - DEPRECATED - use png_create_write_struct instead). 29018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 29028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_write_init) PNGARG((png_structp png_ptr)); 29038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#undef png_write_init 29048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define png_write_init(png_ptr) png_write_init_3(&png_ptr, \ 29058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project PNG_LIBPNG_VER_STRING, png_sizeof(png_struct)); 29068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 29078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 29088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_write_init_3) PNGARG((png_structpp ptr_ptr, 29098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_const_charp user_png_ver, png_size_t png_struct_size)); 29108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern PNG_EXPORT(void,png_write_init_2) PNGARG((png_structp png_ptr, 29118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_const_charp user_png_ver, png_size_t png_struct_size, png_size_t 29128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_info_size)); 29138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 29148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Allocate memory for an internal libpng struct */ 29158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN png_voidp png_create_struct PNGARG((int type)); 29168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 29178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Free memory from internal libpng struct */ 29188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_destroy_struct PNGARG((png_voidp struct_ptr)); 29198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 29208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN png_voidp png_create_struct_2 PNGARG((int type, png_malloc_ptr 29218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project malloc_fn, png_voidp mem_ptr)); 29228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_destroy_struct_2 PNGARG((png_voidp struct_ptr, 29238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_free_ptr free_fn, png_voidp mem_ptr)); 29248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 29258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Free any memory that info_ptr points to and reset struct. */ 29268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_info_destroy PNGARG((png_structp png_ptr, 29278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr)); 29288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 29298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef PNG_1_0_X 29308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Function to allocate memory for zlib. */ 29318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN voidpf png_zalloc PNGARG((voidpf png_ptr, uInt items, uInt size)); 29328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 29338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Function to free memory for zlib */ 29348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_zfree PNGARG((voidpf png_ptr, voidpf ptr)); 29358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 29368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_SIZE_T 29378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Function to convert a sizeof an item to png_sizeof item */ 29388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project PNG_EXTERN png_size_t PNGAPI png_convert_size PNGARG((size_t size)); 29398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 29408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 29418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Next four functions are used internally as callbacks. PNGAPI is required 29428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * but not PNG_EXPORT. PNGAPI added at libpng version 1.2.3. */ 29438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 29448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void PNGAPI png_default_read_data PNGARG((png_structp png_ptr, 29458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep data, png_size_t length)); 29468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 29478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_PROGRESSIVE_READ_SUPPORTED 29488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void PNGAPI png_push_fill_buffer PNGARG((png_structp png_ptr, 29498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep buffer, png_size_t length)); 29508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 29518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 29528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void PNGAPI png_default_write_data PNGARG((png_structp png_ptr, 29538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep data, png_size_t length)); 29548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 29558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_WRITE_FLUSH_SUPPORTED) 29568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if !defined(PNG_NO_STDIO) 29578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void PNGAPI png_default_flush PNGARG((png_structp png_ptr)); 29588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 29598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 29608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else /* PNG_1_0_X */ 29618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_PROGRESSIVE_READ_SUPPORTED 29628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_push_fill_buffer PNGARG((png_structp png_ptr, 29638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep buffer, png_size_t length)); 29648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 29658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* PNG_1_0_X */ 29668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 29678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Reset the CRC variable */ 29688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_reset_crc PNGARG((png_structp png_ptr)); 29698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 29708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Write the "data" buffer to whatever output you are using. */ 29718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_write_data PNGARG((png_structp png_ptr, png_bytep data, 29728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_size_t length)); 29738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 29748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Read data from whatever input you are using into the "data" buffer */ 29758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_read_data PNGARG((png_structp png_ptr, png_bytep data, 29768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_size_t length)); 29778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 29788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Read bytes into buf, and update png_ptr->crc */ 29798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_crc_read PNGARG((png_structp png_ptr, png_bytep buf, 29808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_size_t length)); 29818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 29828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Decompress data in a chunk that uses compression */ 29838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_zTXt_SUPPORTED) || defined(PNG_iTXt_SUPPORTED) || \ 29848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project defined(PNG_iCCP_SUPPORTED) || defined(PNG_sPLT_SUPPORTED) 29858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN png_charp png_decompress_chunk PNGARG((png_structp png_ptr, 29868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int comp_type, png_charp chunkdata, png_size_t chunklength, 29878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_size_t prefix_length, png_size_t *data_length)); 29888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 29898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 29908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Read "skip" bytes, read the file crc, and (optionally) verify png_ptr->crc */ 29918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN int png_crc_finish PNGARG((png_structp png_ptr, png_uint_32 skip)); 29928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 29938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Read the CRC from the file and compare it to the libpng calculated CRC */ 29948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN int png_crc_error PNGARG((png_structp png_ptr)); 29958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 29968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Calculate the CRC over a section of data. Note that we are only 29978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * passing a maximum of 64K on systems that have this as a memory limit, 29988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * since this is the maximum buffer size we can specify. 29998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 30008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_calculate_crc PNGARG((png_structp png_ptr, png_bytep ptr, 30018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_size_t length)); 30028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 30038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_WRITE_FLUSH_SUPPORTED) 30048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_flush PNGARG((png_structp png_ptr)); 30058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 30068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 30078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* simple function to write the signature */ 30088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_write_sig PNGARG((png_structp png_ptr)); 30098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 30108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* write various chunks */ 30118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 30128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Write the IHDR chunk, and update the png_struct with the necessary 30138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * information. 30148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 30158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_write_IHDR PNGARG((png_structp png_ptr, png_uint_32 width, 30168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 height, 30178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int bit_depth, int color_type, int compression_method, int filter_method, 30188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int interlace_method)); 30198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 30208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_write_PLTE PNGARG((png_structp png_ptr, png_colorp palette, 30218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 num_pal)); 30228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 30238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_write_IDAT PNGARG((png_structp png_ptr, png_bytep data, 30248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_size_t length)); 30258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 30268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_write_IEND PNGARG((png_structp png_ptr)); 30278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 30288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_WRITE_gAMA_SUPPORTED) 30298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_FLOATING_POINT_SUPPORTED 30308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_write_gAMA PNGARG((png_structp png_ptr, double file_gamma)); 30318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 30328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_FIXED_POINT_SUPPORTED 30338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_write_gAMA_fixed PNGARG((png_structp png_ptr, png_fixed_point 30348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project file_gamma)); 30358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 30368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 30378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 30388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_WRITE_sBIT_SUPPORTED) 30398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_write_sBIT PNGARG((png_structp png_ptr, png_color_8p sbit, 30408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int color_type)); 30418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 30428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 30438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_WRITE_cHRM_SUPPORTED) 30448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_FLOATING_POINT_SUPPORTED 30458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_write_cHRM PNGARG((png_structp png_ptr, 30468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project double white_x, double white_y, 30478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project double red_x, double red_y, double green_x, double green_y, 30488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project double blue_x, double blue_y)); 30498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 30508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_FIXED_POINT_SUPPORTED 30518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_write_cHRM_fixed PNGARG((png_structp png_ptr, 30528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_fixed_point int_white_x, png_fixed_point int_white_y, 30538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_fixed_point int_red_x, png_fixed_point int_red_y, png_fixed_point 30548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int_green_x, png_fixed_point int_green_y, png_fixed_point int_blue_x, 30558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_fixed_point int_blue_y)); 30568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 30578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 30588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 30598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_WRITE_sRGB_SUPPORTED) 30608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_write_sRGB PNGARG((png_structp png_ptr, 30618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int intent)); 30628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 30638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 30648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_WRITE_iCCP_SUPPORTED) 30658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_write_iCCP PNGARG((png_structp png_ptr, 30668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_charp name, int compression_type, 30678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_charp profile, int proflen)); 30688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* Note to maintainer: profile should be png_bytep */ 30698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 30708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 30718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_WRITE_sPLT_SUPPORTED) 30728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_write_sPLT PNGARG((png_structp png_ptr, 30738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_sPLT_tp palette)); 30748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 30758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 30768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_WRITE_tRNS_SUPPORTED) 30778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_write_tRNS PNGARG((png_structp png_ptr, png_bytep trans, 30788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_color_16p values, int number, int color_type)); 30798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 30808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 30818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_WRITE_bKGD_SUPPORTED) 30828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_write_bKGD PNGARG((png_structp png_ptr, 30838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_color_16p values, int color_type)); 30848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 30858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 30868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_WRITE_hIST_SUPPORTED) 30878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_write_hIST PNGARG((png_structp png_ptr, png_uint_16p hist, 30888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int num_hist)); 30898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 30908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 30918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_WRITE_TEXT_SUPPORTED) || defined(PNG_WRITE_pCAL_SUPPORTED) || \ 30928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project defined(PNG_WRITE_iCCP_SUPPORTED) || defined(PNG_WRITE_sPLT_SUPPORTED) 30938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN png_size_t png_check_keyword PNGARG((png_structp png_ptr, 30948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_charp key, png_charpp new_key)); 30958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 30968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 30978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_WRITE_tEXt_SUPPORTED) 30988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_write_tEXt PNGARG((png_structp png_ptr, png_charp key, 30998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_charp text, png_size_t text_len)); 31008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 31018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 31028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_WRITE_zTXt_SUPPORTED) 31038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_write_zTXt PNGARG((png_structp png_ptr, png_charp key, 31048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_charp text, png_size_t text_len, int compression)); 31058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 31068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 31078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_WRITE_iTXt_SUPPORTED) 31088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_write_iTXt PNGARG((png_structp png_ptr, 31098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int compression, png_charp key, png_charp lang, png_charp lang_key, 31108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_charp text)); 31118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 31128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 31138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_TEXT_SUPPORTED) /* Added at version 1.0.14 and 1.2.4 */ 31148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN int png_set_text_2 PNGARG((png_structp png_ptr, 31158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, png_textp text_ptr, int num_text)); 31168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 31178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 31188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_WRITE_oFFs_SUPPORTED) 31198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_write_oFFs PNGARG((png_structp png_ptr, 31208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_int_32 x_offset, png_int_32 y_offset, int unit_type)); 31218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 31228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 31238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_WRITE_pCAL_SUPPORTED) 31248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_write_pCAL PNGARG((png_structp png_ptr, png_charp purpose, 31258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_int_32 X0, png_int_32 X1, int type, int nparams, 31268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_charp units, png_charpp params)); 31278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 31288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 31298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_WRITE_pHYs_SUPPORTED) 31308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_write_pHYs PNGARG((png_structp png_ptr, 31318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 x_pixels_per_unit, png_uint_32 y_pixels_per_unit, 31328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int unit_type)); 31338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 31348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 31358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_WRITE_tIME_SUPPORTED) 31368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_write_tIME PNGARG((png_structp png_ptr, 31378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_timep mod_time)); 31388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 31398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 31408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_WRITE_sCAL_SUPPORTED) 31418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_FLOATING_POINT_SUPPORTED) && !defined(PNG_NO_STDIO) 31428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_write_sCAL PNGARG((png_structp png_ptr, 31438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int unit, double width, double height)); 31448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 31458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_FIXED_POINT_SUPPORTED 31468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_write_sCAL_s PNGARG((png_structp png_ptr, 31478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int unit, png_charp width, png_charp height)); 31488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 31498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 31508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 31518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 31528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Called when finished processing a row of data */ 31538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_write_finish_row PNGARG((png_structp png_ptr)); 31548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 31558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Internal use only. Called before first row of data */ 31568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_write_start_row PNGARG((png_structp png_ptr)); 31578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 31588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_GAMMA_SUPPORTED) 31598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_build_gamma_table PNGARG((png_structp png_ptr)); 31608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 31618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 31628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* combine a row of data, dealing with alpha, etc. if requested */ 31638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_combine_row PNGARG((png_structp png_ptr, png_bytep row, 31648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int mask)); 31658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 31668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_INTERLACING_SUPPORTED) 31678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* expand an interlaced row */ 31688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* OLD pre-1.0.9 interface: 31698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_do_read_interlace PNGARG((png_row_infop row_info, 31708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep row, int pass, png_uint_32 transformations)); 31718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 31728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_do_read_interlace PNGARG((png_structp png_ptr)); 31738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 31748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 31758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* GRR TO DO (2.0 or whenever): simplify other internal calling interfaces */ 31768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 31778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_WRITE_INTERLACING_SUPPORTED) 31788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* grab pixels out of a row for an interlaced pass */ 31798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_do_write_interlace PNGARG((png_row_infop row_info, 31808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep row, int pass)); 31818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 31828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 31838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* unfilter a row */ 31848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_read_filter_row PNGARG((png_structp png_ptr, 31858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_row_infop row_info, png_bytep row, png_bytep prev_row, int filter)); 31868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 31878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Choose the best filter to use and filter the row data */ 31888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_write_find_filter PNGARG((png_structp png_ptr, 31898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_row_infop row_info)); 31908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 31918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Write out the filtered row. */ 31928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_write_filtered_row PNGARG((png_structp png_ptr, 31938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep filtered_row)); 31948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* finish a row while reading, dealing with interlacing passes, etc. */ 31958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_read_finish_row PNGARG((png_structp png_ptr)); 31968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 31978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* initialize the row buffers, etc. */ 31988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_read_start_row PNGARG((png_structp png_ptr)); 31998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* optional call to update the users info structure */ 32008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_read_transform_info PNGARG((png_structp png_ptr, 32018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr)); 32028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 32038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* these are the functions that do the transformations */ 32048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_FILLER_SUPPORTED) 32058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_do_read_filler PNGARG((png_row_infop row_info, 32068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep row, png_uint_32 filler, png_uint_32 flags)); 32078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 32088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 32098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) 32108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_do_read_swap_alpha PNGARG((png_row_infop row_info, 32118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep row)); 32128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 32138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 32148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED) 32158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_do_write_swap_alpha PNGARG((png_row_infop row_info, 32168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep row)); 32178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 32188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 32198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) 32208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_do_read_invert_alpha PNGARG((png_row_infop row_info, 32218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep row)); 32228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 32238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 32248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED) 32258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_do_write_invert_alpha PNGARG((png_row_infop row_info, 32268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep row)); 32278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 32288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 32298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_WRITE_FILLER_SUPPORTED) || \ 32308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project defined(PNG_READ_STRIP_ALPHA_SUPPORTED) 32318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_do_strip_filler PNGARG((png_row_infop row_info, 32328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep row, png_uint_32 flags)); 32338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 32348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 32358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED) 32368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_do_swap PNGARG((png_row_infop row_info, png_bytep row)); 32378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 32388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 32398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_PACKSWAP_SUPPORTED) || defined(PNG_WRITE_PACKSWAP_SUPPORTED) 32408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_do_packswap PNGARG((png_row_infop row_info, png_bytep row)); 32418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 32428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 32438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_RGB_TO_GRAY_SUPPORTED) 32448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN int png_do_rgb_to_gray PNGARG((png_structp png_ptr, png_row_infop 32458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project row_info, png_bytep row)); 32468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 32478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 32488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED) 32498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_do_gray_to_rgb PNGARG((png_row_infop row_info, 32508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep row)); 32518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 32528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 32538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_PACK_SUPPORTED) 32548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_do_unpack PNGARG((png_row_infop row_info, png_bytep row)); 32558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 32568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 32578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_SHIFT_SUPPORTED) 32588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_do_unshift PNGARG((png_row_infop row_info, png_bytep row, 32598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_color_8p sig_bits)); 32608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 32618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 32628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED) 32638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_do_invert PNGARG((png_row_infop row_info, png_bytep row)); 32648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 32658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 32668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_16_TO_8_SUPPORTED) 32678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_do_chop PNGARG((png_row_infop row_info, png_bytep row)); 32688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 32698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 32708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_DITHER_SUPPORTED) 32718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_do_dither PNGARG((png_row_infop row_info, 32728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep row, png_bytep palette_lookup, png_bytep dither_lookup)); 32738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 32748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# if defined(PNG_CORRECT_PALETTE_SUPPORTED) 32758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_correct_palette PNGARG((png_structp png_ptr, 32768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_colorp palette, int num_palette)); 32778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# endif 32788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 32798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 32808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED) 32818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_do_bgr PNGARG((png_row_infop row_info, png_bytep row)); 32828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 32838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 32848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_WRITE_PACK_SUPPORTED) 32858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_do_pack PNGARG((png_row_infop row_info, 32868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep row, png_uint_32 bit_depth)); 32878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 32888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 32898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_WRITE_SHIFT_SUPPORTED) 32908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_do_shift PNGARG((png_row_infop row_info, png_bytep row, 32918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_color_8p bit_depth)); 32928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 32938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 32948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_BACKGROUND_SUPPORTED) 32958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_GAMMA_SUPPORTED) 32968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_do_background PNGARG((png_row_infop row_info, png_bytep row, 32978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_color_16p trans_values, png_color_16p background, 32988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_color_16p background_1, 32998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep gamma_table, png_bytep gamma_from_1, png_bytep gamma_to_1, 33008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_16pp gamma_16, png_uint_16pp gamma_16_from_1, 33018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_16pp gamma_16_to_1, int gamma_shift)); 33028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 33038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_do_background PNGARG((png_row_infop row_info, png_bytep row, 33048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_color_16p trans_values, png_color_16p background)); 33058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 33068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 33078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 33088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_GAMMA_SUPPORTED) 33098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_do_gamma PNGARG((png_row_infop row_info, png_bytep row, 33108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep gamma_table, png_uint_16pp gamma_16_table, 33118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int gamma_shift)); 33128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 33138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 33148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_EXPAND_SUPPORTED) 33158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_do_expand_palette PNGARG((png_row_infop row_info, 33168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep row, png_colorp palette, png_bytep trans, int num_trans)); 33178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_do_expand PNGARG((png_row_infop row_info, 33188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep row, png_color_16p trans_value)); 33198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 33208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 33218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* The following decodes the appropriate chunks, and does error correction, 33228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * then calls the appropriate callback for the chunk if it is valid. 33238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 33248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 33258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* decode the IHDR chunk */ 33268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_handle_IHDR PNGARG((png_structp png_ptr, png_infop info_ptr, 33278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 length)); 33288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_handle_PLTE PNGARG((png_structp png_ptr, png_infop info_ptr, 33298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 length)); 33308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_handle_IEND PNGARG((png_structp png_ptr, png_infop info_ptr, 33318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 length)); 33328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 33338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_bKGD_SUPPORTED) 33348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_handle_bKGD PNGARG((png_structp png_ptr, png_infop info_ptr, 33358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 length)); 33368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 33378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 33388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_cHRM_SUPPORTED) 33398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_handle_cHRM PNGARG((png_structp png_ptr, png_infop info_ptr, 33408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 length)); 33418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 33428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 33438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_gAMA_SUPPORTED) 33448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_handle_gAMA PNGARG((png_structp png_ptr, png_infop info_ptr, 33458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 length)); 33468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 33478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 33488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_hIST_SUPPORTED) 33498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_handle_hIST PNGARG((png_structp png_ptr, png_infop info_ptr, 33508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 length)); 33518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 33528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 33538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_iCCP_SUPPORTED) 33548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern void png_handle_iCCP PNGARG((png_structp png_ptr, png_infop info_ptr, 33558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 length)); 33568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* PNG_READ_iCCP_SUPPORTED */ 33578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 33588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_iTXt_SUPPORTED) 33598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_handle_iTXt PNGARG((png_structp png_ptr, png_infop info_ptr, 33608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 length)); 33618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 33628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 33638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_oFFs_SUPPORTED) 33648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_handle_oFFs PNGARG((png_structp png_ptr, png_infop info_ptr, 33658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 length)); 33668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 33678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 33688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_pCAL_SUPPORTED) 33698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_handle_pCAL PNGARG((png_structp png_ptr, png_infop info_ptr, 33708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 length)); 33718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 33728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 33738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_pHYs_SUPPORTED) 33748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_handle_pHYs PNGARG((png_structp png_ptr, png_infop info_ptr, 33758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 length)); 33768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 33778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 33788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_sBIT_SUPPORTED) 33798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_handle_sBIT PNGARG((png_structp png_ptr, png_infop info_ptr, 33808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 length)); 33818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 33828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 33838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_sCAL_SUPPORTED) 33848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_handle_sCAL PNGARG((png_structp png_ptr, png_infop info_ptr, 33858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 length)); 33868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 33878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 33888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_sPLT_SUPPORTED) 33898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern void png_handle_sPLT PNGARG((png_structp png_ptr, png_infop info_ptr, 33908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 length)); 33918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* PNG_READ_sPLT_SUPPORTED */ 33928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 33938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_sRGB_SUPPORTED) 33948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_handle_sRGB PNGARG((png_structp png_ptr, png_infop info_ptr, 33958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 length)); 33968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 33978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 33988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_tEXt_SUPPORTED) 33998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_handle_tEXt PNGARG((png_structp png_ptr, png_infop info_ptr, 34008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 length)); 34018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 34028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 34038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_tIME_SUPPORTED) 34048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_handle_tIME PNGARG((png_structp png_ptr, png_infop info_ptr, 34058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 length)); 34068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 34078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 34088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_tRNS_SUPPORTED) 34098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_handle_tRNS PNGARG((png_structp png_ptr, png_infop info_ptr, 34108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 length)); 34118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 34128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 34138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_zTXt_SUPPORTED) 34148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_handle_zTXt PNGARG((png_structp png_ptr, png_infop info_ptr, 34158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 length)); 34168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 34178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 34188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_handle_unknown PNGARG((png_structp png_ptr, 34198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, png_uint_32 length)); 34208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 34218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_check_chunk_name PNGARG((png_structp png_ptr, 34228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep chunk_name)); 34238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 34248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* handle the transformations for reading and writing */ 34258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_do_read_transformations PNGARG((png_structp png_ptr)); 34268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_do_write_transformations PNGARG((png_structp png_ptr)); 34278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 34288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_init_read_transformations PNGARG((png_structp png_ptr)); 34298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 34308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_PROGRESSIVE_READ_SUPPORTED 34318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_push_read_chunk PNGARG((png_structp png_ptr, 34328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr)); 34338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_push_read_sig PNGARG((png_structp png_ptr, 34348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr)); 34358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_push_check_crc PNGARG((png_structp png_ptr)); 34368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_push_crc_skip PNGARG((png_structp png_ptr, 34378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_uint_32 length)); 34388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_push_crc_finish PNGARG((png_structp png_ptr)); 34398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_push_save_buffer PNGARG((png_structp png_ptr)); 34408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_push_restore_buffer PNGARG((png_structp png_ptr, 34418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep buffer, png_size_t buffer_length)); 34428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_push_read_IDAT PNGARG((png_structp png_ptr)); 34438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_process_IDAT_data PNGARG((png_structp png_ptr, 34448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep buffer, png_size_t buffer_length)); 34458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_push_process_row PNGARG((png_structp png_ptr)); 34468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_push_handle_unknown PNGARG((png_structp png_ptr, 34478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, png_uint_32 length)); 34488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_push_have_info PNGARG((png_structp png_ptr, 34498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr)); 34508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_push_have_end PNGARG((png_structp png_ptr, 34518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr)); 34528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_push_have_row PNGARG((png_structp png_ptr, png_bytep row)); 34538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_push_read_end PNGARG((png_structp png_ptr, 34548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr)); 34558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_process_some_data PNGARG((png_structp png_ptr, 34568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr)); 34578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_read_push_finish_row PNGARG((png_structp png_ptr)); 34588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_tEXt_SUPPORTED) 34598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_push_handle_tEXt PNGARG((png_structp png_ptr, 34608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, png_uint_32 length)); 34618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_push_read_tEXt PNGARG((png_structp png_ptr, 34628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr)); 34638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 34648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_zTXt_SUPPORTED) 34658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_push_handle_zTXt PNGARG((png_structp png_ptr, 34668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, png_uint_32 length)); 34678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_push_read_zTXt PNGARG((png_structp png_ptr, 34688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr)); 34698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 34708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_READ_iTXt_SUPPORTED) 34718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_push_handle_iTXt PNGARG((png_structp png_ptr, 34728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr, png_uint_32 length)); 34738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_push_read_iTXt PNGARG((png_structp png_ptr, 34748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_infop info_ptr)); 34758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 34768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 34778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */ 34788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 34798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef PNG_MNG_FEATURES_SUPPORTED 34808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_do_read_intrapixel PNGARG((png_row_infop row_info, 34818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep row)); 34828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_do_write_intrapixel PNGARG((png_row_infop row_info, 34838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project png_bytep row)); 34848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 34858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 34868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_ASSEMBLER_CODE_SUPPORTED) 34878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_MMX_CODE_SUPPORTED) 34888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* png.c */ /* PRIVATE */ 34898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN void png_init_mmx_flags PNGARG((png_structp png_ptr)); 34908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 34918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 34928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 34938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_INCH_CONVERSIONS) && defined(PNG_FLOATING_POINT_SUPPORTED) 34948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN png_uint_32 png_get_pixels_per_inch PNGARG((png_structp png_ptr, 34958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_infop info_ptr)); 34968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 34978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN png_uint_32 png_get_x_pixels_per_inch PNGARG((png_structp png_ptr, 34988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_infop info_ptr)); 34998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 35008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN png_uint_32 png_get_y_pixels_per_inch PNGARG((png_structp png_ptr, 35018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_infop info_ptr)); 35028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 35038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN float png_get_x_offset_inches PNGARG((png_structp png_ptr, 35048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_infop info_ptr)); 35058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 35068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN float png_get_y_offset_inches PNGARG((png_structp png_ptr, 35078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_infop info_ptr)); 35088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 35098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(PNG_pHYs_SUPPORTED) 35108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPNG_EXTERN png_uint_32 png_get_pHYs_dpi PNGARG((png_structp png_ptr, 35118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectpng_infop info_ptr, png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type)); 35128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* PNG_pHYs_SUPPORTED */ 35138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* PNG_INCH_CONVERSIONS && PNG_FLOATING_POINT_SUPPORTED */ 35148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 35158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Maintainer: Put new private prototypes here ^ and in libpngpf.3 */ 35168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 35178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* PNG_INTERNAL */ 35188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 35198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifdef __cplusplus 35208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 35218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 35228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 35238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* PNG_VERSION_INFO_ONLY */ 35248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* do not put anything past this line */ 35258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* PNG_H */ 3526