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