rfreeimage 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (860) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +21 -0
  3. data/README.md +1 -0
  4. data/Rakefile +34 -0
  5. data/ext/rfreeimage/extconf.rb +35 -0
  6. data/ext/rfreeimage/rfi_main.c +389 -0
  7. data/lib/rfreeimage/image.rb +26 -0
  8. data/lib/rfreeimage/version.rb +3 -0
  9. data/lib/rfreeimage.rb +3 -0
  10. data/rfreeimage.gemspec +32 -0
  11. data/vendor/FreeImage/Makefile +34 -0
  12. data/vendor/FreeImage/Makefile.cygwin +74 -0
  13. data/vendor/FreeImage/Makefile.fip +84 -0
  14. data/vendor/FreeImage/Makefile.gnu +83 -0
  15. data/vendor/FreeImage/Makefile.iphone +96 -0
  16. data/vendor/FreeImage/Makefile.mingw +136 -0
  17. data/vendor/FreeImage/Makefile.osx +115 -0
  18. data/vendor/FreeImage/Makefile.solaris +66 -0
  19. data/vendor/FreeImage/Makefile.srcs +6 -0
  20. data/vendor/FreeImage/README.iphone +19 -0
  21. data/vendor/FreeImage/README.linux +50 -0
  22. data/vendor/FreeImage/README.minGW +236 -0
  23. data/vendor/FreeImage/README.osx +44 -0
  24. data/vendor/FreeImage/README.solaris +67 -0
  25. data/vendor/FreeImage/Source/CacheFile.h +92 -0
  26. data/vendor/FreeImage/Source/DeprecationManager/Deprecated.cpp +36 -0
  27. data/vendor/FreeImage/Source/DeprecationManager/DeprecationMgr.cpp +103 -0
  28. data/vendor/FreeImage/Source/DeprecationManager/DeprecationMgr.h +83 -0
  29. data/vendor/FreeImage/Source/FreeImage/BitmapAccess.cpp +1573 -0
  30. data/vendor/FreeImage/Source/FreeImage/CacheFile.cpp +271 -0
  31. data/vendor/FreeImage/Source/FreeImage/ColorLookup.cpp +785 -0
  32. data/vendor/FreeImage/Source/FreeImage/Conversion.cpp +551 -0
  33. data/vendor/FreeImage/Source/FreeImage/Conversion16_555.cpp +209 -0
  34. data/vendor/FreeImage/Source/FreeImage/Conversion16_565.cpp +204 -0
  35. data/vendor/FreeImage/Source/FreeImage/Conversion24.cpp +252 -0
  36. data/vendor/FreeImage/Source/FreeImage/Conversion32.cpp +345 -0
  37. data/vendor/FreeImage/Source/FreeImage/Conversion4.cpp +246 -0
  38. data/vendor/FreeImage/Source/FreeImage/Conversion8.cpp +305 -0
  39. data/vendor/FreeImage/Source/FreeImage/ConversionFloat.cpp +194 -0
  40. data/vendor/FreeImage/Source/FreeImage/ConversionRGB16.cpp +144 -0
  41. data/vendor/FreeImage/Source/FreeImage/ConversionRGBA16.cpp +147 -0
  42. data/vendor/FreeImage/Source/FreeImage/ConversionRGBAF.cpp +250 -0
  43. data/vendor/FreeImage/Source/FreeImage/ConversionRGBF.cpp +243 -0
  44. data/vendor/FreeImage/Source/FreeImage/ConversionType.cpp +699 -0
  45. data/vendor/FreeImage/Source/FreeImage/ConversionUINT16.cpp +134 -0
  46. data/vendor/FreeImage/Source/FreeImage/FreeImage.cpp +226 -0
  47. data/vendor/FreeImage/Source/FreeImage/FreeImageC.c +22 -0
  48. data/vendor/FreeImage/Source/FreeImage/FreeImageIO.cpp +175 -0
  49. data/vendor/FreeImage/Source/FreeImage/GetType.cpp +92 -0
  50. data/vendor/FreeImage/Source/FreeImage/Halftoning.cpp +474 -0
  51. data/vendor/FreeImage/Source/FreeImage/J2KHelper.cpp +591 -0
  52. data/vendor/FreeImage/Source/FreeImage/J2KHelper.h +36 -0
  53. data/vendor/FreeImage/Source/FreeImage/LFPQuantizer.cpp +208 -0
  54. data/vendor/FreeImage/Source/FreeImage/MNGHelper.cpp +1320 -0
  55. data/vendor/FreeImage/Source/FreeImage/MemoryIO.cpp +237 -0
  56. data/vendor/FreeImage/Source/FreeImage/MultiPage.cpp +974 -0
  57. data/vendor/FreeImage/Source/FreeImage/NNQuantizer.cpp +507 -0
  58. data/vendor/FreeImage/Source/FreeImage/PSDParser.cpp +1057 -0
  59. data/vendor/FreeImage/Source/FreeImage/PSDParser.h +271 -0
  60. data/vendor/FreeImage/Source/FreeImage/PixelAccess.cpp +197 -0
  61. data/vendor/FreeImage/Source/FreeImage/Plugin.cpp +822 -0
  62. data/vendor/FreeImage/Source/FreeImage/PluginBMP.cpp +1494 -0
  63. data/vendor/FreeImage/Source/FreeImage/PluginCUT.cpp +240 -0
  64. data/vendor/FreeImage/Source/FreeImage/PluginDDS.cpp +655 -0
  65. data/vendor/FreeImage/Source/FreeImage/PluginEXR.cpp +773 -0
  66. data/vendor/FreeImage/Source/FreeImage/PluginG3.cpp +433 -0
  67. data/vendor/FreeImage/Source/FreeImage/PluginGIF.cpp +1407 -0
  68. data/vendor/FreeImage/Source/FreeImage/PluginHDR.cpp +722 -0
  69. data/vendor/FreeImage/Source/FreeImage/PluginICO.cpp +824 -0
  70. data/vendor/FreeImage/Source/FreeImage/PluginIFF.cpp +459 -0
  71. data/vendor/FreeImage/Source/FreeImage/PluginJ2K.cpp +328 -0
  72. data/vendor/FreeImage/Source/FreeImage/PluginJNG.cpp +162 -0
  73. data/vendor/FreeImage/Source/FreeImage/PluginJP2.cpp +328 -0
  74. data/vendor/FreeImage/Source/FreeImage/PluginJPEG.cpp +1706 -0
  75. data/vendor/FreeImage/Source/FreeImage/PluginJXR.cpp +1475 -0
  76. data/vendor/FreeImage/Source/FreeImage/PluginKOALA.cpp +243 -0
  77. data/vendor/FreeImage/Source/FreeImage/PluginMNG.cpp +153 -0
  78. data/vendor/FreeImage/Source/FreeImage/PluginPCD.cpp +251 -0
  79. data/vendor/FreeImage/Source/FreeImage/PluginPCX.cpp +659 -0
  80. data/vendor/FreeImage/Source/FreeImage/PluginPFM.cpp +409 -0
  81. data/vendor/FreeImage/Source/FreeImage/PluginPICT.cpp +1343 -0
  82. data/vendor/FreeImage/Source/FreeImage/PluginPNG.cpp +1115 -0
  83. data/vendor/FreeImage/Source/FreeImage/PluginPNM.cpp +838 -0
  84. data/vendor/FreeImage/Source/FreeImage/PluginPSD.cpp +131 -0
  85. data/vendor/FreeImage/Source/FreeImage/PluginRAS.cpp +512 -0
  86. data/vendor/FreeImage/Source/FreeImage/PluginRAW.cpp +793 -0
  87. data/vendor/FreeImage/Source/FreeImage/PluginSGI.cpp +425 -0
  88. data/vendor/FreeImage/Source/FreeImage/PluginTARGA.cpp +1591 -0
  89. data/vendor/FreeImage/Source/FreeImage/PluginTIFF.cpp +2631 -0
  90. data/vendor/FreeImage/Source/FreeImage/PluginWBMP.cpp +372 -0
  91. data/vendor/FreeImage/Source/FreeImage/PluginWebP.cpp +698 -0
  92. data/vendor/FreeImage/Source/FreeImage/PluginXBM.cpp +399 -0
  93. data/vendor/FreeImage/Source/FreeImage/PluginXPM.cpp +487 -0
  94. data/vendor/FreeImage/Source/FreeImage/TIFFLogLuv.cpp +65 -0
  95. data/vendor/FreeImage/Source/FreeImage/ToneMapping.cpp +75 -0
  96. data/vendor/FreeImage/Source/FreeImage/WuQuantizer.cpp +559 -0
  97. data/vendor/FreeImage/Source/FreeImage/ZLibInterface.cpp +223 -0
  98. data/vendor/FreeImage/Source/FreeImage/tmoColorConvert.cpp +479 -0
  99. data/vendor/FreeImage/Source/FreeImage/tmoDrago03.cpp +295 -0
  100. data/vendor/FreeImage/Source/FreeImage/tmoFattal02.cpp +689 -0
  101. data/vendor/FreeImage/Source/FreeImage/tmoReinhard05.cpp +260 -0
  102. data/vendor/FreeImage/Source/FreeImage.h +1153 -0
  103. data/vendor/FreeImage/Source/FreeImageIO.h +63 -0
  104. data/vendor/FreeImage/Source/FreeImageToolkit/BSplineRotate.cpp +730 -0
  105. data/vendor/FreeImage/Source/FreeImageToolkit/Background.cpp +895 -0
  106. data/vendor/FreeImage/Source/FreeImageToolkit/Channels.cpp +488 -0
  107. data/vendor/FreeImage/Source/FreeImageToolkit/ClassicRotate.cpp +917 -0
  108. data/vendor/FreeImage/Source/FreeImageToolkit/Colors.cpp +967 -0
  109. data/vendor/FreeImage/Source/FreeImageToolkit/CopyPaste.cpp +861 -0
  110. data/vendor/FreeImage/Source/FreeImageToolkit/Display.cpp +230 -0
  111. data/vendor/FreeImage/Source/FreeImageToolkit/Filters.h +287 -0
  112. data/vendor/FreeImage/Source/FreeImageToolkit/Flip.cpp +166 -0
  113. data/vendor/FreeImage/Source/FreeImageToolkit/JPEGTransform.cpp +623 -0
  114. data/vendor/FreeImage/Source/FreeImageToolkit/MultigridPoissonSolver.cpp +505 -0
  115. data/vendor/FreeImage/Source/FreeImageToolkit/Rescale.cpp +192 -0
  116. data/vendor/FreeImage/Source/FreeImageToolkit/Resize.cpp +2116 -0
  117. data/vendor/FreeImage/Source/FreeImageToolkit/Resize.h +196 -0
  118. data/vendor/FreeImage/Source/LibJPEG/ansi2knr.c +739 -0
  119. data/vendor/FreeImage/Source/LibJPEG/cderror.h +134 -0
  120. data/vendor/FreeImage/Source/LibJPEG/cdjpeg.c +181 -0
  121. data/vendor/FreeImage/Source/LibJPEG/cdjpeg.h +187 -0
  122. data/vendor/FreeImage/Source/LibJPEG/cjpeg.c +664 -0
  123. data/vendor/FreeImage/Source/LibJPEG/ckconfig.c +402 -0
  124. data/vendor/FreeImage/Source/LibJPEG/djpeg.c +617 -0
  125. data/vendor/FreeImage/Source/LibJPEG/example.c +433 -0
  126. data/vendor/FreeImage/Source/LibJPEG/jaricom.c +153 -0
  127. data/vendor/FreeImage/Source/LibJPEG/jcapimin.c +288 -0
  128. data/vendor/FreeImage/Source/LibJPEG/jcapistd.c +162 -0
  129. data/vendor/FreeImage/Source/LibJPEG/jcarith.c +944 -0
  130. data/vendor/FreeImage/Source/LibJPEG/jccoefct.c +454 -0
  131. data/vendor/FreeImage/Source/LibJPEG/jccolor.c +604 -0
  132. data/vendor/FreeImage/Source/LibJPEG/jcdctmgr.c +477 -0
  133. data/vendor/FreeImage/Source/LibJPEG/jchuff.c +1573 -0
  134. data/vendor/FreeImage/Source/LibJPEG/jcinit.c +84 -0
  135. data/vendor/FreeImage/Source/LibJPEG/jcmainct.c +297 -0
  136. data/vendor/FreeImage/Source/LibJPEG/jcmarker.c +719 -0
  137. data/vendor/FreeImage/Source/LibJPEG/jcmaster.c +856 -0
  138. data/vendor/FreeImage/Source/LibJPEG/jcomapi.c +106 -0
  139. data/vendor/FreeImage/Source/LibJPEG/jconfig.h +161 -0
  140. data/vendor/FreeImage/Source/LibJPEG/jcparam.c +675 -0
  141. data/vendor/FreeImage/Source/LibJPEG/jcprepct.c +358 -0
  142. data/vendor/FreeImage/Source/LibJPEG/jcsample.c +545 -0
  143. data/vendor/FreeImage/Source/LibJPEG/jctrans.c +385 -0
  144. data/vendor/FreeImage/Source/LibJPEG/jdapimin.c +399 -0
  145. data/vendor/FreeImage/Source/LibJPEG/jdapistd.c +276 -0
  146. data/vendor/FreeImage/Source/LibJPEG/jdarith.c +796 -0
  147. data/vendor/FreeImage/Source/LibJPEG/jdatadst.c +270 -0
  148. data/vendor/FreeImage/Source/LibJPEG/jdatasrc.c +275 -0
  149. data/vendor/FreeImage/Source/LibJPEG/jdcoefct.c +741 -0
  150. data/vendor/FreeImage/Source/LibJPEG/jdcolor.c +748 -0
  151. data/vendor/FreeImage/Source/LibJPEG/jdct.h +393 -0
  152. data/vendor/FreeImage/Source/LibJPEG/jddctmgr.c +384 -0
  153. data/vendor/FreeImage/Source/LibJPEG/jdhuff.c +1554 -0
  154. data/vendor/FreeImage/Source/LibJPEG/jdinput.c +662 -0
  155. data/vendor/FreeImage/Source/LibJPEG/jdmainct.c +513 -0
  156. data/vendor/FreeImage/Source/LibJPEG/jdmarker.c +1511 -0
  157. data/vendor/FreeImage/Source/LibJPEG/jdmaster.c +543 -0
  158. data/vendor/FreeImage/Source/LibJPEG/jdmerge.c +401 -0
  159. data/vendor/FreeImage/Source/LibJPEG/jdpostct.c +290 -0
  160. data/vendor/FreeImage/Source/LibJPEG/jdsample.c +361 -0
  161. data/vendor/FreeImage/Source/LibJPEG/jdtrans.c +140 -0
  162. data/vendor/FreeImage/Source/LibJPEG/jerror.c +253 -0
  163. data/vendor/FreeImage/Source/LibJPEG/jerror.h +304 -0
  164. data/vendor/FreeImage/Source/LibJPEG/jfdctflt.c +174 -0
  165. data/vendor/FreeImage/Source/LibJPEG/jfdctfst.c +230 -0
  166. data/vendor/FreeImage/Source/LibJPEG/jfdctint.c +4406 -0
  167. data/vendor/FreeImage/Source/LibJPEG/jidctflt.c +235 -0
  168. data/vendor/FreeImage/Source/LibJPEG/jidctfst.c +368 -0
  169. data/vendor/FreeImage/Source/LibJPEG/jidctint.c +5179 -0
  170. data/vendor/FreeImage/Source/LibJPEG/jinclude.h +91 -0
  171. data/vendor/FreeImage/Source/LibJPEG/jmemansi.c +167 -0
  172. data/vendor/FreeImage/Source/LibJPEG/jmemdos.c +638 -0
  173. data/vendor/FreeImage/Source/LibJPEG/jmemmac.c +289 -0
  174. data/vendor/FreeImage/Source/LibJPEG/jmemmgr.c +1119 -0
  175. data/vendor/FreeImage/Source/LibJPEG/jmemname.c +276 -0
  176. data/vendor/FreeImage/Source/LibJPEG/jmemnobs.c +109 -0
  177. data/vendor/FreeImage/Source/LibJPEG/jmemsys.h +198 -0
  178. data/vendor/FreeImage/Source/LibJPEG/jmorecfg.h +442 -0
  179. data/vendor/FreeImage/Source/LibJPEG/jpegint.h +426 -0
  180. data/vendor/FreeImage/Source/LibJPEG/jpeglib.h +1180 -0
  181. data/vendor/FreeImage/Source/LibJPEG/jpegtran.c +577 -0
  182. data/vendor/FreeImage/Source/LibJPEG/jquant1.c +857 -0
  183. data/vendor/FreeImage/Source/LibJPEG/jquant2.c +1311 -0
  184. data/vendor/FreeImage/Source/LibJPEG/jutils.c +227 -0
  185. data/vendor/FreeImage/Source/LibJPEG/jversion.h +14 -0
  186. data/vendor/FreeImage/Source/LibJPEG/rdbmp.c +480 -0
  187. data/vendor/FreeImage/Source/LibJPEG/rdcolmap.c +253 -0
  188. data/vendor/FreeImage/Source/LibJPEG/rdgif.c +38 -0
  189. data/vendor/FreeImage/Source/LibJPEG/rdjpgcom.c +515 -0
  190. data/vendor/FreeImage/Source/LibJPEG/rdppm.c +459 -0
  191. data/vendor/FreeImage/Source/LibJPEG/rdrle.c +387 -0
  192. data/vendor/FreeImage/Source/LibJPEG/rdswitch.c +365 -0
  193. data/vendor/FreeImage/Source/LibJPEG/rdtarga.c +500 -0
  194. data/vendor/FreeImage/Source/LibJPEG/transupp.c +1763 -0
  195. data/vendor/FreeImage/Source/LibJPEG/transupp.h +219 -0
  196. data/vendor/FreeImage/Source/LibJPEG/wrbmp.c +442 -0
  197. data/vendor/FreeImage/Source/LibJPEG/wrgif.c +399 -0
  198. data/vendor/FreeImage/Source/LibJPEG/wrjpgcom.c +583 -0
  199. data/vendor/FreeImage/Source/LibJPEG/wrppm.c +269 -0
  200. data/vendor/FreeImage/Source/LibJPEG/wrrle.c +305 -0
  201. data/vendor/FreeImage/Source/LibJPEG/wrtarga.c +253 -0
  202. data/vendor/FreeImage/Source/LibJXR/common/include/guiddef.h +230 -0
  203. data/vendor/FreeImage/Source/LibJXR/common/include/wmsal.h +757 -0
  204. data/vendor/FreeImage/Source/LibJXR/common/include/wmspecstring.h +342 -0
  205. data/vendor/FreeImage/Source/LibJXR/common/include/wmspecstrings_adt.h +71 -0
  206. data/vendor/FreeImage/Source/LibJXR/common/include/wmspecstrings_strict.h +1096 -0
  207. data/vendor/FreeImage/Source/LibJXR/common/include/wmspecstrings_undef.h +406 -0
  208. data/vendor/FreeImage/Source/LibJXR/image/decode/JXRTranscode.c +987 -0
  209. data/vendor/FreeImage/Source/LibJXR/image/decode/decode.c +200 -0
  210. data/vendor/FreeImage/Source/LibJXR/image/decode/decode.h +143 -0
  211. data/vendor/FreeImage/Source/LibJXR/image/decode/postprocess.c +288 -0
  212. data/vendor/FreeImage/Source/LibJXR/image/decode/segdec.c +1205 -0
  213. data/vendor/FreeImage/Source/LibJXR/image/decode/strInvTransform.c +1888 -0
  214. data/vendor/FreeImage/Source/LibJXR/image/decode/strPredQuantDec.c +539 -0
  215. data/vendor/FreeImage/Source/LibJXR/image/decode/strdec.c +3628 -0
  216. data/vendor/FreeImage/Source/LibJXR/image/decode/strdec_x86.c +1640 -0
  217. data/vendor/FreeImage/Source/LibJXR/image/encode/encode.c +144 -0
  218. data/vendor/FreeImage/Source/LibJXR/image/encode/encode.h +113 -0
  219. data/vendor/FreeImage/Source/LibJXR/image/encode/segenc.c +1186 -0
  220. data/vendor/FreeImage/Source/LibJXR/image/encode/strFwdTransform.c +1111 -0
  221. data/vendor/FreeImage/Source/LibJXR/image/encode/strPredQuantEnc.c +511 -0
  222. data/vendor/FreeImage/Source/LibJXR/image/encode/strenc.c +2370 -0
  223. data/vendor/FreeImage/Source/LibJXR/image/encode/strenc_x86.c +409 -0
  224. data/vendor/FreeImage/Source/LibJXR/image/sys/adapthuff.c +511 -0
  225. data/vendor/FreeImage/Source/LibJXR/image/sys/ansi.h +61 -0
  226. data/vendor/FreeImage/Source/LibJXR/image/sys/common.h +131 -0
  227. data/vendor/FreeImage/Source/LibJXR/image/sys/image.c +183 -0
  228. data/vendor/FreeImage/Source/LibJXR/image/sys/perfTimer.h +115 -0
  229. data/vendor/FreeImage/Source/LibJXR/image/sys/perfTimerANSI.c +274 -0
  230. data/vendor/FreeImage/Source/LibJXR/image/sys/strPredQuant.c +306 -0
  231. data/vendor/FreeImage/Source/LibJXR/image/sys/strTransform.c +85 -0
  232. data/vendor/FreeImage/Source/LibJXR/image/sys/strTransform.h +50 -0
  233. data/vendor/FreeImage/Source/LibJXR/image/sys/strcodec.c +1251 -0
  234. data/vendor/FreeImage/Source/LibJXR/image/sys/strcodec.h +681 -0
  235. data/vendor/FreeImage/Source/LibJXR/image/sys/windowsmediaphoto.h +515 -0
  236. data/vendor/FreeImage/Source/LibJXR/image/sys/xplatform_image.h +84 -0
  237. data/vendor/FreeImage/Source/LibJXR/image/x86/x86.h +58 -0
  238. data/vendor/FreeImage/Source/LibJXR/jxrgluelib/JXRGlue.c +930 -0
  239. data/vendor/FreeImage/Source/LibJXR/jxrgluelib/JXRGlue.h +636 -0
  240. data/vendor/FreeImage/Source/LibJXR/jxrgluelib/JXRGlueJxr.c +2246 -0
  241. data/vendor/FreeImage/Source/LibJXR/jxrgluelib/JXRGluePFC.c +2338 -0
  242. data/vendor/FreeImage/Source/LibJXR/jxrgluelib/JXRMeta.c +905 -0
  243. data/vendor/FreeImage/Source/LibJXR/jxrgluelib/JXRMeta.h +258 -0
  244. data/vendor/FreeImage/Source/LibOpenJPEG/bio.c +188 -0
  245. data/vendor/FreeImage/Source/LibOpenJPEG/bio.h +128 -0
  246. data/vendor/FreeImage/Source/LibOpenJPEG/cidx_manager.c +239 -0
  247. data/vendor/FreeImage/Source/LibOpenJPEG/cidx_manager.h +68 -0
  248. data/vendor/FreeImage/Source/LibOpenJPEG/cio.c +644 -0
  249. data/vendor/FreeImage/Source/LibOpenJPEG/cio.h +393 -0
  250. data/vendor/FreeImage/Source/LibOpenJPEG/dwt.c +919 -0
  251. data/vendor/FreeImage/Source/LibOpenJPEG/dwt.h +116 -0
  252. data/vendor/FreeImage/Source/LibOpenJPEG/event.c +141 -0
  253. data/vendor/FreeImage/Source/LibOpenJPEG/event.h +97 -0
  254. data/vendor/FreeImage/Source/LibOpenJPEG/function_list.c +114 -0
  255. data/vendor/FreeImage/Source/LibOpenJPEG/function_list.h +126 -0
  256. data/vendor/FreeImage/Source/LibOpenJPEG/image.c +235 -0
  257. data/vendor/FreeImage/Source/LibOpenJPEG/image.h +63 -0
  258. data/vendor/FreeImage/Source/LibOpenJPEG/indexbox_manager.h +148 -0
  259. data/vendor/FreeImage/Source/LibOpenJPEG/invert.c +289 -0
  260. data/vendor/FreeImage/Source/LibOpenJPEG/invert.h +59 -0
  261. data/vendor/FreeImage/Source/LibOpenJPEG/j2k.c +10238 -0
  262. data/vendor/FreeImage/Source/LibOpenJPEG/j2k.h +838 -0
  263. data/vendor/FreeImage/Source/LibOpenJPEG/jp2.c +2776 -0
  264. data/vendor/FreeImage/Source/LibOpenJPEG/jp2.h +490 -0
  265. data/vendor/FreeImage/Source/LibOpenJPEG/mct.c +319 -0
  266. data/vendor/FreeImage/Source/LibOpenJPEG/mct.h +149 -0
  267. data/vendor/FreeImage/Source/LibOpenJPEG/mqc.c +604 -0
  268. data/vendor/FreeImage/Source/LibOpenJPEG/mqc.h +201 -0
  269. data/vendor/FreeImage/Source/LibOpenJPEG/openjpeg.c +955 -0
  270. data/vendor/FreeImage/Source/LibOpenJPEG/openjpeg.h +1475 -0
  271. data/vendor/FreeImage/Source/LibOpenJPEG/opj_clock.c +59 -0
  272. data/vendor/FreeImage/Source/LibOpenJPEG/opj_clock.h +54 -0
  273. data/vendor/FreeImage/Source/LibOpenJPEG/opj_codec.h +160 -0
  274. data/vendor/FreeImage/Source/LibOpenJPEG/opj_config.h +9 -0
  275. data/vendor/FreeImage/Source/LibOpenJPEG/opj_config_private.h +16 -0
  276. data/vendor/FreeImage/Source/LibOpenJPEG/opj_includes.h +175 -0
  277. data/vendor/FreeImage/Source/LibOpenJPEG/opj_intmath.h +172 -0
  278. data/vendor/FreeImage/Source/LibOpenJPEG/opj_inttypes.h +43 -0
  279. data/vendor/FreeImage/Source/LibOpenJPEG/opj_malloc.h +180 -0
  280. data/vendor/FreeImage/Source/LibOpenJPEG/opj_stdint.h +47 -0
  281. data/vendor/FreeImage/Source/LibOpenJPEG/phix_manager.c +191 -0
  282. data/vendor/FreeImage/Source/LibOpenJPEG/pi.c +1870 -0
  283. data/vendor/FreeImage/Source/LibOpenJPEG/pi.h +182 -0
  284. data/vendor/FreeImage/Source/LibOpenJPEG/ppix_manager.c +194 -0
  285. data/vendor/FreeImage/Source/LibOpenJPEG/raw.c +89 -0
  286. data/vendor/FreeImage/Source/LibOpenJPEG/raw.h +100 -0
  287. data/vendor/FreeImage/Source/LibOpenJPEG/t1.c +1751 -0
  288. data/vendor/FreeImage/Source/LibOpenJPEG/t1.h +157 -0
  289. data/vendor/FreeImage/Source/LibOpenJPEG/t1_generate_luts.c +276 -0
  290. data/vendor/FreeImage/Source/LibOpenJPEG/t1_luts.h +143 -0
  291. data/vendor/FreeImage/Source/LibOpenJPEG/t2.c +1334 -0
  292. data/vendor/FreeImage/Source/LibOpenJPEG/t2.h +127 -0
  293. data/vendor/FreeImage/Source/LibOpenJPEG/tcd.c +2123 -0
  294. data/vendor/FreeImage/Source/LibOpenJPEG/tcd.h +348 -0
  295. data/vendor/FreeImage/Source/LibOpenJPEG/tgt.c +331 -0
  296. data/vendor/FreeImage/Source/LibOpenJPEG/tgt.h +140 -0
  297. data/vendor/FreeImage/Source/LibOpenJPEG/thix_manager.c +134 -0
  298. data/vendor/FreeImage/Source/LibOpenJPEG/tpix_manager.c +185 -0
  299. data/vendor/FreeImage/Source/LibPNG/example.c +1061 -0
  300. data/vendor/FreeImage/Source/LibPNG/png.c +4493 -0
  301. data/vendor/FreeImage/Source/LibPNG/png.h +3282 -0
  302. data/vendor/FreeImage/Source/LibPNG/pngconf.h +644 -0
  303. data/vendor/FreeImage/Source/LibPNG/pngdebug.h +154 -0
  304. data/vendor/FreeImage/Source/LibPNG/pngerror.c +963 -0
  305. data/vendor/FreeImage/Source/LibPNG/pngget.c +1213 -0
  306. data/vendor/FreeImage/Source/LibPNG/pnginfo.h +260 -0
  307. data/vendor/FreeImage/Source/LibPNG/pnglibconf.h +218 -0
  308. data/vendor/FreeImage/Source/LibPNG/pngmem.c +281 -0
  309. data/vendor/FreeImage/Source/LibPNG/pngpread.c +1168 -0
  310. data/vendor/FreeImage/Source/LibPNG/pngpriv.h +1944 -0
  311. data/vendor/FreeImage/Source/LibPNG/pngread.c +4121 -0
  312. data/vendor/FreeImage/Source/LibPNG/pngrio.c +120 -0
  313. data/vendor/FreeImage/Source/LibPNG/pngrtran.c +4994 -0
  314. data/vendor/FreeImage/Source/LibPNG/pngrutil.c +4474 -0
  315. data/vendor/FreeImage/Source/LibPNG/pngset.c +1611 -0
  316. data/vendor/FreeImage/Source/LibPNG/pngstruct.h +489 -0
  317. data/vendor/FreeImage/Source/LibPNG/pngtest.c +2011 -0
  318. data/vendor/FreeImage/Source/LibPNG/pngtrans.c +849 -0
  319. data/vendor/FreeImage/Source/LibPNG/pngwio.c +168 -0
  320. data/vendor/FreeImage/Source/LibPNG/pngwrite.c +2455 -0
  321. data/vendor/FreeImage/Source/LibPNG/pngwtran.c +574 -0
  322. data/vendor/FreeImage/Source/LibPNG/pngwutil.c +3029 -0
  323. data/vendor/FreeImage/Source/LibRawLite/dcraw/dcraw.c +15462 -0
  324. data/vendor/FreeImage/Source/LibRawLite/internal/aahd_demosaic.cpp +706 -0
  325. data/vendor/FreeImage/Source/LibRawLite/internal/dcb_demosaicing.c +710 -0
  326. data/vendor/FreeImage/Source/LibRawLite/internal/dcraw_common.cpp +13593 -0
  327. data/vendor/FreeImage/Source/LibRawLite/internal/dcraw_fileio.cpp +240 -0
  328. data/vendor/FreeImage/Source/LibRawLite/internal/defines.h +167 -0
  329. data/vendor/FreeImage/Source/LibRawLite/internal/demosaic_packs.cpp +99 -0
  330. data/vendor/FreeImage/Source/LibRawLite/internal/dht_demosaic.cpp +873 -0
  331. data/vendor/FreeImage/Source/LibRawLite/internal/libraw_internal_funcs.h +282 -0
  332. data/vendor/FreeImage/Source/LibRawLite/internal/libraw_x3f.cpp +1919 -0
  333. data/vendor/FreeImage/Source/LibRawLite/internal/var_defines.h +216 -0
  334. data/vendor/FreeImage/Source/LibRawLite/internal/wf_filtering.cpp +1950 -0
  335. data/vendor/FreeImage/Source/LibRawLite/libraw/libraw.h +338 -0
  336. data/vendor/FreeImage/Source/LibRawLite/libraw/libraw_alloc.h +99 -0
  337. data/vendor/FreeImage/Source/LibRawLite/libraw/libraw_const.h +233 -0
  338. data/vendor/FreeImage/Source/LibRawLite/libraw/libraw_datastream.h +238 -0
  339. data/vendor/FreeImage/Source/LibRawLite/libraw/libraw_internal.h +225 -0
  340. data/vendor/FreeImage/Source/LibRawLite/libraw/libraw_types.h +442 -0
  341. data/vendor/FreeImage/Source/LibRawLite/libraw/libraw_version.h +62 -0
  342. data/vendor/FreeImage/Source/LibRawLite/src/libraw_c_api.cpp +230 -0
  343. data/vendor/FreeImage/Source/LibRawLite/src/libraw_cxx.cpp +4533 -0
  344. data/vendor/FreeImage/Source/LibRawLite/src/libraw_datastream.cpp +703 -0
  345. data/vendor/FreeImage/Source/LibTIFF4/mkg3states.c +451 -0
  346. data/vendor/FreeImage/Source/LibTIFF4/mkspans.c +82 -0
  347. data/vendor/FreeImage/Source/LibTIFF4/t4.h +292 -0
  348. data/vendor/FreeImage/Source/LibTIFF4/tif_aux.c +358 -0
  349. data/vendor/FreeImage/Source/LibTIFF4/tif_close.c +140 -0
  350. data/vendor/FreeImage/Source/LibTIFF4/tif_codec.c +166 -0
  351. data/vendor/FreeImage/Source/LibTIFF4/tif_color.c +287 -0
  352. data/vendor/FreeImage/Source/LibTIFF4/tif_compress.c +304 -0
  353. data/vendor/FreeImage/Source/LibTIFF4/tif_config.h +97 -0
  354. data/vendor/FreeImage/Source/LibTIFF4/tif_config.vc.h +74 -0
  355. data/vendor/FreeImage/Source/LibTIFF4/tif_config.wince.h +71 -0
  356. data/vendor/FreeImage/Source/LibTIFF4/tif_dir.c +1700 -0
  357. data/vendor/FreeImage/Source/LibTIFF4/tif_dir.h +308 -0
  358. data/vendor/FreeImage/Source/LibTIFF4/tif_dirinfo.c +959 -0
  359. data/vendor/FreeImage/Source/LibTIFF4/tif_dirread.c +5640 -0
  360. data/vendor/FreeImage/Source/LibTIFF4/tif_dirwrite.c +2910 -0
  361. data/vendor/FreeImage/Source/LibTIFF4/tif_dumpmode.c +143 -0
  362. data/vendor/FreeImage/Source/LibTIFF4/tif_error.c +80 -0
  363. data/vendor/FreeImage/Source/LibTIFF4/tif_extension.c +118 -0
  364. data/vendor/FreeImage/Source/LibTIFF4/tif_fax3.c +1595 -0
  365. data/vendor/FreeImage/Source/LibTIFF4/tif_fax3.h +538 -0
  366. data/vendor/FreeImage/Source/LibTIFF4/tif_fax3sm.c +1260 -0
  367. data/vendor/FreeImage/Source/LibTIFF4/tif_flush.c +118 -0
  368. data/vendor/FreeImage/Source/LibTIFF4/tif_getimage.c +2890 -0
  369. data/vendor/FreeImage/Source/LibTIFF4/tif_jbig.c +213 -0
  370. data/vendor/FreeImage/Source/LibTIFF4/tif_jpeg.c +2354 -0
  371. data/vendor/FreeImage/Source/LibTIFF4/tif_jpeg_12.c +65 -0
  372. data/vendor/FreeImage/Source/LibTIFF4/tif_luv.c +1683 -0
  373. data/vendor/FreeImage/Source/LibTIFF4/tif_lzma.c +495 -0
  374. data/vendor/FreeImage/Source/LibTIFF4/tif_lzw.c +1169 -0
  375. data/vendor/FreeImage/Source/LibTIFF4/tif_next.c +181 -0
  376. data/vendor/FreeImage/Source/LibTIFF4/tif_ojpeg.c +2501 -0
  377. data/vendor/FreeImage/Source/LibTIFF4/tif_open.c +725 -0
  378. data/vendor/FreeImage/Source/LibTIFF4/tif_packbits.c +300 -0
  379. data/vendor/FreeImage/Source/LibTIFF4/tif_pixarlog.c +1442 -0
  380. data/vendor/FreeImage/Source/LibTIFF4/tif_predict.c +764 -0
  381. data/vendor/FreeImage/Source/LibTIFF4/tif_predict.h +77 -0
  382. data/vendor/FreeImage/Source/LibTIFF4/tif_print.c +716 -0
  383. data/vendor/FreeImage/Source/LibTIFF4/tif_read.c +1086 -0
  384. data/vendor/FreeImage/Source/LibTIFF4/tif_strip.c +383 -0
  385. data/vendor/FreeImage/Source/LibTIFF4/tif_swab.c +310 -0
  386. data/vendor/FreeImage/Source/LibTIFF4/tif_thunder.c +207 -0
  387. data/vendor/FreeImage/Source/LibTIFF4/tif_tile.c +299 -0
  388. data/vendor/FreeImage/Source/LibTIFF4/tif_unix.c +325 -0
  389. data/vendor/FreeImage/Source/LibTIFF4/tif_version.c +40 -0
  390. data/vendor/FreeImage/Source/LibTIFF4/tif_vms.c +603 -0
  391. data/vendor/FreeImage/Source/LibTIFF4/tif_warning.c +81 -0
  392. data/vendor/FreeImage/Source/LibTIFF4/tif_win32.c +443 -0
  393. data/vendor/FreeImage/Source/LibTIFF4/tif_wince.c +293 -0
  394. data/vendor/FreeImage/Source/LibTIFF4/tif_write.c +771 -0
  395. data/vendor/FreeImage/Source/LibTIFF4/tif_zip.c +472 -0
  396. data/vendor/FreeImage/Source/LibTIFF4/tiff.h +681 -0
  397. data/vendor/FreeImage/Source/LibTIFF4/tiffconf.h +170 -0
  398. data/vendor/FreeImage/Source/LibTIFF4/tiffconf.vc.h +160 -0
  399. data/vendor/FreeImage/Source/LibTIFF4/tiffconf.wince.h +121 -0
  400. data/vendor/FreeImage/Source/LibTIFF4/tiffio.h +557 -0
  401. data/vendor/FreeImage/Source/LibTIFF4/tiffiop.h +367 -0
  402. data/vendor/FreeImage/Source/LibTIFF4/tiffvers.h +9 -0
  403. data/vendor/FreeImage/Source/LibTIFF4/uvcode.h +180 -0
  404. data/vendor/FreeImage/Source/LibWebP/src/dec/alphai.h +55 -0
  405. data/vendor/FreeImage/Source/LibWebP/src/dec/dec.alpha.c +167 -0
  406. data/vendor/FreeImage/Source/LibWebP/src/dec/dec.buffer.c +249 -0
  407. data/vendor/FreeImage/Source/LibWebP/src/dec/dec.frame.c +827 -0
  408. data/vendor/FreeImage/Source/LibWebP/src/dec/dec.idec.c +857 -0
  409. data/vendor/FreeImage/Source/LibWebP/src/dec/dec.io.c +640 -0
  410. data/vendor/FreeImage/Source/LibWebP/src/dec/dec.quant.c +110 -0
  411. data/vendor/FreeImage/Source/LibWebP/src/dec/dec.tree.c +525 -0
  412. data/vendor/FreeImage/Source/LibWebP/src/dec/dec.vp8.c +663 -0
  413. data/vendor/FreeImage/Source/LibWebP/src/dec/dec.vp8l.c +1584 -0
  414. data/vendor/FreeImage/Source/LibWebP/src/dec/dec.webp.c +834 -0
  415. data/vendor/FreeImage/Source/LibWebP/src/dec/decode_vp8.h +185 -0
  416. data/vendor/FreeImage/Source/LibWebP/src/dec/vp8i.h +353 -0
  417. data/vendor/FreeImage/Source/LibWebP/src/dec/vp8li.h +136 -0
  418. data/vendor/FreeImage/Source/LibWebP/src/dec/webpi.h +120 -0
  419. data/vendor/FreeImage/Source/LibWebP/src/demux/demux.demux.c +957 -0
  420. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.alpha_processing.c +377 -0
  421. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.alpha_processing_mips_dsp_r2.c +139 -0
  422. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.alpha_processing_sse2.c +296 -0
  423. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.argb.c +68 -0
  424. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.argb_mips_dsp_r2.c +108 -0
  425. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.argb_sse2.c +62 -0
  426. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.cost.c +412 -0
  427. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.cost_mips32.c +154 -0
  428. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.cost_mips_dsp_r2.c +107 -0
  429. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.cost_sse2.c +121 -0
  430. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.cpu.c +138 -0
  431. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.dec.c +760 -0
  432. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.dec_clip_tables.c +366 -0
  433. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.dec_mips32.c +585 -0
  434. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.dec_mips_dsp_r2.c +992 -0
  435. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.dec_neon.c +1489 -0
  436. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.dec_sse2.c +1284 -0
  437. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.enc.c +788 -0
  438. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.enc_avx2.c +24 -0
  439. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.enc_mips32.c +670 -0
  440. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.enc_mips_dsp_r2.c +1510 -0
  441. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.enc_neon.c +932 -0
  442. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.enc_sse2.c +940 -0
  443. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.filters.c +240 -0
  444. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.filters_mips_dsp_r2.c +404 -0
  445. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.filters_sse2.c +349 -0
  446. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.h +434 -0
  447. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.lossless.c +1838 -0
  448. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.lossless_mips32.c +416 -0
  449. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.lossless_mips_dsp_r2.c +921 -0
  450. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.lossless_neon.c +357 -0
  451. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.lossless_sse2.c +535 -0
  452. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.rescaler.c +115 -0
  453. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.rescaler_mips32.c +192 -0
  454. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.rescaler_mips_dsp_r2.c +210 -0
  455. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.upsampling.c +252 -0
  456. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.upsampling_mips_dsp_r2.c +280 -0
  457. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.upsampling_neon.c +267 -0
  458. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.upsampling_sse2.c +214 -0
  459. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.yuv.c +166 -0
  460. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.yuv_mips32.c +100 -0
  461. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.yuv_mips_dsp_r2.c +131 -0
  462. data/vendor/FreeImage/Source/LibWebP/src/dsp/dsp.yuv_sse2.c +322 -0
  463. data/vendor/FreeImage/Source/LibWebP/src/dsp/lossless.h +313 -0
  464. data/vendor/FreeImage/Source/LibWebP/src/dsp/mips_macro.h +200 -0
  465. data/vendor/FreeImage/Source/LibWebP/src/dsp/neon.h +82 -0
  466. data/vendor/FreeImage/Source/LibWebP/src/dsp/yuv.h +321 -0
  467. data/vendor/FreeImage/Source/LibWebP/src/dsp/yuv_tables_sse2.h +536 -0
  468. data/vendor/FreeImage/Source/LibWebP/src/enc/backward_references.h +202 -0
  469. data/vendor/FreeImage/Source/LibWebP/src/enc/cost.h +69 -0
  470. data/vendor/FreeImage/Source/LibWebP/src/enc/enc.alpha.c +440 -0
  471. data/vendor/FreeImage/Source/LibWebP/src/enc/enc.analysis.c +501 -0
  472. data/vendor/FreeImage/Source/LibWebP/src/enc/enc.backward_references.c +1076 -0
  473. data/vendor/FreeImage/Source/LibWebP/src/enc/enc.config.c +163 -0
  474. data/vendor/FreeImage/Source/LibWebP/src/enc/enc.cost.c +355 -0
  475. data/vendor/FreeImage/Source/LibWebP/src/enc/enc.filter.c +296 -0
  476. data/vendor/FreeImage/Source/LibWebP/src/enc/enc.frame.c +850 -0
  477. data/vendor/FreeImage/Source/LibWebP/src/enc/enc.histogram.c +897 -0
  478. data/vendor/FreeImage/Source/LibWebP/src/enc/enc.iterator.c +456 -0
  479. data/vendor/FreeImage/Source/LibWebP/src/enc/enc.near_lossless.c +160 -0
  480. data/vendor/FreeImage/Source/LibWebP/src/enc/enc.picture.c +290 -0
  481. data/vendor/FreeImage/Source/LibWebP/src/enc/enc.picture_csp.c +1100 -0
  482. data/vendor/FreeImage/Source/LibWebP/src/enc/enc.picture_psnr.c +150 -0
  483. data/vendor/FreeImage/Source/LibWebP/src/enc/enc.picture_rescale.c +285 -0
  484. data/vendor/FreeImage/Source/LibWebP/src/enc/enc.picture_tools.c +206 -0
  485. data/vendor/FreeImage/Source/LibWebP/src/enc/enc.quant.c +1191 -0
  486. data/vendor/FreeImage/Source/LibWebP/src/enc/enc.syntax.c +383 -0
  487. data/vendor/FreeImage/Source/LibWebP/src/enc/enc.token.c +285 -0
  488. data/vendor/FreeImage/Source/LibWebP/src/enc/enc.tree.c +504 -0
  489. data/vendor/FreeImage/Source/LibWebP/src/enc/enc.vp8l.c +1437 -0
  490. data/vendor/FreeImage/Source/LibWebP/src/enc/enc.webpenc.c +379 -0
  491. data/vendor/FreeImage/Source/LibWebP/src/enc/histogram.h +114 -0
  492. data/vendor/FreeImage/Source/LibWebP/src/enc/vp8enci.h +551 -0
  493. data/vendor/FreeImage/Source/LibWebP/src/enc/vp8li.h +78 -0
  494. data/vendor/FreeImage/Source/LibWebP/src/mux/mux.anim_encode.c +1241 -0
  495. data/vendor/FreeImage/Source/LibWebP/src/mux/mux.muxedit.c +696 -0
  496. data/vendor/FreeImage/Source/LibWebP/src/mux/mux.muxinternal.c +551 -0
  497. data/vendor/FreeImage/Source/LibWebP/src/mux/mux.muxread.c +544 -0
  498. data/vendor/FreeImage/Source/LibWebP/src/mux/muxi.h +232 -0
  499. data/vendor/FreeImage/Source/LibWebP/src/utils/bit_reader.h +168 -0
  500. data/vendor/FreeImage/Source/LibWebP/src/utils/bit_reader_inl.h +172 -0
  501. data/vendor/FreeImage/Source/LibWebP/src/utils/bit_writer.h +120 -0
  502. data/vendor/FreeImage/Source/LibWebP/src/utils/color_cache.h +74 -0
  503. data/vendor/FreeImage/Source/LibWebP/src/utils/endian_inl.h +100 -0
  504. data/vendor/FreeImage/Source/LibWebP/src/utils/filters.h +32 -0
  505. data/vendor/FreeImage/Source/LibWebP/src/utils/huffman.h +67 -0
  506. data/vendor/FreeImage/Source/LibWebP/src/utils/huffman_encode.h +60 -0
  507. data/vendor/FreeImage/Source/LibWebP/src/utils/quant_levels.h +36 -0
  508. data/vendor/FreeImage/Source/LibWebP/src/utils/quant_levels_dec.h +35 -0
  509. data/vendor/FreeImage/Source/LibWebP/src/utils/random.h +63 -0
  510. data/vendor/FreeImage/Source/LibWebP/src/utils/rescaler.h +78 -0
  511. data/vendor/FreeImage/Source/LibWebP/src/utils/thread.h +93 -0
  512. data/vendor/FreeImage/Source/LibWebP/src/utils/utils.bit_reader.c +208 -0
  513. data/vendor/FreeImage/Source/LibWebP/src/utils/utils.bit_writer.c +308 -0
  514. data/vendor/FreeImage/Source/LibWebP/src/utils/utils.color_cache.c +49 -0
  515. data/vendor/FreeImage/Source/LibWebP/src/utils/utils.filters.c +76 -0
  516. data/vendor/FreeImage/Source/LibWebP/src/utils/utils.h +121 -0
  517. data/vendor/FreeImage/Source/LibWebP/src/utils/utils.huffman.c +205 -0
  518. data/vendor/FreeImage/Source/LibWebP/src/utils/utils.huffman_encode.c +417 -0
  519. data/vendor/FreeImage/Source/LibWebP/src/utils/utils.quant_levels.c +140 -0
  520. data/vendor/FreeImage/Source/LibWebP/src/utils/utils.quant_levels_dec.c +279 -0
  521. data/vendor/FreeImage/Source/LibWebP/src/utils/utils.random.c +43 -0
  522. data/vendor/FreeImage/Source/LibWebP/src/utils/utils.rescaler.c +82 -0
  523. data/vendor/FreeImage/Source/LibWebP/src/utils/utils.thread.c +309 -0
  524. data/vendor/FreeImage/Source/LibWebP/src/utils/utils.utils.c +211 -0
  525. data/vendor/FreeImage/Source/LibWebP/src/webp/decode.h +493 -0
  526. data/vendor/FreeImage/Source/LibWebP/src/webp/demux.h +224 -0
  527. data/vendor/FreeImage/Source/LibWebP/src/webp/encode.h +515 -0
  528. data/vendor/FreeImage/Source/LibWebP/src/webp/format_constants.h +88 -0
  529. data/vendor/FreeImage/Source/LibWebP/src/webp/mux.h +507 -0
  530. data/vendor/FreeImage/Source/LibWebP/src/webp/mux_types.h +97 -0
  531. data/vendor/FreeImage/Source/LibWebP/src/webp/types.h +52 -0
  532. data/vendor/FreeImage/Source/MapIntrospector.h +212 -0
  533. data/vendor/FreeImage/Source/Metadata/Exif.cpp +1253 -0
  534. data/vendor/FreeImage/Source/Metadata/FIRational.cpp +176 -0
  535. data/vendor/FreeImage/Source/Metadata/FIRational.h +108 -0
  536. data/vendor/FreeImage/Source/Metadata/FreeImageTag.cpp +353 -0
  537. data/vendor/FreeImage/Source/Metadata/FreeImageTag.h +500 -0
  538. data/vendor/FreeImage/Source/Metadata/IPTC.cpp +342 -0
  539. data/vendor/FreeImage/Source/Metadata/TagConversion.cpp +1094 -0
  540. data/vendor/FreeImage/Source/Metadata/TagLib.cpp +1618 -0
  541. data/vendor/FreeImage/Source/Metadata/XTIFF.cpp +766 -0
  542. data/vendor/FreeImage/Source/OpenEXR/Half/eLut.cpp +114 -0
  543. data/vendor/FreeImage/Source/OpenEXR/Half/eLut.h +71 -0
  544. data/vendor/FreeImage/Source/OpenEXR/Half/half.cpp +310 -0
  545. data/vendor/FreeImage/Source/OpenEXR/Half/half.h +757 -0
  546. data/vendor/FreeImage/Source/OpenEXR/Half/halfExport.h +27 -0
  547. data/vendor/FreeImage/Source/OpenEXR/Half/halfFunction.h +179 -0
  548. data/vendor/FreeImage/Source/OpenEXR/Half/halfLimits.h +102 -0
  549. data/vendor/FreeImage/Source/OpenEXR/Half/toFloat.cpp +164 -0
  550. data/vendor/FreeImage/Source/OpenEXR/Half/toFloat.h +16391 -0
  551. data/vendor/FreeImage/Source/OpenEXR/Iex/Iex.h +60 -0
  552. data/vendor/FreeImage/Source/OpenEXR/Iex/IexBaseExc.cpp +156 -0
  553. data/vendor/FreeImage/Source/OpenEXR/Iex/IexBaseExc.h +264 -0
  554. data/vendor/FreeImage/Source/OpenEXR/Iex/IexErrnoExc.h +208 -0
  555. data/vendor/FreeImage/Source/OpenEXR/Iex/IexExport.h +51 -0
  556. data/vendor/FreeImage/Source/OpenEXR/Iex/IexForward.h +229 -0
  557. data/vendor/FreeImage/Source/OpenEXR/Iex/IexMacros.h +170 -0
  558. data/vendor/FreeImage/Source/OpenEXR/Iex/IexMathExc.h +57 -0
  559. data/vendor/FreeImage/Source/OpenEXR/Iex/IexNamespace.h +112 -0
  560. data/vendor/FreeImage/Source/OpenEXR/Iex/IexThrowErrnoExc.cpp +873 -0
  561. data/vendor/FreeImage/Source/OpenEXR/Iex/IexThrowErrnoExc.h +97 -0
  562. data/vendor/FreeImage/Source/OpenEXR/IexMath/IexMathFloatExc.cpp +113 -0
  563. data/vendor/FreeImage/Source/OpenEXR/IexMath/IexMathFloatExc.h +146 -0
  564. data/vendor/FreeImage/Source/OpenEXR/IexMath/IexMathFpu.cpp +530 -0
  565. data/vendor/FreeImage/Source/OpenEXR/IexMath/IexMathFpu.h +91 -0
  566. data/vendor/FreeImage/Source/OpenEXR/IexMath/IexMathIeeeExc.h +62 -0
  567. data/vendor/FreeImage/Source/OpenEXR/IlmBaseConfig.h +61 -0
  568. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfAcesFile.cpp +633 -0
  569. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfAcesFile.h +324 -0
  570. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfArray.h +285 -0
  571. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfAttribute.cpp +158 -0
  572. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfAttribute.h +407 -0
  573. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfAutoArray.h +95 -0
  574. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfB44Compressor.cpp +1072 -0
  575. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfB44Compressor.h +118 -0
  576. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfBoxAttribute.cpp +111 -0
  577. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfBoxAttribute.h +87 -0
  578. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfCRgbaFile.cpp +1438 -0
  579. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfCRgbaFile.h +555 -0
  580. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfChannelList.cpp +322 -0
  581. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfChannelList.h +436 -0
  582. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfChannelListAttribute.cpp +150 -0
  583. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfChannelListAttribute.h +74 -0
  584. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfCheckedArithmetic.h +163 -0
  585. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfChromaticities.cpp +151 -0
  586. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfChromaticities.h +131 -0
  587. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfChromaticitiesAttribute.cpp +87 -0
  588. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfChromaticitiesAttribute.h +73 -0
  589. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfCompositeDeepScanLine.cpp +591 -0
  590. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfCompositeDeepScanLine.h +142 -0
  591. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfCompression.h +84 -0
  592. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfCompressionAttribute.cpp +78 -0
  593. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfCompressionAttribute.h +64 -0
  594. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfCompressor.cpp +226 -0
  595. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfCompressor.h +265 -0
  596. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfConvert.cpp +143 -0
  597. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfConvert.h +107 -0
  598. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfDeepCompositing.cpp +110 -0
  599. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfDeepCompositing.h +132 -0
  600. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfDeepFrameBuffer.cpp +230 -0
  601. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfDeepFrameBuffer.h +339 -0
  602. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfDeepImageState.h +96 -0
  603. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfDeepImageStateAttribute.cpp +78 -0
  604. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfDeepImageStateAttribute.h +68 -0
  605. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfDeepScanLineInputFile.cpp +2025 -0
  606. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfDeepScanLineInputFile.h +276 -0
  607. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfDeepScanLineInputPart.cpp +149 -0
  608. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfDeepScanLineInputPart.h +181 -0
  609. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfDeepScanLineOutputFile.cpp +1552 -0
  610. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfDeepScanLineOutputFile.h +244 -0
  611. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfDeepScanLineOutputPart.cpp +107 -0
  612. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfDeepScanLineOutputPart.h +168 -0
  613. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfDeepTiledInputFile.cpp +1979 -0
  614. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfDeepTiledInputFile.h +437 -0
  615. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfDeepTiledInputPart.cpp +273 -0
  616. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfDeepTiledInputPart.h +362 -0
  617. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfDeepTiledOutputFile.cpp +2055 -0
  618. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfDeepTiledOutputFile.h +475 -0
  619. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfDeepTiledOutputPart.cpp +250 -0
  620. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfDeepTiledOutputPart.h +394 -0
  621. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfDoubleAttribute.cpp +57 -0
  622. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfDoubleAttribute.h +59 -0
  623. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfDwaCompressor.cpp +3424 -0
  624. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfDwaCompressor.h +210 -0
  625. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfDwaCompressorSimd.h +2145 -0
  626. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfEnvmap.cpp +335 -0
  627. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfEnvmap.h +336 -0
  628. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfEnvmapAttribute.cpp +76 -0
  629. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfEnvmapAttribute.h +68 -0
  630. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfExport.h +46 -0
  631. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfFastHuf.cpp +768 -0
  632. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfFastHuf.h +148 -0
  633. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfFloatAttribute.cpp +57 -0
  634. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfFloatAttribute.h +58 -0
  635. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfFloatVectorAttribute.cpp +84 -0
  636. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfFloatVectorAttribute.h +76 -0
  637. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfForward.h +127 -0
  638. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfFrameBuffer.cpp +228 -0
  639. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfFrameBuffer.h +386 -0
  640. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfFramesPerSecond.cpp +76 -0
  641. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfFramesPerSecond.h +94 -0
  642. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfGenericInputFile.cpp +76 -0
  643. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfGenericInputFile.h +58 -0
  644. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfGenericOutputFile.cpp +112 -0
  645. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfGenericOutputFile.h +62 -0
  646. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfHeader.cpp +1283 -0
  647. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfHeader.h +699 -0
  648. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfHuf.cpp +1114 -0
  649. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfHuf.h +82 -0
  650. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfIO.cpp +110 -0
  651. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfIO.h +255 -0
  652. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfInputFile.cpp +895 -0
  653. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfInputFile.h +240 -0
  654. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfInputPart.cpp +114 -0
  655. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfInputPart.h +84 -0
  656. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfInputPartData.cpp +51 -0
  657. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfInputPartData.h +69 -0
  658. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfInputStreamMutex.h +68 -0
  659. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfInt64.h +56 -0
  660. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfIntAttribute.cpp +57 -0
  661. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfIntAttribute.h +58 -0
  662. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfKeyCode.cpp +217 -0
  663. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfKeyCode.h +167 -0
  664. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfKeyCodeAttribute.cpp +99 -0
  665. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfKeyCodeAttribute.h +73 -0
  666. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfLineOrder.h +69 -0
  667. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfLineOrderAttribute.cpp +78 -0
  668. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfLineOrderAttribute.h +72 -0
  669. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfLut.cpp +178 -0
  670. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfLut.h +188 -0
  671. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfMatrixAttribute.cpp +263 -0
  672. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfMatrixAttribute.h +83 -0
  673. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfMisc.cpp +1872 -0
  674. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfMisc.h +466 -0
  675. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfMultiPartInputFile.cpp +783 -0
  676. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfMultiPartInputFile.h +128 -0
  677. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfMultiPartOutputFile.cpp +519 -0
  678. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfMultiPartOutputFile.h +118 -0
  679. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfMultiView.cpp +435 -0
  680. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfMultiView.h +187 -0
  681. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfName.h +150 -0
  682. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfNamespace.h +115 -0
  683. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfOpaqueAttribute.cpp +126 -0
  684. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfOpaqueAttribute.h +110 -0
  685. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfOptimizedPixelReading.h +646 -0
  686. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfOutputFile.cpp +1378 -0
  687. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfOutputFile.h +263 -0
  688. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfOutputPart.cpp +105 -0
  689. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfOutputPart.h +77 -0
  690. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfOutputPartData.cpp +52 -0
  691. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfOutputPartData.h +62 -0
  692. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfOutputStreamMutex.h +70 -0
  693. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfPartHelper.h +262 -0
  694. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfPartType.cpp +63 -0
  695. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfPartType.h +62 -0
  696. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfPixelType.h +67 -0
  697. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfPizCompressor.cpp +667 -0
  698. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfPizCompressor.h +117 -0
  699. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfPreviewImage.cpp +104 -0
  700. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfPreviewImage.h +135 -0
  701. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfPreviewImageAttribute.cpp +103 -0
  702. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfPreviewImageAttribute.h +70 -0
  703. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfPxr24Compressor.cpp +553 -0
  704. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfPxr24Compressor.h +109 -0
  705. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfRational.cpp +127 -0
  706. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfRational.h +98 -0
  707. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfRationalAttribute.cpp +74 -0
  708. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfRationalAttribute.h +69 -0
  709. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfRgba.h +109 -0
  710. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfRgbaFile.cpp +1405 -0
  711. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfRgbaFile.h +346 -0
  712. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfRgbaYca.cpp +497 -0
  713. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfRgbaYca.h +259 -0
  714. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfRle.cpp +157 -0
  715. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfRle.h +63 -0
  716. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfRleCompressor.cpp +220 -0
  717. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfRleCompressor.h +80 -0
  718. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfScanLineInputFile.cpp +1702 -0
  719. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfScanLineInputFile.h +210 -0
  720. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfSimd.h +59 -0
  721. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfStandardAttributes.cpp +125 -0
  722. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfStandardAttributes.h +382 -0
  723. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfStdIO.cpp +242 -0
  724. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfStdIO.h +160 -0
  725. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfStringAttribute.cpp +80 -0
  726. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfStringAttribute.h +71 -0
  727. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfStringVectorAttribute.cpp +100 -0
  728. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfStringVectorAttribute.h +74 -0
  729. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfSystemSpecific.cpp +129 -0
  730. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfSystemSpecific.h +172 -0
  731. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfTestFile.cpp +216 -0
  732. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfTestFile.h +97 -0
  733. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfThreading.cpp +62 -0
  734. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfThreading.h +95 -0
  735. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfTileDescription.h +107 -0
  736. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfTileDescriptionAttribute.cpp +86 -0
  737. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfTileDescriptionAttribute.h +72 -0
  738. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfTileOffsets.cpp +552 -0
  739. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfTileOffsets.h +125 -0
  740. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfTiledInputFile.cpp +1533 -0
  741. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfTiledInputFile.h +401 -0
  742. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfTiledInputPart.cpp +208 -0
  743. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfTiledInputPart.h +100 -0
  744. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfTiledMisc.cpp +389 -0
  745. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfTiledMisc.h +106 -0
  746. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfTiledOutputFile.cpp +1841 -0
  747. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfTiledOutputFile.h +495 -0
  748. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfTiledOutputPart.cpp +228 -0
  749. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfTiledOutputPart.h +105 -0
  750. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfTiledRgbaFile.cpp +1163 -0
  751. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfTiledRgbaFile.h +482 -0
  752. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfTimeCode.cpp +431 -0
  753. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfTimeCode.h +242 -0
  754. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfTimeCodeAttribute.cpp +79 -0
  755. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfTimeCodeAttribute.h +74 -0
  756. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfVecAttribute.cpp +217 -0
  757. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfVecAttribute.h +100 -0
  758. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfVersion.cpp +60 -0
  759. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfVersion.h +136 -0
  760. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfWav.cpp +391 -0
  761. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfWav.h +78 -0
  762. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfXdr.h +927 -0
  763. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfZip.cpp +196 -0
  764. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfZip.h +78 -0
  765. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfZipCompressor.cpp +127 -0
  766. data/vendor/FreeImage/Source/OpenEXR/IlmImf/ImfZipCompressor.h +89 -0
  767. data/vendor/FreeImage/Source/OpenEXR/IlmImf/b44ExpLogTable.cpp +136 -0
  768. data/vendor/FreeImage/Source/OpenEXR/IlmImf/b44ExpLogTable.h +16396 -0
  769. data/vendor/FreeImage/Source/OpenEXR/IlmImf/dwaLookups.cpp +573 -0
  770. data/vendor/FreeImage/Source/OpenEXR/IlmImf/dwaLookups.h +98334 -0
  771. data/vendor/FreeImage/Source/OpenEXR/IlmThread/IlmThread.cpp +80 -0
  772. data/vendor/FreeImage/Source/OpenEXR/IlmThread/IlmThread.h +143 -0
  773. data/vendor/FreeImage/Source/OpenEXR/IlmThread/IlmThreadExport.h +46 -0
  774. data/vendor/FreeImage/Source/OpenEXR/IlmThread/IlmThreadForward.h +52 -0
  775. data/vendor/FreeImage/Source/OpenEXR/IlmThread/IlmThreadMutex.cpp +59 -0
  776. data/vendor/FreeImage/Source/OpenEXR/IlmThread/IlmThreadMutex.h +160 -0
  777. data/vendor/FreeImage/Source/OpenEXR/IlmThread/IlmThreadMutexPosix.cpp +85 -0
  778. data/vendor/FreeImage/Source/OpenEXR/IlmThread/IlmThreadMutexWin32.cpp +79 -0
  779. data/vendor/FreeImage/Source/OpenEXR/IlmThread/IlmThreadNamespace.h +114 -0
  780. data/vendor/FreeImage/Source/OpenEXR/IlmThread/IlmThreadPool.cpp +483 -0
  781. data/vendor/FreeImage/Source/OpenEXR/IlmThread/IlmThreadPool.h +160 -0
  782. data/vendor/FreeImage/Source/OpenEXR/IlmThread/IlmThreadPosix.cpp +98 -0
  783. data/vendor/FreeImage/Source/OpenEXR/IlmThread/IlmThreadSemaphore.cpp +60 -0
  784. data/vendor/FreeImage/Source/OpenEXR/IlmThread/IlmThreadSemaphore.h +112 -0
  785. data/vendor/FreeImage/Source/OpenEXR/IlmThread/IlmThreadSemaphorePosix.cpp +106 -0
  786. data/vendor/FreeImage/Source/OpenEXR/IlmThread/IlmThreadSemaphorePosixCompat.cpp +155 -0
  787. data/vendor/FreeImage/Source/OpenEXR/IlmThread/IlmThreadSemaphoreWin32.cpp +153 -0
  788. data/vendor/FreeImage/Source/OpenEXR/IlmThread/IlmThreadWin32.cpp +100 -0
  789. data/vendor/FreeImage/Source/OpenEXR/Imath/ImathBox.cpp +37 -0
  790. data/vendor/FreeImage/Source/OpenEXR/Imath/ImathBox.h +849 -0
  791. data/vendor/FreeImage/Source/OpenEXR/Imath/ImathBoxAlgo.h +1016 -0
  792. data/vendor/FreeImage/Source/OpenEXR/Imath/ImathColor.h +736 -0
  793. data/vendor/FreeImage/Source/OpenEXR/Imath/ImathColorAlgo.cpp +178 -0
  794. data/vendor/FreeImage/Source/OpenEXR/Imath/ImathColorAlgo.h +257 -0
  795. data/vendor/FreeImage/Source/OpenEXR/Imath/ImathEuler.h +926 -0
  796. data/vendor/FreeImage/Source/OpenEXR/Imath/ImathExc.h +73 -0
  797. data/vendor/FreeImage/Source/OpenEXR/Imath/ImathExport.h +46 -0
  798. data/vendor/FreeImage/Source/OpenEXR/Imath/ImathForward.h +72 -0
  799. data/vendor/FreeImage/Source/OpenEXR/Imath/ImathFrame.h +192 -0
  800. data/vendor/FreeImage/Source/OpenEXR/Imath/ImathFrustum.h +741 -0
  801. data/vendor/FreeImage/Source/OpenEXR/Imath/ImathFrustumTest.h +417 -0
  802. data/vendor/FreeImage/Source/OpenEXR/Imath/ImathFun.cpp +181 -0
  803. data/vendor/FreeImage/Source/OpenEXR/Imath/ImathFun.h +269 -0
  804. data/vendor/FreeImage/Source/OpenEXR/Imath/ImathGL.h +166 -0
  805. data/vendor/FreeImage/Source/OpenEXR/Imath/ImathGLU.h +54 -0
  806. data/vendor/FreeImage/Source/OpenEXR/Imath/ImathHalfLimits.h +68 -0
  807. data/vendor/FreeImage/Source/OpenEXR/Imath/ImathInt64.h +62 -0
  808. data/vendor/FreeImage/Source/OpenEXR/Imath/ImathInterval.h +226 -0
  809. data/vendor/FreeImage/Source/OpenEXR/Imath/ImathLimits.h +268 -0
  810. data/vendor/FreeImage/Source/OpenEXR/Imath/ImathLine.h +185 -0
  811. data/vendor/FreeImage/Source/OpenEXR/Imath/ImathLineAlgo.h +288 -0
  812. data/vendor/FreeImage/Source/OpenEXR/Imath/ImathMath.h +208 -0
  813. data/vendor/FreeImage/Source/OpenEXR/Imath/ImathMatrix.h +3441 -0
  814. data/vendor/FreeImage/Source/OpenEXR/Imath/ImathMatrixAlgo.cpp +1252 -0
  815. data/vendor/FreeImage/Source/OpenEXR/Imath/ImathMatrixAlgo.h +1425 -0
  816. data/vendor/FreeImage/Source/OpenEXR/Imath/ImathNamespace.h +115 -0
  817. data/vendor/FreeImage/Source/OpenEXR/Imath/ImathPlane.h +257 -0
  818. data/vendor/FreeImage/Source/OpenEXR/Imath/ImathPlatform.h +112 -0
  819. data/vendor/FreeImage/Source/OpenEXR/Imath/ImathQuat.h +964 -0
  820. data/vendor/FreeImage/Source/OpenEXR/Imath/ImathRandom.cpp +194 -0
  821. data/vendor/FreeImage/Source/OpenEXR/Imath/ImathRandom.h +401 -0
  822. data/vendor/FreeImage/Source/OpenEXR/Imath/ImathRoots.h +219 -0
  823. data/vendor/FreeImage/Source/OpenEXR/Imath/ImathShear.cpp +54 -0
  824. data/vendor/FreeImage/Source/OpenEXR/Imath/ImathShear.h +656 -0
  825. data/vendor/FreeImage/Source/OpenEXR/Imath/ImathSphere.h +177 -0
  826. data/vendor/FreeImage/Source/OpenEXR/Imath/ImathVec.cpp +583 -0
  827. data/vendor/FreeImage/Source/OpenEXR/Imath/ImathVec.h +2227 -0
  828. data/vendor/FreeImage/Source/OpenEXR/Imath/ImathVecAlgo.h +147 -0
  829. data/vendor/FreeImage/Source/OpenEXR/OpenEXRConfig.h +72 -0
  830. data/vendor/FreeImage/Source/Plugin.h +144 -0
  831. data/vendor/FreeImage/Source/Quantizers.h +354 -0
  832. data/vendor/FreeImage/Source/ToneMapping.h +44 -0
  833. data/vendor/FreeImage/Source/Utilities.h +516 -0
  834. data/vendor/FreeImage/Source/ZLib/adler32.c +179 -0
  835. data/vendor/FreeImage/Source/ZLib/compress.c +80 -0
  836. data/vendor/FreeImage/Source/ZLib/crc32.c +425 -0
  837. data/vendor/FreeImage/Source/ZLib/crc32.h +441 -0
  838. data/vendor/FreeImage/Source/ZLib/deflate.c +1967 -0
  839. data/vendor/FreeImage/Source/ZLib/deflate.h +346 -0
  840. data/vendor/FreeImage/Source/ZLib/gzclose.c +25 -0
  841. data/vendor/FreeImage/Source/ZLib/gzguts.h +209 -0
  842. data/vendor/FreeImage/Source/ZLib/gzlib.c +634 -0
  843. data/vendor/FreeImage/Source/ZLib/gzread.c +594 -0
  844. data/vendor/FreeImage/Source/ZLib/gzwrite.c +577 -0
  845. data/vendor/FreeImage/Source/ZLib/infback.c +640 -0
  846. data/vendor/FreeImage/Source/ZLib/inffast.c +340 -0
  847. data/vendor/FreeImage/Source/ZLib/inffast.h +11 -0
  848. data/vendor/FreeImage/Source/ZLib/inffixed.h +94 -0
  849. data/vendor/FreeImage/Source/ZLib/inflate.c +1512 -0
  850. data/vendor/FreeImage/Source/ZLib/inflate.h +122 -0
  851. data/vendor/FreeImage/Source/ZLib/inftrees.c +306 -0
  852. data/vendor/FreeImage/Source/ZLib/inftrees.h +62 -0
  853. data/vendor/FreeImage/Source/ZLib/trees.c +1226 -0
  854. data/vendor/FreeImage/Source/ZLib/trees.h +128 -0
  855. data/vendor/FreeImage/Source/ZLib/uncompr.c +59 -0
  856. data/vendor/FreeImage/Source/ZLib/zconf.h +511 -0
  857. data/vendor/FreeImage/Source/ZLib/zlib.h +1768 -0
  858. data/vendor/FreeImage/Source/ZLib/zutil.c +324 -0
  859. data/vendor/FreeImage/Source/ZLib/zutil.h +253 -0
  860. metadata +931 -0
@@ -0,0 +1,1944 @@
1
+
2
+ /* pngpriv.h - private declarations for use inside libpng
3
+ *
4
+ * For conditions of distribution and use, see copyright notice in png.h
5
+ * Copyright (c) 1998-2014 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
+ * Last changed in libpng 1.6.10 [March 6, 1014]]
10
+ *
11
+ * This code is released under the libpng license.
12
+ * For conditions of distribution and use, see the disclaimer
13
+ * and license in png.h
14
+ */
15
+
16
+ /* The symbols declared in this file (including the functions declared
17
+ * as extern) are PRIVATE. They are not part of the libpng public
18
+ * interface, and are not recommended for use by regular applications.
19
+ * Some of them may become public in the future; others may stay private,
20
+ * change in an incompatible way, or even disappear.
21
+ * Although the libpng users are not forbidden to include this header,
22
+ * they should be well aware of the issues that may arise from doing so.
23
+ */
24
+
25
+ #ifndef PNGPRIV_H
26
+ #define PNGPRIV_H
27
+
28
+ /* Feature Test Macros. The following are defined here to ensure that correctly
29
+ * implemented libraries reveal the APIs libpng needs to build and hide those
30
+ * that are not needed and potentially damaging to the compilation.
31
+ *
32
+ * Feature Test Macros must be defined before any system header is included (see
33
+ * POSIX 1003.1 2.8.2 "POSIX Symbols."
34
+ *
35
+ * These macros only have an effect if the operating system supports either
36
+ * POSIX 1003.1 or C99, or both. On other operating systems (particularly
37
+ * Windows/Visual Studio) there is no effect; the OS specific tests below are
38
+ * still required (as of 2011-05-02.)
39
+ */
40
+ #define _POSIX_SOURCE 1 /* Just the POSIX 1003.1 and C89 APIs */
41
+
42
+ #ifndef PNG_VERSION_INFO_ONLY
43
+ /* Standard library headers not required by png.h: */
44
+ # include <stdlib.h>
45
+ # include <string.h>
46
+ #endif
47
+
48
+ #define PNGLIB_BUILD /*libpng is being built, not used*/
49
+
50
+ /* If HAVE_CONFIG_H is defined during the build then the build system must
51
+ * provide an appropriate "config.h" file on the include path. The header file
52
+ * must provide definitions as required below (search for "HAVE_CONFIG_H");
53
+ * see configure.ac for more details of the requirements. The macro
54
+ * "PNG_NO_CONFIG_H" is provided for maintainers to test for dependencies on
55
+ * 'configure'; define this macro to prevent the configure build including the
56
+ * configure generated config.h. Libpng is expected to compile without *any*
57
+ * special build system support on a reasonably ANSI-C compliant system.
58
+ */
59
+ #if defined(HAVE_CONFIG_H) && !defined(PNG_NO_CONFIG_H)
60
+ # include <config.h>
61
+
62
+ /* Pick up the definition of 'restrict' from config.h if it was read: */
63
+ # define PNG_RESTRICT restrict
64
+ #endif
65
+
66
+ /* To support symbol prefixing it is necessary to know *before* including png.h
67
+ * whether the fixed point (and maybe other) APIs are exported, because if they
68
+ * are not internal definitions may be required. This is handled below just
69
+ * before png.h is included, but load the configuration now if it is available.
70
+ */
71
+ #ifndef PNGLCONF_H
72
+ # include "pnglibconf.h"
73
+ #endif
74
+
75
+ /* Local renames may change non-exported API functions from png.h */
76
+ #if defined(PNG_PREFIX) && !defined(PNGPREFIX_H)
77
+ # include "pngprefix.h"
78
+ #endif
79
+
80
+ #ifdef PNG_USER_CONFIG
81
+ # include "pngusr.h"
82
+ /* These should have been defined in pngusr.h */
83
+ # ifndef PNG_USER_PRIVATEBUILD
84
+ # define PNG_USER_PRIVATEBUILD "Custom libpng build"
85
+ # endif
86
+ # ifndef PNG_USER_DLLFNAME_POSTFIX
87
+ # define PNG_USER_DLLFNAME_POSTFIX "Cb"
88
+ # endif
89
+ #endif
90
+
91
+ /* Compile time options.
92
+ * =====================
93
+ * In a multi-arch build the compiler may compile the code several times for the
94
+ * same object module, producing different binaries for different architectures.
95
+ * When this happens configure-time setting of the target host options cannot be
96
+ * done and this interferes with the handling of the ARM NEON optimizations, and
97
+ * possibly other similar optimizations. Put additional tests here; in general
98
+ * this is needed when the same option can be changed at both compile time and
99
+ * run time depending on the target OS (i.e. iOS vs Android.)
100
+ *
101
+ * NOTE: symbol prefixing does not pass $(CFLAGS) to the preprocessor, because
102
+ * this is not possible with certain compilers (Oracle SUN OS CC), as a result
103
+ * it is necessary to ensure that all extern functions that *might* be used
104
+ * regardless of $(CFLAGS) get declared in this file. The test on __ARM_NEON__
105
+ * below is one example of this behavior because it is controlled by the
106
+ * presence or not of -mfpu=neon on the GCC command line, it is possible to do
107
+ * this in $(CC), e.g. "CC=gcc -mfpu=neon", but people who build libpng rarely
108
+ * do this.
109
+ */
110
+ #ifndef PNG_ARM_NEON_OPT
111
+ /* ARM NEON optimizations are being controlled by the compiler settings,
112
+ * typically the target FPU. If the FPU has been set to NEON (-mfpu=neon
113
+ * with GCC) then the compiler will define __ARM_NEON__ and we can rely
114
+ * unconditionally on NEON instructions not crashing, otherwise we must
115
+ * disable use of NEON instructions.
116
+ *
117
+ * NOTE: at present these optimizations depend on 'ALIGNED_MEMORY', so they
118
+ * can only be turned on automatically if that is supported too. If
119
+ * PNG_ARM_NEON_OPT is set in CPPFLAGS (to >0) then arm/arm_init.c will fail
120
+ * to compile with an appropriate #error if ALIGNED_MEMORY has been turned
121
+ * off.
122
+ *
123
+ * Note that gcc-4.9 defines __ARM_NEON instead of __ARM_NEON__, so we
124
+ * check both variants.
125
+ */
126
+ # if (defined(__ARM_NEON__) || defined(__ARM_NEON)) && \
127
+ defined(PNG_ALIGNED_MEMORY_SUPPORTED)
128
+ # define PNG_ARM_NEON_OPT 2
129
+ # else
130
+ # define PNG_ARM_NEON_OPT 0
131
+ # endif
132
+ #endif
133
+
134
+ #if PNG_ARM_NEON_OPT > 0
135
+ /* NEON optimizations are to be at least considered by libpng, so enable the
136
+ * callbacks to do this.
137
+ */
138
+ # define PNG_FILTER_OPTIMIZATIONS png_init_filter_functions_neon
139
+
140
+ /* By default the 'intrinsics' code in arm/filter_neon_intrinsics.c is used
141
+ * if possible - if __ARM_NEON__ is set and the compiler version is not known
142
+ * to be broken. This is controlled by PNG_ARM_NEON_IMPLEMENTATION which can
143
+ * be:
144
+ *
145
+ * 1 The intrinsics code (the default with __ARM_NEON__)
146
+ * 2 The hand coded assembler (the default without __ARM_NEON__)
147
+ *
148
+ * It is possible to set PNG_ARM_NEON_IMPLEMENTATION in CPPFLAGS, however
149
+ * this is *NOT* supported and may cease to work even after a minor revision
150
+ * to libpng. It *is* valid to do this for testing purposes, e.g. speed
151
+ * testing or a new compiler, but the results should be communicated to the
152
+ * libpng implementation list for incorporation in the next minor release.
153
+ */
154
+ # ifndef PNG_ARM_NEON_IMPLEMENTATION
155
+ # if defined(__ARM_NEON__) || defined(__ARM_NEON)
156
+ # if defined(__clang__)
157
+ /* At present it is unknown by the libpng developers which versions
158
+ * of clang support the intrinsics, however some or perhaps all
159
+ * versions do not work with the assembler so this may be
160
+ * irrelevant, so just use the default (do nothing here.)
161
+ */
162
+ # elif defined(__GNUC__)
163
+ /* GCC 4.5.4 NEON support is known to be broken. 4.6.3 is known to
164
+ * work, so if this *is* GCC, or G++, look for a version >4.5
165
+ */
166
+ # if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6)
167
+ # define PNG_ARM_NEON_IMPLEMENTATION 2
168
+ # endif /* no GNUC support */
169
+ # endif /* __GNUC__ */
170
+ # else /* !defined __ARM_NEON__ */
171
+ /* The 'intrinsics' code simply won't compile without this -mfpu=neon:
172
+ */
173
+ # define PNG_ARM_NEON_IMPLEMENTATION 2
174
+ # endif /* __ARM_NEON__ */
175
+ # endif /* !PNG_ARM_NEON_IMPLEMENTATION */
176
+
177
+ # ifndef PNG_ARM_NEON_IMPLEMENTATION
178
+ /* Use the intrinsics code by default. */
179
+ # define PNG_ARM_NEON_IMPLEMENTATION 1
180
+ # endif
181
+ #endif /* PNG_ARM_NEON_OPT > 0 */
182
+
183
+ /* Is this a build of a DLL where compilation of the object modules requires
184
+ * different preprocessor settings to those required for a simple library? If
185
+ * so PNG_BUILD_DLL must be set.
186
+ *
187
+ * If libpng is used inside a DLL but that DLL does not export the libpng APIs
188
+ * PNG_BUILD_DLL must not be set. To avoid the code below kicking in build a
189
+ * static library of libpng then link the DLL against that.
190
+ */
191
+ #ifndef PNG_BUILD_DLL
192
+ # ifdef DLL_EXPORT
193
+ /* This is set by libtool when files are compiled for a DLL; libtool
194
+ * always compiles twice, even on systems where it isn't necessary. Set
195
+ * PNG_BUILD_DLL in case it is necessary:
196
+ */
197
+ # define PNG_BUILD_DLL
198
+ # else
199
+ # ifdef _WINDLL
200
+ /* This is set by the Microsoft Visual Studio IDE in projects that
201
+ * build a DLL. It can't easily be removed from those projects (it
202
+ * isn't visible in the Visual Studio UI) so it is a fairly reliable
203
+ * indication that PNG_IMPEXP needs to be set to the DLL export
204
+ * attributes.
205
+ */
206
+ # define PNG_BUILD_DLL
207
+ # else
208
+ # ifdef __DLL__
209
+ /* This is set by the Borland C system when compiling for a DLL
210
+ * (as above.)
211
+ */
212
+ # define PNG_BUILD_DLL
213
+ # else
214
+ /* Add additional compiler cases here. */
215
+ # endif
216
+ # endif
217
+ # endif
218
+ #endif /* Setting PNG_BUILD_DLL if required */
219
+
220
+ /* See pngconf.h for more details: the builder of the library may set this on
221
+ * the command line to the right thing for the specific compilation system or it
222
+ * may be automagically set above (at present we know of no system where it does
223
+ * need to be set on the command line.)
224
+ *
225
+ * PNG_IMPEXP must be set here when building the library to prevent pngconf.h
226
+ * setting it to the "import" setting for a DLL build.
227
+ */
228
+ #ifndef PNG_IMPEXP
229
+ # ifdef PNG_BUILD_DLL
230
+ # define PNG_IMPEXP PNG_DLL_EXPORT
231
+ # else
232
+ /* Not building a DLL, or the DLL doesn't require specific export
233
+ * definitions.
234
+ */
235
+ # define PNG_IMPEXP
236
+ # endif
237
+ #endif
238
+
239
+ /* No warnings for private or deprecated functions in the build: */
240
+ #ifndef PNG_DEPRECATED
241
+ # define PNG_DEPRECATED
242
+ #endif
243
+ #ifndef PNG_PRIVATE
244
+ # define PNG_PRIVATE
245
+ #endif
246
+
247
+ /* Symbol preprocessing support.
248
+ *
249
+ * To enable listing global, but internal, symbols the following macros should
250
+ * always be used to declare an extern data or function object in this file.
251
+ */
252
+ #ifndef PNG_INTERNAL_DATA
253
+ # define PNG_INTERNAL_DATA(type, name, array) extern type name array
254
+ #endif
255
+
256
+ #ifndef PNG_INTERNAL_FUNCTION
257
+ # define PNG_INTERNAL_FUNCTION(type, name, args, attributes)\
258
+ extern PNG_FUNCTION(type, name, args, PNG_EMPTY attributes)
259
+ #endif
260
+
261
+ #ifndef PNG_INTERNAL_CALLBACK
262
+ # define PNG_INTERNAL_CALLBACK(type, name, args, attributes)\
263
+ extern PNG_FUNCTION(type, (PNGCBAPI name), args, PNG_EMPTY attributes)
264
+ #endif
265
+
266
+ /* If floating or fixed point APIs are disabled they may still be compiled
267
+ * internally. To handle this make sure they are declared as the appropriate
268
+ * internal extern function (otherwise the symbol prefixing stuff won't work and
269
+ * the functions will be used without definitions.)
270
+ *
271
+ * NOTE: although all the API functions are declared here they are not all
272
+ * actually built! Because the declarations are still made it is necessary to
273
+ * fake out types that they depend on.
274
+ */
275
+ #ifndef PNG_FP_EXPORT
276
+ # ifndef PNG_FLOATING_POINT_SUPPORTED
277
+ # define PNG_FP_EXPORT(ordinal, type, name, args)\
278
+ PNG_INTERNAL_FUNCTION(type, name, args, PNG_EMPTY);
279
+ # ifndef PNG_VERSION_INFO_ONLY
280
+ typedef struct png_incomplete png_double;
281
+ typedef png_double* png_doublep;
282
+ typedef const png_double* png_const_doublep;
283
+ typedef png_double** png_doublepp;
284
+ # endif
285
+ # endif
286
+ #endif
287
+ #ifndef PNG_FIXED_EXPORT
288
+ # ifndef PNG_FIXED_POINT_SUPPORTED
289
+ # define PNG_FIXED_EXPORT(ordinal, type, name, args)\
290
+ PNG_INTERNAL_FUNCTION(type, name, args, PNG_EMPTY);
291
+ # endif
292
+ #endif
293
+
294
+ #include "png.h"
295
+
296
+ /* pngconf.h does not set PNG_DLL_EXPORT unless it is required, so: */
297
+ #ifndef PNG_DLL_EXPORT
298
+ # define PNG_DLL_EXPORT
299
+ #endif
300
+
301
+ /* SECURITY and SAFETY:
302
+ *
303
+ * By default libpng is built without any internal limits on image size,
304
+ * individual heap (png_malloc) allocations or the total amount of memory used.
305
+ * If PNG_SAFE_LIMITS_SUPPORTED is defined, however, the limits below are used
306
+ * (unless individually overridden). These limits are believed to be fairly
307
+ * safe, but builders of secure systems should verify the values against the
308
+ * real system capabilities.
309
+ */
310
+ #ifdef PNG_SAFE_LIMITS_SUPPORTED
311
+ /* 'safe' limits */
312
+ # ifndef PNG_USER_WIDTH_MAX
313
+ # define PNG_USER_WIDTH_MAX 1000000
314
+ # endif
315
+ # ifndef PNG_USER_HEIGHT_MAX
316
+ # define PNG_USER_HEIGHT_MAX 1000000
317
+ # endif
318
+ # ifndef PNG_USER_CHUNK_CACHE_MAX
319
+ # define PNG_USER_CHUNK_CACHE_MAX 128
320
+ # endif
321
+ # ifndef PNG_USER_CHUNK_MALLOC_MAX
322
+ # define PNG_USER_CHUNK_MALLOC_MAX 8000000
323
+ # endif
324
+ #else
325
+ /* values for no limits */
326
+ # ifndef PNG_USER_WIDTH_MAX
327
+ # define PNG_USER_WIDTH_MAX 0x7fffffff
328
+ # endif
329
+ # ifndef PNG_USER_HEIGHT_MAX
330
+ # define PNG_USER_HEIGHT_MAX 0x7fffffff
331
+ # endif
332
+ # ifndef PNG_USER_CHUNK_CACHE_MAX
333
+ # define PNG_USER_CHUNK_CACHE_MAX 0
334
+ # endif
335
+ # ifndef PNG_USER_CHUNK_MALLOC_MAX
336
+ # define PNG_USER_CHUNK_MALLOC_MAX 0
337
+ # endif
338
+ #endif
339
+
340
+ /* Moved to pngpriv.h at libpng-1.5.0 */
341
+ /* NOTE: some of these may have been used in external applications as
342
+ * these definitions were exposed in pngconf.h prior to 1.5.
343
+ */
344
+
345
+ /* If you are running on a machine where you cannot allocate more
346
+ * than 64K of memory at once, uncomment this. While libpng will not
347
+ * normally need that much memory in a chunk (unless you load up a very
348
+ * large file), zlib needs to know how big of a chunk it can use, and
349
+ * libpng thus makes sure to check any memory allocation to verify it
350
+ * will fit into memory.
351
+ *
352
+ * zlib provides 'MAXSEG_64K' which, if defined, indicates the
353
+ * same limit and pngconf.h (already included) sets the limit
354
+ * if certain operating systems are detected.
355
+ */
356
+ #if defined(MAXSEG_64K) && !defined(PNG_MAX_MALLOC_64K)
357
+ # define PNG_MAX_MALLOC_64K
358
+ #endif
359
+
360
+ #ifndef PNG_UNUSED
361
+ /* Unused formal parameter warnings are silenced using the following macro
362
+ * which is expected to have no bad effects on performance (optimizing
363
+ * compilers will probably remove it entirely). Note that if you replace
364
+ * it with something other than whitespace, you must include the terminating
365
+ * semicolon.
366
+ */
367
+ # define PNG_UNUSED(param) (void)param;
368
+ #endif
369
+
370
+ /* Just a little check that someone hasn't tried to define something
371
+ * contradictory.
372
+ */
373
+ #if (PNG_ZBUF_SIZE > 65536L) && defined(PNG_MAX_MALLOC_64K)
374
+ # undef PNG_ZBUF_SIZE
375
+ # define PNG_ZBUF_SIZE 65536L
376
+ #endif
377
+
378
+ /* If warnings or errors are turned off the code is disabled or redirected here.
379
+ * From 1.5.4 functions have been added to allow very limited formatting of
380
+ * error and warning messages - this code will also be disabled here.
381
+ */
382
+ #ifdef PNG_WARNINGS_SUPPORTED
383
+ # define PNG_WARNING_PARAMETERS(p) png_warning_parameters p;
384
+ #else
385
+ # define png_warning_parameter(p,number,string) ((void)0)
386
+ # define png_warning_parameter_unsigned(p,number,format,value) ((void)0)
387
+ # define png_warning_parameter_signed(p,number,format,value) ((void)0)
388
+ # define png_formatted_warning(pp,p,message) ((void)(pp))
389
+ # define PNG_WARNING_PARAMETERS(p)
390
+ #endif
391
+ #ifndef PNG_ERROR_TEXT_SUPPORTED
392
+ # define png_fixed_error(s1,s2) png_err(s1)
393
+ #endif
394
+
395
+ /* C allows up-casts from (void*) to any pointer and (const void*) to any
396
+ * pointer to a const object. C++ regards this as a type error and requires an
397
+ * explicit, static, cast and provides the static_cast<> rune to ensure that
398
+ * const is not cast away.
399
+ */
400
+ #ifdef __cplusplus
401
+ # define png_voidcast(type, value) static_cast<type>(value)
402
+ # define png_constcast(type, value) const_cast<type>(value)
403
+ # define png_aligncast(type, value) \
404
+ static_cast<type>(static_cast<void*>(value))
405
+ # define png_aligncastconst(type, value) \
406
+ static_cast<type>(static_cast<const void*>(value))
407
+ #else
408
+ # define png_voidcast(type, value) (value)
409
+ # define png_constcast(type, value) ((type)(value))
410
+ # define png_aligncast(type, value) ((void*)(value))
411
+ # define png_aligncastconst(type, value) ((const void*)(value))
412
+ #endif /* __cplusplus */
413
+
414
+ /* Some fixed point APIs are still required even if not exported because
415
+ * they get used by the corresponding floating point APIs. This magic
416
+ * deals with this:
417
+ */
418
+ #ifdef PNG_FIXED_POINT_SUPPORTED
419
+ # define PNGFAPI PNGAPI
420
+ #else
421
+ # define PNGFAPI /* PRIVATE */
422
+ #endif
423
+
424
+ #ifndef PNG_VERSION_INFO_ONLY
425
+ /* Other defines specific to compilers can go here. Try to keep
426
+ * them inside an appropriate ifdef/endif pair for portability.
427
+ */
428
+ #if defined(PNG_FLOATING_POINT_SUPPORTED) ||\
429
+ defined(PNG_FLOATING_ARITHMETIC_SUPPORTED)
430
+ /* png.c requires the following ANSI-C constants if the conversion of
431
+ * floating point to ASCII is implemented therein:
432
+ *
433
+ * DBL_DIG Maximum number of decimal digits (can be set to any constant)
434
+ * DBL_MIN Smallest normalized fp number (can be set to an arbitrary value)
435
+ * DBL_MAX Maximum floating point number (can be set to an arbitrary value)
436
+ */
437
+ # include <float.h>
438
+
439
+ # if (defined(__MWERKS__) && defined(macintosh)) || defined(applec) || \
440
+ defined(THINK_C) || defined(__SC__) || defined(TARGET_OS_MAC)
441
+ /* We need to check that <math.h> hasn't already been included earlier
442
+ * as it seems it doesn't agree with <fp.h>, yet we should really use
443
+ * <fp.h> if possible.
444
+ */
445
+ # if !defined(__MATH_H__) && !defined(__MATH_H) && !defined(__cmath__)
446
+ # include <fp.h>
447
+ # endif
448
+ # else
449
+ # include <math.h>
450
+ # endif
451
+ # if defined(_AMIGA) && defined(__SASC) && defined(_M68881)
452
+ /* Amiga SAS/C: We must include builtin FPU functions when compiling using
453
+ * MATH=68881
454
+ */
455
+ # include <m68881.h>
456
+ # endif
457
+ #endif
458
+
459
+ /* This provides the non-ANSI (far) memory allocation routines. */
460
+ #if defined(__TURBOC__) && defined(__MSDOS__)
461
+ # include <mem.h>
462
+ # include <alloc.h>
463
+ #endif
464
+
465
+ #if defined(WIN32) || defined(_Windows) || defined(_WINDOWS) || \
466
+ defined(_WIN32) || defined(__WIN32__)
467
+ # include <windows.h> /* defines _WINDOWS_ macro */
468
+ #endif
469
+ #endif /* PNG_VERSION_INFO_ONLY */
470
+
471
+ /* Moved here around 1.5.0beta36 from pngconf.h */
472
+ /* Users may want to use these so they are not private. Any library
473
+ * functions that are passed far data must be model-independent.
474
+ */
475
+
476
+ /* Memory model/platform independent fns */
477
+ #ifndef PNG_ABORT
478
+ # ifdef _WINDOWS_
479
+ # define PNG_ABORT() ExitProcess(0)
480
+ # else
481
+ # define PNG_ABORT() abort()
482
+ # endif
483
+ #endif
484
+
485
+ /* These macros may need to be architecture dependent. */
486
+ #define PNG_ALIGN_NONE 0 /* do not use data alignment */
487
+ #define PNG_ALIGN_ALWAYS 1 /* assume unaligned accesses are OK */
488
+ #ifdef offsetof
489
+ # define PNG_ALIGN_OFFSET 2 /* use offsetof to determine alignment */
490
+ #else
491
+ # define PNG_ALIGN_OFFSET -1 /* prevent the use of this */
492
+ #endif
493
+ #define PNG_ALIGN_SIZE 3 /* use sizeof to determine alignment */
494
+
495
+ #ifndef PNG_ALIGN_TYPE
496
+ /* Default to using aligned access optimizations and requiring alignment to a
497
+ * multiple of the data type size. Override in a compiler specific fashion
498
+ * if necessary by inserting tests here:
499
+ */
500
+ # define PNG_ALIGN_TYPE PNG_ALIGN_SIZE
501
+ #endif
502
+
503
+ #if PNG_ALIGN_TYPE == PNG_ALIGN_SIZE
504
+ /* This is used because in some compiler implementations non-aligned
505
+ * structure members are supported, so the offsetof approach below fails.
506
+ * Set PNG_ALIGN_SIZE=0 for compiler combinations where unaligned access
507
+ * is good for performance. Do not do this unless you have tested the result
508
+ * and understand it.
509
+ */
510
+ # define png_alignof(type) (sizeof (type))
511
+ #else
512
+ # if PNG_ALIGN_TYPE == PNG_ALIGN_OFFSET
513
+ # define png_alignof(type) offsetof(struct{char c; type t;}, t)
514
+ # else
515
+ # if PNG_ALIGN_TYPE == PNG_ALIGN_ALWAYS
516
+ # define png_alignof(type) (1)
517
+ # endif
518
+ /* Else leave png_alignof undefined to prevent use thereof */
519
+ # endif
520
+ #endif
521
+
522
+ /* This implicitly assumes alignment is always to a power of 2. */
523
+ #ifdef png_alignof
524
+ # define png_isaligned(ptr, type)\
525
+ ((((const char*)ptr-(const char*)0) & (png_alignof(type)-1)) == 0)
526
+ #else
527
+ # define png_isaligned(ptr, type) 0
528
+ #endif
529
+
530
+ /* End of memory model/platform independent support */
531
+ /* End of 1.5.0beta36 move from pngconf.h */
532
+
533
+ /* CONSTANTS and UTILITY MACROS
534
+ * These are used internally by libpng and not exposed in the API
535
+ */
536
+
537
+ /* Various modes of operation. Note that after an init, mode is set to
538
+ * zero automatically when the structure is created. Three of these
539
+ * are defined in png.h because they need to be visible to applications
540
+ * that call png_set_unknown_chunk().
541
+ */
542
+ /* #define PNG_HAVE_IHDR 0x01 (defined in png.h) */
543
+ /* #define PNG_HAVE_PLTE 0x02 (defined in png.h) */
544
+ #define PNG_HAVE_IDAT 0x04
545
+ /* #define PNG_AFTER_IDAT 0x08 (defined in png.h) */
546
+ #define PNG_HAVE_IEND 0x10
547
+ /* 0x20 (unused) */
548
+ /* 0x40 (unused) */
549
+ /* 0x80 (unused) */
550
+ #define PNG_HAVE_CHUNK_HEADER 0x100
551
+ #define PNG_WROTE_tIME 0x200
552
+ #define PNG_WROTE_INFO_BEFORE_PLTE 0x400
553
+ #define PNG_BACKGROUND_IS_GRAY 0x800
554
+ #define PNG_HAVE_PNG_SIGNATURE 0x1000
555
+ #define PNG_HAVE_CHUNK_AFTER_IDAT 0x2000 /* Have another chunk after IDAT */
556
+ /* 0x4000 (unused) */
557
+ #define PNG_IS_READ_STRUCT 0x8000 /* Else is a write struct */
558
+
559
+ /* Flags for the transformations the PNG library does on the image data */
560
+ #define PNG_BGR 0x0001
561
+ #define PNG_INTERLACE 0x0002
562
+ #define PNG_PACK 0x0004
563
+ #define PNG_SHIFT 0x0008
564
+ #define PNG_SWAP_BYTES 0x0010
565
+ #define PNG_INVERT_MONO 0x0020
566
+ #define PNG_QUANTIZE 0x0040
567
+ #define PNG_COMPOSE 0x0080 /* Was PNG_BACKGROUND */
568
+ #define PNG_BACKGROUND_EXPAND 0x0100
569
+ #define PNG_EXPAND_16 0x0200 /* Added to libpng 1.5.2 */
570
+ #define PNG_16_TO_8 0x0400 /* Becomes 'chop' in 1.5.4 */
571
+ #define PNG_RGBA 0x0800
572
+ #define PNG_EXPAND 0x1000
573
+ #define PNG_GAMMA 0x2000
574
+ #define PNG_GRAY_TO_RGB 0x4000
575
+ #define PNG_FILLER 0x8000
576
+ #define PNG_PACKSWAP 0x10000
577
+ #define PNG_SWAP_ALPHA 0x20000
578
+ #define PNG_STRIP_ALPHA 0x40000
579
+ #define PNG_INVERT_ALPHA 0x80000
580
+ #define PNG_USER_TRANSFORM 0x100000
581
+ #define PNG_RGB_TO_GRAY_ERR 0x200000
582
+ #define PNG_RGB_TO_GRAY_WARN 0x400000
583
+ #define PNG_RGB_TO_GRAY 0x600000 /* two bits, RGB_TO_GRAY_ERR|WARN */
584
+ #define PNG_ENCODE_ALPHA 0x800000 /* Added to libpng-1.5.4 */
585
+ #define PNG_ADD_ALPHA 0x1000000 /* Added to libpng-1.2.7 */
586
+ #define PNG_EXPAND_tRNS 0x2000000 /* Added to libpng-1.2.9 */
587
+ #define PNG_SCALE_16_TO_8 0x4000000 /* Added to libpng-1.5.4 */
588
+ /* 0x8000000 unused */
589
+ /* 0x10000000 unused */
590
+ /* 0x20000000 unused */
591
+ /* 0x40000000 unused */
592
+ /* Flags for png_create_struct */
593
+ #define PNG_STRUCT_PNG 0x0001
594
+ #define PNG_STRUCT_INFO 0x0002
595
+
596
+ /* Scaling factor for filter heuristic weighting calculations */
597
+ #define PNG_WEIGHT_FACTOR (1<<(PNG_WEIGHT_SHIFT))
598
+ #define PNG_COST_FACTOR (1<<(PNG_COST_SHIFT))
599
+
600
+ /* Flags for the png_ptr->flags rather than declaring a byte for each one */
601
+ #define PNG_FLAG_ZLIB_CUSTOM_STRATEGY 0x0001
602
+ #define PNG_FLAG_ZSTREAM_INITIALIZED 0x0002 /* Added to libpng-1.6.0 */
603
+ /* 0x0004 unused */
604
+ #define PNG_FLAG_ZSTREAM_ENDED 0x0008 /* Added to libpng-1.6.0 */
605
+ /* 0x0010 unused */
606
+ /* 0x0020 unused */
607
+ #define PNG_FLAG_ROW_INIT 0x0040
608
+ #define PNG_FLAG_FILLER_AFTER 0x0080
609
+ #define PNG_FLAG_CRC_ANCILLARY_USE 0x0100
610
+ #define PNG_FLAG_CRC_ANCILLARY_NOWARN 0x0200
611
+ #define PNG_FLAG_CRC_CRITICAL_USE 0x0400
612
+ #define PNG_FLAG_CRC_CRITICAL_IGNORE 0x0800
613
+ #define PNG_FLAG_ASSUME_sRGB 0x1000 /* Added to libpng-1.5.4 */
614
+ #define PNG_FLAG_OPTIMIZE_ALPHA 0x2000 /* Added to libpng-1.5.4 */
615
+ #define PNG_FLAG_DETECT_UNINITIALIZED 0x4000 /* Added to libpng-1.5.4 */
616
+ /* #define PNG_FLAG_KEEP_UNKNOWN_CHUNKS 0x8000 */
617
+ /* #define PNG_FLAG_KEEP_UNSAFE_CHUNKS 0x10000 */
618
+ #define PNG_FLAG_LIBRARY_MISMATCH 0x20000
619
+ #define PNG_FLAG_STRIP_ERROR_NUMBERS 0x40000
620
+ #define PNG_FLAG_STRIP_ERROR_TEXT 0x80000
621
+ #define PNG_FLAG_BENIGN_ERRORS_WARN 0x100000 /* Added to libpng-1.4.0 */
622
+ #define PNG_FLAG_APP_WARNINGS_WARN 0x200000 /* Added to libpng-1.6.0 */
623
+ #define PNG_FLAG_APP_ERRORS_WARN 0x400000 /* Added to libpng-1.6.0 */
624
+ /* 0x800000 unused */
625
+ /* 0x1000000 unused */
626
+ /* 0x2000000 unused */
627
+ /* 0x4000000 unused */
628
+ /* 0x8000000 unused */
629
+ /* 0x10000000 unused */
630
+ /* 0x20000000 unused */
631
+ /* 0x40000000 unused */
632
+
633
+ #define PNG_FLAG_CRC_ANCILLARY_MASK (PNG_FLAG_CRC_ANCILLARY_USE | \
634
+ PNG_FLAG_CRC_ANCILLARY_NOWARN)
635
+
636
+ #define PNG_FLAG_CRC_CRITICAL_MASK (PNG_FLAG_CRC_CRITICAL_USE | \
637
+ PNG_FLAG_CRC_CRITICAL_IGNORE)
638
+
639
+ #define PNG_FLAG_CRC_MASK (PNG_FLAG_CRC_ANCILLARY_MASK | \
640
+ PNG_FLAG_CRC_CRITICAL_MASK)
641
+
642
+ /* Save typing and make code easier to understand */
643
+
644
+ #define PNG_COLOR_DIST(c1, c2) (abs((int)((c1).red) - (int)((c2).red)) + \
645
+ abs((int)((c1).green) - (int)((c2).green)) + \
646
+ abs((int)((c1).blue) - (int)((c2).blue)))
647
+
648
+ /* Added to libpng-1.6.0: scale a 16-bit value in the range 0..65535 to 0..255
649
+ * by dividing by 257 *with rounding*. This macro is exact for the given range.
650
+ * See the discourse in pngrtran.c png_do_scale_16_to_8. The values in the
651
+ * macro were established by experiment (modifying the added value). The macro
652
+ * has a second variant that takes a value already scaled by 255 and divides by
653
+ * 65535 - this has a maximum error of .502. Over the range 0..65535*65535 it
654
+ * only gives off-by-one errors and only for 0.5% (1 in 200) of the values.
655
+ */
656
+ #define PNG_DIV65535(v24) (((v24) + 32895) >> 16)
657
+ #define PNG_DIV257(v16) PNG_DIV65535((png_uint_32)(v16) * 255)
658
+
659
+ /* Added to libpng-1.2.6 JB */
660
+ #define PNG_ROWBYTES(pixel_bits, width) \
661
+ ((pixel_bits) >= 8 ? \
662
+ ((png_size_t)(width) * (((png_size_t)(pixel_bits)) >> 3)) : \
663
+ (( ((png_size_t)(width) * ((png_size_t)(pixel_bits))) + 7) >> 3) )
664
+
665
+ /* PNG_OUT_OF_RANGE returns true if value is outside the range
666
+ * ideal-delta..ideal+delta. Each argument is evaluated twice.
667
+ * "ideal" and "delta" should be constants, normally simple
668
+ * integers, "value" a variable. Added to libpng-1.2.6 JB
669
+ */
670
+ #define PNG_OUT_OF_RANGE(value, ideal, delta) \
671
+ ( (value) < (ideal)-(delta) || (value) > (ideal)+(delta) )
672
+
673
+ /* Conversions between fixed and floating point, only defined if
674
+ * required (to make sure the code doesn't accidentally use float
675
+ * when it is supposedly disabled.)
676
+ */
677
+ #ifdef PNG_FLOATING_POINT_SUPPORTED
678
+ /* The floating point conversion can't overflow, though it can and
679
+ * does lose accuracy relative to the original fixed point value.
680
+ * In practice this doesn't matter because png_fixed_point only
681
+ * stores numbers with very low precision. The png_ptr and s
682
+ * arguments are unused by default but are there in case error
683
+ * checking becomes a requirement.
684
+ */
685
+ #define png_float(png_ptr, fixed, s) (.00001 * (fixed))
686
+
687
+ /* The fixed point conversion performs range checking and evaluates
688
+ * its argument multiple times, so must be used with care. The
689
+ * range checking uses the PNG specification values for a signed
690
+ * 32 bit fixed point value except that the values are deliberately
691
+ * rounded-to-zero to an integral value - 21474 (21474.83 is roughly
692
+ * (2^31-1) * 100000). 's' is a string that describes the value being
693
+ * converted.
694
+ *
695
+ * NOTE: this macro will raise a png_error if the range check fails,
696
+ * therefore it is normally only appropriate to use this on values
697
+ * that come from API calls or other sources where an out of range
698
+ * error indicates a programming error, not a data error!
699
+ *
700
+ * NOTE: by default this is off - the macro is not used - because the
701
+ * function call saves a lot of code.
702
+ */
703
+ #ifdef PNG_FIXED_POINT_MACRO_SUPPORTED
704
+ #define png_fixed(png_ptr, fp, s) ((fp) <= 21474 && (fp) >= -21474 ?\
705
+ ((png_fixed_point)(100000 * (fp))) : (png_fixed_error(png_ptr, s),0))
706
+ #endif
707
+ /* else the corresponding function is defined below, inside the scope of the
708
+ * cplusplus test.
709
+ */
710
+ #endif
711
+
712
+ /* Constants for known chunk types. If you need to add a chunk, define the name
713
+ * here. For historical reasons these constants have the form png_<name>; i.e.
714
+ * the prefix is lower case. Please use decimal values as the parameters to
715
+ * match the ISO PNG specification and to avoid relying on the C locale
716
+ * interpretation of character values.
717
+ *
718
+ * Prior to 1.5.6 these constants were strings, as of 1.5.6 png_uint_32 values
719
+ * are computed and a new macro (PNG_STRING_FROM_CHUNK) added to allow a string
720
+ * to be generated if required.
721
+ *
722
+ * PNG_32b correctly produces a value shifted by up to 24 bits, even on
723
+ * architectures where (int) is only 16 bits.
724
+ */
725
+ #define PNG_32b(b,s) ((png_uint_32)(b) << (s))
726
+ #define PNG_U32(b1,b2,b3,b4) \
727
+ (PNG_32b(b1,24) | PNG_32b(b2,16) | PNG_32b(b3,8) | PNG_32b(b4,0))
728
+
729
+ /* Constants for known chunk types.
730
+ *
731
+ * MAINTAINERS: If you need to add a chunk, define the name here.
732
+ * For historical reasons these constants have the form png_<name>; i.e.
733
+ * the prefix is lower case. Please use decimal values as the parameters to
734
+ * match the ISO PNG specification and to avoid relying on the C locale
735
+ * interpretation of character values. Please keep the list sorted.
736
+ *
737
+ * Notice that PNG_U32 is used to define a 32-bit value for the 4 byte chunk
738
+ * type. In fact the specification does not express chunk types this way,
739
+ * however using a 32-bit value means that the chunk type can be read from the
740
+ * stream using exactly the same code as used for a 32-bit unsigned value and
741
+ * can be examined far more efficiently (using one arithmetic compare).
742
+ *
743
+ * Prior to 1.5.6 the chunk type constants were expressed as C strings. The
744
+ * libpng API still uses strings for 'unknown' chunks and a macro,
745
+ * PNG_STRING_FROM_CHUNK, allows a string to be generated if required. Notice
746
+ * that for portable code numeric values must still be used; the string "IHDR"
747
+ * is not portable and neither is PNG_U32('I', 'H', 'D', 'R').
748
+ *
749
+ * In 1.7.0 the definitions will be made public in png.h to avoid having to
750
+ * duplicate the same definitions in application code.
751
+ */
752
+ #define png_IDAT PNG_U32( 73, 68, 65, 84)
753
+ #define png_IEND PNG_U32( 73, 69, 78, 68)
754
+ #define png_IHDR PNG_U32( 73, 72, 68, 82)
755
+ #define png_PLTE PNG_U32( 80, 76, 84, 69)
756
+ #define png_bKGD PNG_U32( 98, 75, 71, 68)
757
+ #define png_cHRM PNG_U32( 99, 72, 82, 77)
758
+ #define png_fRAc PNG_U32(102, 82, 65, 99) /* registered, not defined */
759
+ #define png_gAMA PNG_U32(103, 65, 77, 65)
760
+ #define png_gIFg PNG_U32(103, 73, 70, 103)
761
+ #define png_gIFt PNG_U32(103, 73, 70, 116) /* deprecated */
762
+ #define png_gIFx PNG_U32(103, 73, 70, 120)
763
+ #define png_hIST PNG_U32(104, 73, 83, 84)
764
+ #define png_iCCP PNG_U32(105, 67, 67, 80)
765
+ #define png_iTXt PNG_U32(105, 84, 88, 116)
766
+ #define png_oFFs PNG_U32(111, 70, 70, 115)
767
+ #define png_pCAL PNG_U32(112, 67, 65, 76)
768
+ #define png_pHYs PNG_U32(112, 72, 89, 115)
769
+ #define png_sBIT PNG_U32(115, 66, 73, 84)
770
+ #define png_sCAL PNG_U32(115, 67, 65, 76)
771
+ #define png_sPLT PNG_U32(115, 80, 76, 84)
772
+ #define png_sRGB PNG_U32(115, 82, 71, 66)
773
+ #define png_sTER PNG_U32(115, 84, 69, 82)
774
+ #define png_tEXt PNG_U32(116, 69, 88, 116)
775
+ #define png_tIME PNG_U32(116, 73, 77, 69)
776
+ #define png_tRNS PNG_U32(116, 82, 78, 83)
777
+ #define png_zTXt PNG_U32(122, 84, 88, 116)
778
+
779
+ /* The following will work on (signed char*) strings, whereas the get_uint_32
780
+ * macro will fail on top-bit-set values because of the sign extension.
781
+ */
782
+ #define PNG_CHUNK_FROM_STRING(s)\
783
+ PNG_U32(0xff&(s)[0], 0xff&(s)[1], 0xff&(s)[2], 0xff&(s)[3])
784
+
785
+ /* This uses (char), not (png_byte) to avoid warnings on systems where (char) is
786
+ * signed and the argument is a (char[]) This macro will fail miserably on
787
+ * systems where (char) is more than 8 bits.
788
+ */
789
+ #define PNG_STRING_FROM_CHUNK(s,c)\
790
+ (void)(((char*)(s))[0]=(char)((c)>>24), ((char*)(s))[1]=(char)((c)>>16),\
791
+ ((char*)(s))[2]=(char)((c)>>8), ((char*)(s))[3]=(char)((c)))
792
+
793
+ /* Do the same but terminate with a null character. */
794
+ #define PNG_CSTRING_FROM_CHUNK(s,c)\
795
+ (void)(PNG_STRING_FROM_CHUNK(s,c), ((char*)(s))[4] = 0)
796
+
797
+ /* Test on flag values as defined in the spec (section 5.4): */
798
+ #define PNG_CHUNK_ANCILLARY(c) (1 & ((c) >> 29))
799
+ #define PNG_CHUNK_CRITICAL(c) (!PNG_CHUNK_ANCILLARY(c))
800
+ #define PNG_CHUNK_PRIVATE(c) (1 & ((c) >> 21))
801
+ #define PNG_CHUNK_RESERVED(c) (1 & ((c) >> 13))
802
+ #define PNG_CHUNK_SAFE_TO_COPY(c) (1 & ((c) >> 5))
803
+
804
+ /* Gamma values (new at libpng-1.5.4): */
805
+ #define PNG_GAMMA_MAC_OLD 151724 /* Assume '1.8' is really 2.2/1.45! */
806
+ #define PNG_GAMMA_MAC_INVERSE 65909
807
+ #define PNG_GAMMA_sRGB_INVERSE 45455
808
+
809
+ /* Almost everything below is C specific; the #defines above can be used in
810
+ * non-C code (so long as it is C-preprocessed) the rest of this stuff cannot.
811
+ */
812
+ #ifndef PNG_VERSION_INFO_ONLY
813
+
814
+ #include "pngstruct.h"
815
+ #include "pnginfo.h"
816
+
817
+ /* Validate the include paths - the include path used to generate pnglibconf.h
818
+ * must match that used in the build, or we must be using pnglibconf.h.prebuilt:
819
+ */
820
+ #if PNG_ZLIB_VERNUM != 0 && PNG_ZLIB_VERNUM != ZLIB_VERNUM
821
+ # error ZLIB_VERNUM != PNG_ZLIB_VERNUM \
822
+ "-I (include path) error: see the notes in pngpriv.h"
823
+ /* This means that when pnglibconf.h was built the copy of zlib.h that it
824
+ * used is not the same as the one being used here. Because the build of
825
+ * libpng makes decisions to use inflateInit2 and inflateReset2 based on the
826
+ * zlib version number and because this affects handling of certain broken
827
+ * PNG files the -I directives must match.
828
+ *
829
+ * The most likely explanation is that you passed a -I in CFLAGS. This will
830
+ * not work; all the preprocessor directories and in particular all the -I
831
+ * directives must be in CPPFLAGS.
832
+ */
833
+ #endif
834
+
835
+ /* This is used for 16 bit gamma tables -- only the top level pointers are
836
+ * const; this could be changed:
837
+ */
838
+ typedef const png_uint_16p * png_const_uint_16pp;
839
+
840
+ /* Added to libpng-1.5.7: sRGB conversion tables */
841
+ #if defined(PNG_SIMPLIFIED_READ_SUPPORTED) ||\
842
+ defined(PNG_SIMPLIFIED_WRITE_SUPPORTED)
843
+ #ifdef PNG_SIMPLIFIED_READ_SUPPORTED
844
+ PNG_INTERNAL_DATA(const png_uint_16, png_sRGB_table, [256]);
845
+ /* Convert from an sRGB encoded value 0..255 to a 16-bit linear value,
846
+ * 0..65535. This table gives the closest 16-bit answers (no errors).
847
+ */
848
+ #endif
849
+
850
+ PNG_INTERNAL_DATA(const png_uint_16, png_sRGB_base, [512]);
851
+ PNG_INTERNAL_DATA(const png_byte, png_sRGB_delta, [512]);
852
+
853
+ #define PNG_sRGB_FROM_LINEAR(linear) ((png_byte)((png_sRGB_base[(linear)>>15] +\
854
+ ((((linear)&0x7fff)*png_sRGB_delta[(linear)>>15])>>12)) >> 8))
855
+ /* Given a value 'linear' in the range 0..255*65535 calculate the 8-bit sRGB
856
+ * encoded value with maximum error 0.646365. Note that the input is not a
857
+ * 16-bit value; it has been multiplied by 255! */
858
+ #endif /* SIMPLIFIED_READ/WRITE */
859
+
860
+
861
+ /* Inhibit C++ name-mangling for libpng functions but not for system calls. */
862
+ #ifdef __cplusplus
863
+ extern "C" {
864
+ #endif /* __cplusplus */
865
+
866
+ /* Internal functions; these are not exported from a DLL however because they
867
+ * are used within several of the C source files they have to be C extern.
868
+ *
869
+ * All of these functions must be declared with PNG_INTERNAL_FUNCTION.
870
+ */
871
+
872
+ /* Zlib support */
873
+ #define PNG_UNEXPECTED_ZLIB_RETURN (-7)
874
+ PNG_INTERNAL_FUNCTION(void, png_zstream_error,(png_structrp png_ptr, int ret),
875
+ PNG_EMPTY);
876
+ /* Used by the zlib handling functions to ensure that z_stream::msg is always
877
+ * set before they return.
878
+ */
879
+
880
+ #ifdef PNG_WRITE_SUPPORTED
881
+ PNG_INTERNAL_FUNCTION(void,png_free_buffer_list,(png_structrp png_ptr,
882
+ png_compression_bufferp *list),PNG_EMPTY);
883
+ /* Free the buffer list used by the compressed write code. */
884
+ #endif
885
+
886
+ #if defined(PNG_FLOATING_POINT_SUPPORTED) && \
887
+ !defined(PNG_FIXED_POINT_MACRO_SUPPORTED) && \
888
+ (defined(PNG_gAMA_SUPPORTED) || defined(PNG_cHRM_SUPPORTED) || \
889
+ defined(PNG_sCAL_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) || \
890
+ defined(PNG_READ_RGB_TO_GRAY_SUPPORTED)) || \
891
+ (defined(PNG_sCAL_SUPPORTED) && \
892
+ defined(PNG_FLOATING_ARITHMETIC_SUPPORTED))
893
+ PNG_INTERNAL_FUNCTION(png_fixed_point,png_fixed,(png_const_structrp png_ptr,
894
+ double fp, png_const_charp text),PNG_EMPTY);
895
+ #endif
896
+
897
+ /* Check the user version string for compatibility, returns false if the version
898
+ * numbers aren't compatible.
899
+ */
900
+ PNG_INTERNAL_FUNCTION(int,png_user_version_check,(png_structrp png_ptr,
901
+ png_const_charp user_png_ver),PNG_EMPTY);
902
+
903
+ /* Internal base allocator - no messages, NULL on failure to allocate. This
904
+ * does, however, call the application provided allocator and that could call
905
+ * png_error (although that would be a bug in the application implementation.)
906
+ */
907
+ PNG_INTERNAL_FUNCTION(png_voidp,png_malloc_base,(png_const_structrp png_ptr,
908
+ png_alloc_size_t size),PNG_ALLOCATED);
909
+
910
+ #if defined(PNG_TEXT_SUPPORTED) || defined(PNG_sPLT_SUPPORTED) ||\
911
+ defined(PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED)
912
+ /* Internal array allocator, outputs no error or warning messages on failure,
913
+ * just returns NULL.
914
+ */
915
+ PNG_INTERNAL_FUNCTION(png_voidp,png_malloc_array,(png_const_structrp png_ptr,
916
+ int nelements, size_t element_size),PNG_ALLOCATED);
917
+
918
+ /* The same but an existing array is extended by add_elements. This function
919
+ * also memsets the new elements to 0 and copies the old elements. The old
920
+ * array is not freed or altered.
921
+ */
922
+ PNG_INTERNAL_FUNCTION(png_voidp,png_realloc_array,(png_const_structrp png_ptr,
923
+ png_const_voidp array, int old_elements, int add_elements,
924
+ size_t element_size),PNG_ALLOCATED);
925
+ #endif /* text, sPLT or unknown chunks */
926
+
927
+ /* Magic to create a struct when there is no struct to call the user supplied
928
+ * memory allocators. Because error handling has not been set up the memory
929
+ * handlers can't safely call png_error, but this is an obscure and undocumented
930
+ * restriction so libpng has to assume that the 'free' handler, at least, might
931
+ * call png_error.
932
+ */
933
+ PNG_INTERNAL_FUNCTION(png_structp,png_create_png_struct,
934
+ (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn,
935
+ png_error_ptr warn_fn, png_voidp mem_ptr, png_malloc_ptr malloc_fn,
936
+ png_free_ptr free_fn),PNG_ALLOCATED);
937
+
938
+ /* Free memory from internal libpng struct */
939
+ PNG_INTERNAL_FUNCTION(void,png_destroy_png_struct,(png_structrp png_ptr),
940
+ PNG_EMPTY);
941
+
942
+ /* Free an allocated jmp_buf (always succeeds) */
943
+ PNG_INTERNAL_FUNCTION(void,png_free_jmpbuf,(png_structrp png_ptr),PNG_EMPTY);
944
+
945
+ /* Function to allocate memory for zlib. PNGAPI is disallowed. */
946
+ PNG_INTERNAL_FUNCTION(voidpf,png_zalloc,(voidpf png_ptr, uInt items, uInt size),
947
+ PNG_ALLOCATED);
948
+
949
+ /* Function to free memory for zlib. PNGAPI is disallowed. */
950
+ PNG_INTERNAL_FUNCTION(void,png_zfree,(voidpf png_ptr, voidpf ptr),PNG_EMPTY);
951
+
952
+ /* Next four functions are used internally as callbacks. PNGCBAPI is required
953
+ * but not PNG_EXPORT. PNGAPI added at libpng version 1.2.3, changed to
954
+ * PNGCBAPI at 1.5.0
955
+ */
956
+
957
+ PNG_INTERNAL_FUNCTION(void PNGCBAPI,png_default_read_data,(png_structp png_ptr,
958
+ png_bytep data, png_size_t length),PNG_EMPTY);
959
+
960
+ #ifdef PNG_PROGRESSIVE_READ_SUPPORTED
961
+ PNG_INTERNAL_FUNCTION(void PNGCBAPI,png_push_fill_buffer,(png_structp png_ptr,
962
+ png_bytep buffer, png_size_t length),PNG_EMPTY);
963
+ #endif
964
+
965
+ PNG_INTERNAL_FUNCTION(void PNGCBAPI,png_default_write_data,(png_structp png_ptr,
966
+ png_bytep data, png_size_t length),PNG_EMPTY);
967
+
968
+ #ifdef PNG_WRITE_FLUSH_SUPPORTED
969
+ # ifdef PNG_STDIO_SUPPORTED
970
+ PNG_INTERNAL_FUNCTION(void PNGCBAPI,png_default_flush,(png_structp png_ptr),
971
+ PNG_EMPTY);
972
+ # endif
973
+ #endif
974
+
975
+ /* Reset the CRC variable */
976
+ PNG_INTERNAL_FUNCTION(void,png_reset_crc,(png_structrp png_ptr),PNG_EMPTY);
977
+
978
+ /* Write the "data" buffer to whatever output you are using */
979
+ PNG_INTERNAL_FUNCTION(void,png_write_data,(png_structrp png_ptr,
980
+ png_const_bytep data, png_size_t length),PNG_EMPTY);
981
+
982
+ /* Read and check the PNG file signature */
983
+ PNG_INTERNAL_FUNCTION(void,png_read_sig,(png_structrp png_ptr,
984
+ png_inforp info_ptr),PNG_EMPTY);
985
+
986
+ /* Read the chunk header (length + type name) */
987
+ PNG_INTERNAL_FUNCTION(png_uint_32,png_read_chunk_header,(png_structrp png_ptr),
988
+ PNG_EMPTY);
989
+
990
+ /* Read data from whatever input you are using into the "data" buffer */
991
+ PNG_INTERNAL_FUNCTION(void,png_read_data,(png_structrp png_ptr, png_bytep data,
992
+ png_size_t length),PNG_EMPTY);
993
+
994
+ /* Read bytes into buf, and update png_ptr->crc */
995
+ PNG_INTERNAL_FUNCTION(void,png_crc_read,(png_structrp png_ptr, png_bytep buf,
996
+ png_uint_32 length),PNG_EMPTY);
997
+
998
+ /* Read "skip" bytes, read the file crc, and (optionally) verify png_ptr->crc */
999
+ PNG_INTERNAL_FUNCTION(int,png_crc_finish,(png_structrp png_ptr,
1000
+ png_uint_32 skip),PNG_EMPTY);
1001
+
1002
+ /* Read the CRC from the file and compare it to the libpng calculated CRC */
1003
+ PNG_INTERNAL_FUNCTION(int,png_crc_error,(png_structrp png_ptr),PNG_EMPTY);
1004
+
1005
+ /* Calculate the CRC over a section of data. Note that we are only
1006
+ * passing a maximum of 64K on systems that have this as a memory limit,
1007
+ * since this is the maximum buffer size we can specify.
1008
+ */
1009
+ PNG_INTERNAL_FUNCTION(void,png_calculate_crc,(png_structrp png_ptr,
1010
+ png_const_bytep ptr, png_size_t length),PNG_EMPTY);
1011
+
1012
+ #ifdef PNG_WRITE_FLUSH_SUPPORTED
1013
+ PNG_INTERNAL_FUNCTION(void,png_flush,(png_structrp png_ptr),PNG_EMPTY);
1014
+ #endif
1015
+
1016
+ /* Write various chunks */
1017
+
1018
+ /* Write the IHDR chunk, and update the png_struct with the necessary
1019
+ * information.
1020
+ */
1021
+ PNG_INTERNAL_FUNCTION(void,png_write_IHDR,(png_structrp png_ptr,
1022
+ png_uint_32 width, png_uint_32 height, int bit_depth, int color_type,
1023
+ int compression_method, int filter_method, int interlace_method),PNG_EMPTY);
1024
+
1025
+ PNG_INTERNAL_FUNCTION(void,png_write_PLTE,(png_structrp png_ptr,
1026
+ png_const_colorp palette, png_uint_32 num_pal),PNG_EMPTY);
1027
+
1028
+ PNG_INTERNAL_FUNCTION(void,png_compress_IDAT,(png_structrp png_ptr,
1029
+ png_const_bytep row_data, png_alloc_size_t row_data_length, int flush),
1030
+ PNG_EMPTY);
1031
+
1032
+ PNG_INTERNAL_FUNCTION(void,png_write_IEND,(png_structrp png_ptr),PNG_EMPTY);
1033
+
1034
+ #ifdef PNG_WRITE_gAMA_SUPPORTED
1035
+ PNG_INTERNAL_FUNCTION(void,png_write_gAMA_fixed,(png_structrp png_ptr,
1036
+ png_fixed_point file_gamma),PNG_EMPTY);
1037
+ #endif
1038
+
1039
+ #ifdef PNG_WRITE_sBIT_SUPPORTED
1040
+ PNG_INTERNAL_FUNCTION(void,png_write_sBIT,(png_structrp png_ptr,
1041
+ png_const_color_8p sbit, int color_type),PNG_EMPTY);
1042
+ #endif
1043
+
1044
+ #ifdef PNG_WRITE_cHRM_SUPPORTED
1045
+ PNG_INTERNAL_FUNCTION(void,png_write_cHRM_fixed,(png_structrp png_ptr,
1046
+ const png_xy *xy), PNG_EMPTY);
1047
+ /* The xy value must have been previously validated */
1048
+ #endif
1049
+
1050
+ #ifdef PNG_WRITE_sRGB_SUPPORTED
1051
+ PNG_INTERNAL_FUNCTION(void,png_write_sRGB,(png_structrp png_ptr,
1052
+ int intent),PNG_EMPTY);
1053
+ #endif
1054
+
1055
+ #ifdef PNG_WRITE_iCCP_SUPPORTED
1056
+ PNG_INTERNAL_FUNCTION(void,png_write_iCCP,(png_structrp png_ptr,
1057
+ png_const_charp name, png_const_bytep profile), PNG_EMPTY);
1058
+ /* The profile must have been previously validated for correctness, the
1059
+ * length comes from the first four bytes. Only the base, deflate,
1060
+ * compression is supported.
1061
+ */
1062
+ #endif
1063
+
1064
+ #ifdef PNG_WRITE_sPLT_SUPPORTED
1065
+ PNG_INTERNAL_FUNCTION(void,png_write_sPLT,(png_structrp png_ptr,
1066
+ png_const_sPLT_tp palette),PNG_EMPTY);
1067
+ #endif
1068
+
1069
+ #ifdef PNG_WRITE_tRNS_SUPPORTED
1070
+ PNG_INTERNAL_FUNCTION(void,png_write_tRNS,(png_structrp png_ptr,
1071
+ png_const_bytep trans, png_const_color_16p values, int number,
1072
+ int color_type),PNG_EMPTY);
1073
+ #endif
1074
+
1075
+ #ifdef PNG_WRITE_bKGD_SUPPORTED
1076
+ PNG_INTERNAL_FUNCTION(void,png_write_bKGD,(png_structrp png_ptr,
1077
+ png_const_color_16p values, int color_type),PNG_EMPTY);
1078
+ #endif
1079
+
1080
+ #ifdef PNG_WRITE_hIST_SUPPORTED
1081
+ PNG_INTERNAL_FUNCTION(void,png_write_hIST,(png_structrp png_ptr,
1082
+ png_const_uint_16p hist, int num_hist),PNG_EMPTY);
1083
+ #endif
1084
+
1085
+ /* Chunks that have keywords */
1086
+ #ifdef PNG_WRITE_tEXt_SUPPORTED
1087
+ PNG_INTERNAL_FUNCTION(void,png_write_tEXt,(png_structrp png_ptr,
1088
+ png_const_charp key, png_const_charp text, png_size_t text_len),PNG_EMPTY);
1089
+ #endif
1090
+
1091
+ #ifdef PNG_WRITE_zTXt_SUPPORTED
1092
+ PNG_INTERNAL_FUNCTION(void,png_write_zTXt,(png_structrp png_ptr, png_const_charp
1093
+ key, png_const_charp text, int compression),PNG_EMPTY);
1094
+ #endif
1095
+
1096
+ #ifdef PNG_WRITE_iTXt_SUPPORTED
1097
+ PNG_INTERNAL_FUNCTION(void,png_write_iTXt,(png_structrp png_ptr,
1098
+ int compression, png_const_charp key, png_const_charp lang,
1099
+ png_const_charp lang_key, png_const_charp text),PNG_EMPTY);
1100
+ #endif
1101
+
1102
+ #ifdef PNG_TEXT_SUPPORTED /* Added at version 1.0.14 and 1.2.4 */
1103
+ PNG_INTERNAL_FUNCTION(int,png_set_text_2,(png_const_structrp png_ptr,
1104
+ png_inforp info_ptr, png_const_textp text_ptr, int num_text),PNG_EMPTY);
1105
+ #endif
1106
+
1107
+ #ifdef PNG_WRITE_oFFs_SUPPORTED
1108
+ PNG_INTERNAL_FUNCTION(void,png_write_oFFs,(png_structrp png_ptr,
1109
+ png_int_32 x_offset, png_int_32 y_offset, int unit_type),PNG_EMPTY);
1110
+ #endif
1111
+
1112
+ #ifdef PNG_WRITE_pCAL_SUPPORTED
1113
+ PNG_INTERNAL_FUNCTION(void,png_write_pCAL,(png_structrp png_ptr,
1114
+ png_charp purpose, png_int_32 X0, png_int_32 X1, int type, int nparams,
1115
+ png_const_charp units, png_charpp params),PNG_EMPTY);
1116
+ #endif
1117
+
1118
+ #ifdef PNG_WRITE_pHYs_SUPPORTED
1119
+ PNG_INTERNAL_FUNCTION(void,png_write_pHYs,(png_structrp png_ptr,
1120
+ png_uint_32 x_pixels_per_unit, png_uint_32 y_pixels_per_unit,
1121
+ int unit_type),PNG_EMPTY);
1122
+ #endif
1123
+
1124
+ #ifdef PNG_WRITE_tIME_SUPPORTED
1125
+ PNG_INTERNAL_FUNCTION(void,png_write_tIME,(png_structrp png_ptr,
1126
+ png_const_timep mod_time),PNG_EMPTY);
1127
+ #endif
1128
+
1129
+ #ifdef PNG_WRITE_sCAL_SUPPORTED
1130
+ PNG_INTERNAL_FUNCTION(void,png_write_sCAL_s,(png_structrp png_ptr,
1131
+ int unit, png_const_charp width, png_const_charp height),PNG_EMPTY);
1132
+ #endif
1133
+
1134
+ /* Called when finished processing a row of data */
1135
+ PNG_INTERNAL_FUNCTION(void,png_write_finish_row,(png_structrp png_ptr),
1136
+ PNG_EMPTY);
1137
+
1138
+ /* Internal use only. Called before first row of data */
1139
+ PNG_INTERNAL_FUNCTION(void,png_write_start_row,(png_structrp png_ptr),
1140
+ PNG_EMPTY);
1141
+
1142
+ /* Combine a row of data, dealing with alpha, etc. if requested. 'row' is an
1143
+ * array of png_ptr->width pixels. If the image is not interlaced or this
1144
+ * is the final pass this just does a memcpy, otherwise the "display" flag
1145
+ * is used to determine whether to copy pixels that are not in the current pass.
1146
+ *
1147
+ * Because 'png_do_read_interlace' (below) replicates pixels this allows this
1148
+ * function to achieve the documented 'blocky' appearance during interlaced read
1149
+ * if display is 1 and the 'sparkle' appearance, where existing pixels in 'row'
1150
+ * are not changed if they are not in the current pass, when display is 0.
1151
+ *
1152
+ * 'display' must be 0 or 1, otherwise the memcpy will be done regardless.
1153
+ *
1154
+ * The API always reads from the png_struct row buffer and always assumes that
1155
+ * it is full width (png_do_read_interlace has already been called.)
1156
+ *
1157
+ * This function is only ever used to write to row buffers provided by the
1158
+ * caller of the relevant libpng API and the row must have already been
1159
+ * transformed by the read transformations.
1160
+ *
1161
+ * The PNG_USE_COMPILE_TIME_MASKS option causes generation of pre-computed
1162
+ * bitmasks for use within the code, otherwise runtime generated masks are used.
1163
+ * The default is compile time masks.
1164
+ */
1165
+ #ifndef PNG_USE_COMPILE_TIME_MASKS
1166
+ # define PNG_USE_COMPILE_TIME_MASKS 1
1167
+ #endif
1168
+ PNG_INTERNAL_FUNCTION(void,png_combine_row,(png_const_structrp png_ptr,
1169
+ png_bytep row, int display),PNG_EMPTY);
1170
+
1171
+ #ifdef PNG_READ_INTERLACING_SUPPORTED
1172
+ /* Expand an interlaced row: the 'row_info' describes the pass data that has
1173
+ * been read in and must correspond to the pixels in 'row', the pixels are
1174
+ * expanded (moved apart) in 'row' to match the final layout, when doing this
1175
+ * the pixels are *replicated* to the intervening space. This is essential for
1176
+ * the correct operation of png_combine_row, above.
1177
+ */
1178
+ PNG_INTERNAL_FUNCTION(void,png_do_read_interlace,(png_row_infop row_info,
1179
+ png_bytep row, int pass, png_uint_32 transformations),PNG_EMPTY);
1180
+ #endif
1181
+
1182
+ /* GRR TO DO (2.0 or whenever): simplify other internal calling interfaces */
1183
+
1184
+ #ifdef PNG_WRITE_INTERLACING_SUPPORTED
1185
+ /* Grab pixels out of a row for an interlaced pass */
1186
+ PNG_INTERNAL_FUNCTION(void,png_do_write_interlace,(png_row_infop row_info,
1187
+ png_bytep row, int pass),PNG_EMPTY);
1188
+ #endif
1189
+
1190
+ /* Unfilter a row: check the filter value before calling this, there is no point
1191
+ * calling it for PNG_FILTER_VALUE_NONE.
1192
+ */
1193
+ PNG_INTERNAL_FUNCTION(void,png_read_filter_row,(png_structrp pp, png_row_infop
1194
+ row_info, png_bytep row, png_const_bytep prev_row, int filter),PNG_EMPTY);
1195
+
1196
+ PNG_INTERNAL_FUNCTION(void,png_read_filter_row_up_neon,(png_row_infop row_info,
1197
+ png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1198
+ PNG_INTERNAL_FUNCTION(void,png_read_filter_row_sub3_neon,(png_row_infop
1199
+ row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1200
+ PNG_INTERNAL_FUNCTION(void,png_read_filter_row_sub4_neon,(png_row_infop
1201
+ row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1202
+ PNG_INTERNAL_FUNCTION(void,png_read_filter_row_avg3_neon,(png_row_infop
1203
+ row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1204
+ PNG_INTERNAL_FUNCTION(void,png_read_filter_row_avg4_neon,(png_row_infop
1205
+ row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1206
+ PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth3_neon,(png_row_infop
1207
+ row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1208
+ PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth4_neon,(png_row_infop
1209
+ row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
1210
+
1211
+ /* Choose the best filter to use and filter the row data */
1212
+ PNG_INTERNAL_FUNCTION(void,png_write_find_filter,(png_structrp png_ptr,
1213
+ png_row_infop row_info),PNG_EMPTY);
1214
+
1215
+ #ifdef PNG_SEQUENTIAL_READ_SUPPORTED
1216
+ PNG_INTERNAL_FUNCTION(void,png_read_IDAT_data,(png_structrp png_ptr,
1217
+ png_bytep output, png_alloc_size_t avail_out),PNG_EMPTY);
1218
+ /* Read 'avail_out' bytes of data from the IDAT stream. If the output buffer
1219
+ * is NULL the function checks, instead, for the end of the stream. In this
1220
+ * case a benign error will be issued if the stream end is not found or if
1221
+ * extra data has to be consumed.
1222
+ */
1223
+ PNG_INTERNAL_FUNCTION(void,png_read_finish_IDAT,(png_structrp png_ptr),
1224
+ PNG_EMPTY);
1225
+ /* This cleans up when the IDAT LZ stream does not end when the last image
1226
+ * byte is read; there is still some pending input.
1227
+ */
1228
+
1229
+ PNG_INTERNAL_FUNCTION(void,png_read_finish_row,(png_structrp png_ptr),
1230
+ PNG_EMPTY);
1231
+ /* Finish a row while reading, dealing with interlacing passes, etc. */
1232
+ #endif /* SEQUENTIAL_READ */
1233
+
1234
+ /* Initialize the row buffers, etc. */
1235
+ PNG_INTERNAL_FUNCTION(void,png_read_start_row,(png_structrp png_ptr),PNG_EMPTY);
1236
+
1237
+ #ifdef PNG_READ_TRANSFORMS_SUPPORTED
1238
+ /* Optional call to update the users info structure */
1239
+ PNG_INTERNAL_FUNCTION(void,png_read_transform_info,(png_structrp png_ptr,
1240
+ png_inforp info_ptr),PNG_EMPTY);
1241
+ #endif
1242
+
1243
+ /* Shared transform functions, defined in pngtran.c */
1244
+ #if defined(PNG_WRITE_FILLER_SUPPORTED) || \
1245
+ defined(PNG_READ_STRIP_ALPHA_SUPPORTED)
1246
+ PNG_INTERNAL_FUNCTION(void,png_do_strip_channel,(png_row_infop row_info,
1247
+ png_bytep row, int at_start),PNG_EMPTY);
1248
+ #endif
1249
+
1250
+ #ifdef PNG_16BIT_SUPPORTED
1251
+ #if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED)
1252
+ PNG_INTERNAL_FUNCTION(void,png_do_swap,(png_row_infop row_info,
1253
+ png_bytep row),PNG_EMPTY);
1254
+ #endif
1255
+ #endif
1256
+
1257
+ #if defined(PNG_READ_PACKSWAP_SUPPORTED) || \
1258
+ defined(PNG_WRITE_PACKSWAP_SUPPORTED)
1259
+ PNG_INTERNAL_FUNCTION(void,png_do_packswap,(png_row_infop row_info,
1260
+ png_bytep row),PNG_EMPTY);
1261
+ #endif
1262
+
1263
+ #if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED)
1264
+ PNG_INTERNAL_FUNCTION(void,png_do_invert,(png_row_infop row_info,
1265
+ png_bytep row),PNG_EMPTY);
1266
+ #endif
1267
+
1268
+ #if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED)
1269
+ PNG_INTERNAL_FUNCTION(void,png_do_bgr,(png_row_infop row_info,
1270
+ png_bytep row),PNG_EMPTY);
1271
+ #endif
1272
+
1273
+ /* The following decodes the appropriate chunks, and does error correction,
1274
+ * then calls the appropriate callback for the chunk if it is valid.
1275
+ */
1276
+
1277
+ /* Decode the IHDR chunk */
1278
+ PNG_INTERNAL_FUNCTION(void,png_handle_IHDR,(png_structrp png_ptr,
1279
+ png_inforp info_ptr, png_uint_32 length),PNG_EMPTY);
1280
+ PNG_INTERNAL_FUNCTION(void,png_handle_PLTE,(png_structrp png_ptr,
1281
+ png_inforp info_ptr, png_uint_32 length),PNG_EMPTY);
1282
+ PNG_INTERNAL_FUNCTION(void,png_handle_IEND,(png_structrp png_ptr,
1283
+ png_inforp info_ptr, png_uint_32 length),PNG_EMPTY);
1284
+
1285
+ #ifdef PNG_READ_bKGD_SUPPORTED
1286
+ PNG_INTERNAL_FUNCTION(void,png_handle_bKGD,(png_structrp png_ptr,
1287
+ png_inforp info_ptr, png_uint_32 length),PNG_EMPTY);
1288
+ #endif
1289
+
1290
+ #ifdef PNG_READ_cHRM_SUPPORTED
1291
+ PNG_INTERNAL_FUNCTION(void,png_handle_cHRM,(png_structrp png_ptr,
1292
+ png_inforp info_ptr, png_uint_32 length),PNG_EMPTY);
1293
+ #endif
1294
+
1295
+ #ifdef PNG_READ_gAMA_SUPPORTED
1296
+ PNG_INTERNAL_FUNCTION(void,png_handle_gAMA,(png_structrp png_ptr,
1297
+ png_inforp info_ptr, png_uint_32 length),PNG_EMPTY);
1298
+ #endif
1299
+
1300
+ #ifdef PNG_READ_hIST_SUPPORTED
1301
+ PNG_INTERNAL_FUNCTION(void,png_handle_hIST,(png_structrp png_ptr,
1302
+ png_inforp info_ptr, png_uint_32 length),PNG_EMPTY);
1303
+ #endif
1304
+
1305
+ #ifdef PNG_READ_iCCP_SUPPORTED
1306
+ PNG_INTERNAL_FUNCTION(void,png_handle_iCCP,(png_structrp png_ptr,
1307
+ png_inforp info_ptr, png_uint_32 length),PNG_EMPTY);
1308
+ #endif /* READ_iCCP */
1309
+
1310
+ #ifdef PNG_READ_iTXt_SUPPORTED
1311
+ PNG_INTERNAL_FUNCTION(void,png_handle_iTXt,(png_structrp png_ptr,
1312
+ png_inforp info_ptr, png_uint_32 length),PNG_EMPTY);
1313
+ #endif
1314
+
1315
+ #ifdef PNG_READ_oFFs_SUPPORTED
1316
+ PNG_INTERNAL_FUNCTION(void,png_handle_oFFs,(png_structrp png_ptr,
1317
+ png_inforp info_ptr, png_uint_32 length),PNG_EMPTY);
1318
+ #endif
1319
+
1320
+ #ifdef PNG_READ_pCAL_SUPPORTED
1321
+ PNG_INTERNAL_FUNCTION(void,png_handle_pCAL,(png_structrp png_ptr,
1322
+ png_inforp info_ptr, png_uint_32 length),PNG_EMPTY);
1323
+ #endif
1324
+
1325
+ #ifdef PNG_READ_pHYs_SUPPORTED
1326
+ PNG_INTERNAL_FUNCTION(void,png_handle_pHYs,(png_structrp png_ptr,
1327
+ png_inforp info_ptr, png_uint_32 length),PNG_EMPTY);
1328
+ #endif
1329
+
1330
+ #ifdef PNG_READ_sBIT_SUPPORTED
1331
+ PNG_INTERNAL_FUNCTION(void,png_handle_sBIT,(png_structrp png_ptr,
1332
+ png_inforp info_ptr, png_uint_32 length),PNG_EMPTY);
1333
+ #endif
1334
+
1335
+ #ifdef PNG_READ_sCAL_SUPPORTED
1336
+ PNG_INTERNAL_FUNCTION(void,png_handle_sCAL,(png_structrp png_ptr,
1337
+ png_inforp info_ptr, png_uint_32 length),PNG_EMPTY);
1338
+ #endif
1339
+
1340
+ #ifdef PNG_READ_sPLT_SUPPORTED
1341
+ PNG_INTERNAL_FUNCTION(void,png_handle_sPLT,(png_structrp png_ptr,
1342
+ png_inforp info_ptr, png_uint_32 length),PNG_EMPTY);
1343
+ #endif /* READ_sPLT */
1344
+
1345
+ #ifdef PNG_READ_sRGB_SUPPORTED
1346
+ PNG_INTERNAL_FUNCTION(void,png_handle_sRGB,(png_structrp png_ptr,
1347
+ png_inforp info_ptr, png_uint_32 length),PNG_EMPTY);
1348
+ #endif
1349
+
1350
+ #ifdef PNG_READ_tEXt_SUPPORTED
1351
+ PNG_INTERNAL_FUNCTION(void,png_handle_tEXt,(png_structrp png_ptr,
1352
+ png_inforp info_ptr, png_uint_32 length),PNG_EMPTY);
1353
+ #endif
1354
+
1355
+ #ifdef PNG_READ_tIME_SUPPORTED
1356
+ PNG_INTERNAL_FUNCTION(void,png_handle_tIME,(png_structrp png_ptr,
1357
+ png_inforp info_ptr, png_uint_32 length),PNG_EMPTY);
1358
+ #endif
1359
+
1360
+ #ifdef PNG_READ_tRNS_SUPPORTED
1361
+ PNG_INTERNAL_FUNCTION(void,png_handle_tRNS,(png_structrp png_ptr,
1362
+ png_inforp info_ptr, png_uint_32 length),PNG_EMPTY);
1363
+ #endif
1364
+
1365
+ #ifdef PNG_READ_zTXt_SUPPORTED
1366
+ PNG_INTERNAL_FUNCTION(void,png_handle_zTXt,(png_structrp png_ptr,
1367
+ png_inforp info_ptr, png_uint_32 length),PNG_EMPTY);
1368
+ #endif
1369
+
1370
+ PNG_INTERNAL_FUNCTION(void,png_check_chunk_name,(png_structrp png_ptr,
1371
+ png_uint_32 chunk_name),PNG_EMPTY);
1372
+
1373
+ PNG_INTERNAL_FUNCTION(void,png_handle_unknown,(png_structrp png_ptr,
1374
+ png_inforp info_ptr, png_uint_32 length, int keep),PNG_EMPTY);
1375
+ /* This is the function that gets called for unknown chunks. The 'keep'
1376
+ * argument is either non-zero for a known chunk that has been set to be
1377
+ * handled as unknown or zero for an unknown chunk. By default the function
1378
+ * just skips the chunk or errors out if it is critical.
1379
+ */
1380
+
1381
+ #if defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED) ||\
1382
+ defined(PNG_HANDLE_AS_UNKNOWN_SUPPORTED)
1383
+ PNG_INTERNAL_FUNCTION(int,png_chunk_unknown_handling,
1384
+ (png_const_structrp png_ptr, png_uint_32 chunk_name),PNG_EMPTY);
1385
+ /* Exactly as the API png_handle_as_unknown() except that the argument is a
1386
+ * 32-bit chunk name, not a string.
1387
+ */
1388
+ #endif /* READ_UNKNOWN_CHUNKS || HANDLE_AS_UNKNOWN */
1389
+
1390
+ /* Handle the transformations for reading and writing */
1391
+ #ifdef PNG_READ_TRANSFORMS_SUPPORTED
1392
+ PNG_INTERNAL_FUNCTION(void,png_do_read_transformations,(png_structrp png_ptr,
1393
+ png_row_infop row_info),PNG_EMPTY);
1394
+ #endif
1395
+ #ifdef PNG_WRITE_TRANSFORMS_SUPPORTED
1396
+ PNG_INTERNAL_FUNCTION(void,png_do_write_transformations,(png_structrp png_ptr,
1397
+ png_row_infop row_info),PNG_EMPTY);
1398
+ #endif
1399
+
1400
+ #ifdef PNG_READ_TRANSFORMS_SUPPORTED
1401
+ PNG_INTERNAL_FUNCTION(void,png_init_read_transformations,(png_structrp png_ptr),
1402
+ PNG_EMPTY);
1403
+ #endif
1404
+
1405
+ #ifdef PNG_PROGRESSIVE_READ_SUPPORTED
1406
+ PNG_INTERNAL_FUNCTION(void,png_push_read_chunk,(png_structrp png_ptr,
1407
+ png_inforp info_ptr),PNG_EMPTY);
1408
+ PNG_INTERNAL_FUNCTION(void,png_push_read_sig,(png_structrp png_ptr,
1409
+ png_inforp info_ptr),PNG_EMPTY);
1410
+ PNG_INTERNAL_FUNCTION(void,png_push_check_crc,(png_structrp png_ptr),PNG_EMPTY);
1411
+ PNG_INTERNAL_FUNCTION(void,png_push_crc_skip,(png_structrp png_ptr,
1412
+ png_uint_32 length),PNG_EMPTY);
1413
+ PNG_INTERNAL_FUNCTION(void,png_push_crc_finish,(png_structrp png_ptr),
1414
+ PNG_EMPTY);
1415
+ PNG_INTERNAL_FUNCTION(void,png_push_save_buffer,(png_structrp png_ptr),
1416
+ PNG_EMPTY);
1417
+ PNG_INTERNAL_FUNCTION(void,png_push_restore_buffer,(png_structrp png_ptr,
1418
+ png_bytep buffer, png_size_t buffer_length),PNG_EMPTY);
1419
+ PNG_INTERNAL_FUNCTION(void,png_push_read_IDAT,(png_structrp png_ptr),PNG_EMPTY);
1420
+ PNG_INTERNAL_FUNCTION(void,png_process_IDAT_data,(png_structrp png_ptr,
1421
+ png_bytep buffer, png_size_t buffer_length),PNG_EMPTY);
1422
+ PNG_INTERNAL_FUNCTION(void,png_push_process_row,(png_structrp png_ptr),
1423
+ PNG_EMPTY);
1424
+ PNG_INTERNAL_FUNCTION(void,png_push_handle_unknown,(png_structrp png_ptr,
1425
+ png_inforp info_ptr, png_uint_32 length),PNG_EMPTY);
1426
+ PNG_INTERNAL_FUNCTION(void,png_push_have_info,(png_structrp png_ptr,
1427
+ png_inforp info_ptr),PNG_EMPTY);
1428
+ PNG_INTERNAL_FUNCTION(void,png_push_have_end,(png_structrp png_ptr,
1429
+ png_inforp info_ptr),PNG_EMPTY);
1430
+ PNG_INTERNAL_FUNCTION(void,png_push_have_row,(png_structrp png_ptr,
1431
+ png_bytep row),PNG_EMPTY);
1432
+ PNG_INTERNAL_FUNCTION(void,png_push_read_end,(png_structrp png_ptr,
1433
+ png_inforp info_ptr),PNG_EMPTY);
1434
+ PNG_INTERNAL_FUNCTION(void,png_process_some_data,(png_structrp png_ptr,
1435
+ png_inforp info_ptr),PNG_EMPTY);
1436
+ PNG_INTERNAL_FUNCTION(void,png_read_push_finish_row,(png_structrp png_ptr),
1437
+ PNG_EMPTY);
1438
+ # ifdef PNG_READ_tEXt_SUPPORTED
1439
+ PNG_INTERNAL_FUNCTION(void,png_push_handle_tEXt,(png_structrp png_ptr,
1440
+ png_inforp info_ptr, png_uint_32 length),PNG_EMPTY);
1441
+ PNG_INTERNAL_FUNCTION(void,png_push_read_tEXt,(png_structrp png_ptr,
1442
+ png_inforp info_ptr),PNG_EMPTY);
1443
+ # endif
1444
+ # ifdef PNG_READ_zTXt_SUPPORTED
1445
+ PNG_INTERNAL_FUNCTION(void,png_push_handle_zTXt,(png_structrp png_ptr,
1446
+ png_inforp info_ptr, png_uint_32 length),PNG_EMPTY);
1447
+ PNG_INTERNAL_FUNCTION(void,png_push_read_zTXt,(png_structrp png_ptr,
1448
+ png_inforp info_ptr),PNG_EMPTY);
1449
+ # endif
1450
+ # ifdef PNG_READ_iTXt_SUPPORTED
1451
+ PNG_INTERNAL_FUNCTION(void,png_push_handle_iTXt,(png_structrp png_ptr,
1452
+ png_inforp info_ptr, png_uint_32 length),PNG_EMPTY);
1453
+ PNG_INTERNAL_FUNCTION(void,png_push_read_iTXt,(png_structrp png_ptr,
1454
+ png_inforp info_ptr),PNG_EMPTY);
1455
+ # endif
1456
+
1457
+ #endif /* PROGRESSIVE_READ */
1458
+
1459
+ /* Added at libpng version 1.6.0 */
1460
+ #ifdef PNG_GAMMA_SUPPORTED
1461
+ PNG_INTERNAL_FUNCTION(void,png_colorspace_set_gamma,(png_const_structrp png_ptr,
1462
+ png_colorspacerp colorspace, png_fixed_point gAMA), PNG_EMPTY);
1463
+ /* Set the colorspace gamma with a value provided by the application or by
1464
+ * the gAMA chunk on read. The value will override anything set by an ICC
1465
+ * profile.
1466
+ */
1467
+
1468
+ PNG_INTERNAL_FUNCTION(void,png_colorspace_sync_info,(png_const_structrp png_ptr,
1469
+ png_inforp info_ptr), PNG_EMPTY);
1470
+ /* Synchronize the info 'valid' flags with the colorspace */
1471
+
1472
+ PNG_INTERNAL_FUNCTION(void,png_colorspace_sync,(png_const_structrp png_ptr,
1473
+ png_inforp info_ptr), PNG_EMPTY);
1474
+ /* Copy the png_struct colorspace to the info_struct and call the above to
1475
+ * synchronize the flags. Checks for NULL info_ptr and does nothing.
1476
+ */
1477
+ #endif
1478
+
1479
+ /* Added at libpng version 1.4.0 */
1480
+ #ifdef PNG_COLORSPACE_SUPPORTED
1481
+ /* These internal functions are for maintaining the colorspace structure within
1482
+ * a png_info or png_struct (or, indeed, both).
1483
+ */
1484
+ PNG_INTERNAL_FUNCTION(int,png_colorspace_set_chromaticities,
1485
+ (png_const_structrp png_ptr, png_colorspacerp colorspace, const png_xy *xy,
1486
+ int preferred), PNG_EMPTY);
1487
+
1488
+ PNG_INTERNAL_FUNCTION(int,png_colorspace_set_endpoints,
1489
+ (png_const_structrp png_ptr, png_colorspacerp colorspace, const png_XYZ *XYZ,
1490
+ int preferred), PNG_EMPTY);
1491
+
1492
+ #ifdef PNG_sRGB_SUPPORTED
1493
+ PNG_INTERNAL_FUNCTION(int,png_colorspace_set_sRGB,(png_const_structrp png_ptr,
1494
+ png_colorspacerp colorspace, int intent), PNG_EMPTY);
1495
+ /* This does set the colorspace gAMA and cHRM values too, but doesn't set the
1496
+ * flags to write them, if it returns false there was a problem and an error
1497
+ * message has already been output (but the colorspace may still need to be
1498
+ * synced to record the invalid flag).
1499
+ */
1500
+ #endif /* sRGB */
1501
+
1502
+ #ifdef PNG_iCCP_SUPPORTED
1503
+ PNG_INTERNAL_FUNCTION(int,png_colorspace_set_ICC,(png_const_structrp png_ptr,
1504
+ png_colorspacerp colorspace, png_const_charp name,
1505
+ png_uint_32 profile_length, png_const_bytep profile, int color_type),
1506
+ PNG_EMPTY);
1507
+ /* The 'name' is used for information only */
1508
+
1509
+ /* Routines for checking parts of an ICC profile. */
1510
+ PNG_INTERNAL_FUNCTION(int,png_icc_check_length,(png_const_structrp png_ptr,
1511
+ png_colorspacerp colorspace, png_const_charp name,
1512
+ png_uint_32 profile_length), PNG_EMPTY);
1513
+ PNG_INTERNAL_FUNCTION(int,png_icc_check_header,(png_const_structrp png_ptr,
1514
+ png_colorspacerp colorspace, png_const_charp name,
1515
+ png_uint_32 profile_length,
1516
+ png_const_bytep profile /* first 132 bytes only */, int color_type),
1517
+ PNG_EMPTY);
1518
+ PNG_INTERNAL_FUNCTION(int,png_icc_check_tag_table,(png_const_structrp png_ptr,
1519
+ png_colorspacerp colorspace, png_const_charp name,
1520
+ png_uint_32 profile_length,
1521
+ png_const_bytep profile /* header plus whole tag table */), PNG_EMPTY);
1522
+ #ifdef PNG_sRGB_SUPPORTED
1523
+ PNG_INTERNAL_FUNCTION(void,png_icc_set_sRGB,(
1524
+ png_const_structrp png_ptr, png_colorspacerp colorspace,
1525
+ png_const_bytep profile, uLong adler), PNG_EMPTY);
1526
+ /* 'adler' is the Adler32 checksum of the uncompressed profile data. It may
1527
+ * be zero to indicate that it is not available. It is used, if provided,
1528
+ * as a fast check on the profile when checking to see if it is sRGB.
1529
+ */
1530
+ #endif
1531
+ #endif /* iCCP */
1532
+
1533
+ #ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED
1534
+ PNG_INTERNAL_FUNCTION(void,png_colorspace_set_rgb_coefficients,
1535
+ (png_structrp png_ptr), PNG_EMPTY);
1536
+ /* Set the rgb_to_gray coefficients from the colorspace Y values */
1537
+ #endif /* READ_RGB_TO_GRAY */
1538
+ #endif /* COLORSPACE */
1539
+
1540
+ /* Added at libpng version 1.4.0 */
1541
+ PNG_INTERNAL_FUNCTION(void,png_check_IHDR,(png_const_structrp png_ptr,
1542
+ png_uint_32 width, png_uint_32 height, int bit_depth,
1543
+ int color_type, int interlace_type, int compression_type,
1544
+ int filter_type),PNG_EMPTY);
1545
+
1546
+ /* Added at libpng version 1.5.10 */
1547
+ #if defined(PNG_READ_CHECK_FOR_INVALID_INDEX_SUPPORTED) || \
1548
+ defined(PNG_WRITE_CHECK_FOR_INVALID_INDEX_SUPPORTED)
1549
+ PNG_INTERNAL_FUNCTION(void,png_do_check_palette_indexes,
1550
+ (png_structrp png_ptr, png_row_infop row_info),PNG_EMPTY);
1551
+ #endif
1552
+
1553
+ #if defined(PNG_FLOATING_POINT_SUPPORTED) && defined(PNG_ERROR_TEXT_SUPPORTED)
1554
+ PNG_INTERNAL_FUNCTION(void,png_fixed_error,(png_const_structrp png_ptr,
1555
+ png_const_charp name),PNG_NORETURN);
1556
+ #endif
1557
+
1558
+ /* Puts 'string' into 'buffer' at buffer[pos], taking care never to overwrite
1559
+ * the end. Always leaves the buffer nul terminated. Never errors out (and
1560
+ * there is no error code.)
1561
+ */
1562
+ PNG_INTERNAL_FUNCTION(size_t,png_safecat,(png_charp buffer, size_t bufsize,
1563
+ size_t pos, png_const_charp string),PNG_EMPTY);
1564
+
1565
+ /* Various internal functions to handle formatted warning messages, currently
1566
+ * only implemented for warnings.
1567
+ */
1568
+ #if defined(PNG_WARNINGS_SUPPORTED) || defined(PNG_TIME_RFC1123_SUPPORTED)
1569
+ /* Utility to dump an unsigned value into a buffer, given a start pointer and
1570
+ * and end pointer (which should point just *beyond* the end of the buffer!)
1571
+ * Returns the pointer to the start of the formatted string. This utility only
1572
+ * does unsigned values.
1573
+ */
1574
+ PNG_INTERNAL_FUNCTION(png_charp,png_format_number,(png_const_charp start,
1575
+ png_charp end, int format, png_alloc_size_t number),PNG_EMPTY);
1576
+
1577
+ /* Convenience macro that takes an array: */
1578
+ #define PNG_FORMAT_NUMBER(buffer,format,number) \
1579
+ png_format_number(buffer, buffer + (sizeof buffer), format, number)
1580
+
1581
+ /* Suggested size for a number buffer (enough for 64 bits and a sign!) */
1582
+ #define PNG_NUMBER_BUFFER_SIZE 24
1583
+
1584
+ /* These are the integer formats currently supported, the name is formed from
1585
+ * the standard printf(3) format string.
1586
+ */
1587
+ #define PNG_NUMBER_FORMAT_u 1 /* chose unsigned API! */
1588
+ #define PNG_NUMBER_FORMAT_02u 2
1589
+ #define PNG_NUMBER_FORMAT_d 1 /* chose signed API! */
1590
+ #define PNG_NUMBER_FORMAT_02d 2
1591
+ #define PNG_NUMBER_FORMAT_x 3
1592
+ #define PNG_NUMBER_FORMAT_02x 4
1593
+ #define PNG_NUMBER_FORMAT_fixed 5 /* choose the signed API */
1594
+ #endif
1595
+
1596
+ #ifdef PNG_WARNINGS_SUPPORTED
1597
+ /* New defines and members adding in libpng-1.5.4 */
1598
+ # define PNG_WARNING_PARAMETER_SIZE 32
1599
+ # define PNG_WARNING_PARAMETER_COUNT 8 /* Maximum 9; see pngerror.c */
1600
+
1601
+ /* An l-value of this type has to be passed to the APIs below to cache the
1602
+ * values of the parameters to a formatted warning message.
1603
+ */
1604
+ typedef char png_warning_parameters[PNG_WARNING_PARAMETER_COUNT][
1605
+ PNG_WARNING_PARAMETER_SIZE];
1606
+
1607
+ PNG_INTERNAL_FUNCTION(void,png_warning_parameter,(png_warning_parameters p,
1608
+ int number, png_const_charp string),PNG_EMPTY);
1609
+ /* Parameters are limited in size to PNG_WARNING_PARAMETER_SIZE characters,
1610
+ * including the trailing '\0'.
1611
+ */
1612
+ PNG_INTERNAL_FUNCTION(void,png_warning_parameter_unsigned,
1613
+ (png_warning_parameters p, int number, int format, png_alloc_size_t value),
1614
+ PNG_EMPTY);
1615
+ /* Use png_alloc_size_t because it is an unsigned type as big as any we
1616
+ * need to output. Use the following for a signed value.
1617
+ */
1618
+ PNG_INTERNAL_FUNCTION(void,png_warning_parameter_signed,
1619
+ (png_warning_parameters p, int number, int format, png_int_32 value),
1620
+ PNG_EMPTY);
1621
+
1622
+ PNG_INTERNAL_FUNCTION(void,png_formatted_warning,(png_const_structrp png_ptr,
1623
+ png_warning_parameters p, png_const_charp message),PNG_EMPTY);
1624
+ /* 'message' follows the X/Open approach of using @1, @2 to insert
1625
+ * parameters previously supplied using the above functions. Errors in
1626
+ * specifying the parameters will simply result in garbage substitutions.
1627
+ */
1628
+ #endif
1629
+
1630
+ #ifdef PNG_BENIGN_ERRORS_SUPPORTED
1631
+ /* Application errors (new in 1.6); use these functions (declared below) for
1632
+ * errors in the parameters or order of API function calls on read. The
1633
+ * 'warning' should be used for an error that can be handled completely; the
1634
+ * 'error' for one which can be handled safely but which may lose application
1635
+ * information or settings.
1636
+ *
1637
+ * By default these both result in a png_error call prior to release, while in a
1638
+ * released version the 'warning' is just a warning. However if the application
1639
+ * explicitly disables benign errors (explicitly permitting the code to lose
1640
+ * information) they both turn into warnings.
1641
+ *
1642
+ * If benign errors aren't supported they end up as the corresponding base call
1643
+ * (png_warning or png_error.)
1644
+ */
1645
+ PNG_INTERNAL_FUNCTION(void,png_app_warning,(png_const_structrp png_ptr,
1646
+ png_const_charp message),PNG_EMPTY);
1647
+ /* The application provided invalid parameters to an API function or called
1648
+ * an API function at the wrong time, libpng can completely recover.
1649
+ */
1650
+
1651
+ PNG_INTERNAL_FUNCTION(void,png_app_error,(png_const_structrp png_ptr,
1652
+ png_const_charp message),PNG_EMPTY);
1653
+ /* As above but libpng will ignore the call, or attempt some other partial
1654
+ * recovery from the error.
1655
+ */
1656
+ #else
1657
+ # define png_app_warning(pp,s) png_warning(pp,s)
1658
+ # define png_app_error(pp,s) png_error(pp,s)
1659
+ #endif
1660
+
1661
+ PNG_INTERNAL_FUNCTION(void,png_chunk_report,(png_const_structrp png_ptr,
1662
+ png_const_charp message, int error),PNG_EMPTY);
1663
+ /* Report a recoverable issue in chunk data. On read this is used to report
1664
+ * a problem found while reading a particular chunk and the
1665
+ * png_chunk_benign_error or png_chunk_warning function is used as
1666
+ * appropriate. On write this is used to report an error that comes from
1667
+ * data set via an application call to a png_set_ API and png_app_error or
1668
+ * png_app_warning is used as appropriate.
1669
+ *
1670
+ * The 'error' parameter must have one of the following values:
1671
+ */
1672
+ #define PNG_CHUNK_WARNING 0 /* never an error */
1673
+ #define PNG_CHUNK_WRITE_ERROR 1 /* an error only on write */
1674
+ #define PNG_CHUNK_ERROR 2 /* always an error */
1675
+
1676
+ /* ASCII to FP interfaces, currently only implemented if sCAL
1677
+ * support is required.
1678
+ */
1679
+ #if defined(PNG_sCAL_SUPPORTED)
1680
+ /* MAX_DIGITS is actually the maximum number of characters in an sCAL
1681
+ * width or height, derived from the precision (number of significant
1682
+ * digits - a build time settable option) and assumptions about the
1683
+ * maximum ridiculous exponent.
1684
+ */
1685
+ #define PNG_sCAL_MAX_DIGITS (PNG_sCAL_PRECISION+1/*.*/+1/*E*/+10/*exponent*/)
1686
+
1687
+ #ifdef PNG_FLOATING_POINT_SUPPORTED
1688
+ PNG_INTERNAL_FUNCTION(void,png_ascii_from_fp,(png_const_structrp png_ptr,
1689
+ png_charp ascii, png_size_t size, double fp, unsigned int precision),
1690
+ PNG_EMPTY);
1691
+ #endif /* FLOATING_POINT */
1692
+
1693
+ #ifdef PNG_FIXED_POINT_SUPPORTED
1694
+ PNG_INTERNAL_FUNCTION(void,png_ascii_from_fixed,(png_const_structrp png_ptr,
1695
+ png_charp ascii, png_size_t size, png_fixed_point fp),PNG_EMPTY);
1696
+ #endif /* FIXED_POINT */
1697
+ #endif /* sCAL */
1698
+
1699
+ #if defined(PNG_sCAL_SUPPORTED) || defined(PNG_pCAL_SUPPORTED)
1700
+ /* An internal API to validate the format of a floating point number.
1701
+ * The result is the index of the next character. If the number is
1702
+ * not valid it will be the index of a character in the supposed number.
1703
+ *
1704
+ * The format of a number is defined in the PNG extensions specification
1705
+ * and this API is strictly conformant to that spec, not anyone elses!
1706
+ *
1707
+ * The format as a regular expression is:
1708
+ *
1709
+ * [+-]?[0-9]+.?([Ee][+-]?[0-9]+)?
1710
+ *
1711
+ * or:
1712
+ *
1713
+ * [+-]?.[0-9]+(.[0-9]+)?([Ee][+-]?[0-9]+)?
1714
+ *
1715
+ * The complexity is that either integer or fraction must be present and the
1716
+ * fraction is permitted to have no digits only if the integer is present.
1717
+ *
1718
+ * NOTE: The dangling E problem.
1719
+ * There is a PNG valid floating point number in the following:
1720
+ *
1721
+ * PNG floating point numbers are not greedy.
1722
+ *
1723
+ * Working this out requires *TWO* character lookahead (because of the
1724
+ * sign), the parser does not do this - it will fail at the 'r' - this
1725
+ * doesn't matter for PNG sCAL chunk values, but it requires more care
1726
+ * if the value were ever to be embedded in something more complex. Use
1727
+ * ANSI-C strtod if you need the lookahead.
1728
+ */
1729
+ /* State table for the parser. */
1730
+ #define PNG_FP_INTEGER 0 /* before or in integer */
1731
+ #define PNG_FP_FRACTION 1 /* before or in fraction */
1732
+ #define PNG_FP_EXPONENT 2 /* before or in exponent */
1733
+ #define PNG_FP_STATE 3 /* mask for the above */
1734
+ #define PNG_FP_SAW_SIGN 4 /* Saw +/- in current state */
1735
+ #define PNG_FP_SAW_DIGIT 8 /* Saw a digit in current state */
1736
+ #define PNG_FP_SAW_DOT 16 /* Saw a dot in current state */
1737
+ #define PNG_FP_SAW_E 32 /* Saw an E (or e) in current state */
1738
+ #define PNG_FP_SAW_ANY 60 /* Saw any of the above 4 */
1739
+
1740
+ /* These three values don't affect the parser. They are set but not used.
1741
+ */
1742
+ #define PNG_FP_WAS_VALID 64 /* Preceding substring is a valid fp number */
1743
+ #define PNG_FP_NEGATIVE 128 /* A negative number, including "-0" */
1744
+ #define PNG_FP_NONZERO 256 /* A non-zero value */
1745
+ #define PNG_FP_STICKY 448 /* The above three flags */
1746
+
1747
+ /* This is available for the caller to store in 'state' if required. Do not
1748
+ * call the parser after setting it (the parser sometimes clears it.)
1749
+ */
1750
+ #define PNG_FP_INVALID 512 /* Available for callers as a distinct value */
1751
+
1752
+ /* Result codes for the parser (boolean - true meants ok, false means
1753
+ * not ok yet.)
1754
+ */
1755
+ #define PNG_FP_MAYBE 0 /* The number may be valid in the future */
1756
+ #define PNG_FP_OK 1 /* The number is valid */
1757
+
1758
+ /* Tests on the sticky non-zero and negative flags. To pass these checks
1759
+ * the state must also indicate that the whole number is valid - this is
1760
+ * achieved by testing PNG_FP_SAW_DIGIT (see the implementation for why this
1761
+ * is equivalent to PNG_FP_OK above.)
1762
+ */
1763
+ #define PNG_FP_NZ_MASK (PNG_FP_SAW_DIGIT | PNG_FP_NEGATIVE | PNG_FP_NONZERO)
1764
+ /* NZ_MASK: the string is valid and a non-zero negative value */
1765
+ #define PNG_FP_Z_MASK (PNG_FP_SAW_DIGIT | PNG_FP_NONZERO)
1766
+ /* Z MASK: the string is valid and a non-zero value. */
1767
+ /* PNG_FP_SAW_DIGIT: the string is valid. */
1768
+ #define PNG_FP_IS_ZERO(state) (((state) & PNG_FP_Z_MASK) == PNG_FP_SAW_DIGIT)
1769
+ #define PNG_FP_IS_POSITIVE(state) (((state) & PNG_FP_NZ_MASK) == PNG_FP_Z_MASK)
1770
+ #define PNG_FP_IS_NEGATIVE(state) (((state) & PNG_FP_NZ_MASK) == PNG_FP_NZ_MASK)
1771
+
1772
+ /* The actual parser. This can be called repeatedly. It updates
1773
+ * the index into the string and the state variable (which must
1774
+ * be initialized to 0). It returns a result code, as above. There
1775
+ * is no point calling the parser any more if it fails to advance to
1776
+ * the end of the string - it is stuck on an invalid character (or
1777
+ * terminated by '\0').
1778
+ *
1779
+ * Note that the pointer will consume an E or even an E+ and then leave
1780
+ * a 'maybe' state even though a preceding integer.fraction is valid.
1781
+ * The PNG_FP_WAS_VALID flag indicates that a preceding substring was
1782
+ * a valid number. It's possible to recover from this by calling
1783
+ * the parser again (from the start, with state 0) but with a string
1784
+ * that omits the last character (i.e. set the size to the index of
1785
+ * the problem character.) This has not been tested within libpng.
1786
+ */
1787
+ PNG_INTERNAL_FUNCTION(int,png_check_fp_number,(png_const_charp string,
1788
+ png_size_t size, int *statep, png_size_tp whereami),PNG_EMPTY);
1789
+
1790
+ /* This is the same but it checks a complete string and returns true
1791
+ * only if it just contains a floating point number. As of 1.5.4 this
1792
+ * function also returns the state at the end of parsing the number if
1793
+ * it was valid (otherwise it returns 0.) This can be used for testing
1794
+ * for negative or zero values using the sticky flag.
1795
+ */
1796
+ PNG_INTERNAL_FUNCTION(int,png_check_fp_string,(png_const_charp string,
1797
+ png_size_t size),PNG_EMPTY);
1798
+ #endif /* pCAL || sCAL */
1799
+
1800
+ #if defined(PNG_GAMMA_SUPPORTED) ||\
1801
+ defined(PNG_INCH_CONVERSIONS_SUPPORTED) || defined(PNG_READ_pHYs_SUPPORTED)
1802
+ /* Added at libpng version 1.5.0 */
1803
+ /* This is a utility to provide a*times/div (rounded) and indicate
1804
+ * if there is an overflow. The result is a boolean - false (0)
1805
+ * for overflow, true (1) if no overflow, in which case *res
1806
+ * holds the result.
1807
+ */
1808
+ PNG_INTERNAL_FUNCTION(int,png_muldiv,(png_fixed_point_p res, png_fixed_point a,
1809
+ png_int_32 multiplied_by, png_int_32 divided_by),PNG_EMPTY);
1810
+ #endif
1811
+
1812
+ #if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_INCH_CONVERSIONS_SUPPORTED)
1813
+ /* Same deal, but issue a warning on overflow and return 0. */
1814
+ PNG_INTERNAL_FUNCTION(png_fixed_point,png_muldiv_warn,
1815
+ (png_const_structrp png_ptr, png_fixed_point a, png_int_32 multiplied_by,
1816
+ png_int_32 divided_by),PNG_EMPTY);
1817
+ #endif
1818
+
1819
+ #ifdef PNG_GAMMA_SUPPORTED
1820
+ /* Calculate a reciprocal - used for gamma values. This returns
1821
+ * 0 if the argument is 0 in order to maintain an undefined value;
1822
+ * there are no warnings.
1823
+ */
1824
+ PNG_INTERNAL_FUNCTION(png_fixed_point,png_reciprocal,(png_fixed_point a),
1825
+ PNG_EMPTY);
1826
+
1827
+ #ifdef PNG_READ_GAMMA_SUPPORTED
1828
+ /* The same but gives a reciprocal of the product of two fixed point
1829
+ * values. Accuracy is suitable for gamma calculations but this is
1830
+ * not exact - use png_muldiv for that. Only required at present on read.
1831
+ */
1832
+ PNG_INTERNAL_FUNCTION(png_fixed_point,png_reciprocal2,(png_fixed_point a,
1833
+ png_fixed_point b),PNG_EMPTY);
1834
+ #endif
1835
+
1836
+ /* Return true if the gamma value is significantly different from 1.0 */
1837
+ PNG_INTERNAL_FUNCTION(int,png_gamma_significant,(png_fixed_point gamma_value),
1838
+ PNG_EMPTY);
1839
+ #endif
1840
+
1841
+ #ifdef PNG_READ_GAMMA_SUPPORTED
1842
+ /* Internal fixed point gamma correction. These APIs are called as
1843
+ * required to convert single values - they don't need to be fast,
1844
+ * they are not used when processing image pixel values.
1845
+ *
1846
+ * While the input is an 'unsigned' value it must actually be the
1847
+ * correct bit value - 0..255 or 0..65535 as required.
1848
+ */
1849
+ PNG_INTERNAL_FUNCTION(png_uint_16,png_gamma_correct,(png_structrp png_ptr,
1850
+ unsigned int value, png_fixed_point gamma_value),PNG_EMPTY);
1851
+ PNG_INTERNAL_FUNCTION(png_uint_16,png_gamma_16bit_correct,(unsigned int value,
1852
+ png_fixed_point gamma_value),PNG_EMPTY);
1853
+ PNG_INTERNAL_FUNCTION(png_byte,png_gamma_8bit_correct,(unsigned int value,
1854
+ png_fixed_point gamma_value),PNG_EMPTY);
1855
+ PNG_INTERNAL_FUNCTION(void,png_destroy_gamma_table,(png_structrp png_ptr),
1856
+ PNG_EMPTY);
1857
+ PNG_INTERNAL_FUNCTION(void,png_build_gamma_table,(png_structrp png_ptr,
1858
+ int bit_depth),PNG_EMPTY);
1859
+ #endif
1860
+
1861
+ /* SIMPLIFIED READ/WRITE SUPPORT */
1862
+ #if defined(PNG_SIMPLIFIED_READ_SUPPORTED) ||\
1863
+ defined(PNG_SIMPLIFIED_WRITE_SUPPORTED)
1864
+ /* The internal structure that png_image::opaque points to. */
1865
+ typedef struct png_control
1866
+ {
1867
+ png_structp png_ptr;
1868
+ png_infop info_ptr;
1869
+ png_voidp error_buf; /* Always a jmp_buf at present. */
1870
+
1871
+ png_const_bytep memory; /* Memory buffer. */
1872
+ png_size_t size; /* Size of the memory buffer. */
1873
+
1874
+ unsigned int for_write :1; /* Otherwise it is a read structure */
1875
+ unsigned int owned_file :1; /* We own the file in io_ptr */
1876
+ } png_control;
1877
+
1878
+ /* Return the pointer to the jmp_buf from a png_control: necessary because C
1879
+ * does not reveal the type of the elements of jmp_buf.
1880
+ */
1881
+ #ifdef __cplusplus
1882
+ # define png_control_jmp_buf(pc) (((jmp_buf*)((pc)->error_buf))[0])
1883
+ #else
1884
+ # define png_control_jmp_buf(pc) ((pc)->error_buf)
1885
+ #endif
1886
+
1887
+ /* Utility to safely execute a piece of libpng code catching and logging any
1888
+ * errors that might occur. Returns true on success, false on failure (either
1889
+ * of the function or as a result of a png_error.)
1890
+ */
1891
+ PNG_INTERNAL_CALLBACK(void,png_safe_error,(png_structp png_ptr,
1892
+ png_const_charp error_message),PNG_NORETURN);
1893
+
1894
+ #ifdef PNG_WARNINGS_SUPPORTED
1895
+ PNG_INTERNAL_CALLBACK(void,png_safe_warning,(png_structp png_ptr,
1896
+ png_const_charp warning_message),PNG_EMPTY);
1897
+ #else
1898
+ # define png_safe_warning 0/*dummy argument*/
1899
+ #endif
1900
+
1901
+ PNG_INTERNAL_FUNCTION(int,png_safe_execute,(png_imagep image,
1902
+ int (*function)(png_voidp), png_voidp arg),PNG_EMPTY);
1903
+
1904
+ /* Utility to log an error; this also cleans up the png_image; the function
1905
+ * always returns 0 (false).
1906
+ */
1907
+ PNG_INTERNAL_FUNCTION(int,png_image_error,(png_imagep image,
1908
+ png_const_charp error_message),PNG_EMPTY);
1909
+
1910
+ #ifndef PNG_SIMPLIFIED_READ_SUPPORTED
1911
+ /* png_image_free is used by the write code but not exported */
1912
+ PNG_INTERNAL_FUNCTION(void, png_image_free, (png_imagep image), PNG_EMPTY);
1913
+ #endif /* !SIMPLIFIED_READ */
1914
+
1915
+ #endif /* SIMPLIFIED READ/WRITE */
1916
+
1917
+ /* These are initialization functions for hardware specific PNG filter
1918
+ * optimizations; list these here then select the appropriate one at compile
1919
+ * time using the macro PNG_FILTER_OPTIMIZATIONS. If the macro is not defined
1920
+ * the generic code is used.
1921
+ */
1922
+ #ifdef PNG_FILTER_OPTIMIZATIONS
1923
+ PNG_INTERNAL_FUNCTION(void, PNG_FILTER_OPTIMIZATIONS, (png_structp png_ptr,
1924
+ unsigned int bpp), PNG_EMPTY);
1925
+ /* Just declare the optimization that will be used */
1926
+ #else
1927
+ /* List *all* the possible optimizations here - this branch is required if
1928
+ * the builder of libpng passes the definition of PNG_FILTER_OPTIMIZATIONS in
1929
+ * CFLAGS in place of CPPFLAGS *and* uses symbol prefixing.
1930
+ */
1931
+ PNG_INTERNAL_FUNCTION(void, png_init_filter_functions_neon,
1932
+ (png_structp png_ptr, unsigned int bpp), PNG_EMPTY);
1933
+ #endif
1934
+
1935
+ /* Maintainer: Put new private prototypes here ^ */
1936
+
1937
+ #include "pngdebug.h"
1938
+
1939
+ #ifdef __cplusplus
1940
+ }
1941
+ #endif
1942
+
1943
+ #endif /* PNG_VERSION_INFO_ONLY */
1944
+ #endif /* PNGPRIV_H */