gdk_pixbuf2 2.0.2-x86-mingw32 → 2.0.3-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (203) hide show
  1. checksums.yaml +7 -0
  2. data/README +1 -1
  3. data/Rakefile +9 -2
  4. data/lib/1.9/gdk_pixbuf2.so +0 -0
  5. data/lib/2.0/gdk_pixbuf2.so +0 -0
  6. data/lib/gdk_pixbuf2.rb +5 -0
  7. data/vendor/local/bin/gdk-pixbuf-csource.exe +0 -0
  8. data/vendor/local/bin/gdk-pixbuf-pixdata.exe +0 -0
  9. data/vendor/local/bin/gdk-pixbuf-query-loaders.exe +0 -0
  10. data/vendor/local/bin/libgdk_pixbuf-2.0-0.dll +0 -0
  11. data/vendor/local/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-features.h +3 -3
  12. data/vendor/local/include/gdk-pixbuf-2.0/gdk-pixbuf/gdk-pixbuf-loader.h +3 -0
  13. data/vendor/local/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache +146 -7
  14. data/vendor/local/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-svg.a +0 -0
  15. data/vendor/local/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-svg.dll +0 -0
  16. data/vendor/local/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-svg.dll.a +0 -0
  17. data/vendor/local/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-svg.la +41 -0
  18. data/vendor/local/lib/gdk_pixbuf-2.0.def +1 -0
  19. data/vendor/local/lib/girepository-1.0/GdkPixbuf-2.0.typelib +0 -0
  20. data/vendor/local/lib/libgdk_pixbuf-2.0.dll.a +0 -0
  21. data/vendor/local/lib/libgdk_pixbuf-2.0.la +4 -4
  22. data/vendor/local/lib/pkgconfig/gdk-pixbuf-2.0.pc +1 -1
  23. data/vendor/local/share/gir-1.0/GdkPixbuf-2.0.gir +513 -485
  24. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/GdkPixbufLoader.html +119 -69
  25. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/annotation-glossary.html +34 -46
  26. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/api-index-2-12.html +10 -13
  27. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/api-index-2-14.html +13 -16
  28. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/api-index-2-2.html +17 -20
  29. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/api-index-2-26.html +13 -16
  30. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/api-index-2-28.html +11 -14
  31. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/api-index-2-30.html +35 -0
  32. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/api-index-2-4.html +17 -20
  33. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/api-index-2-6.html +15 -18
  34. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/api-index-2-8.html +10 -13
  35. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/api-index-deprecated.html +15 -18
  36. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/api-index-full.html +41 -40
  37. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/gdk-pixbuf-Animations.html +97 -100
  38. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/gdk-pixbuf-File-Loading.html +118 -121
  39. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/gdk-pixbuf-File-saving.html +119 -122
  40. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/gdk-pixbuf-Image-Data-in-Memory.html +38 -41
  41. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/gdk-pixbuf-Inline-data.html +50 -53
  42. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/gdk-pixbuf-Module-Interface.html +74 -77
  43. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/gdk-pixbuf-Reference-Counting-and-Memory-Mangement.html +26 -29
  44. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/gdk-pixbuf-Scaling.html +29 -32
  45. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/gdk-pixbuf-The-GdkPixbuf-Structure.html +53 -53
  46. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/gdk-pixbuf-Utilities.html +29 -32
  47. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/gdk-pixbuf-Versioning.html +15 -18
  48. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/gdk-pixbuf-X-Drawables-to-Pixbufs.html +15 -18
  49. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/gdk-pixbuf-Xlib-Rendering.html +12 -15
  50. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/gdk-pixbuf-XlibRGB.html +20 -23
  51. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/gdk-pixbuf-csource.html +13 -13
  52. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/gdk-pixbuf-gdk-pixbuf-Xlib-initialization.html +12 -15
  53. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/gdk-pixbuf-gdk-pixbuf-from-drawables.html +10 -10
  54. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/gdk-pixbuf-gdk-pixbuf-rendering.html +10 -10
  55. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/gdk-pixbuf-query-loaders.html +12 -12
  56. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/gdk-pixbuf.devhelp2 +3 -1
  57. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/home.png +0 -0
  58. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/index.html +6 -5
  59. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/index.sgml +6 -5
  60. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/left-insensitive.png +0 -0
  61. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/left.png +0 -0
  62. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/license.html +10 -10
  63. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/right-insensitive.png +0 -0
  64. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/right.png +0 -0
  65. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/rn01.html +10 -10
  66. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/rn02.html +10 -10
  67. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/style.css +71 -16
  68. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/up-insensitive.png +0 -0
  69. data/vendor/local/share/gtk-doc/html/gdk-pixbuf/up.png +0 -0
  70. data/vendor/local/share/locale/af/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  71. data/vendor/local/share/locale/ang/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  72. data/vendor/local/share/locale/ar/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  73. data/vendor/local/share/locale/as/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  74. data/vendor/local/share/locale/ast/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  75. data/vendor/local/share/locale/az/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  76. data/vendor/local/share/locale/be/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  77. data/vendor/local/share/locale/be@latin/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  78. data/vendor/local/share/locale/bg/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  79. data/vendor/local/share/locale/bn/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  80. data/vendor/local/share/locale/bn_IN/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  81. data/vendor/local/share/locale/br/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  82. data/vendor/local/share/locale/bs/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  83. data/vendor/local/share/locale/ca/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  84. data/vendor/local/share/locale/ca@valencia/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  85. data/vendor/local/share/locale/crh/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  86. data/vendor/local/share/locale/cs/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  87. data/vendor/local/share/locale/csb/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  88. data/vendor/local/share/locale/cy/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  89. data/vendor/local/share/locale/da/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  90. data/vendor/local/share/locale/de/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  91. data/vendor/local/share/locale/dz/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  92. data/vendor/local/share/locale/el/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  93. data/vendor/local/share/locale/en@shaw/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  94. data/vendor/local/share/locale/en_CA/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  95. data/vendor/local/share/locale/en_GB/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  96. data/vendor/local/share/locale/eo/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  97. data/vendor/local/share/locale/es/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  98. data/vendor/local/share/locale/et/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  99. data/vendor/local/share/locale/eu/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  100. data/vendor/local/share/locale/fa/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  101. data/vendor/local/share/locale/fi/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  102. data/vendor/local/share/locale/fr/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  103. data/vendor/local/share/locale/ga/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  104. data/vendor/local/share/locale/gl/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  105. data/vendor/local/share/locale/gu/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  106. data/vendor/local/share/locale/he/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  107. data/vendor/local/share/locale/hi/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  108. data/vendor/local/share/locale/hr/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  109. data/vendor/local/share/locale/hu/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  110. data/vendor/local/share/locale/hy/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  111. data/vendor/local/share/locale/ia/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  112. data/vendor/local/share/locale/id/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  113. data/vendor/local/share/locale/io/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  114. data/vendor/local/share/locale/is/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  115. data/vendor/local/share/locale/it/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  116. data/vendor/local/share/locale/ja/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  117. data/vendor/local/share/locale/ka/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  118. data/vendor/local/share/locale/km/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  119. data/vendor/local/share/locale/kn/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  120. data/vendor/local/share/locale/ko/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  121. data/vendor/local/share/locale/ku/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  122. data/vendor/local/share/locale/li/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  123. data/vendor/local/share/locale/lt/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  124. data/vendor/local/share/locale/lv/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  125. data/vendor/local/share/locale/mai/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  126. data/vendor/local/share/locale/mi/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  127. data/vendor/local/share/locale/mk/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  128. data/vendor/local/share/locale/ml/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  129. data/vendor/local/share/locale/mn/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  130. data/vendor/local/share/locale/mr/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  131. data/vendor/local/share/locale/ms/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  132. data/vendor/local/share/locale/my/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  133. data/vendor/local/share/locale/nb/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  134. data/vendor/local/share/locale/nds/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  135. data/vendor/local/share/locale/ne/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  136. data/vendor/local/share/locale/nl/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  137. data/vendor/local/share/locale/nn/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  138. data/vendor/local/share/locale/nso/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  139. data/vendor/local/share/locale/oc/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  140. data/vendor/local/share/locale/or/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  141. data/vendor/local/share/locale/pa/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  142. data/vendor/local/share/locale/pl/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  143. data/vendor/local/share/locale/ps/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  144. data/vendor/local/share/locale/pt/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  145. data/vendor/local/share/locale/pt_BR/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  146. data/vendor/local/share/locale/ro/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  147. data/vendor/local/share/locale/ru/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  148. data/vendor/local/share/locale/si/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  149. data/vendor/local/share/locale/sk/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  150. data/vendor/local/share/locale/sl/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  151. data/vendor/local/share/locale/sq/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  152. data/vendor/local/share/locale/sr/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  153. data/vendor/local/share/locale/sr@ije/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  154. data/vendor/local/share/locale/sr@latin/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  155. data/vendor/local/share/locale/sv/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  156. data/vendor/local/share/locale/ta/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  157. data/vendor/local/share/locale/te/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  158. data/vendor/local/share/locale/tg/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  159. data/vendor/local/share/locale/th/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  160. data/vendor/local/share/locale/tk/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  161. data/vendor/local/share/locale/tr/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  162. data/vendor/local/share/locale/tt/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  163. data/vendor/local/share/locale/ug/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  164. data/vendor/local/share/locale/uk/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  165. data/vendor/local/share/locale/uz/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  166. data/vendor/local/share/locale/uz@cyrillic/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  167. data/vendor/local/share/locale/vi/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  168. data/vendor/local/share/locale/wa/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  169. data/vendor/local/share/locale/xh/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  170. data/vendor/local/share/locale/yi/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  171. data/vendor/local/share/locale/zh_CN/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  172. data/vendor/local/share/locale/zh_HK/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  173. data/vendor/local/share/locale/zh_TW/LC_MESSAGES/gdk-pixbuf.mo +0 -0
  174. data/vendor/local/share/man/man1/gdk-pixbuf-csource.1 +1 -1
  175. data/vendor/local/share/man/man1/gdk-pixbuf-query-loaders.1 +1 -1
  176. metadata +32 -41
  177. data/vendor/local/bin/libpng14-14.dll +0 -0
  178. data/vendor/local/bin/zlib1.dll +0 -0
  179. data/vendor/local/include/libpng14/png.h +0 -2737
  180. data/vendor/local/include/libpng14/pngconf.h +0 -1552
  181. data/vendor/local/include/png.h +0 -2737
  182. data/vendor/local/include/pngconf.h +0 -1552
  183. data/vendor/local/include/zconf.h +0 -461
  184. data/vendor/local/include/zlib.h +0 -1589
  185. data/vendor/local/lib/libpng.def +0 -192
  186. data/vendor/local/lib/libpng.lib +0 -0
  187. data/vendor/local/lib/libpng14.dll.a +0 -0
  188. data/vendor/local/lib/libz.dll.a +0 -0
  189. data/vendor/local/lib/pkgconfig/libpng.pc +0 -11
  190. data/vendor/local/lib/pkgconfig/libpng14.pc +0 -11
  191. data/vendor/local/lib/zdll.lib +0 -0
  192. data/vendor/local/lib/zlib.def +0 -67
  193. data/vendor/local/manifest/libpng-dev_1.4.12-1_win32.mft +0 -15
  194. data/vendor/local/manifest/libpng_1.4.12-1_win32.mft +0 -2
  195. data/vendor/local/manifest/zlib-dev_1.2.5-2_win32.mft +0 -8
  196. data/vendor/local/manifest/zlib_1.2.5-2_win32.mft +0 -2
  197. data/vendor/local/share/man/man3/libpng.3 +0 -4605
  198. data/vendor/local/share/man/man3/libpngpf.3 +0 -802
  199. data/vendor/local/share/man/man5/png.5 +0 -74
  200. data/vendor/local/src/dieterv/packaging/libpng_1.4.12-1_win32.log +0 -283
  201. data/vendor/local/src/dieterv/packaging/libpng_1.4.12-1_win32.sh +0 -71
  202. data/vendor/local/src/tml/packaging/zlib_1.2.5-2_win32.log +0 -42
  203. data/vendor/local/src/tml/packaging/zlib_1.2.5-2_win32.sh +0 -189
Binary file
Binary file
@@ -1,2737 +0,0 @@
1
-
2
- /* png.h - header file for PNG reference library
3
- *
4
- * libpng version 1.4.12 - July 10, 2012
5
- * Copyright (c) 1998-2011 Glenn Randers-Pehrson
6
- * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
7
- * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
8
- *
9
- * This code is released under the libpng license (See LICENSE, below)
10
- *
11
- * Authors and maintainers:
12
- * libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat
13
- * libpng versions 0.89c, June 1996, through 0.96, May 1997: Andreas Dilger
14
- * libpng versions 0.97, January 1998, through 1.4.12 - July 10, 2012: Glenn
15
- * See also "Contributing Authors", below.
16
- *
17
- * Note about libpng version numbers:
18
- *
19
- * Due to various miscommunications, unforeseen code incompatibilities
20
- * and occasional factors outside the authors' control, version numbering
21
- * on the library has not always been consistent and straightforward.
22
- * The following table summarizes matters since version 0.89c, which was
23
- * the first widely used release:
24
- *
25
- * source png.h png.h shared-lib
26
- * version string int version
27
- * ------- ------ ----- ----------
28
- * 0.89c "1.0 beta 3" 0.89 89 1.0.89
29
- * 0.90 "1.0 beta 4" 0.90 90 0.90 [should have been 2.0.90]
30
- * 0.95 "1.0 beta 5" 0.95 95 0.95 [should have been 2.0.95]
31
- * 0.96 "1.0 beta 6" 0.96 96 0.96 [should have been 2.0.96]
32
- * 0.97b "1.00.97 beta 7" 1.00.97 97 1.0.1 [should have been 2.0.97]
33
- * 0.97c 0.97 97 2.0.97
34
- * 0.98 0.98 98 2.0.98
35
- * 0.99 0.99 98 2.0.99
36
- * 0.99a-m 0.99 99 2.0.99
37
- * 1.00 1.00 100 2.1.0 [100 should be 10000]
38
- * 1.0.0 (from here on, the 100 2.1.0 [100 should be 10000]
39
- * 1.0.1 png.h string is 10001 2.1.0
40
- * 1.0.1a-e identical to the 10002 from here on, the shared library
41
- * 1.0.2 source version) 10002 is 2.V where V is the source code
42
- * 1.0.2a-b 10003 version, except as noted.
43
- * 1.0.3 10003
44
- * 1.0.3a-d 10004
45
- * 1.0.4 10004
46
- * 1.0.4a-f 10005
47
- * 1.0.5 (+ 2 patches) 10005
48
- * 1.0.5a-d 10006
49
- * 1.0.5e-r 10100 (not source compatible)
50
- * 1.0.5s-v 10006 (not binary compatible)
51
- * 1.0.6 (+ 3 patches) 10006 (still binary incompatible)
52
- * 1.0.6d-f 10007 (still binary incompatible)
53
- * 1.0.6g 10007
54
- * 1.0.6h 10007 10.6h (testing xy.z so-numbering)
55
- * 1.0.6i 10007 10.6i
56
- * 1.0.6j 10007 2.1.0.6j (incompatible with 1.0.0)
57
- * 1.0.7beta11-14 DLLNUM 10007 2.1.0.7beta11-14 (binary compatible)
58
- * 1.0.7beta15-18 1 10007 2.1.0.7beta15-18 (binary compatible)
59
- * 1.0.7rc1-2 1 10007 2.1.0.7rc1-2 (binary compatible)
60
- * 1.0.7 1 10007 (still compatible)
61
- * 1.0.8beta1-4 1 10008 2.1.0.8beta1-4
62
- * 1.0.8rc1 1 10008 2.1.0.8rc1
63
- * 1.0.8 1 10008 2.1.0.8
64
- * 1.0.9beta1-6 1 10009 2.1.0.9beta1-6
65
- * 1.0.9rc1 1 10009 2.1.0.9rc1
66
- * 1.0.9beta7-10 1 10009 2.1.0.9beta7-10
67
- * 1.0.9rc2 1 10009 2.1.0.9rc2
68
- * 1.0.9 1 10009 2.1.0.9
69
- * 1.0.10beta1 1 10010 2.1.0.10beta1
70
- * 1.0.10rc1 1 10010 2.1.0.10rc1
71
- * 1.0.10 1 10010 2.1.0.10
72
- * 1.0.11beta1-3 1 10011 2.1.0.11beta1-3
73
- * 1.0.11rc1 1 10011 2.1.0.11rc1
74
- * 1.0.11 1 10011 2.1.0.11
75
- * 1.0.12beta1-2 2 10012 2.1.0.12beta1-2
76
- * 1.0.12rc1 2 10012 2.1.0.12rc1
77
- * 1.0.12 2 10012 2.1.0.12
78
- * 1.1.0a-f - 10100 2.1.1.0a-f (branch abandoned)
79
- * 1.2.0beta1-2 2 10200 2.1.2.0beta1-2
80
- * 1.2.0beta3-5 3 10200 3.1.2.0beta3-5
81
- * 1.2.0rc1 3 10200 3.1.2.0rc1
82
- * 1.2.0 3 10200 3.1.2.0
83
- * 1.2.1beta1-4 3 10201 3.1.2.1beta1-4
84
- * 1.2.1rc1-2 3 10201 3.1.2.1rc1-2
85
- * 1.2.1 3 10201 3.1.2.1
86
- * 1.2.2beta1-6 12 10202 12.so.0.1.2.2beta1-6
87
- * 1.0.13beta1 10 10013 10.so.0.1.0.13beta1
88
- * 1.0.13rc1 10 10013 10.so.0.1.0.13rc1
89
- * 1.2.2rc1 12 10202 12.so.0.1.2.2rc1
90
- * 1.0.13 10 10013 10.so.0.1.0.13
91
- * 1.2.2 12 10202 12.so.0.1.2.2
92
- * 1.2.3rc1-6 12 10203 12.so.0.1.2.3rc1-6
93
- * 1.2.3 12 10203 12.so.0.1.2.3
94
- * 1.2.4beta1-3 13 10204 12.so.0.1.2.4beta1-3
95
- * 1.0.14rc1 13 10014 10.so.0.1.0.14rc1
96
- * 1.2.4rc1 13 10204 12.so.0.1.2.4rc1
97
- * 1.0.14 10 10014 10.so.0.1.0.14
98
- * 1.2.4 13 10204 12.so.0.1.2.4
99
- * 1.2.5beta1-2 13 10205 12.so.0.1.2.5beta1-2
100
- * 1.0.15rc1-3 10 10015 10.so.0.1.0.15rc1-3
101
- * 1.2.5rc1-3 13 10205 12.so.0.1.2.5rc1-3
102
- * 1.0.15 10 10015 10.so.0.1.0.15
103
- * 1.2.5 13 10205 12.so.0.1.2.5
104
- * 1.2.6beta1-4 13 10206 12.so.0.1.2.6beta1-4
105
- * 1.0.16 10 10016 10.so.0.1.0.16
106
- * 1.2.6 13 10206 12.so.0.1.2.6
107
- * 1.2.7beta1-2 13 10207 12.so.0.1.2.7beta1-2
108
- * 1.0.17rc1 10 10017 12.so.0.1.0.17rc1
109
- * 1.2.7rc1 13 10207 12.so.0.1.2.7rc1
110
- * 1.0.17 10 10017 12.so.0.1.0.17
111
- * 1.2.7 13 10207 12.so.0.1.2.7
112
- * 1.2.8beta1-5 13 10208 12.so.0.1.2.8beta1-5
113
- * 1.0.18rc1-5 10 10018 12.so.0.1.0.18rc1-5
114
- * 1.2.8rc1-5 13 10208 12.so.0.1.2.8rc1-5
115
- * 1.0.18 10 10018 12.so.0.1.0.18
116
- * 1.2.8 13 10208 12.so.0.1.2.8
117
- * 1.2.9beta1-3 13 10209 12.so.0.1.2.9beta1-3
118
- * 1.2.9beta4-11 13 10209 12.so.0.9[.0]
119
- * 1.2.9rc1 13 10209 12.so.0.9[.0]
120
- * 1.2.9 13 10209 12.so.0.9[.0]
121
- * 1.2.10beta1-7 13 10210 12.so.0.10[.0]
122
- * 1.2.10rc1-2 13 10210 12.so.0.10[.0]
123
- * 1.2.10 13 10210 12.so.0.10[.0]
124
- * 1.4.0beta1-5 14 10400 14.so.0.0[.0]
125
- * 1.2.11beta1-4 13 10211 12.so.0.11[.0]
126
- * 1.4.0beta7-8 14 10400 14.so.0.0[.0]
127
- * 1.2.11 13 10211 12.so.0.11[.0]
128
- * 1.2.12 13 10212 12.so.0.12[.0]
129
- * 1.4.0beta9-14 14 10400 14.so.0.0[.0]
130
- * 1.2.13 13 10213 12.so.0.13[.0]
131
- * 1.4.0beta15-36 14 10400 14.so.0.0[.0]
132
- * 1.4.0beta37-87 14 10400 14.so.14.0[.0]
133
- * 1.4.0rc01 14 10400 14.so.14.0[.0]
134
- * 1.4.0beta88-109 14 10400 14.so.14.0[.0]
135
- * 1.4.0rc02-08 14 10400 14.so.14.0[.0]
136
- * 1.4.0 14 10400 14.so.14.0[.0]
137
- * 1.4.1beta01-03 14 10401 14.so.14.1[.0]
138
- * 1.4.1rc01 14 10401 14.so.14.1[.0]
139
- * 1.4.1beta04-12 14 10401 14.so.14.1[.0]
140
- * 1.4.1rc02-04 14 10401 14.so.14.1[.0]
141
- * 1.4.1 14 10401 14.so.14.1[.0]
142
- * 1.4.2beta01 14 10402 14.so.14.2[.0]
143
- * 1.4.2rc02-06 14 10402 14.so.14.2[.0]
144
- * 1.4.2 14 10402 14.so.14.2[.0]
145
- * 1.4.3beta01-05 14 10403 14.so.14.3[.0]
146
- * 1.4.3rc01-03 14 10403 14.so.14.3[.0]
147
- * 1.4.3 14 10403 14.so.14.3[.0]
148
- * 1.4.4beta01-08 14 10404 14.so.14.4[.0]
149
- * 1.4.4rc01-05 14 10404 14.so.14.4[.0]
150
- * 1.4.4 14 10404 14.so.14.4[.0]
151
- * 1.4.5beta01-04 14 10405 14.so.14.5[.0]
152
- * 1.4.5rc01 14 10405 14.so.14.5[.0]
153
- * 1.4.5beta05-07 14 10405 14.so.14.5[.0]
154
- * 1.4.5rc02-03 14 10405 14.so.14.5[.0]
155
- * 1.4.5 14 10405 14.so.14.5[.0]
156
- * 1.4.6beta01-07 14 10406 14.so.14.6[.0]
157
- * 1.4.6rc01 14 10406 14.so.14.6[.0]
158
- * 1.4.6 14 10406 14.so.14.6[.0]
159
- * 1.4.7rc01 14 10407 14.so.14.7[.0]
160
- * 1.4.7 14 10407 14.so.14.7[.0]
161
- * 1.4.8beta01-05 14 10408 14.so.14.8[.0]
162
- * 1.4.8rc01 14 10408 14.so.14.8[.0]
163
- * 1.4.8 14 10408 14.so.14.8[.0]
164
- * 1.4.9beta01 14 10409 14.so.14.9[.0]
165
- * 1.4.9rc01 14 10409 14.so.14.9[.0]
166
- * 1.4.9 14 10409 14.so.14.9[.0]
167
- * 1.4.10beta01 14 10410 14.so.14.10[.0]
168
- * 1.4.10rc01-02 14 10410 14.so.14.10[.0]
169
- * 1.4.10 14 10410 14.so.14.10[.0]
170
- * 1.4.11rc01 14 10411 14.so.14.11[.0]
171
- * 1.4.11 14 10411 14.so.14.11[.0]
172
- * 1.4.12 14 10412 14.so.14.12[.0]
173
- *
174
- * Henceforth the source version will match the shared-library major
175
- * and minor numbers; the shared-library major version number will be
176
- * used for changes in backward compatibility, as it is intended. The
177
- * PNG_LIBPNG_VER macro, which is not used within libpng but is available
178
- * for applications, is an unsigned integer of the form xyyzz corresponding
179
- * to the source version x.y.z (leading zeros in y and z). Beta versions
180
- * were given the previous public release number plus a letter, until
181
- * version 1.0.6j; from then on they were given the upcoming public
182
- * release number plus "betaNN" or "rcNN".
183
- *
184
- * Binary incompatibility exists only when applications make direct access
185
- * to the info_ptr or png_ptr members through png.h, and the compiled
186
- * application is loaded with a different version of the library.
187
- *
188
- * DLLNUM will change each time there are forward or backward changes
189
- * in binary compatibility (e.g., when a new feature is added).
190
- *
191
- * See libpng.txt or libpng.3 for more information. The PNG specification
192
- * is available as a W3C Recommendation and as an ISO Specification,
193
- * <http://www.w3.org/TR/2003/REC-PNG-20031110/
194
- */
195
-
196
- /*
197
- * COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:
198
- *
199
- * If you modify libpng you may insert additional notices immediately following
200
- * this sentence.
201
- *
202
- * This code is released under the libpng license.
203
- *
204
- * libpng versions 1.2.6, August 15, 2004, through 1.4.12, July 10, 2012, are
205
- * Copyright (c) 2004, 2006-2010 Glenn Randers-Pehrson, and are
206
- * distributed according to the same disclaimer and license as libpng-1.2.5
207
- * with the following individual added to the list of Contributing Authors:
208
- *
209
- * Cosmin Truta
210
- *
211
- * libpng versions 1.0.7, July 1, 2000, through 1.2.5, October 3, 2002, are
212
- * Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are
213
- * distributed according to the same disclaimer and license as libpng-1.0.6
214
- * with the following individuals added to the list of Contributing Authors:
215
- *
216
- * Simon-Pierre Cadieux
217
- * Eric S. Raymond
218
- * Gilles Vollant
219
- *
220
- * and with the following additions to the disclaimer:
221
- *
222
- * There is no warranty against interference with your enjoyment of the
223
- * library or against infringement. There is no warranty that our
224
- * efforts or the library will fulfill any of your particular purposes
225
- * or needs. This library is provided with all faults, and the entire
226
- * risk of satisfactory quality, performance, accuracy, and effort is with
227
- * the user.
228
- *
229
- * libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are
230
- * Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson, and are
231
- * distributed according to the same disclaimer and license as libpng-0.96,
232
- * with the following individuals added to the list of Contributing Authors:
233
- *
234
- * Tom Lane
235
- * Glenn Randers-Pehrson
236
- * Willem van Schaik
237
- *
238
- * libpng versions 0.89, June 1996, through 0.96, May 1997, are
239
- * Copyright (c) 1996, 1997 Andreas Dilger
240
- * Distributed according to the same disclaimer and license as libpng-0.88,
241
- * with the following individuals added to the list of Contributing Authors:
242
- *
243
- * John Bowler
244
- * Kevin Bracey
245
- * Sam Bushell
246
- * Magnus Holmgren
247
- * Greg Roelofs
248
- * Tom Tanner
249
- *
250
- * libpng versions 0.5, May 1995, through 0.88, January 1996, are
251
- * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
252
- *
253
- * For the purposes of this copyright and license, "Contributing Authors"
254
- * is defined as the following set of individuals:
255
- *
256
- * Andreas Dilger
257
- * Dave Martindale
258
- * Guy Eric Schalnat
259
- * Paul Schmidt
260
- * Tim Wegner
261
- *
262
- * The PNG Reference Library is supplied "AS IS". The Contributing Authors
263
- * and Group 42, Inc. disclaim all warranties, expressed or implied,
264
- * including, without limitation, the warranties of merchantability and of
265
- * fitness for any purpose. The Contributing Authors and Group 42, Inc.
266
- * assume no liability for direct, indirect, incidental, special, exemplary,
267
- * or consequential damages, which may result from the use of the PNG
268
- * Reference Library, even if advised of the possibility of such damage.
269
- *
270
- * Permission is hereby granted to use, copy, modify, and distribute this
271
- * source code, or portions hereof, for any purpose, without fee, subject
272
- * to the following restrictions:
273
- *
274
- * 1. The origin of this source code must not be misrepresented.
275
- *
276
- * 2. Altered versions must be plainly marked as such and
277
- * must not be misrepresented as being the original source.
278
- *
279
- * 3. This Copyright notice may not be removed or altered from
280
- * any source or altered source distribution.
281
- *
282
- * The Contributing Authors and Group 42, Inc. specifically permit, without
283
- * fee, and encourage the use of this source code as a component to
284
- * supporting the PNG file format in commercial products. If you use this
285
- * source code in a product, acknowledgment is not required but would be
286
- * appreciated.
287
- */
288
-
289
- /*
290
- * A "png_get_copyright" function is available, for convenient use in "about"
291
- * boxes and the like:
292
- *
293
- * printf("%s",png_get_copyright(NULL));
294
- *
295
- * Also, the PNG logo (in PNG format, of course) is supplied in the
296
- * files "pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31).
297
- */
298
-
299
- /*
300
- * Libpng is OSI Certified Open Source Software. OSI Certified is a
301
- * certification mark of the Open Source Initiative.
302
- */
303
-
304
- /*
305
- * The contributing authors would like to thank all those who helped
306
- * with testing, bug fixes, and patience. This wouldn't have been
307
- * possible without all of you.
308
- *
309
- * Thanks to Frank J. T. Wojcik for helping with the documentation.
310
- */
311
-
312
- /*
313
- * Y2K compliance in libpng:
314
- * =========================
315
- *
316
- * July 10, 2012
317
- *
318
- * Since the PNG Development group is an ad-hoc body, we can't make
319
- * an official declaration.
320
- *
321
- * This is your unofficial assurance that libpng from version 0.71 and
322
- * upward through 1.4.12 are Y2K compliant. It is my belief that earlier
323
- * versions were also Y2K compliant.
324
- *
325
- * Libpng only has three year fields. One is a 2-byte unsigned integer
326
- * that will hold years up to 65535. The other two hold the date in text
327
- * format, and will hold years up to 9999.
328
- *
329
- * The integer is
330
- * "png_uint_16 year" in png_time_struct.
331
- *
332
- * The strings are
333
- * "png_charp time_buffer" in png_struct and
334
- * "near_time_buffer", which is a local character string in png.c.
335
- *
336
- * There are seven time-related functions:
337
- * png.c: png_convert_to_rfc_1123() in png.c
338
- * (formerly png_convert_to_rfc_1152() in error)
339
- * png_convert_from_struct_tm() in pngwrite.c, called in pngwrite.c
340
- * png_convert_from_time_t() in pngwrite.c
341
- * png_get_tIME() in pngget.c
342
- * png_handle_tIME() in pngrutil.c, called in pngread.c
343
- * png_set_tIME() in pngset.c
344
- * png_write_tIME() in pngwutil.c, called in pngwrite.c
345
- *
346
- * All handle dates properly in a Y2K environment. The
347
- * png_convert_from_time_t() function calls gmtime() to convert from system
348
- * clock time, which returns (year - 1900), which we properly convert to
349
- * the full 4-digit year. There is a possibility that applications using
350
- * libpng are not passing 4-digit years into the png_convert_to_rfc_1123()
351
- * function, or that they are incorrectly passing only a 2-digit year
352
- * instead of "year - 1900" into the png_convert_from_struct_tm() function,
353
- * but this is not under our control. The libpng documentation has always
354
- * stated that it works with 4-digit years, and the APIs have been
355
- * documented as such.
356
- *
357
- * The tIME chunk itself is also Y2K compliant. It uses a 2-byte unsigned
358
- * integer to hold the year, and can hold years as large as 65535.
359
- *
360
- * zlib, upon which libpng depends, is also Y2K compliant. It contains
361
- * no date-related code.
362
- *
363
- * Glenn Randers-Pehrson
364
- * libpng maintainer
365
- * PNG Development Group
366
- */
367
-
368
- #ifndef PNG_H
369
- #define PNG_H
370
-
371
- /* This is not the place to learn how to use libpng. The file libpng.txt
372
- * describes how to use libpng, and the file example.c summarizes it
373
- * with some code on which to build. This file is useful for looking
374
- * at the actual function definitions and structure components.
375
- */
376
-
377
- /* Version information for png.h - this should match the version in png.c */
378
- #define PNG_LIBPNG_VER_STRING "1.4.12"
379
- #define PNG_HEADER_VERSION_STRING \
380
- " libpng version 1.4.12 - July 10, 2012\n"
381
-
382
- #define PNG_LIBPNG_VER_SONUM 14
383
- #define PNG_LIBPNG_VER_DLLNUM 14
384
-
385
- /* These should match the first 3 components of PNG_LIBPNG_VER_STRING: */
386
- #define PNG_LIBPNG_VER_MAJOR 1
387
- #define PNG_LIBPNG_VER_MINOR 4
388
- #define PNG_LIBPNG_VER_RELEASE 12
389
- /* This should match the numeric part of the final component of
390
- * PNG_LIBPNG_VER_STRING, omitting any leading zero:
391
- */
392
-
393
- #define PNG_LIBPNG_VER_BUILD 0
394
-
395
- /* Release Status */
396
- #define PNG_LIBPNG_BUILD_ALPHA 1
397
- #define PNG_LIBPNG_BUILD_BETA 2
398
- #define PNG_LIBPNG_BUILD_RC 3
399
- #define PNG_LIBPNG_BUILD_STABLE 4
400
- #define PNG_LIBPNG_BUILD_RELEASE_STATUS_MASK 7
401
-
402
- /* Release-Specific Flags */
403
- #define PNG_LIBPNG_BUILD_PATCH 8 /* Can be OR'ed with
404
- PNG_LIBPNG_BUILD_STABLE only */
405
- #define PNG_LIBPNG_BUILD_PRIVATE 16 /* Cannot be OR'ed with
406
- PNG_LIBPNG_BUILD_SPECIAL */
407
- #define PNG_LIBPNG_BUILD_SPECIAL 32 /* Cannot be OR'ed with
408
- PNG_LIBPNG_BUILD_PRIVATE */
409
-
410
- #define PNG_LIBPNG_BUILD_BASE_TYPE PNG_LIBPNG_BUILD_STABLE
411
-
412
- /* Careful here. At one time, Guy wanted to use 082, but that would be octal.
413
- * We must not include leading zeros.
414
- * Versions 0.7 through 1.0.0 were in the range 0 to 100 here (only
415
- * version 1.0.0 was mis-numbered 100 instead of 10000). From
416
- * version 1.0.1 it's xxyyzz, where x=major, y=minor, z=release
417
- */
418
- #define PNG_LIBPNG_VER 10412 /* 1.4.12 */
419
-
420
- #ifndef PNG_VERSION_INFO_ONLY
421
- /* Include the compression library's header */
422
- #include "zlib.h"
423
- #endif
424
-
425
- /* Include all user configurable info, including optional assembler routines */
426
- #include "pngconf.h"
427
-
428
- /*
429
- * Added at libpng-1.2.8
430
- *
431
- * Ref MSDN: Private as priority over Special
432
- * VS_FF_PRIVATEBUILD File *was not* built using standard release
433
- * procedures. If this value is given, the StringFileInfo block must
434
- * contain a PrivateBuild string.
435
- *
436
- * VS_FF_SPECIALBUILD File *was* built by the original company using
437
- * standard release procedures but is a variation of the standard
438
- * file of the same version number. If this value is given, the
439
- * StringFileInfo block must contain a SpecialBuild string.
440
- */
441
-
442
- #ifdef PNG_USER_PRIVATEBUILD
443
- # define PNG_LIBPNG_BUILD_TYPE \
444
- (PNG_LIBPNG_BUILD_BASE_TYPE | PNG_LIBPNG_BUILD_PRIVATE)
445
- #else
446
- # ifdef PNG_LIBPNG_SPECIALBUILD
447
- # define PNG_LIBPNG_BUILD_TYPE \
448
- (PNG_LIBPNG_BUILD_BASE_TYPE | PNG_LIBPNG_BUILD_SPECIAL)
449
- # else
450
- # define PNG_LIBPNG_BUILD_TYPE (PNG_LIBPNG_BUILD_BASE_TYPE)
451
- # endif
452
- #endif
453
-
454
- #ifndef PNG_VERSION_INFO_ONLY
455
-
456
- /* Inhibit C++ name-mangling for libpng functions but not for system calls. */
457
- #ifdef __cplusplus
458
- extern "C" {
459
- #endif /* __cplusplus */
460
-
461
- /* This file is arranged in several sections. The first section contains
462
- * structure and type definitions. The second section contains the external
463
- * library functions, while the third has the internal library functions,
464
- * which applications aren't expected to use directly.
465
- */
466
-
467
- /* Variables declared in png.c - only it needs to define PNG_NO_EXTERN */
468
- #if !defined(PNG_NO_EXTERN) || defined(PNG_ALWAYS_EXTERN)
469
- /* Version information for C files, stored in png.c. This had better match
470
- * the version above.
471
- */
472
- #define png_libpng_ver png_get_header_ver(NULL)
473
-
474
- #endif /* PNG_NO_EXTERN */
475
-
476
- /* Three color definitions. The order of the red, green, and blue, (and the
477
- * exact size) is not important, although the size of the fields need to
478
- * be png_byte or png_uint_16 (as defined below).
479
- */
480
- typedef struct png_color_struct
481
- {
482
- png_byte red;
483
- png_byte green;
484
- png_byte blue;
485
- } png_color;
486
- typedef png_color FAR * png_colorp;
487
- typedef png_color FAR * FAR * png_colorpp;
488
-
489
- typedef struct png_color_16_struct
490
- {
491
- png_byte index; /* used for palette files */
492
- png_uint_16 red; /* for use in red green blue files */
493
- png_uint_16 green;
494
- png_uint_16 blue;
495
- png_uint_16 gray; /* for use in grayscale files */
496
- } png_color_16;
497
- typedef png_color_16 FAR * png_color_16p;
498
- typedef png_color_16 FAR * FAR * png_color_16pp;
499
-
500
- typedef struct png_color_8_struct
501
- {
502
- png_byte red; /* for use in red green blue files */
503
- png_byte green;
504
- png_byte blue;
505
- png_byte gray; /* for use in grayscale files */
506
- png_byte alpha; /* for alpha channel files */
507
- } png_color_8;
508
- typedef png_color_8 FAR * png_color_8p;
509
- typedef png_color_8 FAR * FAR * png_color_8pp;
510
-
511
- /*
512
- * The following two structures are used for the in-core representation
513
- * of sPLT chunks.
514
- */
515
- typedef struct png_sPLT_entry_struct
516
- {
517
- png_uint_16 red;
518
- png_uint_16 green;
519
- png_uint_16 blue;
520
- png_uint_16 alpha;
521
- png_uint_16 frequency;
522
- } png_sPLT_entry;
523
- typedef png_sPLT_entry FAR * png_sPLT_entryp;
524
- typedef png_sPLT_entry FAR * FAR * png_sPLT_entrypp;
525
-
526
- /* When the depth of the sPLT palette is 8 bits, the color and alpha samples
527
- * occupy the LSB of their respective members, and the MSB of each member
528
- * is zero-filled. The frequency member always occupies the full 16 bits.
529
- */
530
-
531
- typedef struct png_sPLT_struct
532
- {
533
- png_charp name; /* palette name */
534
- png_byte depth; /* depth of palette samples */
535
- png_sPLT_entryp entries; /* palette entries */
536
- png_int_32 nentries; /* number of palette entries */
537
- } png_sPLT_t;
538
- typedef png_sPLT_t FAR * png_sPLT_tp;
539
- typedef png_sPLT_t FAR * FAR * png_sPLT_tpp;
540
-
541
- #ifdef PNG_TEXT_SUPPORTED
542
- /* png_text holds the contents of a text/ztxt/itxt chunk in a PNG file,
543
- * and whether that contents is compressed or not. The "key" field
544
- * points to a regular zero-terminated C string. The "text", "lang", and
545
- * "lang_key" fields can be regular C strings, empty strings, or NULL pointers.
546
- * However, the * structure returned by png_get_text() will always contain
547
- * regular zero-terminated C strings (possibly empty), never NULL pointers,
548
- * so they can be safely used in printf() and other string-handling functions.
549
- */
550
- typedef struct png_text_struct
551
- {
552
- int compression; /* compression value:
553
- -1: tEXt, none
554
- 0: zTXt, deflate
555
- 1: iTXt, none
556
- 2: iTXt, deflate */
557
- png_charp key; /* keyword, 1-79 character description of "text" */
558
- png_charp text; /* comment, may be an empty string (ie "")
559
- or a NULL pointer */
560
- png_size_t text_length; /* length of the text string */
561
- #ifdef PNG_iTXt_SUPPORTED
562
- png_size_t itxt_length; /* length of the itxt string */
563
- png_charp lang; /* language code, 0-79 characters
564
- or a NULL pointer */
565
- png_charp lang_key; /* keyword translated UTF-8 string, 0 or more
566
- chars or a NULL pointer */
567
- #endif
568
- } png_text;
569
- typedef png_text FAR * png_textp;
570
- typedef png_text FAR * FAR * png_textpp;
571
- #endif
572
-
573
- /* Supported compression types for text in PNG files (tEXt, and zTXt).
574
- * The values of the PNG_TEXT_COMPRESSION_ defines should NOT be changed. */
575
- #define PNG_TEXT_COMPRESSION_NONE_WR -3
576
- #define PNG_TEXT_COMPRESSION_zTXt_WR -2
577
- #define PNG_TEXT_COMPRESSION_NONE -1
578
- #define PNG_TEXT_COMPRESSION_zTXt 0
579
- #define PNG_ITXT_COMPRESSION_NONE 1
580
- #define PNG_ITXT_COMPRESSION_zTXt 2
581
- #define PNG_TEXT_COMPRESSION_LAST 3 /* Not a valid value */
582
-
583
- /* png_time is a way to hold the time in an machine independent way.
584
- * Two conversions are provided, both from time_t and struct tm. There
585
- * is no portable way to convert to either of these structures, as far
586
- * as I know. If you know of a portable way, send it to me. As a side
587
- * note - PNG has always been Year 2000 compliant!
588
- */
589
- typedef struct png_time_struct
590
- {
591
- png_uint_16 year; /* full year, as in, 1995 */
592
- png_byte month; /* month of year, 1 - 12 */
593
- png_byte day; /* day of month, 1 - 31 */
594
- png_byte hour; /* hour of day, 0 - 23 */
595
- png_byte minute; /* minute of hour, 0 - 59 */
596
- png_byte second; /* second of minute, 0 - 60 (for leap seconds) */
597
- } png_time;
598
- typedef png_time FAR * png_timep;
599
- typedef png_time FAR * FAR * png_timepp;
600
-
601
- #if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED) || \
602
- defined(PNG_HANDLE_AS_UNKNOWN_SUPPORTED)
603
- /* png_unknown_chunk is a structure to hold queued chunks for which there is
604
- * no specific support. The idea is that we can use this to queue
605
- * up private chunks for output even though the library doesn't actually
606
- * know about their semantics.
607
- */
608
- typedef struct png_unknown_chunk_t
609
- {
610
- png_byte name[5];
611
- png_byte *data;
612
- png_size_t size;
613
-
614
- /* libpng-using applications should NOT directly modify this byte. */
615
- png_byte location; /* mode of operation at read time */
616
- }
617
- png_unknown_chunk;
618
- typedef png_unknown_chunk FAR * png_unknown_chunkp;
619
- typedef png_unknown_chunk FAR * FAR * png_unknown_chunkpp;
620
- #endif
621
-
622
- /* png_info is a structure that holds the information in a PNG file so
623
- * that the application can find out the characteristics of the image.
624
- * If you are reading the file, this structure will tell you what is
625
- * in the PNG file. If you are writing the file, fill in the information
626
- * you want to put into the PNG file, then call png_write_info().
627
- * The names chosen should be very close to the PNG specification, so
628
- * consult that document for information about the meaning of each field.
629
- *
630
- * With libpng < 0.95, it was only possible to directly set and read the
631
- * the values in the png_info_struct, which meant that the contents and
632
- * order of the values had to remain fixed. With libpng 0.95 and later,
633
- * however, there are now functions that abstract the contents of
634
- * png_info_struct from the application, so this makes it easier to use
635
- * libpng with dynamic libraries, and even makes it possible to use
636
- * libraries that don't have all of the libpng ancillary chunk-handing
637
- * functionality.
638
- *
639
- * In any case, the order of the parameters in png_info_struct should NOT
640
- * be changed for as long as possible to keep compatibility with applications
641
- * that use the old direct-access method with png_info_struct.
642
- *
643
- * The following members may have allocated storage attached that should be
644
- * cleaned up before the structure is discarded: palette, trans, text,
645
- * pcal_purpose, pcal_units, pcal_params, hist, iccp_name, iccp_profile,
646
- * splt_palettes, scal_unit, row_pointers, and unknowns. By default, these
647
- * are automatically freed when the info structure is deallocated, if they were
648
- * allocated internally by libpng. This behavior can be changed by means
649
- * of the png_data_freer() function.
650
- *
651
- * More allocation details: all the chunk-reading functions that
652
- * change these members go through the corresponding png_set_*
653
- * functions. A function to clear these members is available: see
654
- * png_free_data(). The png_set_* functions do not depend on being
655
- * able to point info structure members to any of the storage they are
656
- * passed (they make their own copies), EXCEPT that the png_set_text
657
- * functions use the same storage passed to them in the text_ptr or
658
- * itxt_ptr structure argument, and the png_set_rows and png_set_unknowns
659
- * functions do not make their own copies.
660
- */
661
- typedef struct png_info_struct
662
- {
663
- /* the following are necessary for every PNG file */
664
- png_uint_32 width PNG_DEPSTRUCT; /* width of image in pixels (from IHDR) */
665
- png_uint_32 height PNG_DEPSTRUCT; /* height of image in pixels (from IHDR) */
666
- png_uint_32 valid PNG_DEPSTRUCT; /* valid chunk data (see PNG_INFO_
667
- below) */
668
- png_size_t rowbytes PNG_DEPSTRUCT; /* bytes needed to hold an untransformed
669
- row */
670
- png_colorp palette PNG_DEPSTRUCT; /* array of color values
671
- (valid & PNG_INFO_PLTE) */
672
- png_uint_16 num_palette PNG_DEPSTRUCT; /* number of color entries in
673
- "palette" (PLTE) */
674
- png_uint_16 num_trans PNG_DEPSTRUCT; /* number of transparent palette
675
- color (tRNS) */
676
- png_byte bit_depth PNG_DEPSTRUCT; /* 1, 2, 4, 8, or 16 bits/channel
677
- (from IHDR) */
678
- png_byte color_type PNG_DEPSTRUCT; /* see PNG_COLOR_TYPE_ below
679
- (from IHDR) */
680
- /* The following three should have been named *_method not *_type */
681
- png_byte compression_type PNG_DEPSTRUCT; /* must be
682
- PNG_COMPRESSION_TYPE_BASE (IHDR) */
683
- png_byte filter_type PNG_DEPSTRUCT; /* must be PNG_FILTER_TYPE_BASE
684
- (from IHDR) */
685
- png_byte interlace_type PNG_DEPSTRUCT; /* One of PNG_INTERLACE_NONE,
686
- PNG_INTERLACE_ADAM7 */
687
-
688
- /* The following is informational only on read, and not used on writes. */
689
- png_byte channels PNG_DEPSTRUCT; /* number of data channels per
690
- pixel (1, 2, 3, 4) */
691
- png_byte pixel_depth PNG_DEPSTRUCT; /* number of bits per pixel */
692
- png_byte spare_byte PNG_DEPSTRUCT; /* to align the data, and for
693
- future use */
694
- png_byte signature[8] PNG_DEPSTRUCT; /* magic bytes read by libpng
695
- from start of file */
696
-
697
- /* The rest of the data is optional. If you are reading, check the
698
- * valid field to see if the information in these are valid. If you
699
- * are writing, set the valid field to those chunks you want written,
700
- * and initialize the appropriate fields below.
701
- */
702
-
703
- #if defined(PNG_gAMA_SUPPORTED) && defined(PNG_FLOATING_POINT_SUPPORTED)
704
- /* The gAMA chunk describes the gamma characteristics of the system
705
- * on which the image was created, normally in the range [1.0, 2.5].
706
- * Data is valid if (valid & PNG_INFO_gAMA) is non-zero.
707
- */
708
- float gamma PNG_DEPSTRUCT; /* gamma value of image,
709
- if (valid & PNG_INFO_gAMA) */
710
- #endif
711
-
712
- #ifdef PNG_sRGB_SUPPORTED
713
- /* GR-P, 0.96a */
714
- /* Data valid if (valid & PNG_INFO_sRGB) non-zero. */
715
- png_byte srgb_intent PNG_DEPSTRUCT; /* sRGB rendering intent
716
- [0, 1, 2, or 3] */
717
- #endif
718
-
719
- #ifdef PNG_TEXT_SUPPORTED
720
- /* The tEXt, and zTXt chunks contain human-readable textual data in
721
- * uncompressed, compressed, and optionally compressed forms, respectively.
722
- * The data in "text" is an array of pointers to uncompressed,
723
- * null-terminated C strings. Each chunk has a keyword that describes the
724
- * textual data contained in that chunk. Keywords are not required to be
725
- * unique, and the text string may be empty. Any number of text chunks may
726
- * be in an image.
727
- */
728
- int num_text PNG_DEPSTRUCT; /* number of comments read/to write */
729
- int max_text PNG_DEPSTRUCT; /* current size of text array */
730
- png_textp text PNG_DEPSTRUCT; /* array of comments read/to write */
731
- #endif /* PNG_TEXT_SUPPORTED */
732
-
733
- #ifdef PNG_tIME_SUPPORTED
734
- /* The tIME chunk holds the last time the displayed image data was
735
- * modified. See the png_time struct for the contents of this struct.
736
- */
737
- png_time mod_time PNG_DEPSTRUCT;
738
- #endif
739
-
740
- #ifdef PNG_sBIT_SUPPORTED
741
- /* The sBIT chunk specifies the number of significant high-order bits
742
- * in the pixel data. Values are in the range [1, bit_depth], and are
743
- * only specified for the channels in the pixel data. The contents of
744
- * the low-order bits is not specified. Data is valid if
745
- * (valid & PNG_INFO_sBIT) is non-zero.
746
- */
747
- png_color_8 sig_bit PNG_DEPSTRUCT; /* significant bits in color channels */
748
- #endif
749
-
750
- #if defined(PNG_tRNS_SUPPORTED) || defined(PNG_READ_EXPAND_SUPPORTED) || \
751
- defined(PNG_READ_BACKGROUND_SUPPORTED)
752
- /* The tRNS chunk supplies transparency data for paletted images and
753
- * other image types that don't need a full alpha channel. There are
754
- * "num_trans" transparency values for a paletted image, stored in the
755
- * same order as the palette colors, starting from index 0. Values
756
- * for the data are in the range [0, 255], ranging from fully transparent
757
- * to fully opaque, respectively. For non-paletted images, there is a
758
- * single color specified that should be treated as fully transparent.
759
- * Data is valid if (valid & PNG_INFO_tRNS) is non-zero.
760
- */
761
- png_bytep trans_alpha PNG_DEPSTRUCT; /* alpha values for paletted
762
- image */
763
- png_color_16 trans_color PNG_DEPSTRUCT; /* transparent color for
764
- non-palette image */
765
- #endif
766
-
767
- #if defined(PNG_bKGD_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
768
- /* The bKGD chunk gives the suggested image background color if the
769
- * display program does not have its own background color and the image
770
- * is needs to composited onto a background before display. The colors
771
- * in "background" are normally in the same color space/depth as the
772
- * pixel data. Data is valid if (valid & PNG_INFO_bKGD) is non-zero.
773
- */
774
- png_color_16 background PNG_DEPSTRUCT;
775
- #endif
776
-
777
- #ifdef PNG_oFFs_SUPPORTED
778
- /* The oFFs chunk gives the offset in "offset_unit_type" units rightwards
779
- * and downwards from the top-left corner of the display, page, or other
780
- * application-specific co-ordinate space. See the PNG_OFFSET_ defines
781
- * below for the unit types. Valid if (valid & PNG_INFO_oFFs) non-zero.
782
- */
783
- png_int_32 x_offset PNG_DEPSTRUCT; /* x offset on page */
784
- png_int_32 y_offset PNG_DEPSTRUCT; /* y offset on page */
785
- png_byte offset_unit_type PNG_DEPSTRUCT; /* offset units type */
786
- #endif
787
-
788
- #ifdef PNG_pHYs_SUPPORTED
789
- /* The pHYs chunk gives the physical pixel density of the image for
790
- * display or printing in "phys_unit_type" units (see PNG_RESOLUTION_
791
- * defines below). Data is valid if (valid & PNG_INFO_pHYs) is non-zero.
792
- */
793
- png_uint_32 x_pixels_per_unit PNG_DEPSTRUCT; /* horizontal pixel density */
794
- png_uint_32 y_pixels_per_unit PNG_DEPSTRUCT; /* vertical pixel density */
795
- png_byte phys_unit_type PNG_DEPSTRUCT; /* resolution type (see
796
- PNG_RESOLUTION_ below) */
797
- #endif
798
-
799
- #ifdef PNG_hIST_SUPPORTED
800
- /* The hIST chunk contains the relative frequency or importance of the
801
- * various palette entries, so that a viewer can intelligently select a
802
- * reduced-color palette, if required. Data is an array of "num_palette"
803
- * values in the range [0,65535]. Data valid if (valid & PNG_INFO_hIST)
804
- * is non-zero.
805
- */
806
- png_uint_16p hist PNG_DEPSTRUCT;
807
- #endif
808
-
809
- #ifdef PNG_cHRM_SUPPORTED
810
- /* The cHRM chunk describes the CIE color characteristics of the monitor
811
- * on which the PNG was created. This data allows the viewer to do gamut
812
- * mapping of the input image to ensure that the viewer sees the same
813
- * colors in the image as the creator. Values are in the range
814
- * [0.0, 0.8]. Data valid if (valid & PNG_INFO_cHRM) non-zero.
815
- */
816
- #ifdef PNG_FLOATING_POINT_SUPPORTED
817
- float x_white PNG_DEPSTRUCT;
818
- float y_white PNG_DEPSTRUCT;
819
- float x_red PNG_DEPSTRUCT;
820
- float y_red PNG_DEPSTRUCT;
821
- float x_green PNG_DEPSTRUCT;
822
- float y_green PNG_DEPSTRUCT;
823
- float x_blue PNG_DEPSTRUCT;
824
- float y_blue PNG_DEPSTRUCT;
825
- #endif
826
- #endif
827
-
828
- #ifdef PNG_pCAL_SUPPORTED
829
- /* The pCAL chunk describes a transformation between the stored pixel
830
- * values and original physical data values used to create the image.
831
- * The integer range [0, 2^bit_depth - 1] maps to the floating-point
832
- * range given by [pcal_X0, pcal_X1], and are further transformed by a
833
- * (possibly non-linear) transformation function given by "pcal_type"
834
- * and "pcal_params" into "pcal_units". Please see the PNG_EQUATION_
835
- * defines below, and the PNG-Group's PNG extensions document for a
836
- * complete description of the transformations and how they should be
837
- * implemented, and for a description of the ASCII parameter strings.
838
- * Data values are valid if (valid & PNG_INFO_pCAL) non-zero.
839
- */
840
- png_charp pcal_purpose PNG_DEPSTRUCT; /* pCAL chunk description string */
841
- png_int_32 pcal_X0 PNG_DEPSTRUCT; /* minimum value */
842
- png_int_32 pcal_X1 PNG_DEPSTRUCT; /* maximum value */
843
- png_charp pcal_units PNG_DEPSTRUCT; /* Latin-1 string giving physical
844
- units */
845
- png_charpp pcal_params PNG_DEPSTRUCT; /* ASCII strings containing
846
- parameter values */
847
- png_byte pcal_type PNG_DEPSTRUCT; /* equation type
848
- (see PNG_EQUATION_ below) */
849
- png_byte pcal_nparams PNG_DEPSTRUCT; /* number of parameters given
850
- in pcal_params */
851
- #endif
852
-
853
- /* New members added in libpng-1.0.6 */
854
- png_uint_32 free_me PNG_DEPSTRUCT; /* flags items libpng is
855
- responsible for freeing */
856
-
857
- #if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED) || \
858
- defined(PNG_HANDLE_AS_UNKNOWN_SUPPORTED)
859
- /* Storage for unknown chunks that the library doesn't recognize. */
860
- png_unknown_chunkp unknown_chunks PNG_DEPSTRUCT;
861
- png_size_t unknown_chunks_num PNG_DEPSTRUCT;
862
- #endif
863
-
864
- #ifdef PNG_iCCP_SUPPORTED
865
- /* iCCP chunk data. */
866
- png_charp iccp_name PNG_DEPSTRUCT; /* profile name */
867
- png_charp iccp_profile PNG_DEPSTRUCT; /* International Color Consortium
868
- profile data */
869
- /* Note to maintainer: should be png_bytep */
870
- png_uint_32 iccp_proflen PNG_DEPSTRUCT; /* ICC profile data length */
871
- png_byte iccp_compression PNG_DEPSTRUCT; /* Always zero */
872
- #endif
873
-
874
- #ifdef PNG_sPLT_SUPPORTED
875
- /* Data on sPLT chunks (there may be more than one). */
876
- png_sPLT_tp splt_palettes PNG_DEPSTRUCT;
877
- png_uint_32 splt_palettes_num PNG_DEPSTRUCT;
878
- #endif
879
-
880
- #ifdef PNG_sCAL_SUPPORTED
881
- /* The sCAL chunk describes the actual physical dimensions of the
882
- * subject matter of the graphic. The chunk contains a unit specification
883
- * a byte value, and two ASCII strings representing floating-point
884
- * values. The values are width and height corresponsing to one pixel
885
- * in the image. This external representation is converted to double
886
- * here. Data values are valid if (valid & PNG_INFO_sCAL) is non-zero.
887
- */
888
- png_byte scal_unit PNG_DEPSTRUCT; /* unit of physical scale */
889
- #ifdef PNG_FLOATING_POINT_SUPPORTED
890
- double scal_pixel_width PNG_DEPSTRUCT; /* width of one pixel */
891
- double scal_pixel_height PNG_DEPSTRUCT; /* height of one pixel */
892
- #endif
893
- #ifdef PNG_FIXED_POINT_SUPPORTED
894
- png_charp scal_s_width PNG_DEPSTRUCT; /* string containing height */
895
- png_charp scal_s_height PNG_DEPSTRUCT; /* string containing width */
896
- #endif
897
- #endif
898
-
899
- #ifdef PNG_INFO_IMAGE_SUPPORTED
900
- /* Memory has been allocated if (valid & PNG_ALLOCATED_INFO_ROWS)
901
- non-zero */
902
- /* Data valid if (valid & PNG_INFO_IDAT) non-zero */
903
- png_bytepp row_pointers PNG_DEPSTRUCT; /* the image bits */
904
- #endif
905
-
906
- #if defined(PNG_FIXED_POINT_SUPPORTED) && defined(PNG_gAMA_SUPPORTED)
907
- png_fixed_point int_gamma PNG_DEPSTRUCT; /* gamma of image,
908
- if (valid & PNG_INFO_gAMA) */
909
- #endif
910
-
911
- #if defined(PNG_cHRM_SUPPORTED) && defined(PNG_FIXED_POINT_SUPPORTED)
912
- png_fixed_point int_x_white PNG_DEPSTRUCT;
913
- png_fixed_point int_y_white PNG_DEPSTRUCT;
914
- png_fixed_point int_x_red PNG_DEPSTRUCT;
915
- png_fixed_point int_y_red PNG_DEPSTRUCT;
916
- png_fixed_point int_x_green PNG_DEPSTRUCT;
917
- png_fixed_point int_y_green PNG_DEPSTRUCT;
918
- png_fixed_point int_x_blue PNG_DEPSTRUCT;
919
- png_fixed_point int_y_blue PNG_DEPSTRUCT;
920
- #endif
921
-
922
- } png_info;
923
-
924
- typedef png_info FAR * png_infop;
925
- typedef PNG_CONST png_info FAR * png_const_infop;
926
- typedef png_info FAR * FAR * png_infopp;
927
-
928
- /* Maximum positive integer used in PNG is (2^31)-1 */
929
- #define PNG_UINT_31_MAX ((png_uint_32)0x7fffffffL)
930
- #define PNG_UINT_32_MAX ((png_uint_32)(-1))
931
- #define PNG_SIZE_MAX ((png_size_t)(-1))
932
-
933
- /* These describe the color_type field in png_info. */
934
- /* color type masks */
935
- #define PNG_COLOR_MASK_PALETTE 1
936
- #define PNG_COLOR_MASK_COLOR 2
937
- #define PNG_COLOR_MASK_ALPHA 4
938
-
939
- /* color types. Note that not all combinations are legal */
940
- #define PNG_COLOR_TYPE_GRAY 0
941
- #define PNG_COLOR_TYPE_PALETTE (PNG_COLOR_MASK_COLOR | PNG_COLOR_MASK_PALETTE)
942
- #define PNG_COLOR_TYPE_RGB (PNG_COLOR_MASK_COLOR)
943
- #define PNG_COLOR_TYPE_RGB_ALPHA (PNG_COLOR_MASK_COLOR | PNG_COLOR_MASK_ALPHA)
944
- #define PNG_COLOR_TYPE_GRAY_ALPHA (PNG_COLOR_MASK_ALPHA)
945
- /* aliases */
946
- #define PNG_COLOR_TYPE_RGBA PNG_COLOR_TYPE_RGB_ALPHA
947
- #define PNG_COLOR_TYPE_GA PNG_COLOR_TYPE_GRAY_ALPHA
948
-
949
- /* This is for compression type. PNG 1.0-1.2 only define the single type. */
950
- #define PNG_COMPRESSION_TYPE_BASE 0 /* Deflate method 8, 32K window */
951
- #define PNG_COMPRESSION_TYPE_DEFAULT PNG_COMPRESSION_TYPE_BASE
952
-
953
- /* This is for filter type. PNG 1.0-1.2 only define the single type. */
954
- #define PNG_FILTER_TYPE_BASE 0 /* Single row per-byte filtering */
955
- #define PNG_INTRAPIXEL_DIFFERENCING 64 /* Used only in MNG datastreams */
956
- #define PNG_FILTER_TYPE_DEFAULT PNG_FILTER_TYPE_BASE
957
-
958
- /* These are for the interlacing type. These values should NOT be changed. */
959
- #define PNG_INTERLACE_NONE 0 /* Non-interlaced image */
960
- #define PNG_INTERLACE_ADAM7 1 /* Adam7 interlacing */
961
- #define PNG_INTERLACE_LAST 2 /* Not a valid value */
962
-
963
- /* These are for the oFFs chunk. These values should NOT be changed. */
964
- #define PNG_OFFSET_PIXEL 0 /* Offset in pixels */
965
- #define PNG_OFFSET_MICROMETER 1 /* Offset in micrometers (1/10^6 meter) */
966
- #define PNG_OFFSET_LAST 2 /* Not a valid value */
967
-
968
- /* These are for the pCAL chunk. These values should NOT be changed. */
969
- #define PNG_EQUATION_LINEAR 0 /* Linear transformation */
970
- #define PNG_EQUATION_BASE_E 1 /* Exponential base e transform */
971
- #define PNG_EQUATION_ARBITRARY 2 /* Arbitrary base exponential transform */
972
- #define PNG_EQUATION_HYPERBOLIC 3 /* Hyperbolic sine transformation */
973
- #define PNG_EQUATION_LAST 4 /* Not a valid value */
974
-
975
- /* These are for the sCAL chunk. These values should NOT be changed. */
976
- #define PNG_SCALE_UNKNOWN 0 /* unknown unit (image scale) */
977
- #define PNG_SCALE_METER 1 /* meters per pixel */
978
- #define PNG_SCALE_RADIAN 2 /* radians per pixel */
979
- #define PNG_SCALE_LAST 3 /* Not a valid value */
980
-
981
- /* These are for the pHYs chunk. These values should NOT be changed. */
982
- #define PNG_RESOLUTION_UNKNOWN 0 /* pixels/unknown unit (aspect ratio) */
983
- #define PNG_RESOLUTION_METER 1 /* pixels/meter */
984
- #define PNG_RESOLUTION_LAST 2 /* Not a valid value */
985
-
986
- /* These are for the sRGB chunk. These values should NOT be changed. */
987
- #define PNG_sRGB_INTENT_PERCEPTUAL 0
988
- #define PNG_sRGB_INTENT_RELATIVE 1
989
- #define PNG_sRGB_INTENT_SATURATION 2
990
- #define PNG_sRGB_INTENT_ABSOLUTE 3
991
- #define PNG_sRGB_INTENT_LAST 4 /* Not a valid value */
992
-
993
- /* This is for text chunks */
994
- #define PNG_KEYWORD_MAX_LENGTH 79
995
-
996
- /* Maximum number of entries in PLTE/sPLT/tRNS arrays */
997
- #define PNG_MAX_PALETTE_LENGTH 256
998
-
999
- /* These determine if an ancillary chunk's data has been successfully read
1000
- * from the PNG header, or if the application has filled in the corresponding
1001
- * data in the info_struct to be written into the output file. The values
1002
- * of the PNG_INFO_<chunk> defines should NOT be changed.
1003
- */
1004
- #define PNG_INFO_gAMA 0x0001
1005
- #define PNG_INFO_sBIT 0x0002
1006
- #define PNG_INFO_cHRM 0x0004
1007
- #define PNG_INFO_PLTE 0x0008
1008
- #define PNG_INFO_tRNS 0x0010
1009
- #define PNG_INFO_bKGD 0x0020
1010
- #define PNG_INFO_hIST 0x0040
1011
- #define PNG_INFO_pHYs 0x0080
1012
- #define PNG_INFO_oFFs 0x0100
1013
- #define PNG_INFO_tIME 0x0200
1014
- #define PNG_INFO_pCAL 0x0400
1015
- #define PNG_INFO_sRGB 0x0800 /* GR-P, 0.96a */
1016
- #define PNG_INFO_iCCP 0x1000 /* ESR, 1.0.6 */
1017
- #define PNG_INFO_sPLT 0x2000 /* ESR, 1.0.6 */
1018
- #define PNG_INFO_sCAL 0x4000 /* ESR, 1.0.6 */
1019
- #define PNG_INFO_IDAT 0x8000L /* ESR, 1.0.6 */
1020
-
1021
- /* This is used for the transformation routines, as some of them
1022
- * change these values for the row. It also should enable using
1023
- * the routines for other purposes.
1024
- */
1025
- typedef struct png_row_info_struct
1026
- {
1027
- png_uint_32 width; /* width of row */
1028
- png_size_t rowbytes; /* number of bytes in row */
1029
- png_byte color_type; /* color type of row */
1030
- png_byte bit_depth; /* bit depth of row */
1031
- png_byte channels; /* number of channels (1, 2, 3, or 4) */
1032
- png_byte pixel_depth; /* bits per pixel (depth * channels) */
1033
- } png_row_info;
1034
-
1035
- typedef png_row_info FAR * png_row_infop;
1036
- typedef png_row_info FAR * FAR * png_row_infopp;
1037
-
1038
- /* These are the function types for the I/O functions and for the functions
1039
- * that allow the user to override the default I/O functions with his or her
1040
- * own. The png_error_ptr type should match that of user-supplied warning
1041
- * and error functions, while the png_rw_ptr type should match that of the
1042
- * user read/write data functions.
1043
- */
1044
- typedef struct png_struct_def png_struct;
1045
- typedef png_struct FAR * png_structp;
1046
- typedef PNG_CONST png_struct FAR * png_const_structp;
1047
-
1048
- typedef void (PNGAPI *png_error_ptr) PNGARG((png_structp, png_const_charp));
1049
- typedef void (PNGAPI *png_rw_ptr) PNGARG((png_structp, png_bytep, png_size_t));
1050
- typedef void (PNGAPI *png_flush_ptr) PNGARG((png_structp));
1051
- typedef void (PNGAPI *png_read_status_ptr) PNGARG((png_structp, png_uint_32,
1052
- int));
1053
- typedef void (PNGAPI *png_write_status_ptr) PNGARG((png_structp, png_uint_32,
1054
- int));
1055
-
1056
- #ifdef PNG_PROGRESSIVE_READ_SUPPORTED
1057
- typedef void (PNGAPI *png_progressive_info_ptr) PNGARG((png_structp,
1058
- png_infop));
1059
- typedef void (PNGAPI *png_progressive_end_ptr) PNGARG((png_structp, png_infop));
1060
- typedef void (PNGAPI *png_progressive_row_ptr) PNGARG((png_structp, png_bytep,
1061
- png_uint_32, int));
1062
- #endif
1063
-
1064
- #if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \
1065
- defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
1066
- typedef void (PNGAPI *png_user_transform_ptr) PNGARG((png_structp,
1067
- png_row_infop, png_bytep));
1068
- #endif
1069
-
1070
- #ifdef PNG_USER_CHUNKS_SUPPORTED
1071
- typedef int (PNGAPI *png_user_chunk_ptr) PNGARG((png_structp,
1072
- png_unknown_chunkp));
1073
- #endif
1074
- #ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED
1075
- typedef void (PNGAPI *png_unknown_chunk_ptr) PNGARG((png_structp));
1076
- #endif
1077
- #ifdef PNG_SETJMP_SUPPORTED
1078
- /* This must match the function definition in <setjmp.h>, and the
1079
- * application must include this before png.h to obtain the definition
1080
- * of jmp_buf.
1081
- */
1082
- typedef void (PNGAPI *png_longjmp_ptr) PNGARG((jmp_buf, int));
1083
- #endif
1084
-
1085
- /* Transform masks for the high-level interface */
1086
- #define PNG_TRANSFORM_IDENTITY 0x0000 /* read and write */
1087
- #define PNG_TRANSFORM_STRIP_16 0x0001 /* read only */
1088
- #define PNG_TRANSFORM_STRIP_ALPHA 0x0002 /* read only */
1089
- #define PNG_TRANSFORM_PACKING 0x0004 /* read and write */
1090
- #define PNG_TRANSFORM_PACKSWAP 0x0008 /* read and write */
1091
- #define PNG_TRANSFORM_EXPAND 0x0010 /* read only */
1092
- #define PNG_TRANSFORM_INVERT_MONO 0x0020 /* read and write */
1093
- #define PNG_TRANSFORM_SHIFT 0x0040 /* read and write */
1094
- #define PNG_TRANSFORM_BGR 0x0080 /* read and write */
1095
- #define PNG_TRANSFORM_SWAP_ALPHA 0x0100 /* read and write */
1096
- #define PNG_TRANSFORM_SWAP_ENDIAN 0x0200 /* read and write */
1097
- #define PNG_TRANSFORM_INVERT_ALPHA 0x0400 /* read and write */
1098
- #define PNG_TRANSFORM_STRIP_FILLER 0x0800 /* write only */
1099
- /* Added to libpng-1.2.34 */
1100
- #define PNG_TRANSFORM_STRIP_FILLER_BEFORE PNG_TRANSFORM_STRIP_FILLER
1101
- #define PNG_TRANSFORM_STRIP_FILLER_AFTER 0x1000 /* write only */
1102
- /* Added to libpng-1.4.0 */
1103
- #define PNG_TRANSFORM_GRAY_TO_RGB 0x2000 /* read only */
1104
-
1105
- /* Flags for MNG supported features */
1106
- #define PNG_FLAG_MNG_EMPTY_PLTE 0x01
1107
- #define PNG_FLAG_MNG_FILTER_64 0x04
1108
- #define PNG_ALL_MNG_FEATURES 0x05
1109
-
1110
- typedef png_voidp (*png_malloc_ptr) PNGARG((png_structp, png_alloc_size_t));
1111
- typedef void (*png_free_ptr) PNGARG((png_structp, png_voidp));
1112
-
1113
- /* The structure that holds the information to read and write PNG files.
1114
- * The only people who need to care about what is inside of this are the
1115
- * people who will be modifying the library for their own special needs.
1116
- * It should NOT be accessed directly by an application, except to store
1117
- * the jmp_buf.
1118
- */
1119
-
1120
- struct png_struct_def
1121
- {
1122
- #ifdef PNG_SETJMP_SUPPORTED
1123
- jmp_buf jmpbuf PNG_DEPSTRUCT; /* used in png_error */
1124
- png_longjmp_ptr longjmp_fn PNG_DEPSTRUCT;/* setjmp non-local goto
1125
- function. */
1126
- #endif
1127
- png_error_ptr error_fn PNG_DEPSTRUCT; /* function for printing
1128
- errors and aborting */
1129
- png_error_ptr warning_fn PNG_DEPSTRUCT; /* function for printing
1130
- warnings */
1131
- png_voidp error_ptr PNG_DEPSTRUCT; /* user supplied struct for
1132
- error functions */
1133
- png_rw_ptr write_data_fn PNG_DEPSTRUCT; /* function for writing
1134
- output data */
1135
- png_rw_ptr read_data_fn PNG_DEPSTRUCT; /* function for reading
1136
- input data */
1137
- png_voidp io_ptr PNG_DEPSTRUCT; /* ptr to application struct
1138
- for I/O functions */
1139
-
1140
- #ifdef PNG_READ_USER_TRANSFORM_SUPPORTED
1141
- png_user_transform_ptr read_user_transform_fn PNG_DEPSTRUCT; /* user read
1142
- transform */
1143
- #endif
1144
-
1145
- #ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED
1146
- png_user_transform_ptr write_user_transform_fn PNG_DEPSTRUCT; /* user write
1147
- transform */
1148
- #endif
1149
-
1150
- /* These were added in libpng-1.0.2 */
1151
- #ifdef PNG_USER_TRANSFORM_PTR_SUPPORTED
1152
- #if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \
1153
- defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
1154
- png_voidp user_transform_ptr PNG_DEPSTRUCT; /* user supplied struct
1155
- for user transform */
1156
- png_byte user_transform_depth PNG_DEPSTRUCT; /* bit depth of user
1157
- transformed pixels */
1158
- png_byte user_transform_channels PNG_DEPSTRUCT; /* channels in user
1159
- transformed pixels */
1160
- #endif
1161
- #endif
1162
-
1163
- png_uint_32 mode PNG_DEPSTRUCT; /* tells us where we are in
1164
- the PNG file */
1165
- png_uint_32 flags PNG_DEPSTRUCT; /* flags indicating various
1166
- things to libpng */
1167
- png_uint_32 transformations PNG_DEPSTRUCT; /* which transformations
1168
- to perform */
1169
-
1170
- z_stream zstream PNG_DEPSTRUCT; /* pointer to decompression
1171
- structure (below) */
1172
- png_bytep zbuf PNG_DEPSTRUCT; /* buffer for zlib */
1173
- png_size_t zbuf_size PNG_DEPSTRUCT; /* size of zbuf */
1174
- int zlib_level PNG_DEPSTRUCT; /* holds zlib compression level */
1175
- int zlib_method PNG_DEPSTRUCT; /* holds zlib compression method */
1176
- int zlib_window_bits PNG_DEPSTRUCT; /* holds zlib compression window
1177
- bits */
1178
- int zlib_mem_level PNG_DEPSTRUCT; /* holds zlib compression memory
1179
- level */
1180
- int zlib_strategy PNG_DEPSTRUCT; /* holds zlib compression
1181
- strategy */
1182
-
1183
- png_uint_32 width PNG_DEPSTRUCT; /* width of image in pixels */
1184
- png_uint_32 height PNG_DEPSTRUCT; /* height of image in pixels */
1185
- png_uint_32 num_rows PNG_DEPSTRUCT; /* number of rows in current pass */
1186
- png_uint_32 usr_width PNG_DEPSTRUCT; /* width of row at start of write */
1187
- png_size_t rowbytes PNG_DEPSTRUCT; /* size of row in bytes */
1188
- #if 0 /* Replaced with the following in libpng-1.4.1 */
1189
- png_size_t irowbytes PNG_DEPSTRUCT;
1190
- #endif
1191
- /* Added in libpng-1.4.1 */
1192
- #ifdef PNG_USER_LIMITS_SUPPORTED
1193
- /* Total memory that a zTXt, sPLT, iTXt, iCCP, or unknown chunk
1194
- * can occupy when decompressed. 0 means unlimited.
1195
- * We will change the typedef from png_size_t to png_alloc_size_t
1196
- * in libpng-1.6.0
1197
- */
1198
- png_alloc_size_t user_chunk_malloc_max PNG_DEPSTRUCT;
1199
- #endif
1200
- png_uint_32 iwidth PNG_DEPSTRUCT; /* width of current interlaced
1201
- row in pixels */
1202
- png_uint_32 row_number PNG_DEPSTRUCT; /* current row in interlace pass */
1203
- png_bytep prev_row PNG_DEPSTRUCT; /* buffer to save previous
1204
- (unfiltered) row */
1205
- png_bytep row_buf PNG_DEPSTRUCT; /* buffer to save current
1206
- (unfiltered) row */
1207
- png_bytep sub_row PNG_DEPSTRUCT; /* buffer to save "sub" row
1208
- when filtering */
1209
- png_bytep up_row PNG_DEPSTRUCT; /* buffer to save "up" row
1210
- when filtering */
1211
- png_bytep avg_row PNG_DEPSTRUCT; /* buffer to save "avg" row
1212
- when filtering */
1213
- png_bytep paeth_row PNG_DEPSTRUCT; /* buffer to save "Paeth" row
1214
- when filtering */
1215
- png_row_info row_info PNG_DEPSTRUCT; /* used for transformation
1216
- routines */
1217
-
1218
- png_uint_32 idat_size PNG_DEPSTRUCT; /* current IDAT size for read */
1219
- png_uint_32 crc PNG_DEPSTRUCT; /* current chunk CRC value */
1220
- png_colorp palette PNG_DEPSTRUCT; /* palette from the input file */
1221
- png_uint_16 num_palette PNG_DEPSTRUCT; /* number of color entries in
1222
- palette */
1223
- png_uint_16 num_trans PNG_DEPSTRUCT; /* number of transparency values */
1224
- png_byte chunk_name[5] PNG_DEPSTRUCT; /* null-terminated name of current
1225
- chunk */
1226
- png_byte compression PNG_DEPSTRUCT; /* file compression type
1227
- (always 0) */
1228
- png_byte filter PNG_DEPSTRUCT; /* file filter type (always 0) */
1229
- png_byte interlaced PNG_DEPSTRUCT; /* PNG_INTERLACE_NONE,
1230
- PNG_INTERLACE_ADAM7 */
1231
- png_byte pass PNG_DEPSTRUCT; /* current interlace pass (0 - 6) */
1232
- png_byte do_filter PNG_DEPSTRUCT; /* row filter flags (see
1233
- PNG_FILTER_ below ) */
1234
- png_byte color_type PNG_DEPSTRUCT; /* color type of file */
1235
- png_byte bit_depth PNG_DEPSTRUCT; /* bit depth of file */
1236
- png_byte usr_bit_depth PNG_DEPSTRUCT; /* bit depth of users row */
1237
- png_byte pixel_depth PNG_DEPSTRUCT; /* number of bits per pixel */
1238
- png_byte channels PNG_DEPSTRUCT; /* number of channels in file */
1239
- png_byte usr_channels PNG_DEPSTRUCT; /* channels at start of write */
1240
- png_byte sig_bytes PNG_DEPSTRUCT; /* magic bytes read/written from
1241
- start of file */
1242
-
1243
- #if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED)
1244
- png_uint_16 filler PNG_DEPSTRUCT; /* filler bytes for pixel
1245
- expansion */
1246
- #endif
1247
-
1248
- #ifdef PNG_bKGD_SUPPORTED
1249
- png_byte background_gamma_type PNG_DEPSTRUCT;
1250
- # ifdef PNG_FLOATING_POINT_SUPPORTED
1251
- float background_gamma PNG_DEPSTRUCT;
1252
- # endif
1253
- png_color_16 background PNG_DEPSTRUCT; /* background color in
1254
- screen gamma space */
1255
- #ifdef PNG_READ_GAMMA_SUPPORTED
1256
- png_color_16 background_1 PNG_DEPSTRUCT; /* background normalized
1257
- to gamma 1.0 */
1258
- #endif
1259
- #endif /* PNG_bKGD_SUPPORTED */
1260
-
1261
- #ifdef PNG_WRITE_FLUSH_SUPPORTED
1262
- png_flush_ptr output_flush_fn PNG_DEPSTRUCT; /* Function for flushing
1263
- output */
1264
- png_uint_32 flush_dist PNG_DEPSTRUCT; /* how many rows apart to flush,
1265
- 0 - no flush */
1266
- png_uint_32 flush_rows PNG_DEPSTRUCT; /* number of rows written since
1267
- last flush */
1268
- #endif
1269
-
1270
- #if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
1271
- int gamma_shift PNG_DEPSTRUCT; /* number of "insignificant" bits
1272
- 16-bit gamma */
1273
- #ifdef PNG_FLOATING_POINT_SUPPORTED
1274
- float gamma PNG_DEPSTRUCT; /* file gamma value */
1275
- float screen_gamma PNG_DEPSTRUCT; /* screen gamma value
1276
- (display_exponent) */
1277
- #endif
1278
- #endif
1279
-
1280
- #if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
1281
- png_bytep gamma_table PNG_DEPSTRUCT; /* gamma table for 8-bit
1282
- depth files */
1283
- png_bytep gamma_from_1 PNG_DEPSTRUCT; /* converts from 1.0 to screen */
1284
- png_bytep gamma_to_1 PNG_DEPSTRUCT; /* converts from file to 1.0 */
1285
- png_uint_16pp gamma_16_table PNG_DEPSTRUCT; /* gamma table for 16-bit
1286
- depth files */
1287
- png_uint_16pp gamma_16_from_1 PNG_DEPSTRUCT; /* converts from 1.0 to
1288
- screen */
1289
- png_uint_16pp gamma_16_to_1 PNG_DEPSTRUCT; /* converts from file to 1.0 */
1290
- #endif
1291
-
1292
- #if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_sBIT_SUPPORTED)
1293
- png_color_8 sig_bit PNG_DEPSTRUCT; /* significant bits in each
1294
- available channel */
1295
- #endif
1296
-
1297
- #if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED)
1298
- png_color_8 shift PNG_DEPSTRUCT; /* shift for significant bit
1299
- tranformation */
1300
- #endif
1301
-
1302
- #if defined(PNG_tRNS_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) \
1303
- || defined(PNG_READ_EXPAND_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
1304
- png_bytep trans_alpha PNG_DEPSTRUCT; /* alpha values for
1305
- paletted files */
1306
- png_color_16 trans_color PNG_DEPSTRUCT; /* transparent color for
1307
- non-paletted files */
1308
- #endif
1309
-
1310
- png_read_status_ptr read_row_fn PNG_DEPSTRUCT; /* called after each
1311
- row is decoded */
1312
- png_write_status_ptr write_row_fn PNG_DEPSTRUCT; /* called after each
1313
- row is encoded */
1314
- #ifdef PNG_PROGRESSIVE_READ_SUPPORTED
1315
- png_progressive_info_ptr info_fn PNG_DEPSTRUCT; /* called after header
1316
- data fully read */
1317
- png_progressive_row_ptr row_fn PNG_DEPSTRUCT; /* called after each
1318
- prog. row is decoded */
1319
- png_progressive_end_ptr end_fn PNG_DEPSTRUCT; /* called after image
1320
- is complete */
1321
- png_bytep save_buffer_ptr PNG_DEPSTRUCT; /* current location in
1322
- save_buffer */
1323
- png_bytep save_buffer PNG_DEPSTRUCT; /* buffer for previously
1324
- read data */
1325
- png_bytep current_buffer_ptr PNG_DEPSTRUCT; /* current location in
1326
- current_buffer */
1327
- png_bytep current_buffer PNG_DEPSTRUCT; /* buffer for recently
1328
- used data */
1329
- png_uint_32 push_length PNG_DEPSTRUCT; /* size of current input
1330
- chunk */
1331
- png_uint_32 skip_length PNG_DEPSTRUCT; /* bytes to skip in
1332
- input data */
1333
- png_size_t save_buffer_size PNG_DEPSTRUCT; /* amount of data now
1334
- in save_buffer */
1335
- png_size_t save_buffer_max PNG_DEPSTRUCT; /* total size of
1336
- save_buffer */
1337
- png_size_t buffer_size PNG_DEPSTRUCT; /* total amount of
1338
- available input data */
1339
- png_size_t current_buffer_size PNG_DEPSTRUCT; /* amount of data now
1340
- in current_buffer */
1341
- int process_mode PNG_DEPSTRUCT; /* what push library
1342
- is currently doing */
1343
- int cur_palette PNG_DEPSTRUCT; /* current push library
1344
- palette index */
1345
-
1346
- # ifdef PNG_TEXT_SUPPORTED
1347
- png_size_t current_text_size PNG_DEPSTRUCT; /* current size of
1348
- text input data */
1349
- png_size_t current_text_left PNG_DEPSTRUCT; /* how much text left
1350
- to read in input */
1351
- png_charp current_text PNG_DEPSTRUCT; /* current text chunk
1352
- buffer */
1353
- png_charp current_text_ptr PNG_DEPSTRUCT; /* current location
1354
- in current_text */
1355
- # endif /* PNG_PROGRESSIVE_READ_SUPPORTED && PNG_TEXT_SUPPORTED */
1356
-
1357
- #endif /* PNG_PROGRESSIVE_READ_SUPPORTED */
1358
-
1359
- #if defined(__TURBOC__) && !defined(_Windows) && !defined(__FLAT__)
1360
- /* For the Borland special 64K segment handler */
1361
- png_bytepp offset_table_ptr PNG_DEPSTRUCT;
1362
- png_bytep offset_table PNG_DEPSTRUCT;
1363
- png_uint_16 offset_table_number PNG_DEPSTRUCT;
1364
- png_uint_16 offset_table_count PNG_DEPSTRUCT;
1365
- png_uint_16 offset_table_count_free PNG_DEPSTRUCT;
1366
- #endif
1367
-
1368
- #ifdef PNG_READ_QUANTIZE_SUPPORTED
1369
- png_bytep palette_lookup PNG_DEPSTRUCT; /* lookup table for quantizing */
1370
- png_bytep quantize_index PNG_DEPSTRUCT; /* index translation for palette
1371
- files */
1372
- #endif
1373
-
1374
- #if defined(PNG_READ_QUANTIZE_SUPPORTED) || defined(PNG_hIST_SUPPORTED)
1375
- png_uint_16p hist PNG_DEPSTRUCT; /* histogram */
1376
- #endif
1377
-
1378
- #ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED
1379
- png_byte heuristic_method PNG_DEPSTRUCT; /* heuristic for row
1380
- filter selection */
1381
- png_byte num_prev_filters PNG_DEPSTRUCT; /* number of weights
1382
- for previous rows */
1383
- png_bytep prev_filters PNG_DEPSTRUCT; /* filter type(s) of
1384
- previous row(s) */
1385
- png_uint_16p filter_weights PNG_DEPSTRUCT; /* weight(s) for previous
1386
- line(s) */
1387
- png_uint_16p inv_filter_weights PNG_DEPSTRUCT; /* 1/weight(s) for
1388
- previous line(s) */
1389
- png_uint_16p filter_costs PNG_DEPSTRUCT; /* relative filter
1390
- calculation cost */
1391
- png_uint_16p inv_filter_costs PNG_DEPSTRUCT; /* 1/relative filter
1392
- calculation cost */
1393
- #endif
1394
-
1395
- #ifdef PNG_TIME_RFC1123_SUPPORTED
1396
- png_charp time_buffer PNG_DEPSTRUCT; /* String to hold RFC 1123 time text */
1397
- #endif
1398
-
1399
- /* New members added in libpng-1.0.6 */
1400
-
1401
- png_uint_32 free_me PNG_DEPSTRUCT; /* flags items libpng is
1402
- responsible for freeing */
1403
-
1404
- #ifdef PNG_USER_CHUNKS_SUPPORTED
1405
- png_voidp user_chunk_ptr PNG_DEPSTRUCT;
1406
- png_user_chunk_ptr read_user_chunk_fn PNG_DEPSTRUCT; /* user read
1407
- chunk handler */
1408
- #endif
1409
-
1410
- #ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
1411
- int num_chunk_list PNG_DEPSTRUCT;
1412
- png_bytep chunk_list PNG_DEPSTRUCT;
1413
- #endif
1414
-
1415
- /* New members added in libpng-1.0.3 */
1416
- #ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED
1417
- png_byte rgb_to_gray_status PNG_DEPSTRUCT;
1418
- /* These were changed from png_byte in libpng-1.0.6 */
1419
- png_uint_16 rgb_to_gray_red_coeff PNG_DEPSTRUCT;
1420
- png_uint_16 rgb_to_gray_green_coeff PNG_DEPSTRUCT;
1421
- png_uint_16 rgb_to_gray_blue_coeff PNG_DEPSTRUCT;
1422
- #endif
1423
-
1424
- /* New member added in libpng-1.0.4 (renamed in 1.0.9) */
1425
- #if defined(PNG_MNG_FEATURES_SUPPORTED) || \
1426
- defined(PNG_READ_EMPTY_PLTE_SUPPORTED) || \
1427
- defined(PNG_WRITE_EMPTY_PLTE_SUPPORTED)
1428
- /* Changed from png_byte to png_uint_32 at version 1.2.0 */
1429
- png_uint_32 mng_features_permitted PNG_DEPSTRUCT;
1430
- #endif
1431
-
1432
- /* New member added in libpng-1.0.7 */
1433
- #if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
1434
- png_fixed_point int_gamma PNG_DEPSTRUCT;
1435
- #endif
1436
-
1437
- /* New member added in libpng-1.0.9, ifdef'ed out in 1.0.12, enabled in 1.2.0 */
1438
- #ifdef PNG_MNG_FEATURES_SUPPORTED
1439
- png_byte filter_type PNG_DEPSTRUCT;
1440
- #endif
1441
-
1442
- /* New members added in libpng-1.2.0 */
1443
-
1444
- /* New members added in libpng-1.0.2 but first enabled by default in 1.2.0 */
1445
- #ifdef PNG_USER_MEM_SUPPORTED
1446
- png_voidp mem_ptr PNG_DEPSTRUCT; /* user supplied struct for
1447
- mem functions */
1448
- png_malloc_ptr malloc_fn PNG_DEPSTRUCT; /* function for
1449
- allocating memory */
1450
- png_free_ptr free_fn PNG_DEPSTRUCT; /* function for
1451
- freeing memory */
1452
- #endif
1453
-
1454
- /* New member added in libpng-1.0.13 and 1.2.0 */
1455
- png_bytep big_row_buf PNG_DEPSTRUCT; /* buffer to save current
1456
- (unfiltered) row */
1457
-
1458
- #ifdef PNG_READ_QUANTIZE_SUPPORTED
1459
- /* The following three members were added at version 1.0.14 and 1.2.4 */
1460
- png_bytep quantize_sort PNG_DEPSTRUCT; /* working sort array */
1461
- png_bytep index_to_palette PNG_DEPSTRUCT; /* where the original
1462
- index currently is
1463
- in the palette */
1464
- png_bytep palette_to_index PNG_DEPSTRUCT; /* which original index
1465
- points to this
1466
- palette color */
1467
- #endif
1468
-
1469
- /* New members added in libpng-1.0.16 and 1.2.6 */
1470
- png_byte compression_type PNG_DEPSTRUCT;
1471
-
1472
- #ifdef PNG_USER_LIMITS_SUPPORTED
1473
- png_uint_32 user_width_max PNG_DEPSTRUCT;
1474
- png_uint_32 user_height_max PNG_DEPSTRUCT;
1475
- /* Added in libpng-1.4.0: Total number of sPLT, text, and unknown
1476
- * chunks that can be stored (0 means unlimited).
1477
- */
1478
- png_uint_32 user_chunk_cache_max PNG_DEPSTRUCT;
1479
- #endif
1480
-
1481
- /* New member added in libpng-1.0.25 and 1.2.17 */
1482
- #ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED
1483
- /* Storage for unknown chunk that the library doesn't recognize. */
1484
- png_unknown_chunk unknown_chunk PNG_DEPSTRUCT;
1485
- #endif
1486
-
1487
- /* New members added in libpng-1.2.26 */
1488
- png_uint_32 old_big_row_buf_size PNG_DEPSTRUCT;
1489
- png_uint_32 old_prev_row_size PNG_DEPSTRUCT;
1490
-
1491
- /* New member added in libpng-1.2.30 */
1492
- png_charp chunkdata PNG_DEPSTRUCT; /* buffer for reading chunk data */
1493
-
1494
- #ifdef PNG_IO_STATE_SUPPORTED
1495
- /* New member added in libpng-1.4.0 */
1496
- png_uint_32 io_state PNG_DEPSTRUCT;
1497
- #endif
1498
- };
1499
-
1500
-
1501
- /* This triggers a compiler error in png.c, if png.c and png.h
1502
- * do not agree upon the version number.
1503
- */
1504
- typedef png_structp version_1_4_12;
1505
-
1506
- typedef png_struct FAR * FAR * png_structpp;
1507
-
1508
- /* Here are the function definitions most commonly used. This is not
1509
- * the place to find out how to use libpng. See libpng.txt for the
1510
- * full explanation, see example.c for the summary. This just provides
1511
- * a simple one line description of the use of each function.
1512
- */
1513
-
1514
- /* Returns the version number of the library */
1515
- PNG_EXPORT(png_uint_32,png_access_version_number) PNGARG((void));
1516
-
1517
- /* Tell lib we have already handled the first <num_bytes> magic bytes.
1518
- * Handling more than 8 bytes from the beginning of the file is an error.
1519
- */
1520
- PNG_EXPORT(void,png_set_sig_bytes) PNGARG((png_structp png_ptr,
1521
- int num_bytes));
1522
-
1523
- /* Check sig[start] through sig[start + num_to_check - 1] to see if it's a
1524
- * PNG file. Returns zero if the supplied bytes match the 8-byte PNG
1525
- * signature, and non-zero otherwise. Having num_to_check == 0 or
1526
- * start > 7 will always fail (ie return non-zero).
1527
- */
1528
- PNG_EXPORT(int,png_sig_cmp) PNGARG((png_bytep sig, png_size_t start,
1529
- png_size_t num_to_check));
1530
-
1531
- /* Simple signature checking function. This is the same as calling
1532
- * png_check_sig(sig, n) := !png_sig_cmp(sig, 0, n).
1533
- */
1534
- #define png_check_sig(sig,n) !png_sig_cmp((sig), 0, (n))
1535
-
1536
- /* Allocate and initialize png_ptr struct for reading, and any other memory. */
1537
- PNG_EXPORT(png_structp,png_create_read_struct)
1538
- PNGARG((png_const_charp user_png_ver, png_voidp error_ptr,
1539
- png_error_ptr error_fn, png_error_ptr warn_fn)) PNG_ALLOCATED;
1540
-
1541
- /* Allocate and initialize png_ptr struct for writing, and any other memory */
1542
- PNG_EXPORT(png_structp,png_create_write_struct)
1543
- PNGARG((png_const_charp user_png_ver, png_voidp error_ptr,
1544
- png_error_ptr error_fn, png_error_ptr warn_fn)) PNG_ALLOCATED;
1545
-
1546
- PNG_EXPORT(png_size_t,png_get_compression_buffer_size)
1547
- PNGARG((png_const_structp png_ptr));
1548
-
1549
- PNG_EXPORT(void,png_set_compression_buffer_size)
1550
- PNGARG((png_structp png_ptr, png_size_t size));
1551
-
1552
- /* Moved from pngconf.h in 1.4.0 and modified to ensure setjmp/longjmp
1553
- * match up.
1554
- */
1555
- #ifdef PNG_SETJMP_SUPPORTED
1556
- /* This function returns the jmp_buf built in to *png_ptr. It must be
1557
- * supplied with an appropriate 'longjmp' function to use on that jmp_buf
1558
- * unless the default error function is overridden in which case NULL is
1559
- * acceptable. The size of the jmp_buf is checked against the actual size
1560
- * allocated by the library - the call will return NULL on a mismatch
1561
- * indicating an ABI mismatch.
1562
- */
1563
- PNG_EXPORT(jmp_buf*, png_set_longjmp_fn)
1564
- PNGARG((png_structp png_ptr, png_longjmp_ptr longjmp_fn, size_t
1565
- jmp_buf_size));
1566
- # define png_jmpbuf(png_ptr) \
1567
- (*png_set_longjmp_fn((png_ptr), longjmp, sizeof (jmp_buf)))
1568
- #else
1569
- # define png_jmpbuf(png_ptr) \
1570
- (LIBPNG_WAS_COMPILED_WITH__PNG_NO_SETJMP)
1571
- #endif
1572
-
1573
- #ifdef PNG_READ_SUPPORTED
1574
- /* Reset the compression stream */
1575
- PNG_EXPORT(int,png_reset_zstream) PNGARG((png_structp png_ptr));
1576
- #endif
1577
-
1578
- /* New functions added in libpng-1.0.2 (not enabled by default until 1.2.0) */
1579
- #ifdef PNG_USER_MEM_SUPPORTED
1580
- PNG_EXPORT(png_structp,png_create_read_struct_2)
1581
- PNGARG((png_const_charp user_png_ver, png_voidp error_ptr,
1582
- png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr,
1583
- png_malloc_ptr malloc_fn, png_free_ptr free_fn)) PNG_ALLOCATED;
1584
- PNG_EXPORT(png_structp,png_create_write_struct_2)
1585
- PNGARG((png_const_charp user_png_ver, png_voidp error_ptr,
1586
- png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr,
1587
- png_malloc_ptr malloc_fn, png_free_ptr free_fn)) PNG_ALLOCATED;
1588
- #endif
1589
-
1590
- /* Write the PNG file signature. */
1591
- PNG_EXPORT(void,png_write_sig) PNGARG((png_structp png_ptr));
1592
-
1593
- /* Write a PNG chunk - size, type, (optional) data, CRC. */
1594
- PNG_EXPORT(void,png_write_chunk) PNGARG((png_structp png_ptr,
1595
- png_bytep chunk_name, png_bytep data, png_size_t length));
1596
-
1597
- /* Write the start of a PNG chunk - length and chunk name. */
1598
- PNG_EXPORT(void,png_write_chunk_start) PNGARG((png_structp png_ptr,
1599
- png_bytep chunk_name, png_uint_32 length));
1600
-
1601
- /* Write the data of a PNG chunk started with png_write_chunk_start(). */
1602
- PNG_EXPORT(void,png_write_chunk_data) PNGARG((png_structp png_ptr,
1603
- png_bytep data, png_size_t length));
1604
-
1605
- /* Finish a chunk started with png_write_chunk_start() (includes CRC). */
1606
- PNG_EXPORT(void,png_write_chunk_end) PNGARG((png_structp png_ptr));
1607
-
1608
- /* Allocate and initialize the info structure */
1609
- PNG_EXPORT(png_infop,png_create_info_struct)
1610
- PNGARG((png_structp png_ptr)) PNG_ALLOCATED;
1611
-
1612
- PNG_EXPORT(void,png_info_init_3) PNGARG((png_infopp info_ptr,
1613
- png_size_t png_info_struct_size));
1614
-
1615
- /* Writes all the PNG information before the image. */
1616
- PNG_EXPORT(void,png_write_info_before_PLTE) PNGARG((png_structp png_ptr,
1617
- png_infop info_ptr));
1618
- PNG_EXPORT(void,png_write_info) PNGARG((png_structp png_ptr,
1619
- png_infop info_ptr));
1620
-
1621
- #ifdef PNG_SEQUENTIAL_READ_SUPPORTED
1622
- /* Read the information before the actual image data. */
1623
- PNG_EXPORT(void,png_read_info) PNGARG((png_structp png_ptr,
1624
- png_infop info_ptr));
1625
- #endif
1626
-
1627
- #ifdef PNG_TIME_RFC1123_SUPPORTED
1628
- PNG_EXPORT(png_charp,png_convert_to_rfc1123)
1629
- PNGARG((png_structp png_ptr, png_timep ptime));
1630
- #endif
1631
-
1632
- #ifdef PNG_CONVERT_tIME_SUPPORTED
1633
- /* Convert from a struct tm to png_time */
1634
- PNG_EXPORT(void,png_convert_from_struct_tm) PNGARG((png_timep ptime,
1635
- struct tm FAR * ttime));
1636
-
1637
- /* Convert from time_t to png_time. Uses gmtime() */
1638
- PNG_EXPORT(void,png_convert_from_time_t) PNGARG((png_timep ptime,
1639
- time_t ttime));
1640
- #endif /* PNG_CONVERT_tIME_SUPPORTED */
1641
-
1642
- #ifdef PNG_READ_EXPAND_SUPPORTED
1643
- /* Expand data to 24-bit RGB, or 8-bit grayscale, with alpha if available. */
1644
- PNG_EXPORT(void,png_set_expand) PNGARG((png_structp png_ptr));
1645
- PNG_EXPORT(void,png_set_expand_gray_1_2_4_to_8) PNGARG((png_structp
1646
- png_ptr));
1647
- PNG_EXPORT(void,png_set_palette_to_rgb) PNGARG((png_structp png_ptr));
1648
- PNG_EXPORT(void,png_set_tRNS_to_alpha) PNGARG((png_structp png_ptr));
1649
- #endif
1650
-
1651
- #if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED)
1652
- /* Use blue, green, red order for pixels. */
1653
- PNG_EXPORT(void,png_set_bgr) PNGARG((png_structp png_ptr));
1654
- #endif
1655
-
1656
- #ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED
1657
- /* Expand the grayscale to 24-bit RGB if necessary. */
1658
- PNG_EXPORT(void,png_set_gray_to_rgb) PNGARG((png_structp png_ptr));
1659
- #endif
1660
-
1661
- #ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED
1662
- /* Reduce RGB to grayscale. */
1663
- #ifdef PNG_FLOATING_POINT_SUPPORTED
1664
- PNG_EXPORT(void,png_set_rgb_to_gray) PNGARG((png_structp png_ptr,
1665
- int error_action, double red, double green ));
1666
- #endif
1667
- PNG_EXPORT(void,png_set_rgb_to_gray_fixed) PNGARG((png_structp png_ptr,
1668
- int error_action, png_fixed_point red, png_fixed_point green ));
1669
- PNG_EXPORT(png_byte,png_get_rgb_to_gray_status) PNGARG((png_const_structp
1670
- png_ptr));
1671
- #endif
1672
-
1673
- PNG_EXPORT(void,png_build_grayscale_palette) PNGARG((int bit_depth,
1674
- png_colorp palette));
1675
-
1676
- #ifdef PNG_READ_STRIP_ALPHA_SUPPORTED
1677
- PNG_EXPORT(void,png_set_strip_alpha) PNGARG((png_structp png_ptr));
1678
- #endif
1679
-
1680
- #if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) || \
1681
- defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED)
1682
- PNG_EXPORT(void,png_set_swap_alpha) PNGARG((png_structp png_ptr));
1683
- #endif
1684
-
1685
- #if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) || \
1686
- defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED)
1687
- PNG_EXPORT(void,png_set_invert_alpha) PNGARG((png_structp png_ptr));
1688
- #endif
1689
-
1690
- #if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED)
1691
- /* Add a filler byte to 8-bit Gray or 24-bit RGB images. */
1692
- PNG_EXPORT(void,png_set_filler) PNGARG((png_structp png_ptr,
1693
- png_uint_32 filler, int flags));
1694
- /* The values of the PNG_FILLER_ defines should NOT be changed */
1695
- #define PNG_FILLER_BEFORE 0
1696
- #define PNG_FILLER_AFTER 1
1697
- /* Add an alpha byte to 8-bit Gray or 24-bit RGB images. */
1698
- PNG_EXPORT(void,png_set_add_alpha) PNGARG((png_structp png_ptr,
1699
- png_uint_32 filler, int flags));
1700
- #endif /* PNG_READ_FILLER_SUPPORTED || PNG_WRITE_FILLER_SUPPORTED */
1701
-
1702
- #if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED)
1703
- /* Swap bytes in 16-bit depth files. */
1704
- PNG_EXPORT(void,png_set_swap) PNGARG((png_structp png_ptr));
1705
- #endif
1706
-
1707
- #if defined(PNG_READ_PACK_SUPPORTED) || defined(PNG_WRITE_PACK_SUPPORTED)
1708
- /* Use 1 byte per pixel in 1, 2, or 4-bit depth files. */
1709
- PNG_EXPORT(void,png_set_packing) PNGARG((png_structp png_ptr));
1710
- #endif
1711
-
1712
- #if defined(PNG_READ_PACKSWAP_SUPPORTED) || \
1713
- defined(PNG_WRITE_PACKSWAP_SUPPORTED)
1714
- /* Swap packing order of pixels in bytes. */
1715
- PNG_EXPORT(void,png_set_packswap) PNGARG((png_structp png_ptr));
1716
- #endif
1717
-
1718
- #if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED)
1719
- /* Converts files to legal bit depths. */
1720
- PNG_EXPORT(void,png_set_shift) PNGARG((png_structp png_ptr,
1721
- png_color_8p true_bits));
1722
- #endif
1723
-
1724
- #if defined(PNG_READ_INTERLACING_SUPPORTED) || \
1725
- defined(PNG_WRITE_INTERLACING_SUPPORTED)
1726
- /* Have the code handle the interlacing. Returns the number of passes. */
1727
- PNG_EXPORT(int,png_set_interlace_handling) PNGARG((png_structp png_ptr));
1728
- #endif
1729
-
1730
- #if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED)
1731
- /* Invert monochrome files */
1732
- PNG_EXPORT(void,png_set_invert_mono) PNGARG((png_structp png_ptr));
1733
- #endif
1734
-
1735
- #ifdef PNG_READ_BACKGROUND_SUPPORTED
1736
- /* Handle alpha and tRNS by replacing with a background color. */
1737
- #ifdef PNG_FLOATING_POINT_SUPPORTED
1738
- PNG_EXPORT(void,png_set_background) PNGARG((png_structp png_ptr,
1739
- png_color_16p background_color, int background_gamma_code,
1740
- int need_expand, double background_gamma));
1741
- #endif
1742
- #define PNG_BACKGROUND_GAMMA_UNKNOWN 0
1743
- #define PNG_BACKGROUND_GAMMA_SCREEN 1
1744
- #define PNG_BACKGROUND_GAMMA_FILE 2
1745
- #define PNG_BACKGROUND_GAMMA_UNIQUE 3
1746
- #endif
1747
-
1748
- #ifdef PNG_READ_16_TO_8_SUPPORTED
1749
- /* Strip the second byte of information from a 16-bit depth file. */
1750
- PNG_EXPORT(void,png_set_strip_16) PNGARG((png_structp png_ptr));
1751
- #endif
1752
-
1753
- #ifdef PNG_READ_QUANTIZE_SUPPORTED
1754
- /* Turn on quantizing, and reduce the palette to the number of colors
1755
- * available. Prior to libpng-1.4.2, this was png_set_dither().
1756
- */
1757
- PNG_EXPORT(void,png_set_quantize) PNGARG((png_structp png_ptr,
1758
- png_colorp palette, int num_palette, int maximum_colors,
1759
- png_uint_16p histogram, int full_quantize));
1760
- #endif
1761
- /* This migration aid will be removed from libpng-1.5.0 */
1762
- #define png_set_dither png_set_quantize
1763
-
1764
- #ifdef PNG_READ_GAMMA_SUPPORTED
1765
- /* Handle gamma correction. Screen_gamma=(display_exponent) */
1766
- #ifdef PNG_FLOATING_POINT_SUPPORTED
1767
- PNG_EXPORT(void,png_set_gamma) PNGARG((png_structp png_ptr,
1768
- double screen_gamma, double default_file_gamma));
1769
- #endif
1770
- #endif
1771
-
1772
-
1773
- #ifdef PNG_WRITE_FLUSH_SUPPORTED
1774
- /* Set how many lines between output flushes - 0 for no flushing */
1775
- PNG_EXPORT(void,png_set_flush) PNGARG((png_structp png_ptr, int nrows));
1776
- /* Flush the current PNG output buffer */
1777
- PNG_EXPORT(void,png_write_flush) PNGARG((png_structp png_ptr));
1778
- #endif
1779
-
1780
- /* Optional update palette with requested transformations */
1781
- PNG_EXPORT(void,png_start_read_image) PNGARG((png_structp png_ptr));
1782
-
1783
- /* Optional call to update the users info structure */
1784
- PNG_EXPORT(void,png_read_update_info) PNGARG((png_structp png_ptr,
1785
- png_infop info_ptr));
1786
-
1787
- #ifdef PNG_SEQUENTIAL_READ_SUPPORTED
1788
- /* Read one or more rows of image data. */
1789
- PNG_EXPORT(void,png_read_rows) PNGARG((png_structp png_ptr,
1790
- png_bytepp row, png_bytepp display_row, png_uint_32 num_rows));
1791
- #endif
1792
-
1793
- #ifdef PNG_SEQUENTIAL_READ_SUPPORTED
1794
- /* Read a row of data. */
1795
- PNG_EXPORT(void,png_read_row) PNGARG((png_structp png_ptr,
1796
- png_bytep row,
1797
- png_bytep display_row));
1798
- #endif
1799
-
1800
- #ifdef PNG_SEQUENTIAL_READ_SUPPORTED
1801
- /* Read the whole image into memory at once. */
1802
- PNG_EXPORT(void,png_read_image) PNGARG((png_structp png_ptr,
1803
- png_bytepp image));
1804
- #endif
1805
-
1806
- /* Write a row of image data */
1807
- PNG_EXPORT(void,png_write_row) PNGARG((png_structp png_ptr,
1808
- png_bytep row));
1809
-
1810
- /* Write a few rows of image data */
1811
- PNG_EXPORT(void,png_write_rows) PNGARG((png_structp png_ptr,
1812
- png_bytepp row, png_uint_32 num_rows));
1813
-
1814
- /* Write the image data */
1815
- PNG_EXPORT(void,png_write_image) PNGARG((png_structp png_ptr,
1816
- png_bytepp image));
1817
-
1818
- /* Write the end of the PNG file. */
1819
- PNG_EXPORT(void,png_write_end) PNGARG((png_structp png_ptr,
1820
- png_infop info_ptr));
1821
-
1822
- #ifdef PNG_SEQUENTIAL_READ_SUPPORTED
1823
- /* Read the end of the PNG file. */
1824
- PNG_EXPORT(void,png_read_end) PNGARG((png_structp png_ptr,
1825
- png_infop info_ptr));
1826
- #endif
1827
-
1828
- /* Free any memory associated with the png_info_struct */
1829
- PNG_EXPORT(void,png_destroy_info_struct) PNGARG((png_structp png_ptr,
1830
- png_infopp info_ptr_ptr));
1831
-
1832
- /* Free any memory associated with the png_struct and the png_info_structs */
1833
- PNG_EXPORT(void,png_destroy_read_struct) PNGARG((png_structpp
1834
- png_ptr_ptr, png_infopp info_ptr_ptr, png_infopp end_info_ptr_ptr));
1835
-
1836
- /* Free any memory associated with the png_struct and the png_info_structs */
1837
- PNG_EXPORT(void,png_destroy_write_struct)
1838
- PNGARG((png_structpp png_ptr_ptr, png_infopp info_ptr_ptr));
1839
-
1840
- /* Set the libpng method of handling chunk CRC errors */
1841
- PNG_EXPORT(void,png_set_crc_action) PNGARG((png_structp png_ptr,
1842
- int crit_action, int ancil_action));
1843
-
1844
- /* Values for png_set_crc_action() to say how to handle CRC errors in
1845
- * ancillary and critical chunks, and whether to use the data contained
1846
- * therein. Note that it is impossible to "discard" data in a critical
1847
- * chunk. For versions prior to 0.90, the action was always error/quit,
1848
- * whereas in version 0.90 and later, the action for CRC errors in ancillary
1849
- * chunks is warn/discard. These values should NOT be changed.
1850
- *
1851
- * value action:critical action:ancillary
1852
- */
1853
- #define PNG_CRC_DEFAULT 0 /* error/quit warn/discard data */
1854
- #define PNG_CRC_ERROR_QUIT 1 /* error/quit error/quit */
1855
- #define PNG_CRC_WARN_DISCARD 2 /* (INVALID) warn/discard data */
1856
- #define PNG_CRC_WARN_USE 3 /* warn/use data warn/use data */
1857
- #define PNG_CRC_QUIET_USE 4 /* quiet/use data quiet/use data */
1858
- #define PNG_CRC_NO_CHANGE 5 /* use current value use current value */
1859
-
1860
- /* These functions give the user control over the scan-line filtering in
1861
- * libpng and the compression methods used by zlib. These functions are
1862
- * mainly useful for testing, as the defaults should work with most users.
1863
- * Those users who are tight on memory or want faster performance at the
1864
- * expense of compression can modify them. See the compression library
1865
- * header file (zlib.h) for an explination of the compression functions.
1866
- */
1867
-
1868
- /* Set the filtering method(s) used by libpng. Currently, the only valid
1869
- * value for "method" is 0.
1870
- */
1871
- PNG_EXPORT(void,png_set_filter) PNGARG((png_structp png_ptr, int method,
1872
- int filters));
1873
-
1874
- /* Flags for png_set_filter() to say which filters to use. The flags
1875
- * are chosen so that they don't conflict with real filter types
1876
- * below, in case they are supplied instead of the #defined constants.
1877
- * These values should NOT be changed.
1878
- */
1879
- #define PNG_NO_FILTERS 0x00
1880
- #define PNG_FILTER_NONE 0x08
1881
- #define PNG_FILTER_SUB 0x10
1882
- #define PNG_FILTER_UP 0x20
1883
- #define PNG_FILTER_AVG 0x40
1884
- #define PNG_FILTER_PAETH 0x80
1885
- #define PNG_ALL_FILTERS (PNG_FILTER_NONE | PNG_FILTER_SUB | PNG_FILTER_UP | \
1886
- PNG_FILTER_AVG | PNG_FILTER_PAETH)
1887
-
1888
- /* Filter values (not flags) - used in pngwrite.c, pngwutil.c for now.
1889
- * These defines should NOT be changed.
1890
- */
1891
- #define PNG_FILTER_VALUE_NONE 0
1892
- #define PNG_FILTER_VALUE_SUB 1
1893
- #define PNG_FILTER_VALUE_UP 2
1894
- #define PNG_FILTER_VALUE_AVG 3
1895
- #define PNG_FILTER_VALUE_PAETH 4
1896
- #define PNG_FILTER_VALUE_LAST 5
1897
-
1898
- #ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED /* EXPERIMENTAL */
1899
- /* The "heuristic_method" is given by one of the PNG_FILTER_HEURISTIC_
1900
- * defines, either the default (minimum-sum-of-absolute-differences), or
1901
- * the experimental method (weighted-minimum-sum-of-absolute-differences).
1902
- *
1903
- * Weights are factors >= 1.0, indicating how important it is to keep the
1904
- * filter type consistent between rows. Larger numbers mean the current
1905
- * filter is that many times as likely to be the same as the "num_weights"
1906
- * previous filters. This is cumulative for each previous row with a weight.
1907
- * There needs to be "num_weights" values in "filter_weights", or it can be
1908
- * NULL if the weights aren't being specified. Weights have no influence on
1909
- * the selection of the first row filter. Well chosen weights can (in theory)
1910
- * improve the compression for a given image.
1911
- *
1912
- * Costs are factors >= 1.0 indicating the relative decoding costs of a
1913
- * filter type. Higher costs indicate more decoding expense, and are
1914
- * therefore less likely to be selected over a filter with lower computational
1915
- * costs. There needs to be a value in "filter_costs" for each valid filter
1916
- * type (given by PNG_FILTER_VALUE_LAST), or it can be NULL if you aren't
1917
- * setting the costs. Costs try to improve the speed of decompression without
1918
- * unduly increasing the compressed image size.
1919
- *
1920
- * A negative weight or cost indicates the default value is to be used, and
1921
- * values in the range [0.0, 1.0) indicate the value is to remain unchanged.
1922
- * The default values for both weights and costs are currently 1.0, but may
1923
- * change if good general weighting/cost heuristics can be found. If both
1924
- * the weights and costs are set to 1.0, this degenerates the WEIGHTED method
1925
- * to the UNWEIGHTED method, but with added encoding time/computation.
1926
- */
1927
- #ifdef PNG_FLOATING_POINT_SUPPORTED
1928
- PNG_EXPORT(void,png_set_filter_heuristics) PNGARG((png_structp png_ptr,
1929
- int heuristic_method, int num_weights, png_doublep filter_weights,
1930
- png_doublep filter_costs));
1931
- #endif
1932
- #endif /* PNG_WRITE_WEIGHTED_FILTER_SUPPORTED */
1933
-
1934
- /* Heuristic used for row filter selection. These defines should NOT be
1935
- * changed.
1936
- */
1937
- #define PNG_FILTER_HEURISTIC_DEFAULT 0 /* Currently "UNWEIGHTED" */
1938
- #define PNG_FILTER_HEURISTIC_UNWEIGHTED 1 /* Used by libpng < 0.95 */
1939
- #define PNG_FILTER_HEURISTIC_WEIGHTED 2 /* Experimental feature */
1940
- #define PNG_FILTER_HEURISTIC_LAST 3 /* Not a valid value */
1941
-
1942
- /* Set the library compression level. Currently, valid values range from
1943
- * 0 - 9, corresponding directly to the zlib compression levels 0 - 9
1944
- * (0 - no compression, 9 - "maximal" compression). Note that tests have
1945
- * shown that zlib compression levels 3-6 usually perform as well as level 9
1946
- * for PNG images, and do considerably fewer caclulations. In the future,
1947
- * these values may not correspond directly to the zlib compression levels.
1948
- */
1949
- PNG_EXPORT(void,png_set_compression_level) PNGARG((png_structp png_ptr,
1950
- int level));
1951
-
1952
- PNG_EXPORT(void,png_set_compression_mem_level)
1953
- PNGARG((png_structp png_ptr, int mem_level));
1954
-
1955
- PNG_EXPORT(void,png_set_compression_strategy)
1956
- PNGARG((png_structp png_ptr, int strategy));
1957
-
1958
- PNG_EXPORT(void,png_set_compression_window_bits)
1959
- PNGARG((png_structp png_ptr, int window_bits));
1960
-
1961
- PNG_EXPORT(void,png_set_compression_method) PNGARG((png_structp png_ptr,
1962
- int method));
1963
-
1964
- /* These next functions are called for input/output, memory, and error
1965
- * handling. They are in the file pngrio.c, pngwio.c, and pngerror.c,
1966
- * and call standard C I/O routines such as fread(), fwrite(), and
1967
- * fprintf(). These functions can be made to use other I/O routines
1968
- * at run time for those applications that need to handle I/O in a
1969
- * different manner by calling png_set_???_fn(). See libpng.txt for
1970
- * more information.
1971
- */
1972
-
1973
- #ifdef PNG_STDIO_SUPPORTED
1974
- /* Initialize the input/output for the PNG file to the default functions. */
1975
- PNG_EXPORT(void,png_init_io) PNGARG((png_structp png_ptr,
1976
- png_FILE_p fp));
1977
- #endif
1978
-
1979
- /* Replace the (error and abort), and warning functions with user
1980
- * supplied functions. If no messages are to be printed you must still
1981
- * write and use replacement functions. The replacement error_fn should
1982
- * still do a longjmp to the last setjmp location if you are using this
1983
- * method of error handling. If error_fn or warning_fn is NULL, the
1984
- * default function will be used.
1985
- */
1986
-
1987
- PNG_EXPORT(void,png_set_error_fn) PNGARG((png_structp png_ptr,
1988
- png_voidp error_ptr, png_error_ptr error_fn, png_error_ptr warning_fn));
1989
-
1990
- /* Return the user pointer associated with the error functions */
1991
- PNG_EXPORT(png_voidp,png_get_error_ptr) PNGARG((png_const_structp png_ptr));
1992
-
1993
- /* Replace the default data output functions with a user supplied one(s).
1994
- * If buffered output is not used, then output_flush_fn can be set to NULL.
1995
- * If PNG_WRITE_FLUSH_SUPPORTED is not defined at libpng compile time
1996
- * output_flush_fn will be ignored (and thus can be NULL).
1997
- * It is probably a mistake to use NULL for output_flush_fn if
1998
- * write_data_fn is not also NULL unless you have built libpng with
1999
- * PNG_WRITE_FLUSH_SUPPORTED undefined, because in this case libpng's
2000
- * default flush function, which uses the standard *FILE structure, will
2001
- * be used.
2002
- */
2003
- PNG_EXPORT(void,png_set_write_fn) PNGARG((png_structp png_ptr,
2004
- png_voidp io_ptr, png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn));
2005
-
2006
- /* Replace the default data input function with a user supplied one. */
2007
- PNG_EXPORT(void,png_set_read_fn) PNGARG((png_structp png_ptr,
2008
- png_voidp io_ptr, png_rw_ptr read_data_fn));
2009
-
2010
- /* Return the user pointer associated with the I/O functions */
2011
- PNG_EXPORT(png_voidp,png_get_io_ptr) PNGARG((png_structp png_ptr));
2012
-
2013
- PNG_EXPORT(void,png_set_read_status_fn) PNGARG((png_structp png_ptr,
2014
- png_read_status_ptr read_row_fn));
2015
-
2016
- PNG_EXPORT(void,png_set_write_status_fn) PNGARG((png_structp png_ptr,
2017
- png_write_status_ptr write_row_fn));
2018
-
2019
- #ifdef PNG_USER_MEM_SUPPORTED
2020
- /* Replace the default memory allocation functions with user supplied one(s). */
2021
- PNG_EXPORT(void,png_set_mem_fn) PNGARG((png_structp png_ptr,
2022
- png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn));
2023
- /* Return the user pointer associated with the memory functions */
2024
- PNG_EXPORT(png_voidp,png_get_mem_ptr) PNGARG((png_const_structp png_ptr));
2025
- #endif
2026
-
2027
- #ifdef PNG_READ_USER_TRANSFORM_SUPPORTED
2028
- PNG_EXPORT(void,png_set_read_user_transform_fn) PNGARG((png_structp
2029
- png_ptr, png_user_transform_ptr read_user_transform_fn));
2030
- #endif
2031
-
2032
- #ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED
2033
- PNG_EXPORT(void,png_set_write_user_transform_fn) PNGARG((png_structp
2034
- png_ptr, png_user_transform_ptr write_user_transform_fn));
2035
- #endif
2036
-
2037
- #if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \
2038
- defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
2039
- PNG_EXPORT(void,png_set_user_transform_info) PNGARG((png_structp
2040
- png_ptr, png_voidp user_transform_ptr, int user_transform_depth,
2041
- int user_transform_channels));
2042
- /* Return the user pointer associated with the user transform functions */
2043
- PNG_EXPORT(png_voidp,png_get_user_transform_ptr)
2044
- PNGARG((png_const_structp png_ptr));
2045
- #endif
2046
-
2047
- #ifdef PNG_USER_CHUNKS_SUPPORTED
2048
- PNG_EXPORT(void,png_set_read_user_chunk_fn) PNGARG((png_structp png_ptr,
2049
- png_voidp user_chunk_ptr, png_user_chunk_ptr read_user_chunk_fn));
2050
- PNG_EXPORT(png_voidp,png_get_user_chunk_ptr) PNGARG((png_const_structp
2051
- png_ptr));
2052
- #endif
2053
-
2054
- #ifdef PNG_PROGRESSIVE_READ_SUPPORTED
2055
- /* Sets the function callbacks for the push reader, and a pointer to a
2056
- * user-defined structure available to the callback functions.
2057
- */
2058
- PNG_EXPORT(void,png_set_progressive_read_fn) PNGARG((png_structp png_ptr,
2059
- png_voidp progressive_ptr,
2060
- png_progressive_info_ptr info_fn, png_progressive_row_ptr row_fn,
2061
- png_progressive_end_ptr end_fn));
2062
-
2063
- /* Returns the user pointer associated with the push read functions */
2064
- PNG_EXPORT(png_voidp,png_get_progressive_ptr)
2065
- PNGARG((png_const_structp png_ptr));
2066
-
2067
- /* Function to be called when data becomes available */
2068
- PNG_EXPORT(void,png_process_data) PNGARG((png_structp png_ptr,
2069
- png_infop info_ptr, png_bytep buffer, png_size_t buffer_size));
2070
-
2071
- /* Function that combines rows. Not very much different than the
2072
- * png_combine_row() call. Is this even used?????
2073
- */
2074
- PNG_EXPORT(void,png_progressive_combine_row) PNGARG((png_structp png_ptr,
2075
- png_bytep old_row, png_bytep new_row));
2076
- #endif /* PNG_PROGRESSIVE_READ_SUPPORTED */
2077
-
2078
- PNG_EXPORT(png_voidp,png_malloc) PNGARG((png_structp png_ptr,
2079
- png_alloc_size_t size)) PNG_ALLOCATED;
2080
- /* Added at libpng version 1.4.0 */
2081
- PNG_EXPORT(png_voidp,png_calloc) PNGARG((png_structp png_ptr,
2082
- png_alloc_size_t size)) PNG_ALLOCATED;
2083
-
2084
- /* Added at libpng version 1.2.4 */
2085
- PNG_EXPORT(png_voidp,png_malloc_warn) PNGARG((png_structp png_ptr,
2086
- png_alloc_size_t size)) PNG_ALLOCATED;
2087
-
2088
- /* Frees a pointer allocated by png_malloc() */
2089
- PNG_EXPORT(void,png_free) PNGARG((png_structp png_ptr, png_voidp ptr));
2090
-
2091
- /* Free data that was allocated internally */
2092
- PNG_EXPORT(void,png_free_data) PNGARG((png_structp png_ptr,
2093
- png_infop info_ptr, png_uint_32 free_me, int num));
2094
- /* Reassign responsibility for freeing existing data, whether allocated
2095
- * by libpng or by the application */
2096
- PNG_EXPORT(void,png_data_freer) PNGARG((png_structp png_ptr,
2097
- png_infop info_ptr, int freer, png_uint_32 mask));
2098
- /* Assignments for png_data_freer */
2099
- #define PNG_DESTROY_WILL_FREE_DATA 1
2100
- #define PNG_SET_WILL_FREE_DATA 1
2101
- #define PNG_USER_WILL_FREE_DATA 2
2102
- /* Flags for png_ptr->free_me and info_ptr->free_me */
2103
- #define PNG_FREE_HIST 0x0008
2104
- #define PNG_FREE_ICCP 0x0010
2105
- #define PNG_FREE_SPLT 0x0020
2106
- #define PNG_FREE_ROWS 0x0040
2107
- #define PNG_FREE_PCAL 0x0080
2108
- #define PNG_FREE_SCAL 0x0100
2109
- #define PNG_FREE_UNKN 0x0200
2110
- #define PNG_FREE_LIST 0x0400
2111
- #define PNG_FREE_PLTE 0x1000
2112
- #define PNG_FREE_TRNS 0x2000
2113
- #define PNG_FREE_TEXT 0x4000
2114
- #define PNG_FREE_ALL 0x7fff
2115
- #define PNG_FREE_MUL 0x4220 /* PNG_FREE_SPLT|PNG_FREE_TEXT|PNG_FREE_UNKN */
2116
-
2117
- #ifdef PNG_USER_MEM_SUPPORTED
2118
- PNG_EXPORT(png_voidp,png_malloc_default) PNGARG((png_structp png_ptr,
2119
- png_alloc_size_t size)) PNG_ALLOCATED;
2120
- PNG_EXPORT(void,png_free_default) PNGARG((png_structp png_ptr,
2121
- png_voidp ptr));
2122
- #endif
2123
-
2124
- #ifndef PNG_NO_ERROR_TEXT
2125
- /* Fatal error in PNG image of libpng - can't continue */
2126
- PNG_EXPORT(void,png_error) PNGARG((png_structp png_ptr,
2127
- png_const_charp error_message)) PNG_NORETURN;
2128
-
2129
- /* The same, but the chunk name is prepended to the error string. */
2130
- PNG_EXPORT(void,png_chunk_error) PNGARG((png_structp png_ptr,
2131
- png_const_charp error_message)) PNG_NORETURN;
2132
-
2133
- #else
2134
- /* Fatal error in PNG image of libpng - can't continue */
2135
- PNG_EXPORT(void,png_err) PNGARG((png_structp png_ptr)) PNG_NORETURN;
2136
- #endif
2137
-
2138
- /* Non-fatal error in libpng. Can continue, but may have a problem. */
2139
- PNG_EXPORT(void,png_warning) PNGARG((png_structp png_ptr,
2140
- png_const_charp warning_message));
2141
-
2142
- /* Non-fatal error in libpng, chunk name is prepended to message. */
2143
- PNG_EXPORT(void,png_chunk_warning) PNGARG((png_structp png_ptr,
2144
- png_const_charp warning_message));
2145
-
2146
- #ifdef PNG_BENIGN_ERRORS_SUPPORTED
2147
- /* Benign error in libpng. Can continue, but may have a problem.
2148
- * User can choose whether to handle as a fatal error or as a warning. */
2149
- PNG_EXPORT(void,png_benign_error) PNGARG((png_structp png_ptr,
2150
- png_const_charp warning_message));
2151
-
2152
- /* Same, chunk name is prepended to message. */
2153
- PNG_EXPORT(void,png_chunk_benign_error) PNGARG((png_structp png_ptr,
2154
- png_const_charp warning_message));
2155
-
2156
- PNG_EXPORT(void,png_set_benign_errors) PNGARG((png_structp
2157
- png_ptr, int allowed));
2158
- #endif
2159
-
2160
- /* The png_set_<chunk> functions are for storing values in the png_info_struct.
2161
- * Similarly, the png_get_<chunk> calls are used to read values from the
2162
- * png_info_struct, either storing the parameters in the passed variables, or
2163
- * setting pointers into the png_info_struct where the data is stored. The
2164
- * png_get_<chunk> functions return a non-zero value if the data was available
2165
- * in info_ptr, or return zero and do not change any of the parameters if the
2166
- * data was not available.
2167
- *
2168
- * These functions should be used instead of directly accessing png_info
2169
- * to avoid problems with future changes in the size and internal layout of
2170
- * png_info_struct.
2171
- */
2172
- /* Returns "flag" if chunk data is valid in info_ptr. */
2173
- PNG_EXPORT(png_uint_32,png_get_valid) PNGARG((png_const_structp png_ptr,
2174
- png_const_infop info_ptr, png_uint_32 flag));
2175
-
2176
- /* Returns number of bytes needed to hold a transformed row. */
2177
- PNG_EXPORT(png_size_t,png_get_rowbytes) PNGARG((png_const_structp png_ptr,
2178
- png_const_infop info_ptr));
2179
-
2180
- #ifdef PNG_INFO_IMAGE_SUPPORTED
2181
- /* Returns row_pointers, which is an array of pointers to scanlines that was
2182
- * returned from png_read_png().
2183
- */
2184
- PNG_EXPORT(png_bytepp,png_get_rows) PNGARG((png_const_structp png_ptr,
2185
- png_const_infop info_ptr));
2186
- /* Set row_pointers, which is an array of pointers to scanlines for use
2187
- * by png_write_png().
2188
- */
2189
- PNG_EXPORT(void,png_set_rows) PNGARG((png_structp png_ptr,
2190
- png_infop info_ptr, png_bytepp row_pointers));
2191
- #endif
2192
-
2193
- /* Returns number of color channels in image. */
2194
- PNG_EXPORT(png_byte,png_get_channels) PNGARG((png_const_structp png_ptr,
2195
- png_const_infop info_ptr));
2196
-
2197
- #ifdef PNG_EASY_ACCESS_SUPPORTED
2198
- /* Returns image width in pixels. */
2199
- PNG_EXPORT(png_uint_32, png_get_image_width) PNGARG((png_const_structp
2200
- png_ptr, png_const_infop info_ptr));
2201
-
2202
- /* Returns image height in pixels. */
2203
- PNG_EXPORT(png_uint_32, png_get_image_height) PNGARG((png_const_structp
2204
- png_ptr, png_const_infop info_ptr));
2205
-
2206
- /* Returns image bit_depth. */
2207
- PNG_EXPORT(png_byte, png_get_bit_depth) PNGARG((png_const_structp
2208
- png_ptr, png_const_infop info_ptr));
2209
-
2210
- /* Returns image color_type. */
2211
- PNG_EXPORT(png_byte, png_get_color_type) PNGARG((png_const_structp
2212
- png_ptr, png_const_infop info_ptr));
2213
-
2214
- /* Returns image filter_type. */
2215
- PNG_EXPORT(png_byte, png_get_filter_type) PNGARG((png_const_structp
2216
- png_ptr, png_const_infop info_ptr));
2217
-
2218
- /* Returns image interlace_type. */
2219
- PNG_EXPORT(png_byte, png_get_interlace_type) PNGARG((png_const_structp
2220
- png_ptr, png_const_infop info_ptr));
2221
-
2222
- /* Returns image compression_type. */
2223
- PNG_EXPORT(png_byte, png_get_compression_type) PNGARG((png_const_structp
2224
- png_ptr, png_const_infop info_ptr));
2225
-
2226
- /* Returns image resolution in pixels per meter, from pHYs chunk data. */
2227
- PNG_EXPORT(png_uint_32, png_get_pixels_per_meter) PNGARG((png_const_structp
2228
- png_ptr, png_const_infop info_ptr));
2229
- PNG_EXPORT(png_uint_32, png_get_x_pixels_per_meter) PNGARG((png_const_structp
2230
- png_ptr, png_const_infop info_ptr));
2231
- PNG_EXPORT(png_uint_32, png_get_y_pixels_per_meter) PNGARG((png_const_structp
2232
- png_ptr, png_const_infop info_ptr));
2233
-
2234
- /* Returns pixel aspect ratio, computed from pHYs chunk data. */
2235
- #ifdef PNG_FLOATING_POINT_SUPPORTED
2236
- PNG_EXPORT(float, png_get_pixel_aspect_ratio) PNGARG((png_const_structp
2237
- png_ptr, png_const_infop info_ptr));
2238
- #endif
2239
-
2240
- /* Returns image x, y offset in pixels or microns, from oFFs chunk data. */
2241
- PNG_EXPORT(png_int_32, png_get_x_offset_pixels) PNGARG((png_const_structp
2242
- png_ptr, png_const_infop info_ptr));
2243
- PNG_EXPORT(png_int_32, png_get_y_offset_pixels) PNGARG((png_const_structp
2244
- png_ptr, png_const_infop info_ptr));
2245
- PNG_EXPORT(png_int_32, png_get_x_offset_microns) PNGARG((png_const_structp
2246
- png_ptr, png_const_infop info_ptr));
2247
- PNG_EXPORT(png_int_32, png_get_y_offset_microns) PNGARG((png_const_structp
2248
- png_ptr, png_const_infop info_ptr));
2249
-
2250
- #endif /* PNG_EASY_ACCESS_SUPPORTED */
2251
-
2252
- /* Returns pointer to signature string read from PNG header */
2253
- PNG_EXPORT(png_bytep,png_get_signature) PNGARG((png_const_structp png_ptr,
2254
- png_infop info_ptr));
2255
-
2256
- #ifdef PNG_bKGD_SUPPORTED
2257
- PNG_EXPORT(png_uint_32,png_get_bKGD) PNGARG((png_const_structp png_ptr,
2258
- png_infop info_ptr, png_color_16p *background));
2259
- #endif
2260
-
2261
- #ifdef PNG_bKGD_SUPPORTED
2262
- PNG_EXPORT(void,png_set_bKGD) PNGARG((png_structp png_ptr,
2263
- png_infop info_ptr, png_color_16p background));
2264
- #endif
2265
-
2266
- #ifdef PNG_cHRM_SUPPORTED
2267
- #ifdef PNG_FLOATING_POINT_SUPPORTED
2268
- PNG_EXPORT(png_uint_32,png_get_cHRM) PNGARG((png_const_structp png_ptr,
2269
- png_const_infop info_ptr, double *white_x, double *white_y, double *red_x,
2270
- double *red_y, double *green_x, double *green_y, double *blue_x,
2271
- double *blue_y));
2272
- #endif
2273
- #ifdef PNG_FIXED_POINT_SUPPORTED
2274
- PNG_EXPORT(png_uint_32,png_get_cHRM_fixed) PNGARG((png_const_structp png_ptr,
2275
- png_const_infop info_ptr, png_fixed_point *int_white_x, png_fixed_point
2276
- *int_white_y, png_fixed_point *int_red_x, png_fixed_point *int_red_y,
2277
- png_fixed_point *int_green_x, png_fixed_point *int_green_y, png_fixed_point
2278
- *int_blue_x, png_fixed_point *int_blue_y));
2279
- #endif
2280
- #endif
2281
-
2282
- #ifdef PNG_cHRM_SUPPORTED
2283
- #ifdef PNG_FLOATING_POINT_SUPPORTED
2284
- PNG_EXPORT(void,png_set_cHRM) PNGARG((png_structp png_ptr,
2285
- png_infop info_ptr, double white_x, double white_y, double red_x,
2286
- double red_y, double green_x, double green_y, double blue_x, double blue_y));
2287
- #endif
2288
- #ifdef PNG_FIXED_POINT_SUPPORTED
2289
- PNG_EXPORT(void,png_set_cHRM_fixed) PNGARG((png_structp png_ptr,
2290
- png_infop info_ptr, png_fixed_point int_white_x, png_fixed_point int_white_y,
2291
- png_fixed_point int_red_x, png_fixed_point int_red_y, png_fixed_point
2292
- int_green_x, png_fixed_point int_green_y, png_fixed_point int_blue_x,
2293
- png_fixed_point int_blue_y));
2294
- #endif
2295
- #endif
2296
-
2297
- #ifdef PNG_gAMA_SUPPORTED
2298
- #ifdef PNG_FLOATING_POINT_SUPPORTED
2299
- PNG_EXPORT(png_uint_32,png_get_gAMA) PNGARG((png_const_structp png_ptr,
2300
- png_const_infop info_ptr, double *file_gamma));
2301
- #endif
2302
- PNG_EXPORT(png_uint_32,png_get_gAMA_fixed) PNGARG((png_const_structp png_ptr,
2303
- png_const_infop info_ptr, png_fixed_point *int_file_gamma));
2304
- #endif
2305
-
2306
- #ifdef PNG_gAMA_SUPPORTED
2307
- #ifdef PNG_FLOATING_POINT_SUPPORTED
2308
- PNG_EXPORT(void,png_set_gAMA) PNGARG((png_structp png_ptr,
2309
- png_infop info_ptr, double file_gamma));
2310
- #endif
2311
- PNG_EXPORT(void,png_set_gAMA_fixed) PNGARG((png_structp png_ptr,
2312
- png_infop info_ptr, png_fixed_point int_file_gamma));
2313
- #endif
2314
-
2315
- #ifdef PNG_hIST_SUPPORTED
2316
- PNG_EXPORT(png_uint_32,png_get_hIST) PNGARG((png_const_structp png_ptr,
2317
- png_const_infop info_ptr, png_uint_16p *hist));
2318
- #endif
2319
-
2320
- #ifdef PNG_hIST_SUPPORTED
2321
- PNG_EXPORT(void,png_set_hIST) PNGARG((png_structp png_ptr,
2322
- png_infop info_ptr, png_uint_16p hist));
2323
- #endif
2324
-
2325
- PNG_EXPORT(png_uint_32,png_get_IHDR) PNGARG((png_structp png_ptr,
2326
- png_infop info_ptr, png_uint_32 *width, png_uint_32 *height,
2327
- int *bit_depth, int *color_type, int *interlace_method,
2328
- int *compression_method, int *filter_method));
2329
-
2330
- PNG_EXPORT(void,png_set_IHDR) PNGARG((png_structp png_ptr,
2331
- png_infop info_ptr, png_uint_32 width, png_uint_32 height, int bit_depth,
2332
- int color_type, int interlace_method, int compression_method,
2333
- int filter_method));
2334
-
2335
- #ifdef PNG_oFFs_SUPPORTED
2336
- PNG_EXPORT(png_uint_32,png_get_oFFs) PNGARG((png_const_structp png_ptr,
2337
- png_const_infop info_ptr, png_int_32 *offset_x, png_int_32 *offset_y,
2338
- int *unit_type));
2339
- #endif
2340
-
2341
- #ifdef PNG_oFFs_SUPPORTED
2342
- PNG_EXPORT(void,png_set_oFFs) PNGARG((png_structp png_ptr,
2343
- png_infop info_ptr, png_int_32 offset_x, png_int_32 offset_y,
2344
- int unit_type));
2345
- #endif
2346
-
2347
- #ifdef PNG_pCAL_SUPPORTED
2348
- PNG_EXPORT(png_uint_32,png_get_pCAL) PNGARG((png_const_structp png_ptr,
2349
- png_const_infop info_ptr, png_charp *purpose, png_int_32 *X0, png_int_32 *X1,
2350
- int *type, int *nparams, png_charp *units, png_charpp *params));
2351
- #endif
2352
-
2353
- #ifdef PNG_pCAL_SUPPORTED
2354
- PNG_EXPORT(void,png_set_pCAL) PNGARG((png_structp png_ptr,
2355
- png_infop info_ptr, png_charp purpose, png_int_32 X0, png_int_32 X1,
2356
- int type, int nparams, png_charp units, png_charpp params));
2357
- #endif
2358
-
2359
- #ifdef PNG_pHYs_SUPPORTED
2360
- PNG_EXPORT(png_uint_32,png_get_pHYs) PNGARG((png_const_structp png_ptr,
2361
- png_const_infop info_ptr, png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type));
2362
- #endif
2363
-
2364
- #ifdef PNG_pHYs_SUPPORTED
2365
- PNG_EXPORT(void,png_set_pHYs) PNGARG((png_structp png_ptr,
2366
- png_infop info_ptr, png_uint_32 res_x, png_uint_32 res_y, int unit_type));
2367
- #endif
2368
-
2369
- PNG_EXPORT(png_uint_32,png_get_PLTE) PNGARG((png_const_structp png_ptr,
2370
- png_const_infop info_ptr, png_colorp *palette, int *num_palette));
2371
-
2372
- PNG_EXPORT(void,png_set_PLTE) PNGARG((png_structp png_ptr,
2373
- png_infop info_ptr, png_colorp palette, int num_palette));
2374
-
2375
- #ifdef PNG_sBIT_SUPPORTED
2376
- PNG_EXPORT(png_uint_32,png_get_sBIT) PNGARG((png_const_structp png_ptr,
2377
- png_infop info_ptr, png_color_8p *sig_bit));
2378
- #endif
2379
-
2380
- #ifdef PNG_sBIT_SUPPORTED
2381
- PNG_EXPORT(void,png_set_sBIT) PNGARG((png_structp png_ptr,
2382
- png_infop info_ptr, png_color_8p sig_bit));
2383
- #endif
2384
-
2385
- #ifdef PNG_sRGB_SUPPORTED
2386
- PNG_EXPORT(png_uint_32,png_get_sRGB) PNGARG((png_const_structp png_ptr,
2387
- png_const_infop info_ptr, int *intent));
2388
- #endif
2389
-
2390
- #ifdef PNG_sRGB_SUPPORTED
2391
- PNG_EXPORT(void,png_set_sRGB) PNGARG((png_structp png_ptr,
2392
- png_infop info_ptr, int intent));
2393
- PNG_EXPORT(void,png_set_sRGB_gAMA_and_cHRM) PNGARG((png_structp png_ptr,
2394
- png_infop info_ptr, int intent));
2395
- #endif
2396
-
2397
- #ifdef PNG_iCCP_SUPPORTED
2398
- PNG_EXPORT(png_uint_32,png_get_iCCP) PNGARG((png_const_structp png_ptr,
2399
- png_const_infop info_ptr, png_charpp name, int *compression_type,
2400
- png_charpp profile, png_uint_32 *proflen));
2401
- /* Note to maintainer: profile should be png_bytepp */
2402
- #endif
2403
-
2404
- #ifdef PNG_iCCP_SUPPORTED
2405
- PNG_EXPORT(void,png_set_iCCP) PNGARG((png_structp png_ptr,
2406
- png_infop info_ptr, png_charp name, int compression_type,
2407
- png_charp profile, png_uint_32 proflen));
2408
- /* Note to maintainer: profile should be png_bytep */
2409
- #endif
2410
-
2411
- #ifdef PNG_sPLT_SUPPORTED
2412
- PNG_EXPORT(png_uint_32,png_get_sPLT) PNGARG((png_const_structp png_ptr,
2413
- png_const_infop info_ptr, png_sPLT_tpp entries));
2414
- #endif
2415
-
2416
- #ifdef PNG_sPLT_SUPPORTED
2417
- PNG_EXPORT(void,png_set_sPLT) PNGARG((png_structp png_ptr,
2418
- png_infop info_ptr, png_sPLT_tp entries, int nentries));
2419
- #endif
2420
-
2421
- #ifdef PNG_TEXT_SUPPORTED
2422
- /* png_get_text also returns the number of text chunks in *num_text */
2423
- PNG_EXPORT(png_uint_32,png_get_text) PNGARG((png_const_structp png_ptr,
2424
- png_const_infop info_ptr, png_textp *text_ptr, int *num_text));
2425
- #endif
2426
-
2427
- /* Note while png_set_text() will accept a structure whose text,
2428
- * language, and translated keywords are NULL pointers, the structure
2429
- * returned by png_get_text will always contain regular
2430
- * zero-terminated C strings. They might be empty strings but
2431
- * they will never be NULL pointers.
2432
- */
2433
-
2434
- #ifdef PNG_TEXT_SUPPORTED
2435
- PNG_EXPORT(void,png_set_text) PNGARG((png_structp png_ptr,
2436
- png_infop info_ptr, png_textp text_ptr, int num_text));
2437
- #endif
2438
-
2439
- #ifdef PNG_tIME_SUPPORTED
2440
- PNG_EXPORT(png_uint_32,png_get_tIME) PNGARG((png_const_structp png_ptr,
2441
- png_infop info_ptr, png_timep *mod_time));
2442
- #endif
2443
-
2444
- #ifdef PNG_tIME_SUPPORTED
2445
- PNG_EXPORT(void,png_set_tIME) PNGARG((png_structp png_ptr,
2446
- png_infop info_ptr, png_timep mod_time));
2447
- #endif
2448
-
2449
- #ifdef PNG_tRNS_SUPPORTED
2450
- PNG_EXPORT(png_uint_32,png_get_tRNS) PNGARG((png_const_structp png_ptr,
2451
- png_infop info_ptr, png_bytep *trans_alpha, int *num_trans,
2452
- png_color_16p *trans_color));
2453
- #endif
2454
-
2455
- #ifdef PNG_tRNS_SUPPORTED
2456
- PNG_EXPORT(void,png_set_tRNS) PNGARG((png_structp png_ptr,
2457
- png_infop info_ptr, png_bytep trans_alpha, int num_trans,
2458
- png_color_16p trans_color));
2459
- #endif
2460
-
2461
- #ifdef PNG_tRNS_SUPPORTED
2462
- #endif
2463
-
2464
- #ifdef PNG_sCAL_SUPPORTED
2465
- #ifdef PNG_FLOATING_POINT_SUPPORTED
2466
- PNG_EXPORT(png_uint_32,png_get_sCAL) PNGARG((png_const_structp png_ptr,
2467
- png_const_infop info_ptr, int *unit, double *width, double *height));
2468
- #else
2469
- #ifdef PNG_FIXED_POINT_SUPPORTED
2470
- PNG_EXPORT(png_uint_32,png_get_sCAL_s) PNGARG((png_const_structp png_ptr,
2471
- png_const_infop info_ptr, int *unit, png_charpp swidth, png_charpp sheight));
2472
- #endif
2473
- #endif
2474
- #endif /* PNG_sCAL_SUPPORTED */
2475
-
2476
- #ifdef PNG_sCAL_SUPPORTED
2477
- #ifdef PNG_FLOATING_POINT_SUPPORTED
2478
- PNG_EXPORT(void,png_set_sCAL) PNGARG((png_structp png_ptr,
2479
- png_infop info_ptr, int unit, double width, double height));
2480
- #else
2481
- #ifdef PNG_FIXED_POINT_SUPPORTED
2482
- PNG_EXPORT(void,png_set_sCAL_s) PNGARG((png_structp png_ptr,
2483
- png_infop info_ptr, int unit, png_charp swidth, png_charp sheight));
2484
- #endif
2485
- #endif
2486
- #endif /* PNG_sCAL_SUPPORTED || PNG_WRITE_sCAL_SUPPORTED */
2487
-
2488
- #ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
2489
- /* Provide a list of chunks and how they are to be handled, if the built-in
2490
- handling or default unknown chunk handling is not desired. Any chunks not
2491
- listed will be handled in the default manner. The IHDR and IEND chunks
2492
- must not be listed.
2493
- keep = 0: follow default behaviour
2494
- = 1: do not keep
2495
- = 2: keep only if safe-to-copy
2496
- = 3: keep even if unsafe-to-copy
2497
- */
2498
- PNG_EXPORT(void, png_set_keep_unknown_chunks) PNGARG((png_structp
2499
- png_ptr, int keep, png_bytep chunk_list, int num_chunks));
2500
- PNG_EXPORT(int,png_handle_as_unknown) PNGARG((png_structp png_ptr, png_bytep
2501
- chunk_name));
2502
- #endif
2503
- #ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED
2504
- PNG_EXPORT(void, png_set_unknown_chunks) PNGARG((png_structp png_ptr,
2505
- png_infop info_ptr, png_unknown_chunkp unknowns, int num_unknowns));
2506
- PNG_EXPORT(void, png_set_unknown_chunk_location)
2507
- PNGARG((png_structp png_ptr, png_infop info_ptr, int chunk, int location));
2508
- PNG_EXPORT(png_uint_32,png_get_unknown_chunks) PNGARG((png_const_structp
2509
- png_ptr, png_const_infop info_ptr, png_unknown_chunkpp entries));
2510
- #endif
2511
-
2512
- /* Png_free_data() will turn off the "valid" flag for anything it frees.
2513
- * If you need to turn it off for a chunk that your application has freed,
2514
- * you can use png_set_invalid(png_ptr, info_ptr, PNG_INFO_CHNK);
2515
- */
2516
- PNG_EXPORT(void, png_set_invalid) PNGARG((png_structp png_ptr,
2517
- png_infop info_ptr, int mask));
2518
-
2519
- #ifdef PNG_INFO_IMAGE_SUPPORTED
2520
- /* The "params" pointer is currently not used and is for future expansion. */
2521
- PNG_EXPORT(void, png_read_png) PNGARG((png_structp png_ptr,
2522
- png_infop info_ptr,
2523
- int transforms,
2524
- png_voidp params));
2525
- PNG_EXPORT(void, png_write_png) PNGARG((png_structp png_ptr,
2526
- png_infop info_ptr,
2527
- int transforms,
2528
- png_voidp params));
2529
- #endif
2530
-
2531
- PNG_EXPORT(png_charp,png_get_copyright) PNGARG((png_const_structp png_ptr));
2532
- PNG_EXPORT(png_charp,png_get_header_ver) PNGARG((png_const_structp png_ptr));
2533
- PNG_EXPORT(png_charp,png_get_header_version) PNGARG((png_const_structp
2534
- png_ptr));
2535
- PNG_EXPORT(png_charp,png_get_libpng_ver) PNGARG((png_const_structp png_ptr));
2536
-
2537
- #ifdef PNG_MNG_FEATURES_SUPPORTED
2538
- PNG_EXPORT(png_uint_32,png_permit_mng_features) PNGARG((png_structp
2539
- png_ptr, png_uint_32 mng_features_permitted));
2540
- #endif
2541
-
2542
- /* For use in png_set_keep_unknown, added to version 1.2.6 */
2543
- #define PNG_HANDLE_CHUNK_AS_DEFAULT 0
2544
- #define PNG_HANDLE_CHUNK_NEVER 1
2545
- #define PNG_HANDLE_CHUNK_IF_SAFE 2
2546
- #define PNG_HANDLE_CHUNK_ALWAYS 3
2547
-
2548
- /* Strip the prepended error numbers ("#nnn ") from error and warning
2549
- * messages before passing them to the error or warning handler.
2550
- */
2551
- #ifdef PNG_ERROR_NUMBERS_SUPPORTED
2552
- PNG_EXPORT(void,png_set_strip_error_numbers) PNGARG((png_structp
2553
- png_ptr, png_uint_32 strip_mode));
2554
- #endif
2555
-
2556
- /* Added in libpng-1.2.6 */
2557
- #ifdef PNG_SET_USER_LIMITS_SUPPORTED
2558
- PNG_EXPORT(void,png_set_user_limits) PNGARG((png_structp
2559
- png_ptr, png_uint_32 user_width_max, png_uint_32 user_height_max));
2560
- PNG_EXPORT(png_uint_32,png_get_user_width_max) PNGARG((png_const_structp
2561
- png_ptr));
2562
- PNG_EXPORT(png_uint_32,png_get_user_height_max) PNGARG((png_const_structp
2563
- png_ptr));
2564
- /* Added in libpng-1.4.0 */
2565
- PNG_EXPORT(void,png_set_chunk_cache_max) PNGARG((png_structp
2566
- png_ptr, png_uint_32 user_chunk_cache_max));
2567
- PNG_EXPORT(png_uint_32,png_get_chunk_cache_max)
2568
- PNGARG((png_const_structp png_ptr));
2569
- /* Added in libpng-1.4.1 */
2570
- PNG_EXPORT(void,png_set_chunk_malloc_max) PNGARG((png_structp
2571
- png_ptr, png_alloc_size_t user_chunk_cache_max));
2572
- PNG_EXPORT(png_alloc_size_t,png_get_chunk_malloc_max)
2573
- PNGARG((png_const_structp png_ptr));
2574
- #endif
2575
-
2576
- #if defined(PNG_INCH_CONVERSIONS) && defined(PNG_FLOATING_POINT_SUPPORTED)
2577
- PNG_EXPORT(png_uint_32,png_get_pixels_per_inch)
2578
- PNGARG((png_const_structp png_ptr, png_const_infop info_ptr));
2579
-
2580
- PNG_EXPORT(png_uint_32,png_get_x_pixels_per_inch)
2581
- PNGARG((png_const_structp png_ptr, png_const_infop info_ptr));
2582
-
2583
- PNG_EXPORT(png_uint_32,png_get_y_pixels_per_inch)
2584
- PNGARG((png_const_structp png_ptr, png_const_infop info_ptr));
2585
-
2586
- PNG_EXPORT(float,png_get_x_offset_inches) PNGARG((png_const_structp png_ptr,
2587
- png_const_infop info_ptr));
2588
-
2589
- PNG_EXPORT(float,png_get_y_offset_inches) PNGARG((png_const_structp png_ptr,
2590
- png_const_infop info_ptr));
2591
-
2592
- #ifdef PNG_pHYs_SUPPORTED
2593
- PNG_EXPORT(png_uint_32,png_get_pHYs_dpi) PNGARG((png_const_structp png_ptr,
2594
- png_const_infop info_ptr, png_uint_32 *res_x, png_uint_32 *res_y,
2595
- int *unit_type));
2596
- #endif /* PNG_pHYs_SUPPORTED */
2597
- #endif /* PNG_INCH_CONVERSIONS && PNG_FLOATING_POINT_SUPPORTED */
2598
-
2599
- /* Added in libpng-1.4.0 */
2600
- #ifdef PNG_IO_STATE_SUPPORTED
2601
- PNG_EXPORT(png_uint_32,png_get_io_state) PNGARG((png_const_structp png_ptr));
2602
-
2603
- PNG_EXPORT(png_bytep,png_get_io_chunk_name)
2604
- PNGARG((png_structp png_ptr));
2605
-
2606
- /* The flags returned by png_get_io_state() are the following: */
2607
- #define PNG_IO_NONE 0x0000 /* no I/O at this moment */
2608
- #define PNG_IO_READING 0x0001 /* currently reading */
2609
- #define PNG_IO_WRITING 0x0002 /* currently writing */
2610
- #define PNG_IO_SIGNATURE 0x0010 /* currently at the file signature */
2611
- #define PNG_IO_CHUNK_HDR 0x0020 /* currently at the chunk header */
2612
- #define PNG_IO_CHUNK_DATA 0x0040 /* currently at the chunk data */
2613
- #define PNG_IO_CHUNK_CRC 0x0080 /* currently at the chunk crc */
2614
- #define PNG_IO_MASK_OP 0x000f /* current operation: reading/writing */
2615
- #define PNG_IO_MASK_LOC 0x00f0 /* current location: sig/hdr/data/crc */
2616
- #endif /* ?PNG_IO_STATE_SUPPORTED */
2617
-
2618
- /* Maintainer: Put new public prototypes here ^, in libpng.3, and project
2619
- * defs
2620
- */
2621
-
2622
- #ifdef PNG_READ_COMPOSITE_NODIV_SUPPORTED
2623
- /* With these routines we avoid an integer divide, which will be slower on
2624
- * most machines. However, it does take more operations than the corresponding
2625
- * divide method, so it may be slower on a few RISC systems. There are two
2626
- * shifts (by 8 or 16 bits) and an addition, versus a single integer divide.
2627
- *
2628
- * Note that the rounding factors are NOT supposed to be the same! 128 and
2629
- * 32768 are correct for the NODIV code; 127 and 32767 are correct for the
2630
- * standard method.
2631
- *
2632
- * [Optimized code by Greg Roelofs and Mark Adler...blame us for bugs. :-) ]
2633
- */
2634
-
2635
- /* fg and bg should be in `gamma 1.0' space; alpha is the opacity */
2636
-
2637
- # define png_composite(composite, fg, alpha, bg) \
2638
- { png_uint_16 temp = (png_uint_16)((png_uint_16)(fg) \
2639
- * (png_uint_16)(alpha) \
2640
- + (png_uint_16)(bg)*(png_uint_16)(255 \
2641
- - (png_uint_16)(alpha)) + (png_uint_16)128); \
2642
- (composite) = (png_byte)((temp + (temp >> 8)) >> 8); }
2643
-
2644
- # define png_composite_16(composite, fg, alpha, bg) \
2645
- { png_uint_32 temp = (png_uint_32)((png_uint_32)(fg) \
2646
- * (png_uint_32)(alpha) \
2647
- + (png_uint_32)(bg)*(png_uint_32)(65535L \
2648
- - (png_uint_32)(alpha)) + (png_uint_32)32768L); \
2649
- (composite) = (png_uint_16)((temp + (temp >> 16)) >> 16); }
2650
-
2651
- #else /* Standard method using integer division */
2652
-
2653
- # define png_composite(composite, fg, alpha, bg) \
2654
- (composite) = (png_byte)(((png_uint_16)(fg) * (png_uint_16)(alpha) + \
2655
- (png_uint_16)(bg) * (png_uint_16)(255 - (png_uint_16)(alpha)) + \
2656
- (png_uint_16)127) / 255)
2657
-
2658
- # define png_composite_16(composite, fg, alpha, bg) \
2659
- (composite) = (png_uint_16)(((png_uint_32)(fg) * (png_uint_32)(alpha) + \
2660
- (png_uint_32)(bg)*(png_uint_32)(65535L - (png_uint_32)(alpha)) + \
2661
- (png_uint_32)32767) / (png_uint_32)65535L)
2662
- #endif /* PNG_READ_COMPOSITE_NODIV_SUPPORTED */
2663
-
2664
- #ifdef PNG_USE_READ_MACROS
2665
- /* Inline macros to do direct reads of bytes from the input buffer.
2666
- * The png_get_int_32() routine assumes we are using two's complement
2667
- * format for negative values, which is almost certainly true.
2668
- */
2669
- # define png_get_uint_32(buf) \
2670
- (((png_uint_32)(*(buf)) << 24) + \
2671
- ((png_uint_32)(*((buf) + 1)) << 16) + \
2672
- ((png_uint_32)(*((buf) + 2)) << 8) + \
2673
- ((png_uint_32)(*((buf) + 3))))
2674
-
2675
- /* The following definition introduces an API incompatibility (but not
2676
- * an ABI incompatibility) with libpng-1.4.0 through 1.4.4. Prior to
2677
- * libpng-1.4.5 the macro, which is used by default, returned (incorrectly)
2678
- * a (png_uint_32), while the function, if used instead, correctly returned
2679
- * a (png_uint_16).
2680
- *
2681
- * Libpng versions 1.0.x and 1.2.x only used a function so are not affected
2682
- * by this potential API incompatibility between macros.
2683
- */
2684
- # define png_get_uint_16(buf) \
2685
- ((png_uint_16) \
2686
- (((unsigned int)(*(buf)) << 8) + \
2687
- ((unsigned int)(*((buf) + 1)))))
2688
-
2689
- # define png_get_int_32(buf) \
2690
- ((png_int_32)((*(buf) & 0x80) \
2691
- ? -((png_int_32)((png_get_uint_32(buf) ^ 0xffffffffL) + 1)) \
2692
- : (png_int_32)png_get_uint_32(buf)))
2693
- #else
2694
- PNG_EXPORT(png_uint_32,png_get_uint_32) PNGARG((png_bytep buf));
2695
- PNG_EXPORT(png_uint_16,png_get_uint_16) PNGARG((png_bytep buf));
2696
- #ifdef PNG_GET_INT_32_SUPPORTED
2697
- PNG_EXPORT(png_int_32,png_get_int_32) PNGARG((png_bytep buf));
2698
- #endif
2699
- #endif
2700
- PNG_EXPORT(png_uint_32,png_get_uint_31)
2701
- PNGARG((png_structp png_ptr, png_bytep buf));
2702
- /* No png_get_int_16 -- may be added if there's a real need for it. */
2703
-
2704
- /* Place a 32-bit number into a buffer in PNG byte order (big-endian). */
2705
- PNG_EXPORT(void,png_save_uint_32)
2706
- PNGARG((png_bytep buf, png_uint_32 i));
2707
- PNG_EXPORT(void,png_save_int_32)
2708
- PNGARG((png_bytep buf, png_int_32 i));
2709
-
2710
- /* Place a 16-bit number into a buffer in PNG byte order.
2711
- * The parameter is declared unsigned int, not png_uint_16,
2712
- * just to avoid potential problems on pre-ANSI C compilers.
2713
- */
2714
- PNG_EXPORT(void,png_save_uint_16)
2715
- PNGARG((png_bytep buf, unsigned int i));
2716
- /* No png_save_int_16 -- may be added if there's a real need for it. */
2717
-
2718
- /* ************************************************************************* */
2719
-
2720
- /* Various modes of operation. Note that after an init, mode is set to
2721
- * zero automatically when the structure is created.
2722
- */
2723
- #define PNG_HAVE_IHDR 0x01
2724
- #define PNG_HAVE_PLTE 0x02
2725
- #define PNG_HAVE_IDAT 0x04
2726
- #define PNG_AFTER_IDAT 0x08 /* Have complete zlib datastream */
2727
- #define PNG_HAVE_IEND 0x10
2728
- #define PNG_HAVE_gAMA 0x20
2729
- #define PNG_HAVE_cHRM 0x40
2730
-
2731
- #ifdef __cplusplus
2732
- }
2733
- #endif
2734
-
2735
- #endif /* PNG_VERSION_INFO_ONLY */
2736
- /* Do not put anything past this line */
2737
- #endif /* PNG_H */