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,1405 @@
1
+ ///////////////////////////////////////////////////////////////////////////
2
+ //
3
+ // Copyright (c) 2004, Industrial Light & Magic, a division of Lucas
4
+ // Digital Ltd. LLC
5
+ //
6
+ // All rights reserved.
7
+ //
8
+ // Redistribution and use in source and binary forms, with or without
9
+ // modification, are permitted provided that the following conditions are
10
+ // met:
11
+ // * Redistributions of source code must retain the above copyright
12
+ // notice, this list of conditions and the following disclaimer.
13
+ // * Redistributions in binary form must reproduce the above
14
+ // copyright notice, this list of conditions and the following disclaimer
15
+ // in the documentation and/or other materials provided with the
16
+ // distribution.
17
+ // * Neither the name of Industrial Light & Magic nor the names of
18
+ // its contributors may be used to endorse or promote products derived
19
+ // from this software without specific prior written permission.
20
+ //
21
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24
+ // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25
+ // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26
+ // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27
+ // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28
+ // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29
+ // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31
+ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32
+ //
33
+ ///////////////////////////////////////////////////////////////////////////
34
+
35
+ //-----------------------------------------------------------------------------
36
+ //
37
+ // class RgbaOutputFile
38
+ // class RgbaInputFile
39
+ //
40
+ //-----------------------------------------------------------------------------
41
+
42
+ #include <ImfRgbaFile.h>
43
+ #include <ImfOutputFile.h>
44
+ #include <ImfInputFile.h>
45
+ #include <ImfChannelList.h>
46
+ #include <ImfRgbaYca.h>
47
+ #include <ImfStandardAttributes.h>
48
+ #include <ImathFun.h>
49
+ #include <IlmThreadMutex.h>
50
+ #include <Iex.h>
51
+ #include <string.h>
52
+ #include <algorithm>
53
+
54
+ #include "ImfNamespace.h"
55
+
56
+ OPENEXR_IMF_INTERNAL_NAMESPACE_SOURCE_ENTER
57
+
58
+ using namespace std;
59
+ using namespace IMATH_NAMESPACE;
60
+ using namespace RgbaYca;
61
+ using namespace ILMTHREAD_NAMESPACE;
62
+
63
+ namespace {
64
+
65
+ void
66
+ insertChannels (Header &header, RgbaChannels rgbaChannels)
67
+ {
68
+ ChannelList ch;
69
+
70
+ if (rgbaChannels & (WRITE_Y | WRITE_C))
71
+ {
72
+ if (rgbaChannels & WRITE_Y)
73
+ {
74
+ ch.insert ("Y", Channel (HALF, 1, 1));
75
+ }
76
+
77
+ if (rgbaChannels & WRITE_C)
78
+ {
79
+ ch.insert ("RY", Channel (HALF, 2, 2, true));
80
+ ch.insert ("BY", Channel (HALF, 2, 2, true));
81
+ }
82
+ }
83
+ else
84
+ {
85
+ if (rgbaChannels & WRITE_R)
86
+ ch.insert ("R", Channel (HALF, 1, 1));
87
+
88
+ if (rgbaChannels & WRITE_G)
89
+ ch.insert ("G", Channel (HALF, 1, 1));
90
+
91
+ if (rgbaChannels & WRITE_B)
92
+ ch.insert ("B", Channel (HALF, 1, 1));
93
+ }
94
+
95
+ if (rgbaChannels & WRITE_A)
96
+ ch.insert ("A", Channel (HALF, 1, 1));
97
+
98
+ header.channels() = ch;
99
+ }
100
+
101
+
102
+ RgbaChannels
103
+ rgbaChannels (const ChannelList &ch, const string &channelNamePrefix = "")
104
+ {
105
+ int i = 0;
106
+
107
+ if (ch.findChannel (channelNamePrefix + "R"))
108
+ i |= WRITE_R;
109
+
110
+ if (ch.findChannel (channelNamePrefix + "G"))
111
+ i |= WRITE_G;
112
+
113
+ if (ch.findChannel (channelNamePrefix + "B"))
114
+ i |= WRITE_B;
115
+
116
+ if (ch.findChannel (channelNamePrefix + "A"))
117
+ i |= WRITE_A;
118
+
119
+ if (ch.findChannel (channelNamePrefix + "Y"))
120
+ i |= WRITE_Y;
121
+
122
+ if (ch.findChannel (channelNamePrefix + "RY") ||
123
+ ch.findChannel (channelNamePrefix + "BY"))
124
+ i |= WRITE_C;
125
+
126
+ return RgbaChannels (i);
127
+ }
128
+
129
+
130
+ string
131
+ prefixFromLayerName (const string &layerName, const Header &header)
132
+ {
133
+ if (layerName.empty())
134
+ return "";
135
+
136
+ if (hasMultiView (header) && multiView(header)[0] == layerName)
137
+ return "";
138
+
139
+ return layerName + ".";
140
+ }
141
+
142
+
143
+ V3f
144
+ ywFromHeader (const Header &header)
145
+ {
146
+ Chromaticities cr;
147
+
148
+ if (hasChromaticities (header))
149
+ cr = chromaticities (header);
150
+
151
+ return computeYw (cr);
152
+ }
153
+
154
+
155
+ ptrdiff_t
156
+ cachePadding (ptrdiff_t size)
157
+ {
158
+ //
159
+ // Some of the buffers that are allocated by classes ToYca and
160
+ // FromYca, below, may need to be padded to avoid cache thrashing.
161
+ // If the difference between the buffer size and the nearest power
162
+ // of two is less than CACHE_LINE_SIZE, then we add an appropriate
163
+ // amount of padding.
164
+ //
165
+ // CACHE_LINE_SIZE must be a power of two, and it must be at
166
+ // least as big as the true size of a cache line on the machine
167
+ // we are running on. (It is ok if CACHE_LINE_SIZE is larger
168
+ // than a real cache line.)
169
+ //
170
+
171
+ static int LOG2_CACHE_LINE_SIZE = 8;
172
+ static const ptrdiff_t CACHE_LINE_SIZE = (1 << LOG2_CACHE_LINE_SIZE);
173
+
174
+ int i = LOG2_CACHE_LINE_SIZE + 2;
175
+
176
+ while ((size >> i) > 1)
177
+ ++i;
178
+
179
+ if (size > (1 << (i + 1)) - 64)
180
+ return 64 + ((1 << (i + 1)) - size);
181
+
182
+ if (size < (1 << i) + 64)
183
+ return 64 + ((1 << i) - size);
184
+
185
+ return 0;
186
+ }
187
+
188
+ } // namespace
189
+
190
+
191
+ class RgbaOutputFile::ToYca: public Mutex
192
+ {
193
+ public:
194
+
195
+ ToYca (OutputFile &outputFile, RgbaChannels rgbaChannels);
196
+ ~ToYca ();
197
+
198
+ void setYCRounding (unsigned int roundY,
199
+ unsigned int roundC);
200
+
201
+ void setFrameBuffer (const Rgba *base,
202
+ size_t xStride,
203
+ size_t yStride);
204
+
205
+ void writePixels (int numScanLines);
206
+ int currentScanLine () const;
207
+
208
+ private:
209
+
210
+ void padTmpBuf ();
211
+ void rotateBuffers ();
212
+ void duplicateLastBuffer ();
213
+ void duplicateSecondToLastBuffer ();
214
+ void decimateChromaVertAndWriteScanLine ();
215
+
216
+ OutputFile & _outputFile;
217
+ bool _writeY;
218
+ bool _writeC;
219
+ bool _writeA;
220
+ int _xMin;
221
+ int _width;
222
+ int _height;
223
+ int _linesConverted;
224
+ LineOrder _lineOrder;
225
+ int _currentScanLine;
226
+ V3f _yw;
227
+ Rgba * _bufBase;
228
+ Rgba * _buf[N];
229
+ Rgba * _tmpBuf;
230
+ const Rgba * _fbBase;
231
+ size_t _fbXStride;
232
+ size_t _fbYStride;
233
+ int _roundY;
234
+ int _roundC;
235
+ };
236
+
237
+
238
+ RgbaOutputFile::ToYca::ToYca (OutputFile &outputFile,
239
+ RgbaChannels rgbaChannels)
240
+ :
241
+ _outputFile (outputFile)
242
+ {
243
+ _writeY = (rgbaChannels & WRITE_Y)? true: false;
244
+ _writeC = (rgbaChannels & WRITE_C)? true: false;
245
+ _writeA = (rgbaChannels & WRITE_A)? true: false;
246
+
247
+ const Box2i dw = _outputFile.header().dataWindow();
248
+
249
+ _xMin = dw.min.x;
250
+ _width = dw.max.x - dw.min.x + 1;
251
+ _height = dw.max.y - dw.min.y + 1;
252
+
253
+ _linesConverted = 0;
254
+ _lineOrder = _outputFile.header().lineOrder();
255
+
256
+ if (_lineOrder == INCREASING_Y)
257
+ _currentScanLine = dw.min.y;
258
+ else
259
+ _currentScanLine = dw.max.y;
260
+
261
+ _yw = ywFromHeader (_outputFile.header());
262
+
263
+ ptrdiff_t pad = cachePadding (_width * sizeof (Rgba)) / sizeof (Rgba);
264
+
265
+ _bufBase = new Rgba[(_width + pad) * N];
266
+
267
+ for (int i = 0; i < N; ++i)
268
+ _buf[i] = _bufBase + (i * (_width + pad));
269
+
270
+ _tmpBuf = new Rgba[_width + N - 1];
271
+
272
+ _fbBase = 0;
273
+ _fbXStride = 0;
274
+ _fbYStride = 0;
275
+
276
+ _roundY = 7;
277
+ _roundC = 5;
278
+ }
279
+
280
+
281
+ RgbaOutputFile::ToYca::~ToYca ()
282
+ {
283
+ delete [] _bufBase;
284
+ delete [] _tmpBuf;
285
+ }
286
+
287
+
288
+ void
289
+ RgbaOutputFile::ToYca::setYCRounding (unsigned int roundY,
290
+ unsigned int roundC)
291
+ {
292
+ _roundY = roundY;
293
+ _roundC = roundC;
294
+ }
295
+
296
+
297
+ void
298
+ RgbaOutputFile::ToYca::setFrameBuffer (const Rgba *base,
299
+ size_t xStride,
300
+ size_t yStride)
301
+ {
302
+ if (_fbBase == 0)
303
+ {
304
+ FrameBuffer fb;
305
+
306
+ if (_writeY)
307
+ {
308
+ fb.insert ("Y",
309
+ Slice (HALF, // type
310
+ (char *) &_tmpBuf[-_xMin].g, // base
311
+ sizeof (Rgba), // xStride
312
+ 0, // yStride
313
+ 1, // xSampling
314
+ 1)); // ySampling
315
+ }
316
+
317
+ if (_writeC)
318
+ {
319
+ fb.insert ("RY",
320
+ Slice (HALF, // type
321
+ (char *) &_tmpBuf[-_xMin].r, // base
322
+ sizeof (Rgba) * 2, // xStride
323
+ 0, // yStride
324
+ 2, // xSampling
325
+ 2)); // ySampling
326
+
327
+ fb.insert ("BY",
328
+ Slice (HALF, // type
329
+ (char *) &_tmpBuf[-_xMin].b, // base
330
+ sizeof (Rgba) * 2, // xStride
331
+ 0, // yStride
332
+ 2, // xSampling
333
+ 2)); // ySampling
334
+ }
335
+
336
+ if (_writeA)
337
+ {
338
+ fb.insert ("A",
339
+ Slice (HALF, // type
340
+ (char *) &_tmpBuf[-_xMin].a, // base
341
+ sizeof (Rgba), // xStride
342
+ 0, // yStride
343
+ 1, // xSampling
344
+ 1)); // ySampling
345
+ }
346
+
347
+ _outputFile.setFrameBuffer (fb);
348
+ }
349
+
350
+ _fbBase = base;
351
+ _fbXStride = xStride;
352
+ _fbYStride = yStride;
353
+ }
354
+
355
+
356
+ void
357
+ RgbaOutputFile::ToYca::writePixels (int numScanLines)
358
+ {
359
+ if (_fbBase == 0)
360
+ {
361
+ THROW (IEX_NAMESPACE::ArgExc, "No frame buffer was specified as the "
362
+ "pixel data source for image file "
363
+ "\"" << _outputFile.fileName() << "\".");
364
+ }
365
+
366
+ if (_writeY && !_writeC)
367
+ {
368
+ //
369
+ // We are writing only luminance; filtering
370
+ // and subsampling are not necessary.
371
+ //
372
+
373
+ for (int i = 0; i < numScanLines; ++i)
374
+ {
375
+ //
376
+ // Copy the next scan line from the caller's
377
+ // frame buffer into _tmpBuf.
378
+ //
379
+
380
+ for (int j = 0; j < _width; ++j)
381
+ {
382
+ _tmpBuf[j] = _fbBase[_fbYStride * _currentScanLine +
383
+ _fbXStride * (j + _xMin)];
384
+ }
385
+
386
+ //
387
+ // Convert the scan line from RGB to luminance/chroma,
388
+ // and store the result in the output file.
389
+ //
390
+
391
+ RGBAtoYCA (_yw, _width, _writeA, _tmpBuf, _tmpBuf);
392
+ _outputFile.writePixels (1);
393
+
394
+ ++_linesConverted;
395
+
396
+ if (_lineOrder == INCREASING_Y)
397
+ ++_currentScanLine;
398
+ else
399
+ --_currentScanLine;
400
+ }
401
+ }
402
+ else
403
+ {
404
+ //
405
+ // We are writing chroma; the pixels must be filtered and subsampled.
406
+ //
407
+
408
+ for (int i = 0; i < numScanLines; ++i)
409
+ {
410
+ //
411
+ // Copy the next scan line from the caller's
412
+ // frame buffer into _tmpBuf.
413
+ //
414
+
415
+ for (int j = 0; j < _width; ++j)
416
+ {
417
+ _tmpBuf[j + N2] = _fbBase[_fbYStride * _currentScanLine +
418
+ _fbXStride * (j + _xMin)];
419
+ }
420
+
421
+ //
422
+ // Convert the scan line from RGB to luminance/chroma.
423
+ //
424
+
425
+ RGBAtoYCA (_yw, _width, _writeA, _tmpBuf + N2, _tmpBuf + N2);
426
+
427
+ //
428
+ // Append N2 copies of the first and last pixel to the
429
+ // beginning and end of the scan line.
430
+ //
431
+
432
+ padTmpBuf ();
433
+
434
+ //
435
+ // Filter and subsample the scan line's chroma channels
436
+ // horizontally; store the result in _buf.
437
+ //
438
+
439
+ rotateBuffers();
440
+ decimateChromaHoriz (_width, _tmpBuf, _buf[N - 1]);
441
+
442
+ //
443
+ // If this is the first scan line in the image,
444
+ // store N2 more copies of the scan line in _buf.
445
+ //
446
+
447
+ if (_linesConverted == 0)
448
+ {
449
+ for (int j = 0; j < N2; ++j)
450
+ duplicateLastBuffer();
451
+ }
452
+
453
+ ++_linesConverted;
454
+
455
+ //
456
+ // If we have have converted at least N2 scan lines from
457
+ // RGBA to luminance/chroma, then we can start to filter
458
+ // and subsample vertically, and store pixels in the
459
+ // output file.
460
+ //
461
+
462
+ if (_linesConverted > N2)
463
+ decimateChromaVertAndWriteScanLine();
464
+
465
+ //
466
+ // If we have already converted the last scan line in
467
+ // the image to luminance/chroma, filter, subsample and
468
+ // store the remaining scan lines in _buf.
469
+ //
470
+
471
+ if (_linesConverted >= _height)
472
+ {
473
+ for (int j = 0; j < N2 - _height; ++j)
474
+ duplicateLastBuffer();
475
+
476
+ duplicateSecondToLastBuffer();
477
+ ++_linesConverted;
478
+ decimateChromaVertAndWriteScanLine();
479
+
480
+ for (int j = 1; j < min (_height, N2); ++j)
481
+ {
482
+ duplicateLastBuffer();
483
+ ++_linesConverted;
484
+ decimateChromaVertAndWriteScanLine();
485
+ }
486
+ }
487
+
488
+ if (_lineOrder == INCREASING_Y)
489
+ ++_currentScanLine;
490
+ else
491
+ --_currentScanLine;
492
+ }
493
+ }
494
+ }
495
+
496
+
497
+ int
498
+ RgbaOutputFile::ToYca::currentScanLine () const
499
+ {
500
+ return _currentScanLine;
501
+ }
502
+
503
+
504
+ void
505
+ RgbaOutputFile::ToYca::padTmpBuf ()
506
+ {
507
+ for (int i = 0; i < N2; ++i)
508
+ {
509
+ _tmpBuf[i] = _tmpBuf[N2];
510
+ _tmpBuf[_width + N2 + i] = _tmpBuf[_width + N2 - 2];
511
+ }
512
+ }
513
+
514
+
515
+ void
516
+ RgbaOutputFile::ToYca::rotateBuffers ()
517
+ {
518
+ Rgba *tmp = _buf[0];
519
+
520
+ for (int i = 0; i < N - 1; ++i)
521
+ _buf[i] = _buf[i + 1];
522
+
523
+ _buf[N - 1] = tmp;
524
+ }
525
+
526
+
527
+ void
528
+ RgbaOutputFile::ToYca::duplicateLastBuffer ()
529
+ {
530
+ rotateBuffers();
531
+ memcpy (_buf[N - 1], _buf[N - 2], _width * sizeof (Rgba));
532
+ }
533
+
534
+
535
+ void
536
+ RgbaOutputFile::ToYca::duplicateSecondToLastBuffer ()
537
+ {
538
+ rotateBuffers();
539
+ memcpy (_buf[N - 1], _buf[N - 3], _width * sizeof (Rgba));
540
+ }
541
+
542
+
543
+ void
544
+ RgbaOutputFile::ToYca::decimateChromaVertAndWriteScanLine ()
545
+ {
546
+ if (_linesConverted & 1)
547
+ memcpy (_tmpBuf, _buf[N2], _width * sizeof (Rgba));
548
+ else
549
+ decimateChromaVert (_width, _buf, _tmpBuf);
550
+
551
+ if (_writeY && _writeC)
552
+ roundYCA (_width, _roundY, _roundC, _tmpBuf, _tmpBuf);
553
+
554
+ _outputFile.writePixels (1);
555
+ }
556
+
557
+
558
+ RgbaOutputFile::RgbaOutputFile (const char name[],
559
+ const Header &header,
560
+ RgbaChannels rgbaChannels,
561
+ int numThreads):
562
+ _outputFile (0),
563
+ _toYca (0)
564
+ {
565
+ Header hd (header);
566
+ insertChannels (hd, rgbaChannels);
567
+ _outputFile = new OutputFile (name, hd, numThreads);
568
+
569
+ if (rgbaChannels & (WRITE_Y | WRITE_C))
570
+ _toYca = new ToYca (*_outputFile, rgbaChannels);
571
+ }
572
+
573
+
574
+ RgbaOutputFile::RgbaOutputFile (OPENEXR_IMF_INTERNAL_NAMESPACE::OStream &os,
575
+ const Header &header,
576
+ RgbaChannels rgbaChannels,
577
+ int numThreads):
578
+ _outputFile (0),
579
+ _toYca (0)
580
+ {
581
+ Header hd (header);
582
+ insertChannels (hd, rgbaChannels);
583
+ _outputFile = new OutputFile (os, hd, numThreads);
584
+
585
+ if (rgbaChannels & (WRITE_Y | WRITE_C))
586
+ _toYca = new ToYca (*_outputFile, rgbaChannels);
587
+ }
588
+
589
+
590
+ RgbaOutputFile::RgbaOutputFile (const char name[],
591
+ const IMATH_NAMESPACE::Box2i &displayWindow,
592
+ const IMATH_NAMESPACE::Box2i &dataWindow,
593
+ RgbaChannels rgbaChannels,
594
+ float pixelAspectRatio,
595
+ const IMATH_NAMESPACE::V2f screenWindowCenter,
596
+ float screenWindowWidth,
597
+ LineOrder lineOrder,
598
+ Compression compression,
599
+ int numThreads):
600
+ _outputFile (0),
601
+ _toYca (0)
602
+ {
603
+ Header hd (displayWindow,
604
+ dataWindow.isEmpty()? displayWindow: dataWindow,
605
+ pixelAspectRatio,
606
+ screenWindowCenter,
607
+ screenWindowWidth,
608
+ lineOrder,
609
+ compression);
610
+
611
+ insertChannels (hd, rgbaChannels);
612
+ _outputFile = new OutputFile (name, hd, numThreads);
613
+
614
+ if (rgbaChannels & (WRITE_Y | WRITE_C))
615
+ _toYca = new ToYca (*_outputFile, rgbaChannels);
616
+ }
617
+
618
+
619
+ RgbaOutputFile::RgbaOutputFile (const char name[],
620
+ int width,
621
+ int height,
622
+ RgbaChannels rgbaChannels,
623
+ float pixelAspectRatio,
624
+ const IMATH_NAMESPACE::V2f screenWindowCenter,
625
+ float screenWindowWidth,
626
+ LineOrder lineOrder,
627
+ Compression compression,
628
+ int numThreads):
629
+ _outputFile (0),
630
+ _toYca (0)
631
+ {
632
+ Header hd (width,
633
+ height,
634
+ pixelAspectRatio,
635
+ screenWindowCenter,
636
+ screenWindowWidth,
637
+ lineOrder,
638
+ compression);
639
+
640
+ insertChannels (hd, rgbaChannels);
641
+ _outputFile = new OutputFile (name, hd, numThreads);
642
+
643
+ if (rgbaChannels & (WRITE_Y | WRITE_C))
644
+ _toYca = new ToYca (*_outputFile, rgbaChannels);
645
+ }
646
+
647
+
648
+ RgbaOutputFile::~RgbaOutputFile ()
649
+ {
650
+ delete _toYca;
651
+ delete _outputFile;
652
+ }
653
+
654
+
655
+ void
656
+ RgbaOutputFile::setFrameBuffer (const Rgba *base,
657
+ size_t xStride,
658
+ size_t yStride)
659
+ {
660
+ if (_toYca)
661
+ {
662
+ Lock lock (*_toYca);
663
+ _toYca->setFrameBuffer (base, xStride, yStride);
664
+ }
665
+ else
666
+ {
667
+ size_t xs = xStride * sizeof (Rgba);
668
+ size_t ys = yStride * sizeof (Rgba);
669
+
670
+ FrameBuffer fb;
671
+
672
+ fb.insert ("R", Slice (HALF, (char *) &base[0].r, xs, ys));
673
+ fb.insert ("G", Slice (HALF, (char *) &base[0].g, xs, ys));
674
+ fb.insert ("B", Slice (HALF, (char *) &base[0].b, xs, ys));
675
+ fb.insert ("A", Slice (HALF, (char *) &base[0].a, xs, ys));
676
+
677
+ _outputFile->setFrameBuffer (fb);
678
+ }
679
+ }
680
+
681
+
682
+ void
683
+ RgbaOutputFile::writePixels (int numScanLines)
684
+ {
685
+ if (_toYca)
686
+ {
687
+ Lock lock (*_toYca);
688
+ _toYca->writePixels (numScanLines);
689
+ }
690
+ else
691
+ {
692
+ _outputFile->writePixels (numScanLines);
693
+ }
694
+ }
695
+
696
+
697
+ int
698
+ RgbaOutputFile::currentScanLine () const
699
+ {
700
+ if (_toYca)
701
+ {
702
+ Lock lock (*_toYca);
703
+ return _toYca->currentScanLine();
704
+ }
705
+ else
706
+ {
707
+ return _outputFile->currentScanLine();
708
+ }
709
+ }
710
+
711
+
712
+ const Header &
713
+ RgbaOutputFile::header () const
714
+ {
715
+ return _outputFile->header();
716
+ }
717
+
718
+
719
+ const FrameBuffer &
720
+ RgbaOutputFile::frameBuffer () const
721
+ {
722
+ return _outputFile->frameBuffer();
723
+ }
724
+
725
+
726
+ const IMATH_NAMESPACE::Box2i &
727
+ RgbaOutputFile::displayWindow () const
728
+ {
729
+ return _outputFile->header().displayWindow();
730
+ }
731
+
732
+
733
+ const IMATH_NAMESPACE::Box2i &
734
+ RgbaOutputFile::dataWindow () const
735
+ {
736
+ return _outputFile->header().dataWindow();
737
+ }
738
+
739
+
740
+ float
741
+ RgbaOutputFile::pixelAspectRatio () const
742
+ {
743
+ return _outputFile->header().pixelAspectRatio();
744
+ }
745
+
746
+
747
+ const IMATH_NAMESPACE::V2f
748
+ RgbaOutputFile::screenWindowCenter () const
749
+ {
750
+ return _outputFile->header().screenWindowCenter();
751
+ }
752
+
753
+
754
+ float
755
+ RgbaOutputFile::screenWindowWidth () const
756
+ {
757
+ return _outputFile->header().screenWindowWidth();
758
+ }
759
+
760
+
761
+ LineOrder
762
+ RgbaOutputFile::lineOrder () const
763
+ {
764
+ return _outputFile->header().lineOrder();
765
+ }
766
+
767
+
768
+ Compression
769
+ RgbaOutputFile::compression () const
770
+ {
771
+ return _outputFile->header().compression();
772
+ }
773
+
774
+
775
+ RgbaChannels
776
+ RgbaOutputFile::channels () const
777
+ {
778
+ return rgbaChannels (_outputFile->header().channels());
779
+ }
780
+
781
+
782
+ void
783
+ RgbaOutputFile::updatePreviewImage (const PreviewRgba newPixels[])
784
+ {
785
+ _outputFile->updatePreviewImage (newPixels);
786
+ }
787
+
788
+
789
+ void
790
+ RgbaOutputFile::setYCRounding (unsigned int roundY, unsigned int roundC)
791
+ {
792
+ if (_toYca)
793
+ {
794
+ Lock lock (*_toYca);
795
+ _toYca->setYCRounding (roundY, roundC);
796
+ }
797
+ }
798
+
799
+
800
+ void
801
+ RgbaOutputFile::breakScanLine (int y, int offset, int length, char c)
802
+ {
803
+ _outputFile->breakScanLine (y, offset, length, c);
804
+ }
805
+
806
+
807
+ class RgbaInputFile::FromYca: public Mutex
808
+ {
809
+ public:
810
+
811
+ FromYca (InputFile &inputFile, RgbaChannels rgbaChannels);
812
+ ~FromYca ();
813
+
814
+ void setFrameBuffer (Rgba *base,
815
+ size_t xStride,
816
+ size_t yStride,
817
+ const string &channelNamePrefix);
818
+
819
+ void readPixels (int scanLine1, int scanLine2);
820
+
821
+ private:
822
+
823
+ void readPixels (int scanLine);
824
+ void rotateBuf1 (int d);
825
+ void rotateBuf2 (int d);
826
+ void readYCAScanLine (int y, Rgba buf[]);
827
+ void padTmpBuf ();
828
+
829
+ InputFile & _inputFile;
830
+ bool _readC;
831
+ int _xMin;
832
+ int _yMin;
833
+ int _yMax;
834
+ int _width;
835
+ int _height;
836
+ int _currentScanLine;
837
+ LineOrder _lineOrder;
838
+ V3f _yw;
839
+ Rgba * _bufBase;
840
+ Rgba * _buf1[N + 2];
841
+ Rgba * _buf2[3];
842
+ Rgba * _tmpBuf;
843
+ Rgba * _fbBase;
844
+ size_t _fbXStride;
845
+ size_t _fbYStride;
846
+ };
847
+
848
+
849
+ RgbaInputFile::FromYca::FromYca (InputFile &inputFile,
850
+ RgbaChannels rgbaChannels)
851
+ :
852
+ _inputFile (inputFile)
853
+ {
854
+ _readC = (rgbaChannels & WRITE_C)? true: false;
855
+
856
+ const Box2i dw = _inputFile.header().dataWindow();
857
+
858
+ _xMin = dw.min.x;
859
+ _yMin = dw.min.y;
860
+ _yMax = dw.max.y;
861
+ _width = dw.max.x - dw.min.x + 1;
862
+ _height = dw.max.y - dw.min.y + 1;
863
+ _currentScanLine = dw.min.y - N - 2;
864
+ _lineOrder = _inputFile.header().lineOrder();
865
+ _yw = ywFromHeader (_inputFile.header());
866
+
867
+ ptrdiff_t pad = cachePadding (_width * sizeof (Rgba)) / sizeof (Rgba);
868
+
869
+ _bufBase = new Rgba[(_width + pad) * (N + 2 + 3)];
870
+
871
+ for (int i = 0; i < N + 2; ++i)
872
+ _buf1[i] = _bufBase + (i * (_width + pad));
873
+
874
+ for (int i = 0; i < 3; ++i)
875
+ _buf2[i] = _bufBase + ((i + N + 2) * (_width + pad));
876
+
877
+ _tmpBuf = new Rgba[_width + N - 1];
878
+
879
+ _fbBase = 0;
880
+ _fbXStride = 0;
881
+ _fbYStride = 0;
882
+ }
883
+
884
+
885
+ RgbaInputFile::FromYca::~FromYca ()
886
+ {
887
+ delete [] _bufBase;
888
+ delete [] _tmpBuf;
889
+ }
890
+
891
+
892
+ void
893
+ RgbaInputFile::FromYca::setFrameBuffer (Rgba *base,
894
+ size_t xStride,
895
+ size_t yStride,
896
+ const string &channelNamePrefix)
897
+ {
898
+ if (_fbBase == 0)
899
+ {
900
+ FrameBuffer fb;
901
+
902
+ fb.insert (channelNamePrefix + "Y",
903
+ Slice (HALF, // type
904
+ (char *) &_tmpBuf[N2 - _xMin].g, // base
905
+ sizeof (Rgba), // xStride
906
+ 0, // yStride
907
+ 1, // xSampling
908
+ 1, // ySampling
909
+ 0.5)); // fillValue
910
+
911
+ if (_readC)
912
+ {
913
+ fb.insert (channelNamePrefix + "RY",
914
+ Slice (HALF, // type
915
+ (char *) &_tmpBuf[N2 - _xMin].r, // base
916
+ sizeof (Rgba) * 2, // xStride
917
+ 0, // yStride
918
+ 2, // xSampling
919
+ 2, // ySampling
920
+ 0.0)); // fillValue
921
+
922
+ fb.insert (channelNamePrefix + "BY",
923
+ Slice (HALF, // type
924
+ (char *) &_tmpBuf[N2 - _xMin].b, // base
925
+ sizeof (Rgba) * 2, // xStride
926
+ 0, // yStride
927
+ 2, // xSampling
928
+ 2, // ySampling
929
+ 0.0)); // fillValue
930
+ }
931
+
932
+ fb.insert (channelNamePrefix + "A",
933
+ Slice (HALF, // type
934
+ (char *) &_tmpBuf[N2 - _xMin].a, // base
935
+ sizeof (Rgba), // xStride
936
+ 0, // yStride
937
+ 1, // xSampling
938
+ 1, // ySampling
939
+ 1.0)); // fillValue
940
+
941
+ _inputFile.setFrameBuffer (fb);
942
+ }
943
+
944
+ _fbBase = base;
945
+ _fbXStride = xStride;
946
+ _fbYStride = yStride;
947
+ }
948
+
949
+
950
+ void
951
+ RgbaInputFile::FromYca::readPixels (int scanLine1, int scanLine2)
952
+ {
953
+ int minY = min (scanLine1, scanLine2);
954
+ int maxY = max (scanLine1, scanLine2);
955
+
956
+ if (_lineOrder == INCREASING_Y)
957
+ {
958
+ for (int y = minY; y <= maxY; ++y)
959
+ readPixels (y);
960
+ }
961
+ else
962
+ {
963
+ for (int y = maxY; y >= minY; --y)
964
+ readPixels (y);
965
+ }
966
+ }
967
+
968
+
969
+ void
970
+ RgbaInputFile::FromYca::readPixels (int scanLine)
971
+ {
972
+ if (_fbBase == 0)
973
+ {
974
+ THROW (IEX_NAMESPACE::ArgExc, "No frame buffer was specified as the "
975
+ "pixel data destination for image file "
976
+ "\"" << _inputFile.fileName() << "\".");
977
+ }
978
+
979
+ //
980
+ // In order to convert one scan line to RGB format, we need that
981
+ // scan line plus N2+1 extra scan lines above and N2+1 scan lines
982
+ // below in luminance/chroma format.
983
+ //
984
+ // We allow random access to scan lines, but we buffer partially
985
+ // processed luminance/chroma data in order to make reading pixels
986
+ // in increasing y or decreasing y order reasonably efficient:
987
+ //
988
+ // _currentScanLine holds the y coordinate of the scan line
989
+ // that was most recently read.
990
+ //
991
+ // _buf1 contains scan lines _currentScanLine-N2-1
992
+ // through _currentScanLine+N2+1 in
993
+ // luminance/chroma format. Odd-numbered
994
+ // lines contain no chroma data. Even-numbered
995
+ // lines have valid chroma data for all pixels.
996
+ //
997
+ // _buf2 contains scan lines _currentScanLine-1
998
+ // through _currentScanLine+1, in RGB format.
999
+ // Super-saturated pixels (see ImfRgbaYca.h)
1000
+ // have not yet been eliminated.
1001
+ //
1002
+ // If the scan line we are trying to read now is close enough to
1003
+ // _currentScanLine, we don't have to recompute the contents of _buf1
1004
+ // and _buf2 from scratch. We can rotate _buf1 and _buf2, and fill
1005
+ // in the missing data.
1006
+ //
1007
+
1008
+ int dy = scanLine - _currentScanLine;
1009
+
1010
+ if (abs (dy) < N + 2)
1011
+ rotateBuf1 (dy);
1012
+
1013
+ if (abs (dy) < 3)
1014
+ rotateBuf2 (dy);
1015
+
1016
+ if (dy < 0)
1017
+ {
1018
+ {
1019
+ int n = min (-dy, N + 2);
1020
+ int yMin = scanLine - N2 - 1;
1021
+
1022
+ for (int i = n - 1; i >= 0; --i)
1023
+ readYCAScanLine (yMin + i, _buf1[i]);
1024
+ }
1025
+
1026
+ {
1027
+ int n = min (-dy, 3);
1028
+
1029
+ for (int i = 0; i < n; ++i)
1030
+ {
1031
+ if ((scanLine + i) & 1)
1032
+ {
1033
+ YCAtoRGBA (_yw, _width, _buf1[N2 + i], _buf2[i]);
1034
+ }
1035
+ else
1036
+ {
1037
+ reconstructChromaVert (_width, _buf1 + i, _buf2[i]);
1038
+ YCAtoRGBA (_yw, _width, _buf2[i], _buf2[i]);
1039
+ }
1040
+ }
1041
+ }
1042
+ }
1043
+ else
1044
+ {
1045
+ {
1046
+ int n = min (dy, N + 2);
1047
+ int yMax = scanLine + N2 + 1;
1048
+
1049
+ for (int i = n - 1; i >= 0; --i)
1050
+ readYCAScanLine (yMax - i, _buf1[N + 1 - i]);
1051
+ }
1052
+
1053
+ {
1054
+ int n = min (dy, 3);
1055
+
1056
+ for (int i = 2; i > 2 - n; --i)
1057
+ {
1058
+ if ((scanLine + i) & 1)
1059
+ {
1060
+ YCAtoRGBA (_yw, _width, _buf1[N2 + i], _buf2[i]);
1061
+ }
1062
+ else
1063
+ {
1064
+ reconstructChromaVert (_width, _buf1 + i, _buf2[i]);
1065
+ YCAtoRGBA (_yw, _width, _buf2[i], _buf2[i]);
1066
+ }
1067
+ }
1068
+ }
1069
+ }
1070
+
1071
+ fixSaturation (_yw, _width, _buf2, _tmpBuf);
1072
+
1073
+ for (int i = 0; i < _width; ++i)
1074
+ _fbBase[_fbYStride * scanLine + _fbXStride * (i + _xMin)] = _tmpBuf[i];
1075
+
1076
+ _currentScanLine = scanLine;
1077
+ }
1078
+
1079
+
1080
+ void
1081
+ RgbaInputFile::FromYca::rotateBuf1 (int d)
1082
+ {
1083
+ d = modp (d, N + 2);
1084
+
1085
+ Rgba *tmp[N + 2];
1086
+
1087
+ for (int i = 0; i < N + 2; ++i)
1088
+ tmp[i] = _buf1[i];
1089
+
1090
+ for (int i = 0; i < N + 2; ++i)
1091
+ _buf1[i] = tmp[(i + d) % (N + 2)];
1092
+ }
1093
+
1094
+
1095
+ void
1096
+ RgbaInputFile::FromYca::rotateBuf2 (int d)
1097
+ {
1098
+ d = modp (d, 3);
1099
+
1100
+ Rgba *tmp[3];
1101
+
1102
+ for (int i = 0; i < 3; ++i)
1103
+ tmp[i] = _buf2[i];
1104
+
1105
+ for (int i = 0; i < 3; ++i)
1106
+ _buf2[i] = tmp[(i + d) % 3];
1107
+ }
1108
+
1109
+
1110
+ void
1111
+ RgbaInputFile::FromYca::readYCAScanLine (int y, Rgba *buf)
1112
+ {
1113
+ //
1114
+ // Clamp y.
1115
+ //
1116
+
1117
+ if (y < _yMin)
1118
+ y = _yMin;
1119
+ else if (y > _yMax)
1120
+ y = _yMax - 1;
1121
+
1122
+ //
1123
+ // Read scan line y into _tmpBuf.
1124
+ //
1125
+
1126
+ _inputFile.readPixels (y);
1127
+
1128
+ //
1129
+ // Reconstruct missing chroma samples and copy
1130
+ // the scan line into buf.
1131
+ //
1132
+
1133
+ if (!_readC)
1134
+ {
1135
+ for (int i = 0; i < _width; ++i)
1136
+ {
1137
+ _tmpBuf[i + N2].r = 0;
1138
+ _tmpBuf[i + N2].b = 0;
1139
+ }
1140
+ }
1141
+
1142
+ if (y & 1)
1143
+ {
1144
+ memcpy (buf, _tmpBuf + N2, _width * sizeof (Rgba));
1145
+ }
1146
+ else
1147
+ {
1148
+ padTmpBuf();
1149
+ reconstructChromaHoriz (_width, _tmpBuf, buf);
1150
+ }
1151
+ }
1152
+
1153
+
1154
+ void
1155
+ RgbaInputFile::FromYca::padTmpBuf ()
1156
+ {
1157
+ for (int i = 0; i < N2; ++i)
1158
+ {
1159
+ _tmpBuf[i] = _tmpBuf[N2];
1160
+ _tmpBuf[_width + N2 + i] = _tmpBuf[_width + N2 - 2];
1161
+ }
1162
+ }
1163
+
1164
+
1165
+ RgbaInputFile::RgbaInputFile (const char name[], int numThreads):
1166
+ _inputFile (new InputFile (name, numThreads)),
1167
+ _fromYca (0),
1168
+ _channelNamePrefix ("")
1169
+ {
1170
+ RgbaChannels rgbaChannels = channels();
1171
+
1172
+ if (rgbaChannels & (WRITE_Y | WRITE_C))
1173
+ _fromYca = new FromYca (*_inputFile, rgbaChannels);
1174
+ }
1175
+
1176
+
1177
+ RgbaInputFile::RgbaInputFile (OPENEXR_IMF_INTERNAL_NAMESPACE::IStream &is, int numThreads):
1178
+ _inputFile (new InputFile (is, numThreads)),
1179
+ _fromYca (0),
1180
+ _channelNamePrefix ("")
1181
+ {
1182
+ RgbaChannels rgbaChannels = channels();
1183
+
1184
+ if (rgbaChannels & (WRITE_Y | WRITE_C))
1185
+ _fromYca = new FromYca (*_inputFile, rgbaChannels);
1186
+ }
1187
+
1188
+
1189
+ RgbaInputFile::RgbaInputFile (const char name[],
1190
+ const string &layerName,
1191
+ int numThreads)
1192
+ :
1193
+ _inputFile (new InputFile (name, numThreads)),
1194
+ _fromYca (0),
1195
+ _channelNamePrefix (prefixFromLayerName (layerName, _inputFile->header()))
1196
+ {
1197
+ RgbaChannels rgbaChannels = channels();
1198
+
1199
+ if (rgbaChannels & (WRITE_Y | WRITE_C))
1200
+ _fromYca = new FromYca (*_inputFile, rgbaChannels);
1201
+ }
1202
+
1203
+
1204
+ RgbaInputFile::RgbaInputFile (OPENEXR_IMF_INTERNAL_NAMESPACE::IStream &is,
1205
+ const string &layerName,
1206
+ int numThreads)
1207
+ :
1208
+ _inputFile (new InputFile (is, numThreads)),
1209
+ _fromYca (0),
1210
+ _channelNamePrefix (prefixFromLayerName (layerName, _inputFile->header()))
1211
+ {
1212
+ RgbaChannels rgbaChannels = channels();
1213
+
1214
+ if (rgbaChannels & (WRITE_Y | WRITE_C))
1215
+ _fromYca = new FromYca (*_inputFile, rgbaChannels);
1216
+ }
1217
+
1218
+
1219
+ RgbaInputFile::~RgbaInputFile ()
1220
+ {
1221
+ delete _inputFile;
1222
+ delete _fromYca;
1223
+ }
1224
+
1225
+
1226
+ void
1227
+ RgbaInputFile::setFrameBuffer (Rgba *base, size_t xStride, size_t yStride)
1228
+ {
1229
+ if (_fromYca)
1230
+ {
1231
+ Lock lock (*_fromYca);
1232
+ _fromYca->setFrameBuffer (base, xStride, yStride, _channelNamePrefix);
1233
+ }
1234
+ else
1235
+ {
1236
+ size_t xs = xStride * sizeof (Rgba);
1237
+ size_t ys = yStride * sizeof (Rgba);
1238
+
1239
+ FrameBuffer fb;
1240
+
1241
+ fb.insert (_channelNamePrefix + "R",
1242
+ Slice (HALF,
1243
+ (char *) &base[0].r,
1244
+ xs, ys,
1245
+ 1, 1, // xSampling, ySampling
1246
+ 0.0)); // fillValue
1247
+
1248
+ fb.insert (_channelNamePrefix + "G",
1249
+ Slice (HALF,
1250
+ (char *) &base[0].g,
1251
+ xs, ys,
1252
+ 1, 1, // xSampling, ySampling
1253
+ 0.0)); // fillValue
1254
+
1255
+ fb.insert (_channelNamePrefix + "B",
1256
+ Slice (HALF,
1257
+ (char *) &base[0].b,
1258
+ xs, ys,
1259
+ 1, 1, // xSampling, ySampling
1260
+ 0.0)); // fillValue
1261
+
1262
+ fb.insert (_channelNamePrefix + "A",
1263
+ Slice (HALF,
1264
+ (char *) &base[0].a,
1265
+ xs, ys,
1266
+ 1, 1, // xSampling, ySampling
1267
+ 1.0)); // fillValue
1268
+
1269
+ _inputFile->setFrameBuffer (fb);
1270
+ }
1271
+ }
1272
+
1273
+
1274
+ void
1275
+ RgbaInputFile::setLayerName (const string &layerName)
1276
+ {
1277
+ delete _fromYca;
1278
+ _fromYca = 0;
1279
+
1280
+ _channelNamePrefix = prefixFromLayerName (layerName, _inputFile->header());
1281
+
1282
+ RgbaChannels rgbaChannels = channels();
1283
+
1284
+ if (rgbaChannels & (WRITE_Y | WRITE_C))
1285
+ _fromYca = new FromYca (*_inputFile, rgbaChannels);
1286
+
1287
+ FrameBuffer fb;
1288
+ _inputFile->setFrameBuffer (fb);
1289
+ }
1290
+
1291
+
1292
+ void
1293
+ RgbaInputFile::readPixels (int scanLine1, int scanLine2)
1294
+ {
1295
+ if (_fromYca)
1296
+ {
1297
+ Lock lock (*_fromYca);
1298
+ _fromYca->readPixels (scanLine1, scanLine2);
1299
+ }
1300
+ else
1301
+ {
1302
+ _inputFile->readPixels (scanLine1, scanLine2);
1303
+ }
1304
+ }
1305
+
1306
+
1307
+ void
1308
+ RgbaInputFile::readPixels (int scanLine)
1309
+ {
1310
+ readPixels (scanLine, scanLine);
1311
+ }
1312
+
1313
+
1314
+ bool
1315
+ RgbaInputFile::isComplete () const
1316
+ {
1317
+ return _inputFile->isComplete();
1318
+ }
1319
+
1320
+
1321
+ const Header &
1322
+ RgbaInputFile::header () const
1323
+ {
1324
+ return _inputFile->header();
1325
+ }
1326
+
1327
+
1328
+ const char *
1329
+ RgbaInputFile::fileName () const
1330
+ {
1331
+ return _inputFile->fileName();
1332
+ }
1333
+
1334
+
1335
+ const FrameBuffer &
1336
+ RgbaInputFile::frameBuffer () const
1337
+ {
1338
+ return _inputFile->frameBuffer();
1339
+ }
1340
+
1341
+
1342
+ const IMATH_NAMESPACE::Box2i &
1343
+ RgbaInputFile::displayWindow () const
1344
+ {
1345
+ return _inputFile->header().displayWindow();
1346
+ }
1347
+
1348
+
1349
+ const IMATH_NAMESPACE::Box2i &
1350
+ RgbaInputFile::dataWindow () const
1351
+ {
1352
+ return _inputFile->header().dataWindow();
1353
+ }
1354
+
1355
+
1356
+ float
1357
+ RgbaInputFile::pixelAspectRatio () const
1358
+ {
1359
+ return _inputFile->header().pixelAspectRatio();
1360
+ }
1361
+
1362
+
1363
+ const IMATH_NAMESPACE::V2f
1364
+ RgbaInputFile::screenWindowCenter () const
1365
+ {
1366
+ return _inputFile->header().screenWindowCenter();
1367
+ }
1368
+
1369
+
1370
+ float
1371
+ RgbaInputFile::screenWindowWidth () const
1372
+ {
1373
+ return _inputFile->header().screenWindowWidth();
1374
+ }
1375
+
1376
+
1377
+ LineOrder
1378
+ RgbaInputFile::lineOrder () const
1379
+ {
1380
+ return _inputFile->header().lineOrder();
1381
+ }
1382
+
1383
+
1384
+ Compression
1385
+ RgbaInputFile::compression () const
1386
+ {
1387
+ return _inputFile->header().compression();
1388
+ }
1389
+
1390
+
1391
+ RgbaChannels
1392
+ RgbaInputFile::channels () const
1393
+ {
1394
+ return rgbaChannels (_inputFile->header().channels(), _channelNamePrefix);
1395
+ }
1396
+
1397
+
1398
+ int
1399
+ RgbaInputFile::version () const
1400
+ {
1401
+ return _inputFile->version();
1402
+ }
1403
+
1404
+
1405
+ OPENEXR_IMF_INTERNAL_NAMESPACE_SOURCE_EXIT