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,1169 @@
1
+ /* $Id: tif_lzw.c,v 1.11 2015/02/19 22:39:58 drolon Exp $ */
2
+
3
+ /*
4
+ * Copyright (c) 1988-1997 Sam Leffler
5
+ * Copyright (c) 1991-1997 Silicon Graphics, Inc.
6
+ *
7
+ * Permission to use, copy, modify, distribute, and sell this software and
8
+ * its documentation for any purpose is hereby granted without fee, provided
9
+ * that (i) the above copyright notices and this permission notice appear in
10
+ * all copies of the software and related documentation, and (ii) the names of
11
+ * Sam Leffler and Silicon Graphics may not be used in any advertising or
12
+ * publicity relating to the software without the specific, prior written
13
+ * permission of Sam Leffler and Silicon Graphics.
14
+ *
15
+ * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
16
+ * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
17
+ * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
18
+ *
19
+ * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
20
+ * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
21
+ * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
22
+ * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
23
+ * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
24
+ * OF THIS SOFTWARE.
25
+ */
26
+
27
+ #include "tiffiop.h"
28
+ #ifdef LZW_SUPPORT
29
+ /*
30
+ * TIFF Library.
31
+ * Rev 5.0 Lempel-Ziv & Welch Compression Support
32
+ *
33
+ * This code is derived from the compress program whose code is
34
+ * derived from software contributed to Berkeley by James A. Woods,
35
+ * derived from original work by Spencer Thomas and Joseph Orost.
36
+ *
37
+ * The original Berkeley copyright notice appears below in its entirety.
38
+ */
39
+ #include "tif_predict.h"
40
+
41
+ #include <stdio.h>
42
+
43
+ /*
44
+ * NB: The 5.0 spec describes a different algorithm than Aldus
45
+ * implements. Specifically, Aldus does code length transitions
46
+ * one code earlier than should be done (for real LZW).
47
+ * Earlier versions of this library implemented the correct
48
+ * LZW algorithm, but emitted codes in a bit order opposite
49
+ * to the TIFF spec. Thus, to maintain compatibility w/ Aldus
50
+ * we interpret MSB-LSB ordered codes to be images written w/
51
+ * old versions of this library, but otherwise adhere to the
52
+ * Aldus "off by one" algorithm.
53
+ *
54
+ * Future revisions to the TIFF spec are expected to "clarify this issue".
55
+ */
56
+ #define LZW_COMPAT /* include backwards compatibility code */
57
+ /*
58
+ * Each strip of data is supposed to be terminated by a CODE_EOI.
59
+ * If the following #define is included, the decoder will also
60
+ * check for end-of-strip w/o seeing this code. This makes the
61
+ * library more robust, but also slower.
62
+ */
63
+ #define LZW_CHECKEOS /* include checks for strips w/o EOI code */
64
+
65
+ #define MAXCODE(n) ((1L<<(n))-1)
66
+ /*
67
+ * The TIFF spec specifies that encoded bit
68
+ * strings range from 9 to 12 bits.
69
+ */
70
+ #define BITS_MIN 9 /* start with 9 bits */
71
+ #define BITS_MAX 12 /* max of 12 bit strings */
72
+ /* predefined codes */
73
+ #define CODE_CLEAR 256 /* code to clear string table */
74
+ #define CODE_EOI 257 /* end-of-information code */
75
+ #define CODE_FIRST 258 /* first free code entry */
76
+ #define CODE_MAX MAXCODE(BITS_MAX)
77
+ #define HSIZE 9001L /* 91% occupancy */
78
+ #define HSHIFT (13-8)
79
+ #ifdef LZW_COMPAT
80
+ /* NB: +1024 is for compatibility with old files */
81
+ #define CSIZE (MAXCODE(BITS_MAX)+1024L)
82
+ #else
83
+ #define CSIZE (MAXCODE(BITS_MAX)+1L)
84
+ #endif
85
+
86
+ /*
87
+ * State block for each open TIFF file using LZW
88
+ * compression/decompression. Note that the predictor
89
+ * state block must be first in this data structure.
90
+ */
91
+ typedef struct {
92
+ TIFFPredictorState predict; /* predictor super class */
93
+
94
+ unsigned short nbits; /* # of bits/code */
95
+ unsigned short maxcode; /* maximum code for lzw_nbits */
96
+ unsigned short free_ent; /* next free entry in hash table */
97
+ long nextdata; /* next bits of i/o */
98
+ long nextbits; /* # of valid bits in lzw_nextdata */
99
+
100
+ int rw_mode; /* preserve rw_mode from init */
101
+ } LZWBaseState;
102
+
103
+ #define lzw_nbits base.nbits
104
+ #define lzw_maxcode base.maxcode
105
+ #define lzw_free_ent base.free_ent
106
+ #define lzw_nextdata base.nextdata
107
+ #define lzw_nextbits base.nextbits
108
+
109
+ /*
110
+ * Encoding-specific state.
111
+ */
112
+ typedef uint16 hcode_t; /* codes fit in 16 bits */
113
+ typedef struct {
114
+ long hash;
115
+ hcode_t code;
116
+ } hash_t;
117
+
118
+ /*
119
+ * Decoding-specific state.
120
+ */
121
+ typedef struct code_ent {
122
+ struct code_ent *next;
123
+ unsigned short length; /* string len, including this token */
124
+ unsigned char value; /* data value */
125
+ unsigned char firstchar; /* first token of string */
126
+ } code_t;
127
+
128
+ typedef int (*decodeFunc)(TIFF*, uint8*, tmsize_t, uint16);
129
+
130
+ typedef struct {
131
+ LZWBaseState base;
132
+
133
+ /* Decoding specific data */
134
+ long dec_nbitsmask; /* lzw_nbits 1 bits, right adjusted */
135
+ long dec_restart; /* restart count */
136
+ #ifdef LZW_CHECKEOS
137
+ uint64 dec_bitsleft; /* available bits in raw data */
138
+ #endif
139
+ decodeFunc dec_decode; /* regular or backwards compatible */
140
+ code_t* dec_codep; /* current recognized code */
141
+ code_t* dec_oldcodep; /* previously recognized code */
142
+ code_t* dec_free_entp; /* next free entry */
143
+ code_t* dec_maxcodep; /* max available entry */
144
+ code_t* dec_codetab; /* kept separate for small machines */
145
+
146
+ /* Encoding specific data */
147
+ int enc_oldcode; /* last code encountered */
148
+ long enc_checkpoint; /* point at which to clear table */
149
+ #define CHECK_GAP 10000 /* enc_ratio check interval */
150
+ long enc_ratio; /* current compression ratio */
151
+ long enc_incount; /* (input) data bytes encoded */
152
+ long enc_outcount; /* encoded (output) bytes */
153
+ uint8* enc_rawlimit; /* bound on tif_rawdata buffer */
154
+ hash_t* enc_hashtab; /* kept separate for small machines */
155
+ } LZWCodecState;
156
+
157
+ #define LZWState(tif) ((LZWBaseState*) (tif)->tif_data)
158
+ #define DecoderState(tif) ((LZWCodecState*) LZWState(tif))
159
+ #define EncoderState(tif) ((LZWCodecState*) LZWState(tif))
160
+
161
+ static int LZWDecode(TIFF* tif, uint8* op0, tmsize_t occ0, uint16 s);
162
+ #ifdef LZW_COMPAT
163
+ static int LZWDecodeCompat(TIFF* tif, uint8* op0, tmsize_t occ0, uint16 s);
164
+ #endif
165
+ static void cl_hash(LZWCodecState*);
166
+
167
+ /*
168
+ * LZW Decoder.
169
+ */
170
+
171
+ #ifdef LZW_CHECKEOS
172
+ /*
173
+ * This check shouldn't be necessary because each
174
+ * strip is suppose to be terminated with CODE_EOI.
175
+ */
176
+ #define NextCode(_tif, _sp, _bp, _code, _get) { \
177
+ if ((_sp)->dec_bitsleft < (uint64)nbits) { \
178
+ TIFFWarningExt(_tif->tif_clientdata, module, \
179
+ "LZWDecode: Strip %d not terminated with EOI code", \
180
+ _tif->tif_curstrip); \
181
+ _code = CODE_EOI; \
182
+ } else { \
183
+ _get(_sp,_bp,_code); \
184
+ (_sp)->dec_bitsleft -= nbits; \
185
+ } \
186
+ }
187
+ #else
188
+ #define NextCode(tif, sp, bp, code, get) get(sp, bp, code)
189
+ #endif
190
+
191
+ static int
192
+ LZWFixupTags(TIFF* tif)
193
+ {
194
+ (void) tif;
195
+ return (1);
196
+ }
197
+
198
+ static int
199
+ LZWSetupDecode(TIFF* tif)
200
+ {
201
+ static const char module[] = "LZWSetupDecode";
202
+ LZWCodecState* sp = DecoderState(tif);
203
+ int code;
204
+
205
+ if( sp == NULL )
206
+ {
207
+ /*
208
+ * Allocate state block so tag methods have storage to record
209
+ * values.
210
+ */
211
+ tif->tif_data = (uint8*) _TIFFmalloc(sizeof(LZWCodecState));
212
+ if (tif->tif_data == NULL)
213
+ {
214
+ TIFFErrorExt(tif->tif_clientdata, module, "No space for LZW state block");
215
+ return (0);
216
+ }
217
+
218
+ DecoderState(tif)->dec_codetab = NULL;
219
+ DecoderState(tif)->dec_decode = NULL;
220
+
221
+ /*
222
+ * Setup predictor setup.
223
+ */
224
+ (void) TIFFPredictorInit(tif);
225
+
226
+ sp = DecoderState(tif);
227
+ }
228
+
229
+ assert(sp != NULL);
230
+
231
+ if (sp->dec_codetab == NULL) {
232
+ sp->dec_codetab = (code_t*)_TIFFmalloc(CSIZE*sizeof (code_t));
233
+ if (sp->dec_codetab == NULL) {
234
+ TIFFErrorExt(tif->tif_clientdata, module,
235
+ "No space for LZW code table");
236
+ return (0);
237
+ }
238
+ /*
239
+ * Pre-load the table.
240
+ */
241
+ code = 255;
242
+ do {
243
+ sp->dec_codetab[code].value = code;
244
+ sp->dec_codetab[code].firstchar = code;
245
+ sp->dec_codetab[code].length = 1;
246
+ sp->dec_codetab[code].next = NULL;
247
+ } while (code--);
248
+ /*
249
+ * Zero-out the unused entries
250
+ */
251
+ _TIFFmemset(&sp->dec_codetab[CODE_CLEAR], 0,
252
+ (CODE_FIRST - CODE_CLEAR) * sizeof (code_t));
253
+ }
254
+ return (1);
255
+ }
256
+
257
+ /*
258
+ * Setup state for decoding a strip.
259
+ */
260
+ static int
261
+ LZWPreDecode(TIFF* tif, uint16 s)
262
+ {
263
+ static const char module[] = "LZWPreDecode";
264
+ LZWCodecState *sp = DecoderState(tif);
265
+
266
+ (void) s;
267
+ assert(sp != NULL);
268
+ if( sp->dec_codetab == NULL )
269
+ {
270
+ tif->tif_setupdecode( tif );
271
+ if( sp->dec_codetab == NULL )
272
+ return (0);
273
+ }
274
+
275
+ /*
276
+ * Check for old bit-reversed codes.
277
+ */
278
+ if (tif->tif_rawdata[0] == 0 && (tif->tif_rawdata[1] & 0x1)) {
279
+ #ifdef LZW_COMPAT
280
+ if (!sp->dec_decode) {
281
+ TIFFWarningExt(tif->tif_clientdata, module,
282
+ "Old-style LZW codes, convert file");
283
+ /*
284
+ * Override default decoding methods with
285
+ * ones that deal with the old coding.
286
+ * Otherwise the predictor versions set
287
+ * above will call the compatibility routines
288
+ * through the dec_decode method.
289
+ */
290
+ tif->tif_decoderow = LZWDecodeCompat;
291
+ tif->tif_decodestrip = LZWDecodeCompat;
292
+ tif->tif_decodetile = LZWDecodeCompat;
293
+ /*
294
+ * If doing horizontal differencing, must
295
+ * re-setup the predictor logic since we
296
+ * switched the basic decoder methods...
297
+ */
298
+ (*tif->tif_setupdecode)(tif);
299
+ sp->dec_decode = LZWDecodeCompat;
300
+ }
301
+ sp->lzw_maxcode = MAXCODE(BITS_MIN);
302
+ #else /* !LZW_COMPAT */
303
+ if (!sp->dec_decode) {
304
+ TIFFErrorExt(tif->tif_clientdata, module,
305
+ "Old-style LZW codes not supported");
306
+ sp->dec_decode = LZWDecode;
307
+ }
308
+ return (0);
309
+ #endif/* !LZW_COMPAT */
310
+ } else {
311
+ sp->lzw_maxcode = MAXCODE(BITS_MIN)-1;
312
+ sp->dec_decode = LZWDecode;
313
+ }
314
+ sp->lzw_nbits = BITS_MIN;
315
+ sp->lzw_nextbits = 0;
316
+ sp->lzw_nextdata = 0;
317
+
318
+ sp->dec_restart = 0;
319
+ sp->dec_nbitsmask = MAXCODE(BITS_MIN);
320
+ #ifdef LZW_CHECKEOS
321
+ sp->dec_bitsleft = ((uint64)tif->tif_rawcc) << 3;
322
+ #endif
323
+ sp->dec_free_entp = sp->dec_codetab + CODE_FIRST;
324
+ /*
325
+ * Zero entries that are not yet filled in. We do
326
+ * this to guard against bogus input data that causes
327
+ * us to index into undefined entries. If you can
328
+ * come up with a way to safely bounds-check input codes
329
+ * while decoding then you can remove this operation.
330
+ */
331
+ _TIFFmemset(sp->dec_free_entp, 0, (CSIZE-CODE_FIRST)*sizeof (code_t));
332
+ sp->dec_oldcodep = &sp->dec_codetab[-1];
333
+ sp->dec_maxcodep = &sp->dec_codetab[sp->dec_nbitsmask-1];
334
+ return (1);
335
+ }
336
+
337
+ /*
338
+ * Decode a "hunk of data".
339
+ */
340
+ #define GetNextCode(sp, bp, code) { \
341
+ nextdata = (nextdata<<8) | *(bp)++; \
342
+ nextbits += 8; \
343
+ if (nextbits < nbits) { \
344
+ nextdata = (nextdata<<8) | *(bp)++; \
345
+ nextbits += 8; \
346
+ } \
347
+ code = (hcode_t)((nextdata >> (nextbits-nbits)) & nbitsmask); \
348
+ nextbits -= nbits; \
349
+ }
350
+
351
+ static void
352
+ codeLoop(TIFF* tif, const char* module)
353
+ {
354
+ TIFFErrorExt(tif->tif_clientdata, module,
355
+ "Bogus encoding, loop in the code table; scanline %d",
356
+ tif->tif_row);
357
+ }
358
+
359
+ static int
360
+ LZWDecode(TIFF* tif, uint8* op0, tmsize_t occ0, uint16 s)
361
+ {
362
+ static const char module[] = "LZWDecode";
363
+ LZWCodecState *sp = DecoderState(tif);
364
+ char *op = (char*) op0;
365
+ long occ = (long) occ0;
366
+ char *tp;
367
+ unsigned char *bp;
368
+ hcode_t code;
369
+ int len;
370
+ long nbits, nextbits, nextdata, nbitsmask;
371
+ code_t *codep, *free_entp, *maxcodep, *oldcodep;
372
+
373
+ (void) s;
374
+ assert(sp != NULL);
375
+ assert(sp->dec_codetab != NULL);
376
+
377
+ /*
378
+ Fail if value does not fit in long.
379
+ */
380
+ if ((tmsize_t) occ != occ0)
381
+ return (0);
382
+ /*
383
+ * Restart interrupted output operation.
384
+ */
385
+ if (sp->dec_restart) {
386
+ long residue;
387
+
388
+ codep = sp->dec_codep;
389
+ residue = codep->length - sp->dec_restart;
390
+ if (residue > occ) {
391
+ /*
392
+ * Residue from previous decode is sufficient
393
+ * to satisfy decode request. Skip to the
394
+ * start of the decoded string, place decoded
395
+ * values in the output buffer, and return.
396
+ */
397
+ sp->dec_restart += occ;
398
+ do {
399
+ codep = codep->next;
400
+ } while (--residue > occ && codep);
401
+ if (codep) {
402
+ tp = op + occ;
403
+ do {
404
+ *--tp = codep->value;
405
+ codep = codep->next;
406
+ } while (--occ && codep);
407
+ }
408
+ return (1);
409
+ }
410
+ /*
411
+ * Residue satisfies only part of the decode request.
412
+ */
413
+ op += residue, occ -= residue;
414
+ tp = op;
415
+ do {
416
+ int t;
417
+ --tp;
418
+ t = codep->value;
419
+ codep = codep->next;
420
+ *tp = t;
421
+ } while (--residue && codep);
422
+ sp->dec_restart = 0;
423
+ }
424
+
425
+ bp = (unsigned char *)tif->tif_rawcp;
426
+ nbits = sp->lzw_nbits;
427
+ nextdata = sp->lzw_nextdata;
428
+ nextbits = sp->lzw_nextbits;
429
+ nbitsmask = sp->dec_nbitsmask;
430
+ oldcodep = sp->dec_oldcodep;
431
+ free_entp = sp->dec_free_entp;
432
+ maxcodep = sp->dec_maxcodep;
433
+
434
+ while (occ > 0) {
435
+ NextCode(tif, sp, bp, code, GetNextCode);
436
+ if (code == CODE_EOI)
437
+ break;
438
+ if (code == CODE_CLEAR) {
439
+ free_entp = sp->dec_codetab + CODE_FIRST;
440
+ _TIFFmemset(free_entp, 0,
441
+ (CSIZE - CODE_FIRST) * sizeof (code_t));
442
+ nbits = BITS_MIN;
443
+ nbitsmask = MAXCODE(BITS_MIN);
444
+ maxcodep = sp->dec_codetab + nbitsmask-1;
445
+ NextCode(tif, sp, bp, code, GetNextCode);
446
+ if (code == CODE_EOI)
447
+ break;
448
+ if (code >= CODE_CLEAR) {
449
+ TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
450
+ "LZWDecode: Corrupted LZW table at scanline %d",
451
+ tif->tif_row);
452
+ return (0);
453
+ }
454
+ *op++ = (char)code, occ--;
455
+ oldcodep = sp->dec_codetab + code;
456
+ continue;
457
+ }
458
+ codep = sp->dec_codetab + code;
459
+
460
+ /*
461
+ * Add the new entry to the code table.
462
+ */
463
+ if (free_entp < &sp->dec_codetab[0] ||
464
+ free_entp >= &sp->dec_codetab[CSIZE]) {
465
+ TIFFErrorExt(tif->tif_clientdata, module,
466
+ "Corrupted LZW table at scanline %d",
467
+ tif->tif_row);
468
+ return (0);
469
+ }
470
+
471
+ free_entp->next = oldcodep;
472
+ if (free_entp->next < &sp->dec_codetab[0] ||
473
+ free_entp->next >= &sp->dec_codetab[CSIZE]) {
474
+ TIFFErrorExt(tif->tif_clientdata, module,
475
+ "Corrupted LZW table at scanline %d",
476
+ tif->tif_row);
477
+ return (0);
478
+ }
479
+ free_entp->firstchar = free_entp->next->firstchar;
480
+ free_entp->length = free_entp->next->length+1;
481
+ free_entp->value = (codep < free_entp) ?
482
+ codep->firstchar : free_entp->firstchar;
483
+ if (++free_entp > maxcodep) {
484
+ if (++nbits > BITS_MAX) /* should not happen */
485
+ nbits = BITS_MAX;
486
+ nbitsmask = MAXCODE(nbits);
487
+ maxcodep = sp->dec_codetab + nbitsmask-1;
488
+ }
489
+ oldcodep = codep;
490
+ if (code >= 256) {
491
+ /*
492
+ * Code maps to a string, copy string
493
+ * value to output (written in reverse).
494
+ */
495
+ if(codep->length == 0) {
496
+ TIFFErrorExt(tif->tif_clientdata, module,
497
+ "Wrong length of decoded string: "
498
+ "data probably corrupted at scanline %d",
499
+ tif->tif_row);
500
+ return (0);
501
+ }
502
+ if (codep->length > occ) {
503
+ /*
504
+ * String is too long for decode buffer,
505
+ * locate portion that will fit, copy to
506
+ * the decode buffer, and setup restart
507
+ * logic for the next decoding call.
508
+ */
509
+ sp->dec_codep = codep;
510
+ do {
511
+ codep = codep->next;
512
+ } while (codep && codep->length > occ);
513
+ if (codep) {
514
+ sp->dec_restart = (long)occ;
515
+ tp = op + occ;
516
+ do {
517
+ *--tp = codep->value;
518
+ codep = codep->next;
519
+ } while (--occ && codep);
520
+ if (codep)
521
+ codeLoop(tif, module);
522
+ }
523
+ break;
524
+ }
525
+ len = codep->length;
526
+ tp = op + len;
527
+ do {
528
+ int t;
529
+ --tp;
530
+ t = codep->value;
531
+ codep = codep->next;
532
+ *tp = t;
533
+ } while (codep && tp > op);
534
+ if (codep) {
535
+ codeLoop(tif, module);
536
+ break;
537
+ }
538
+ assert(occ >= len);
539
+ op += len, occ -= len;
540
+ } else
541
+ *op++ = (char)code, occ--;
542
+ }
543
+
544
+ tif->tif_rawcp = (uint8*) bp;
545
+ sp->lzw_nbits = (unsigned short) nbits;
546
+ sp->lzw_nextdata = nextdata;
547
+ sp->lzw_nextbits = nextbits;
548
+ sp->dec_nbitsmask = nbitsmask;
549
+ sp->dec_oldcodep = oldcodep;
550
+ sp->dec_free_entp = free_entp;
551
+ sp->dec_maxcodep = maxcodep;
552
+
553
+ if (occ > 0) {
554
+ #if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
555
+ TIFFErrorExt(tif->tif_clientdata, module,
556
+ "Not enough data at scanline %d (short %I64d bytes)",
557
+ tif->tif_row, (unsigned __int64) occ);
558
+ #else
559
+ TIFFErrorExt(tif->tif_clientdata, module,
560
+ "Not enough data at scanline %d (short %llu bytes)",
561
+ tif->tif_row, (unsigned long long) occ);
562
+ #endif
563
+ return (0);
564
+ }
565
+ return (1);
566
+ }
567
+
568
+ #ifdef LZW_COMPAT
569
+ /*
570
+ * Decode a "hunk of data" for old images.
571
+ */
572
+ #define GetNextCodeCompat(sp, bp, code) { \
573
+ nextdata |= (unsigned long) *(bp)++ << nextbits; \
574
+ nextbits += 8; \
575
+ if (nextbits < nbits) { \
576
+ nextdata |= (unsigned long) *(bp)++ << nextbits;\
577
+ nextbits += 8; \
578
+ } \
579
+ code = (hcode_t)(nextdata & nbitsmask); \
580
+ nextdata >>= nbits; \
581
+ nextbits -= nbits; \
582
+ }
583
+
584
+ static int
585
+ LZWDecodeCompat(TIFF* tif, uint8* op0, tmsize_t occ0, uint16 s)
586
+ {
587
+ static const char module[] = "LZWDecodeCompat";
588
+ LZWCodecState *sp = DecoderState(tif);
589
+ char *op = (char*) op0;
590
+ long occ = (long) occ0;
591
+ char *tp;
592
+ unsigned char *bp;
593
+ int code, nbits;
594
+ long nextbits, nextdata, nbitsmask;
595
+ code_t *codep, *free_entp, *maxcodep, *oldcodep;
596
+
597
+ (void) s;
598
+ assert(sp != NULL);
599
+
600
+ /*
601
+ Fail if value does not fit in long.
602
+ */
603
+ if ((tmsize_t) occ != occ0)
604
+ return (0);
605
+
606
+ /*
607
+ * Restart interrupted output operation.
608
+ */
609
+ if (sp->dec_restart) {
610
+ long residue;
611
+
612
+ codep = sp->dec_codep;
613
+ residue = codep->length - sp->dec_restart;
614
+ if (residue > occ) {
615
+ /*
616
+ * Residue from previous decode is sufficient
617
+ * to satisfy decode request. Skip to the
618
+ * start of the decoded string, place decoded
619
+ * values in the output buffer, and return.
620
+ */
621
+ sp->dec_restart += occ;
622
+ do {
623
+ codep = codep->next;
624
+ } while (--residue > occ);
625
+ tp = op + occ;
626
+ do {
627
+ *--tp = codep->value;
628
+ codep = codep->next;
629
+ } while (--occ);
630
+ return (1);
631
+ }
632
+ /*
633
+ * Residue satisfies only part of the decode request.
634
+ */
635
+ op += residue, occ -= residue;
636
+ tp = op;
637
+ do {
638
+ *--tp = codep->value;
639
+ codep = codep->next;
640
+ } while (--residue);
641
+ sp->dec_restart = 0;
642
+ }
643
+
644
+ bp = (unsigned char *)tif->tif_rawcp;
645
+ nbits = sp->lzw_nbits;
646
+ nextdata = sp->lzw_nextdata;
647
+ nextbits = sp->lzw_nextbits;
648
+ nbitsmask = sp->dec_nbitsmask;
649
+ oldcodep = sp->dec_oldcodep;
650
+ free_entp = sp->dec_free_entp;
651
+ maxcodep = sp->dec_maxcodep;
652
+
653
+ while (occ > 0) {
654
+ NextCode(tif, sp, bp, code, GetNextCodeCompat);
655
+ if (code == CODE_EOI)
656
+ break;
657
+ if (code == CODE_CLEAR) {
658
+ free_entp = sp->dec_codetab + CODE_FIRST;
659
+ _TIFFmemset(free_entp, 0,
660
+ (CSIZE - CODE_FIRST) * sizeof (code_t));
661
+ nbits = BITS_MIN;
662
+ nbitsmask = MAXCODE(BITS_MIN);
663
+ maxcodep = sp->dec_codetab + nbitsmask;
664
+ NextCode(tif, sp, bp, code, GetNextCodeCompat);
665
+ if (code == CODE_EOI)
666
+ break;
667
+ if (code >= CODE_CLEAR) {
668
+ TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
669
+ "LZWDecode: Corrupted LZW table at scanline %d",
670
+ tif->tif_row);
671
+ return (0);
672
+ }
673
+ *op++ = code, occ--;
674
+ oldcodep = sp->dec_codetab + code;
675
+ continue;
676
+ }
677
+ codep = sp->dec_codetab + code;
678
+
679
+ /*
680
+ * Add the new entry to the code table.
681
+ */
682
+ if (free_entp < &sp->dec_codetab[0] ||
683
+ free_entp >= &sp->dec_codetab[CSIZE]) {
684
+ TIFFErrorExt(tif->tif_clientdata, module,
685
+ "Corrupted LZW table at scanline %d", tif->tif_row);
686
+ return (0);
687
+ }
688
+
689
+ free_entp->next = oldcodep;
690
+ if (free_entp->next < &sp->dec_codetab[0] ||
691
+ free_entp->next >= &sp->dec_codetab[CSIZE]) {
692
+ TIFFErrorExt(tif->tif_clientdata, module,
693
+ "Corrupted LZW table at scanline %d", tif->tif_row);
694
+ return (0);
695
+ }
696
+ free_entp->firstchar = free_entp->next->firstchar;
697
+ free_entp->length = free_entp->next->length+1;
698
+ free_entp->value = (codep < free_entp) ?
699
+ codep->firstchar : free_entp->firstchar;
700
+ if (++free_entp > maxcodep) {
701
+ if (++nbits > BITS_MAX) /* should not happen */
702
+ nbits = BITS_MAX;
703
+ nbitsmask = MAXCODE(nbits);
704
+ maxcodep = sp->dec_codetab + nbitsmask;
705
+ }
706
+ oldcodep = codep;
707
+ if (code >= 256) {
708
+ /*
709
+ * Code maps to a string, copy string
710
+ * value to output (written in reverse).
711
+ */
712
+ if(codep->length == 0) {
713
+ TIFFErrorExt(tif->tif_clientdata, module,
714
+ "Wrong length of decoded "
715
+ "string: data probably corrupted at scanline %d",
716
+ tif->tif_row);
717
+ return (0);
718
+ }
719
+ if (codep->length > occ) {
720
+ /*
721
+ * String is too long for decode buffer,
722
+ * locate portion that will fit, copy to
723
+ * the decode buffer, and setup restart
724
+ * logic for the next decoding call.
725
+ */
726
+ sp->dec_codep = codep;
727
+ do {
728
+ codep = codep->next;
729
+ } while (codep->length > occ);
730
+ sp->dec_restart = occ;
731
+ tp = op + occ;
732
+ do {
733
+ *--tp = codep->value;
734
+ codep = codep->next;
735
+ } while (--occ);
736
+ break;
737
+ }
738
+ assert(occ >= codep->length);
739
+ op += codep->length, occ -= codep->length;
740
+ tp = op;
741
+ do {
742
+ *--tp = codep->value;
743
+ } while( (codep = codep->next) != NULL );
744
+ } else
745
+ *op++ = code, occ--;
746
+ }
747
+
748
+ tif->tif_rawcp = (uint8*) bp;
749
+ sp->lzw_nbits = nbits;
750
+ sp->lzw_nextdata = nextdata;
751
+ sp->lzw_nextbits = nextbits;
752
+ sp->dec_nbitsmask = nbitsmask;
753
+ sp->dec_oldcodep = oldcodep;
754
+ sp->dec_free_entp = free_entp;
755
+ sp->dec_maxcodep = maxcodep;
756
+
757
+ if (occ > 0) {
758
+ #if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
759
+ TIFFErrorExt(tif->tif_clientdata, module,
760
+ "Not enough data at scanline %d (short %I64d bytes)",
761
+ tif->tif_row, (unsigned __int64) occ);
762
+ #else
763
+ TIFFErrorExt(tif->tif_clientdata, module,
764
+ "Not enough data at scanline %d (short %llu bytes)",
765
+ tif->tif_row, (unsigned long long) occ);
766
+ #endif
767
+ return (0);
768
+ }
769
+ return (1);
770
+ }
771
+ #endif /* LZW_COMPAT */
772
+
773
+ /*
774
+ * LZW Encoding.
775
+ */
776
+
777
+ static int
778
+ LZWSetupEncode(TIFF* tif)
779
+ {
780
+ static const char module[] = "LZWSetupEncode";
781
+ LZWCodecState* sp = EncoderState(tif);
782
+
783
+ assert(sp != NULL);
784
+ sp->enc_hashtab = (hash_t*) _TIFFmalloc(HSIZE*sizeof (hash_t));
785
+ if (sp->enc_hashtab == NULL) {
786
+ TIFFErrorExt(tif->tif_clientdata, module,
787
+ "No space for LZW hash table");
788
+ return (0);
789
+ }
790
+ return (1);
791
+ }
792
+
793
+ /*
794
+ * Reset encoding state at the start of a strip.
795
+ */
796
+ static int
797
+ LZWPreEncode(TIFF* tif, uint16 s)
798
+ {
799
+ LZWCodecState *sp = EncoderState(tif);
800
+
801
+ (void) s;
802
+ assert(sp != NULL);
803
+
804
+ if( sp->enc_hashtab == NULL )
805
+ {
806
+ tif->tif_setupencode( tif );
807
+ }
808
+
809
+ sp->lzw_nbits = BITS_MIN;
810
+ sp->lzw_maxcode = MAXCODE(BITS_MIN);
811
+ sp->lzw_free_ent = CODE_FIRST;
812
+ sp->lzw_nextbits = 0;
813
+ sp->lzw_nextdata = 0;
814
+ sp->enc_checkpoint = CHECK_GAP;
815
+ sp->enc_ratio = 0;
816
+ sp->enc_incount = 0;
817
+ sp->enc_outcount = 0;
818
+ /*
819
+ * The 4 here insures there is space for 2 max-sized
820
+ * codes in LZWEncode and LZWPostDecode.
821
+ */
822
+ sp->enc_rawlimit = tif->tif_rawdata + tif->tif_rawdatasize-1 - 4;
823
+ cl_hash(sp); /* clear hash table */
824
+ sp->enc_oldcode = (hcode_t) -1; /* generates CODE_CLEAR in LZWEncode */
825
+ return (1);
826
+ }
827
+
828
+ #define CALCRATIO(sp, rat) { \
829
+ if (incount > 0x007fffff) { /* NB: shift will overflow */\
830
+ rat = outcount >> 8; \
831
+ rat = (rat == 0 ? 0x7fffffff : incount/rat); \
832
+ } else \
833
+ rat = (incount<<8) / outcount; \
834
+ }
835
+ #define PutNextCode(op, c) { \
836
+ nextdata = (nextdata << nbits) | c; \
837
+ nextbits += nbits; \
838
+ *op++ = (unsigned char)(nextdata >> (nextbits-8)); \
839
+ nextbits -= 8; \
840
+ if (nextbits >= 8) { \
841
+ *op++ = (unsigned char)(nextdata >> (nextbits-8)); \
842
+ nextbits -= 8; \
843
+ } \
844
+ outcount += nbits; \
845
+ }
846
+
847
+ /*
848
+ * Encode a chunk of pixels.
849
+ *
850
+ * Uses an open addressing double hashing (no chaining) on the
851
+ * prefix code/next character combination. We do a variant of
852
+ * Knuth's algorithm D (vol. 3, sec. 6.4) along with G. Knott's
853
+ * relatively-prime secondary probe. Here, the modular division
854
+ * first probe is gives way to a faster exclusive-or manipulation.
855
+ * Also do block compression with an adaptive reset, whereby the
856
+ * code table is cleared when the compression ratio decreases,
857
+ * but after the table fills. The variable-length output codes
858
+ * are re-sized at this point, and a CODE_CLEAR is generated
859
+ * for the decoder.
860
+ */
861
+ static int
862
+ LZWEncode(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s)
863
+ {
864
+ register LZWCodecState *sp = EncoderState(tif);
865
+ register long fcode;
866
+ register hash_t *hp;
867
+ register int h, c;
868
+ hcode_t ent;
869
+ long disp;
870
+ long incount, outcount, checkpoint;
871
+ long nextdata, nextbits;
872
+ int free_ent, maxcode, nbits;
873
+ uint8* op;
874
+ uint8* limit;
875
+
876
+ (void) s;
877
+ if (sp == NULL)
878
+ return (0);
879
+
880
+ assert(sp->enc_hashtab != NULL);
881
+
882
+ /*
883
+ * Load local state.
884
+ */
885
+ incount = sp->enc_incount;
886
+ outcount = sp->enc_outcount;
887
+ checkpoint = sp->enc_checkpoint;
888
+ nextdata = sp->lzw_nextdata;
889
+ nextbits = sp->lzw_nextbits;
890
+ free_ent = sp->lzw_free_ent;
891
+ maxcode = sp->lzw_maxcode;
892
+ nbits = sp->lzw_nbits;
893
+ op = tif->tif_rawcp;
894
+ limit = sp->enc_rawlimit;
895
+ ent = sp->enc_oldcode;
896
+
897
+ if (ent == (hcode_t) -1 && cc > 0) {
898
+ /*
899
+ * NB: This is safe because it can only happen
900
+ * at the start of a strip where we know there
901
+ * is space in the data buffer.
902
+ */
903
+ PutNextCode(op, CODE_CLEAR);
904
+ ent = *bp++; cc--; incount++;
905
+ }
906
+ while (cc > 0) {
907
+ c = *bp++; cc--; incount++;
908
+ fcode = ((long)c << BITS_MAX) + ent;
909
+ h = (c << HSHIFT) ^ ent; /* xor hashing */
910
+ #ifdef _WINDOWS
911
+ /*
912
+ * Check hash index for an overflow.
913
+ */
914
+ if (h >= HSIZE)
915
+ h -= HSIZE;
916
+ #endif
917
+ hp = &sp->enc_hashtab[h];
918
+ if (hp->hash == fcode) {
919
+ ent = hp->code;
920
+ continue;
921
+ }
922
+ if (hp->hash >= 0) {
923
+ /*
924
+ * Primary hash failed, check secondary hash.
925
+ */
926
+ disp = HSIZE - h;
927
+ if (h == 0)
928
+ disp = 1;
929
+ do {
930
+ /*
931
+ * Avoid pointer arithmetic 'cuz of
932
+ * wraparound problems with segments.
933
+ */
934
+ if ((h -= disp) < 0)
935
+ h += HSIZE;
936
+ hp = &sp->enc_hashtab[h];
937
+ if (hp->hash == fcode) {
938
+ ent = hp->code;
939
+ goto hit;
940
+ }
941
+ } while (hp->hash >= 0);
942
+ }
943
+ /*
944
+ * New entry, emit code and add to table.
945
+ */
946
+ /*
947
+ * Verify there is space in the buffer for the code
948
+ * and any potential Clear code that might be emitted
949
+ * below. The value of limit is setup so that there
950
+ * are at least 4 bytes free--room for 2 codes.
951
+ */
952
+ if (op > limit) {
953
+ tif->tif_rawcc = (tmsize_t)(op - tif->tif_rawdata);
954
+ TIFFFlushData1(tif);
955
+ op = tif->tif_rawdata;
956
+ }
957
+ PutNextCode(op, ent);
958
+ ent = c;
959
+ hp->code = free_ent++;
960
+ hp->hash = fcode;
961
+ if (free_ent == CODE_MAX-1) {
962
+ /* table is full, emit clear code and reset */
963
+ cl_hash(sp);
964
+ sp->enc_ratio = 0;
965
+ incount = 0;
966
+ outcount = 0;
967
+ free_ent = CODE_FIRST;
968
+ PutNextCode(op, CODE_CLEAR);
969
+ nbits = BITS_MIN;
970
+ maxcode = MAXCODE(BITS_MIN);
971
+ } else {
972
+ /*
973
+ * If the next entry is going to be too big for
974
+ * the code size, then increase it, if possible.
975
+ */
976
+ if (free_ent > maxcode) {
977
+ nbits++;
978
+ assert(nbits <= BITS_MAX);
979
+ maxcode = (int) MAXCODE(nbits);
980
+ } else if (incount >= checkpoint) {
981
+ long rat;
982
+ /*
983
+ * Check compression ratio and, if things seem
984
+ * to be slipping, clear the hash table and
985
+ * reset state. The compression ratio is a
986
+ * 24+8-bit fractional number.
987
+ */
988
+ checkpoint = incount+CHECK_GAP;
989
+ CALCRATIO(sp, rat);
990
+ if (rat <= sp->enc_ratio) {
991
+ cl_hash(sp);
992
+ sp->enc_ratio = 0;
993
+ incount = 0;
994
+ outcount = 0;
995
+ free_ent = CODE_FIRST;
996
+ PutNextCode(op, CODE_CLEAR);
997
+ nbits = BITS_MIN;
998
+ maxcode = MAXCODE(BITS_MIN);
999
+ } else
1000
+ sp->enc_ratio = rat;
1001
+ }
1002
+ }
1003
+ hit:
1004
+ ;
1005
+ }
1006
+
1007
+ /*
1008
+ * Restore global state.
1009
+ */
1010
+ sp->enc_incount = incount;
1011
+ sp->enc_outcount = outcount;
1012
+ sp->enc_checkpoint = checkpoint;
1013
+ sp->enc_oldcode = ent;
1014
+ sp->lzw_nextdata = nextdata;
1015
+ sp->lzw_nextbits = nextbits;
1016
+ sp->lzw_free_ent = free_ent;
1017
+ sp->lzw_maxcode = maxcode;
1018
+ sp->lzw_nbits = nbits;
1019
+ tif->tif_rawcp = op;
1020
+ return (1);
1021
+ }
1022
+
1023
+ /*
1024
+ * Finish off an encoded strip by flushing the last
1025
+ * string and tacking on an End Of Information code.
1026
+ */
1027
+ static int
1028
+ LZWPostEncode(TIFF* tif)
1029
+ {
1030
+ register LZWCodecState *sp = EncoderState(tif);
1031
+ uint8* op = tif->tif_rawcp;
1032
+ long nextbits = sp->lzw_nextbits;
1033
+ long nextdata = sp->lzw_nextdata;
1034
+ long outcount = sp->enc_outcount;
1035
+ int nbits = sp->lzw_nbits;
1036
+
1037
+ if (op > sp->enc_rawlimit) {
1038
+ tif->tif_rawcc = (tmsize_t)(op - tif->tif_rawdata);
1039
+ TIFFFlushData1(tif);
1040
+ op = tif->tif_rawdata;
1041
+ }
1042
+ if (sp->enc_oldcode != (hcode_t) -1) {
1043
+ PutNextCode(op, sp->enc_oldcode);
1044
+ sp->enc_oldcode = (hcode_t) -1;
1045
+ }
1046
+ PutNextCode(op, CODE_EOI);
1047
+ if (nextbits > 0)
1048
+ *op++ = (unsigned char)(nextdata << (8-nextbits));
1049
+ tif->tif_rawcc = (tmsize_t)(op - tif->tif_rawdata);
1050
+ return (1);
1051
+ }
1052
+
1053
+ /*
1054
+ * Reset encoding hash table.
1055
+ */
1056
+ static void
1057
+ cl_hash(LZWCodecState* sp)
1058
+ {
1059
+ register hash_t *hp = &sp->enc_hashtab[HSIZE-1];
1060
+ register long i = HSIZE-8;
1061
+
1062
+ do {
1063
+ i -= 8;
1064
+ hp[-7].hash = -1;
1065
+ hp[-6].hash = -1;
1066
+ hp[-5].hash = -1;
1067
+ hp[-4].hash = -1;
1068
+ hp[-3].hash = -1;
1069
+ hp[-2].hash = -1;
1070
+ hp[-1].hash = -1;
1071
+ hp[ 0].hash = -1;
1072
+ hp -= 8;
1073
+ } while (i >= 0);
1074
+ for (i += 8; i > 0; i--, hp--)
1075
+ hp->hash = -1;
1076
+ }
1077
+
1078
+ static void
1079
+ LZWCleanup(TIFF* tif)
1080
+ {
1081
+ (void)TIFFPredictorCleanup(tif);
1082
+
1083
+ assert(tif->tif_data != 0);
1084
+
1085
+ if (DecoderState(tif)->dec_codetab)
1086
+ _TIFFfree(DecoderState(tif)->dec_codetab);
1087
+
1088
+ if (EncoderState(tif)->enc_hashtab)
1089
+ _TIFFfree(EncoderState(tif)->enc_hashtab);
1090
+
1091
+ _TIFFfree(tif->tif_data);
1092
+ tif->tif_data = NULL;
1093
+
1094
+ _TIFFSetDefaultCompressionState(tif);
1095
+ }
1096
+
1097
+ int
1098
+ TIFFInitLZW(TIFF* tif, int scheme)
1099
+ {
1100
+ static const char module[] = "TIFFInitLZW";
1101
+ assert(scheme == COMPRESSION_LZW);
1102
+ /*
1103
+ * Allocate state block so tag methods have storage to record values.
1104
+ */
1105
+ tif->tif_data = (uint8*) _TIFFmalloc(sizeof (LZWCodecState));
1106
+ if (tif->tif_data == NULL)
1107
+ goto bad;
1108
+ DecoderState(tif)->dec_codetab = NULL;
1109
+ DecoderState(tif)->dec_decode = NULL;
1110
+ EncoderState(tif)->enc_hashtab = NULL;
1111
+ LZWState(tif)->rw_mode = tif->tif_mode;
1112
+
1113
+ /*
1114
+ * Install codec methods.
1115
+ */
1116
+ tif->tif_fixuptags = LZWFixupTags;
1117
+ tif->tif_setupdecode = LZWSetupDecode;
1118
+ tif->tif_predecode = LZWPreDecode;
1119
+ tif->tif_decoderow = LZWDecode;
1120
+ tif->tif_decodestrip = LZWDecode;
1121
+ tif->tif_decodetile = LZWDecode;
1122
+ tif->tif_setupencode = LZWSetupEncode;
1123
+ tif->tif_preencode = LZWPreEncode;
1124
+ tif->tif_postencode = LZWPostEncode;
1125
+ tif->tif_encoderow = LZWEncode;
1126
+ tif->tif_encodestrip = LZWEncode;
1127
+ tif->tif_encodetile = LZWEncode;
1128
+ tif->tif_cleanup = LZWCleanup;
1129
+ /*
1130
+ * Setup predictor setup.
1131
+ */
1132
+ (void) TIFFPredictorInit(tif);
1133
+ return (1);
1134
+ bad:
1135
+ TIFFErrorExt(tif->tif_clientdata, module,
1136
+ "No space for LZW state block");
1137
+ return (0);
1138
+ }
1139
+
1140
+ /*
1141
+ * Copyright (c) 1985, 1986 The Regents of the University of California.
1142
+ * All rights reserved.
1143
+ *
1144
+ * This code is derived from software contributed to Berkeley by
1145
+ * James A. Woods, derived from original work by Spencer Thomas
1146
+ * and Joseph Orost.
1147
+ *
1148
+ * Redistribution and use in source and binary forms are permitted
1149
+ * provided that the above copyright notice and this paragraph are
1150
+ * duplicated in all such forms and that any documentation,
1151
+ * advertising materials, and other materials related to such
1152
+ * distribution and use acknowledge that the software was developed
1153
+ * by the University of California, Berkeley. The name of the
1154
+ * University may not be used to endorse or promote products derived
1155
+ * from this software without specific prior written permission.
1156
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
1157
+ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
1158
+ * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
1159
+ */
1160
+ #endif /* LZW_SUPPORT */
1161
+
1162
+ /* vim: set ts=8 sts=8 sw=8 noet: */
1163
+ /*
1164
+ * Local Variables:
1165
+ * mode: c
1166
+ * c-basic-offset: 8
1167
+ * fill-column: 78
1168
+ * End:
1169
+ */