rfreeimage 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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,1618 @@
1
+ // ==========================================================
2
+ // Tag library
3
+ //
4
+ // Design and implementation by
5
+ // - Herv� Drolon <drolon@infonie.fr>
6
+ //
7
+ // This file is part of FreeImage 3
8
+ //
9
+ // COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY
10
+ // OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES
11
+ // THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE
12
+ // OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED
13
+ // CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT
14
+ // THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY
15
+ // SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL
16
+ // PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER
17
+ // THIS DISCLAIMER.
18
+ //
19
+ // Use at your own risk!
20
+ // ==========================================================
21
+
22
+ // ==========================================================
23
+ // Implementation notes :
24
+ // ----------------------
25
+ // The tag info tables declared in this file should probably
26
+ // be loaded from an XML file.
27
+ // This would allow internationalization features and also
28
+ // more extensibility.
29
+ // Maybe in a future release ?
30
+ // ==========================================================
31
+
32
+ #ifdef _MSC_VER
33
+ #pragma warning (disable : 4786) // identifier was truncated to 'number' characters
34
+ #endif
35
+
36
+ #include "FreeImage.h"
37
+ #include "Utilities.h"
38
+ #include "FreeImageTag.h"
39
+
40
+ /**
41
+ HOW-TO : add a new TagInfo table
42
+ --------------------------------------------------------------------------
43
+ 1) add a table identifier in the TagLib class definition (see enum MDMODEL)
44
+ 2) declare the tag table as static and use a 0/NULL value as last entry
45
+ 3) initialize the table in TagLib::TagLib
46
+ 4) provide a conversion in TagLib::getFreeImageModel
47
+ */
48
+
49
+ // --------------------------------------------------------------------------
50
+ // EXIF standard tags definition
51
+ // --------------------------------------------------------------------------
52
+
53
+ static TagInfo
54
+ exif_exif_tag_table[] =
55
+ {
56
+ { 0x0100, (char *) "ImageWidth", (char *) "Image width"},
57
+ { 0x0101, (char *) "ImageLength", (char *) "Image height"},
58
+ { 0x0102, (char *) "BitsPerSample", (char *) "Number of bits per component"},
59
+ { 0x0103, (char *) "Compression", (char *) "Compression scheme"},
60
+ { 0x0106, (char *) "PhotometricInterpretation", (char *) "Pixel composition"},
61
+ { 0x010A, (char *) "FillOrder", (char*) NULL},
62
+ { 0x010D, (char *) "DocumentName", (char *) NULL},
63
+ { 0x010E, (char *) "ImageDescription", (char *) "Image title"},
64
+ { 0x010F, (char *) "Make", (char *) "Image input equipment manufacturer"},
65
+ { 0x0110, (char *) "Model", (char *) "Image input equipment model"},
66
+ { 0x0111, (char *) "StripOffsets", (char *) "Image data location"},
67
+ { 0x0112, (char *) "Orientation", (char *) "Orientation of image"},
68
+ { 0x0115, (char *) "SamplesPerPixel", (char *) "Number of components"},
69
+ { 0x0116, (char *) "RowsPerStrip", (char *) "Number of rows per strip"},
70
+ { 0x0117, (char *) "StripByteCounts", (char *) "Bytes per compressed strip"},
71
+ { 0x011A, (char *) "XResolution", (char *) "Image resolution in width direction"},
72
+ { 0x011B, (char *) "YResolution", (char *) "Image resolution in height direction"},
73
+ { 0x011C, (char *) "PlanarConfiguration", (char *) "Image data arrangement"},
74
+ { 0x011D, (char *) "PageName", (char *) "Name of the page"},
75
+ { 0x011E, (char *) "XPosition", (char *) "X position of the image"},
76
+ { 0x011F, (char *) "YPosition", (char *) "Y position of the image"},
77
+ { 0x0128, (char *) "ResolutionUnit", (char *) "Unit of X and Y resolution"},
78
+ { 0x0129, (char *) "PageNumber", (char *) "Page number"},
79
+ { 0x012D, (char *) "TransferFunction", (char *) "Transfer function"},
80
+ { 0x0131, (char *) "Software", (char *) "Software used"},
81
+ { 0x0132, (char *) "DateTime", (char *) "File change date and time"},
82
+ { 0x013B, (char *) "Artist", (char *) "Person who created the image"},
83
+ { 0x013C, (char *) "HostComputer", (char *) "Host computer used to generate the image"},
84
+ { 0x013E, (char *) "WhitePoint", (char *) "White point chromaticity"},
85
+ { 0x013F, (char *) "PrimaryChromaticities", (char *) "Chromaticities of primaries"},
86
+ { 0x0156, (char *) "TransferRange", (char *) NULL},
87
+ { 0x0200, (char *) "JPEGProc", (char *) NULL},
88
+ { 0x0201, (char *) "JPEGInterchangeFormat", (char *) "Offset to JPEG SOI"},
89
+ { 0x0202, (char *) "JPEGInterchangeFormatLength", (char *) "Bytes of JPEG data"},
90
+ { 0x0211, (char *) "YCbCrCoefficients", (char *) "Color space transformation matrix coefficients"},
91
+ { 0x0212, (char *) "YCbCrSubSampling", (char *) "Subsampling ratio of Y to C"},
92
+ { 0x0213, (char *) "YCbCrPositioning", (char *) "Y and C positioning"},
93
+ { 0x0214, (char *) "ReferenceBlackWhite", (char *) "Pair of black and white reference values"},
94
+ { 0x828D, (char *) "CFARepeatPatternDim", (char *) NULL},
95
+ { 0x828E, (char *) "CFAPattern", (char *) NULL},
96
+ { 0x828F, (char *) "BatteryLevel", (char *) NULL},
97
+ { 0x8298, (char *) "Copyright", (char *) "Copyright holder"},
98
+ { 0x829A, (char *) "ExposureTime", (char *) "Exposure time"},
99
+ { 0x829D, (char *) "FNumber", (char *) "F number"},
100
+ { 0x83BB, (char *) "IPTC/NAA", (char *) NULL},
101
+ { 0x8773, (char *) "InterColorProfile", (char *) NULL},
102
+ { 0x8822, (char *) "ExposureProgram", (char *) "Exposure program"},
103
+ { 0x8824, (char *) "SpectralSensitivity", (char *) "Spectral sensitivity"},
104
+ { 0x8825, (char *) "GPSInfo", (char *) NULL},
105
+ { 0x8827, (char *) "ISOSpeedRatings", (char *) "ISO speed rating"},
106
+ { 0x8828, (char *) "OECF", (char *) "Optoelectric conversion factor"},
107
+ { 0x9000, (char *) "ExifVersion", (char *) "Exif version"},
108
+ { 0x9003, (char *) "DateTimeOriginal", (char *) "Date and time of original data generation"},
109
+ { 0x9004, (char *) "DateTimeDigitized", (char *) "Date and time of digital data generation"},
110
+ { 0x9101, (char *) "ComponentsConfiguration", (char *) "Meaning of each component"},
111
+ { 0x9102, (char *) "CompressedBitsPerPixel", (char *) "Image compression mode"},
112
+ { 0x9201, (char *) "ShutterSpeedValue", (char *) "Shutter speed"},
113
+ { 0x9202, (char *) "ApertureValue", (char *) "Aperture"},
114
+ { 0x9203, (char *) "BrightnessValue", (char *) "Brightness"},
115
+ { 0x9204, (char *) "ExposureBiasValue", (char *) "Exposure bias"},
116
+ { 0x9205, (char *) "MaxApertureValue", (char *) "Maximum lens aperture"},
117
+ { 0x9206, (char *) "SubjectDistance", (char *) "Subject distance"},
118
+ { 0x9207, (char *) "MeteringMode", (char *) "Metering mode"},
119
+ { 0x9208, (char *) "LightSource", (char *) "Light source"},
120
+ { 0x9209, (char *) "Flash", (char *) "Flash"},
121
+ { 0x920A, (char *) "FocalLength", (char *) "Lens focal length"},
122
+ { 0x9214, (char *) "SubjectArea", (char *) "Subject area"},
123
+ { 0x927C, (char *) "MakerNote", (char *) "Manufacturer notes"},
124
+ { 0x9286, (char *) "UserComment", (char *) "User comments"},
125
+ { 0x9290, (char *) "SubSecTime", (char *) "DateTime subseconds"},
126
+ { 0x9291, (char *) "SubSecTimeOriginal", (char *) "DateTimeOriginal subseconds"},
127
+ { 0x9292, (char *) "SubSecTimeDigitized", (char *) "DateTimeDigitized subseconds"},
128
+ { 0xA000, (char *) "FlashPixVersion", (char *) "Supported Flashpix version"},
129
+ { 0xA001, (char *) "ColorSpace", (char *) "Color space information"},
130
+ { 0xA002, (char *) "PixelXDimension", (char *) "Valid image width"},
131
+ { 0xA003, (char *) "PixelYDimension", (char *) "Valid image height"},
132
+ { 0xA004, (char *) "RelatedSoundFile", (char *) "Related audio file"},
133
+ { 0xA005, (char *) "InteroperabilityOffset", (char *) NULL},
134
+ { 0xA20B, (char *) "FlashEnergy", (char *) "Flash energy"},
135
+ { 0xA20C, (char *) "SpatialFrequencyResponse", (char *) "Spatial frequency response"},
136
+ { 0xA20E, (char *) "FocalPlaneXResolution", (char *) "Focal plane X resolution"},
137
+ { 0xA20F, (char *) "FocalPlaneYResolution", (char *) "Focal plane Y resolution"},
138
+ { 0xA210, (char *) "FocalPlaneResolutionUnit", (char *) "Focal plane resolution unit"},
139
+ { 0xA214, (char *) "SubjectLocation", (char *) "Subject location"},
140
+ { 0xA215, (char *) "ExposureIndex", (char *) "Exposure index"},
141
+ { 0xA217, (char *) "SensingMethod", (char *) "Sensing method"},
142
+ { 0xA300, (char *) "FileSrc", (char *) "File source"},
143
+ { 0xA301, (char *) "SceneType", (char *) "Scene type"},
144
+ { 0xA302, (char *) "CFAPattern", (char *) "CFA pattern"},
145
+ { 0xA401, (char *) "CustomRendered", (char *) "Custom image processing"},
146
+ { 0xA402, (char *) "ExposureMode", (char *) "Exposure mode"},
147
+ { 0xA403, (char *) "WhiteBalance", (char *) "White balance"},
148
+ { 0xA404, (char *) "DigitalZoomRatio", (char *) "Digital zoom ratio"},
149
+ { 0xA405, (char *) "FocalLengthIn35mmFilm", (char *) "Focal length in 35 mm film"},
150
+ { 0xA406, (char *) "SceneCaptureType", (char *) "Scene capture type"},
151
+ { 0xA407, (char *) "GainControl", (char *) "Gain control"},
152
+ { 0xA408, (char *) "Contrast", (char *) "Contrast"},
153
+ { 0xA409, (char *) "Saturation", (char *) "Saturation"},
154
+ { 0xA40A, (char *) "Sharpness", (char *) "Sharpness"},
155
+ { 0xA40B, (char *) "DeviceSettingDescription", (char *) "Device settings description"},
156
+ { 0xA40C, (char *) "SubjectDistanceRange", (char *) "Subject distance range"},
157
+ { 0xA420, (char *) "ImageUniqueID", (char *) "Unique image ID"},
158
+ { 0xA430, (char *) "CameraOwnerName", (char *) "Camera owner name"},
159
+ { 0xA431, (char *) "BodySerialNumber", (char *) "Body serial number"},
160
+ { 0xA432, (char *) "LensSpecification", (char *) "Lens specification"},
161
+ { 0xA433, (char *) "LensMake", (char *) "Lens make"},
162
+ { 0xA434, (char *) "LensModel", (char *) "Lens model"},
163
+ { 0xA435, (char *) "LensSerialNumber", (char *) "Lens serial number"},
164
+
165
+ // These tags are not part of the Exiv v2.3 specifications but are often loaded by applications as Exif data
166
+ { 0x4746, (char *) "Rating", (char *) "Rating tag used by Windows"},
167
+ { 0x4749, (char *) "RatingPercent", (char *) "Rating tag used by Windows, value in percent"},
168
+ { 0x9C9B, (char *) "XPTitle", (char *) "Title tag used by Windows, encoded in UCS2"},
169
+ { 0x9C9C, (char *) "XPComment", (char *) "Comment tag used by Windows, encoded in UCS2"},
170
+ { 0x9C9D, (char *) "XPAuthor", (char *) "Author tag used by Windows, encoded in UCS2"},
171
+ { 0x9C9E, (char *) "XPKeywords", (char *) "Keywords tag used by Windows, encoded in UCS2"},
172
+ { 0x9C9F, (char *) "XPSubject", (char *) "Subject tag used by Windows, encoded in UCS2"},
173
+ { 0x0000, (char *) NULL, (char *) NULL}
174
+ };
175
+
176
+ // --------------------------------------------------------------------------
177
+ // EXIF GPS tags definition
178
+ // --------------------------------------------------------------------------
179
+
180
+ static TagInfo
181
+ exif_gps_tag_table[] =
182
+ {
183
+ { 0x0000, (char *) "GPSVersionID", (char *) "GPS tag version"},
184
+ { 0x0001, (char *) "GPSLatitudeRef", (char *) "North or South Latitude"},
185
+ { 0x0002, (char *) "GPSLatitude", (char *) "Latitude"},
186
+ { 0x0003, (char *) "GPSLongitudeRef", (char *) "East or West Longitude"},
187
+ { 0x0004, (char *) "GPSLongitude", (char *) "Longitude"},
188
+ { 0x0005, (char *) "GPSAltitudeRef", (char *) "Altitude reference"},
189
+ { 0x0006, (char *) "GPSAltitude", (char *) "Altitude"},
190
+ { 0x0007, (char *) "GPSTimeStamp", (char *) "GPS time (atomic clock)"},
191
+ { 0x0008, (char *) "GPSSatellites", (char *) "GPS satellites used for measurement"},
192
+ { 0x0009, (char *) "GPSStatus", (char *) "GPS receiver status"},
193
+ { 0x000A, (char *) "GPSMeasureMode", (char *) "GPS measurement mode"},
194
+ { 0x000B, (char *) "GPSDOP", (char *) "Measurement precision"},
195
+ { 0x000C, (char *) "GPSSpeedRef", (char *) "Speed unit"},
196
+ { 0x000D, (char *) "GPSSpeed", (char *) "Speed of GPS receiver"},
197
+ { 0x000E, (char *) "GPSTrackRef", (char *) "Reference for direction of movement"},
198
+ { 0x000F, (char *) "GPSTrack", (char *) "Direction of movement"},
199
+ { 0x0010, (char *) "GPSImgDirectionRef", (char *) "Reference for direction of image"},
200
+ { 0x0011, (char *) "GPSImgDirection", (char *) "Direction of image"},
201
+ { 0x0012, (char *) "GPSMapDatum", (char *) "Geodetic survey data used"},
202
+ { 0x0013, (char *) "GPSDestLatitudeRef", (char *) "Reference for latitude of destination"},
203
+ { 0x0014, (char *) "GPSDestLatitude", (char *) "Latitude of destination"},
204
+ { 0x0015, (char *) "GPSDestLongitudeRef", (char *) "Reference for longitude of destination"},
205
+ { 0x0016, (char *) "GPSDestLongitude", (char *) "Longitude of destination"},
206
+ { 0x0017, (char *) "GPSDestBearingRef", (char *) "Reference for bearing of destination"},
207
+ { 0x0018, (char *) "GPSDestBearing", (char *) "Bearing of destination"},
208
+ { 0x0019, (char *) "GPSDestDistanceRef", (char *) "Reference for distance to destination"},
209
+ { 0x001A, (char *) "GPSDestDistance", (char *) "Distance to destination"},
210
+ { 0x001B, (char *) "GPSProcessingMethod", (char *) "Name of GPS processing method"},
211
+ { 0x001C, (char *) "GPSAreaInformation", (char *) "Name of GPS area"},
212
+ { 0x001D, (char *) "GPSDateStamp", (char *) "GPS date"},
213
+ { 0x001E, (char *) "GPSDifferential", (char *) "GPS differential correction"},
214
+ { 0x0000, (char *) NULL, (char *) NULL}
215
+ };
216
+
217
+ // --------------------------------------------------------------------------
218
+ // EXIF interoperability tags definition
219
+ // --------------------------------------------------------------------------
220
+
221
+ static TagInfo
222
+ exif_interop_tag_table[] =
223
+ {
224
+ { 0x0001, (char *) "InteroperabilityIndex", (char *) "Interoperability Identification"},
225
+ { 0x0002, (char *) "InteroperabilityVersion", (char *) "Interoperability version"},
226
+ { 0x1000, (char *) "RelatedImageFileFormat", (char *) "File format of image file"},
227
+ { 0x1001, (char *) "RelatedImageWidth", (char *) "Image width"},
228
+ { 0x1002, (char *) "RelatedImageLength", (char *) "Image height"},
229
+ { 0x0000, (char *) NULL, (char *) NULL}
230
+ };
231
+
232
+ // --------------------------------------------------------------------------
233
+ // EXIF maker note tags definition
234
+ // --------------------------------------------------------------------------
235
+
236
+ /**
237
+ Canon maker note
238
+ */
239
+ static TagInfo
240
+ exif_canon_tag_table[] =
241
+ {
242
+ { 0x0001, (char *) "CanonCameraSettings", (char *) "Canon CameraSettings Tags"},
243
+ { 0x0002, (char *) "CanonFocalLength", (char *) "Canon FocalLength Tags"},
244
+ { 0x0003, (char *) "CanonFlashInfo?", (char *) NULL},
245
+ { 0x0004, (char *) "CanonShotInfo", (char *) "Canon ShotInfo Tags"},
246
+ { 0x0005, (char *) "CanonPanorama", (char *) "Canon Panorama Tags"},
247
+ { 0x0006, (char *) "CanonImageType", (char *) NULL},
248
+ { 0x0007, (char *) "CanonFirmwareVersion", (char *) NULL},
249
+ { 0x0008, (char *) "FileNumber", (char *) NULL},
250
+ { 0x0009, (char *) "OwnerName", (char *) NULL},
251
+ { 0x000A, (char *) "UnknownD30", (char *) "Canon UnknownD30 Tags"},
252
+ { 0x000C, (char *) "SerialNumber", (char *) NULL},
253
+ { 0x000D, (char *) "CanonCameraInfo", (char *) "Canon CameraInfo Tags"},
254
+ { 0x000E, (char *) "CanonFileLength", (char *) NULL},
255
+ { 0x000F, (char *) "CanonCustomFunctions", (char *) "Custom Functions"},
256
+ { 0x0010, (char *) "CanonModelID", (char *) NULL},
257
+ { 0x0012, (char *) "CanonAFInfo", (char *) "Canon AFInfo Tags"},
258
+ { 0x0013, (char *) "ThumbnailImageValidArea", (char *) NULL},
259
+ { 0x0015, (char *) "SerialNumberFormat", (char *) NULL},
260
+ { 0x001A, (char *) "SuperMacro", (char *) NULL},
261
+ { 0x001C, (char *) "DateStampMode", (char *) NULL},
262
+ { 0x001D, (char *) "MyColors", (char *) NULL},
263
+ { 0x001E, (char *) "FirmwareRevision", (char *) NULL},
264
+ { 0x0023, (char *) "Categories", (char *) NULL},
265
+ { 0x0024, (char *) "FaceDetect1", (char *) NULL},
266
+ { 0x0025, (char *) "FaceDetect2", (char *) NULL},
267
+ { 0x0026, (char *) "CanonAFInfo2", (char *) "Canon AFInfo2 Tags"},
268
+ { 0x0028, (char *) "ImageUniqueID", (char *) NULL},
269
+ { 0x0081, (char *) "RawDataOffset", (char *) NULL},
270
+ { 0x0083, (char *) "OriginalDecisionDataOffset", (char *) NULL},
271
+ { 0x0090, (char *) "CustomFunctions1D", (char *) "CanonCustom Functions1D Tags"},
272
+ { 0x0091, (char *) "PersonalFunctions", (char *) "CanonCustom PersonalFuncs Tags"},
273
+ { 0x0092, (char *) "PersonalFunctionValues", (char *) "CanonCustom PersonalFuncValues Tags"},
274
+ { 0x0093, (char *) "CanonFileInfo", (char *) "Canon FileInfo Tags"},
275
+ { 0x0094, (char *) "AFPointsInFocus1D", (char *) NULL},
276
+ { 0x0095, (char *) "LensModel", (char *) NULL},
277
+ { 0x0096, (char *) "SerialInfo", (char *) NULL},
278
+ { 0x0097, (char *) "DustRemovalData", (char *) NULL},
279
+ { 0x0098, (char *) "CropInfo", (char *) NULL},
280
+ { 0x0099, (char *) "CustomFunctions2", (char *) NULL},
281
+ { 0x009A, (char *) "AspectInfo", (char *) NULL},
282
+ { 0x00A0, (char *) "ProcessingInfo", (char *) NULL},
283
+ { 0x00A1, (char *) "ToneCurveTable", (char *) NULL},
284
+ { 0x00A2, (char *) "SharpnessTable", (char *) NULL},
285
+ { 0x00A3, (char *) "SharpnessFreqTable", (char *) NULL},
286
+ { 0x00A4, (char *) "WhiteBalanceTable", (char *) NULL},
287
+ { 0x00A9, (char *) "ColorBalance", (char *) NULL},
288
+ { 0x00AA, (char *) "MeasuredColor", (char *) NULL},
289
+ { 0x00AE, (char *) "ColorTemperature", (char *) NULL},
290
+ { 0x00B0, (char *) "CanonFlags", (char *) NULL},
291
+ { 0x00B1, (char *) "ModifiedInfo", (char *) NULL},
292
+ { 0x00B2, (char *) "ToneCurveMatching", (char *) NULL},
293
+ { 0x00B3, (char *) "WhiteBalanceMatching", (char *) NULL},
294
+ { 0x00B4, (char *) "ColorSpace", (char *) NULL},
295
+ { 0x00B6, (char *) "PreviewImageInfo", (char *) NULL},
296
+ { 0x00D0, (char *) "VRDOffset", (char *) "Offset of VRD 'recipe data' if it exists"},
297
+ { 0x00E0, (char *) "SensorInfo", (char *) NULL},
298
+ { 0x4001, (char *) "ColorData", (char *) "Canon ColorData Tags"},
299
+ { 0x4002, (char *) "CRWParam?", (char *) NULL},
300
+ { 0x4003, (char *) "ColorInfo", (char *) NULL},
301
+ { 0x4005, (char *) "Flavor?", (char *) NULL},
302
+ { 0x4008, (char *) "BlackLevel?", (char *) NULL},
303
+ { 0x4010, (char *) "CustomPictureStyleFileName", (char *) NULL},
304
+ { 0x4013, (char *) "AFMicroAdj", (char *) NULL},
305
+ { 0x4015, (char *) "VignettingCorr", (char *) NULL},
306
+ { 0x4016, (char *) "VignettingCorr2", (char *) NULL},
307
+ { 0x4018, (char *) "LightingOpt", (char *) NULL},
308
+ { 0x4019, (char *) "LensInfo", (char *) NULL},
309
+ { 0x4020, (char *) "AmbienceInfo", (char *) NULL},
310
+ { 0x4024, (char *) "FilterInfo", (char *) NULL},
311
+
312
+ // These 'sub'-tag values have been created for consistency -- they don't exist within the exif segment
313
+
314
+ // Fields under tag 0x0001 (we add 0xC100 to make unique tag id)
315
+ { 0xC100 + 1, (char *) "CameraSettings:MacroMode", (char *) NULL},
316
+ { 0xC100 + 2, (char *) "CameraSettings:SelfTimer", (char *) NULL},
317
+ { 0xC100 + 3, (char *) "CameraSettings:Quality", (char *) NULL},
318
+ { 0xC100 + 4, (char *) "CameraSettings:CanonFlashMode", (char *) NULL},
319
+ { 0xC100 + 5, (char *) "CameraSettings:ContinuousDrive", (char *) NULL},
320
+ { 0xC100 + 6, (char *) "CameraSettings:0x0006", (char *) NULL},
321
+ { 0xC100 + 7, (char *) "CameraSettings:FocusMode", (char *) NULL},
322
+ { 0xC100 + 8, (char *) "CameraSettings:0x0008", (char *) NULL},
323
+ { 0xC100 + 9, (char *) "CameraSettings:RecordMode", (char *) NULL},
324
+ { 0xC100 + 10, (char *) "CameraSettings:CanonImageSize", (char *) NULL},
325
+ { 0xC100 + 11, (char *) "CameraSettings:EasyMode", (char *) NULL},
326
+ { 0xC100 + 12, (char *) "CameraSettings:DigitalZoom", (char *) NULL},
327
+ { 0xC100 + 13, (char *) "CameraSettings:Contrast", (char *) NULL},
328
+ { 0xC100 + 14, (char *) "CameraSettings:Saturation", (char *) NULL},
329
+ { 0xC100 + 15, (char *) "CameraSettings:Sharpness", (char *) NULL},
330
+ { 0xC100 + 16, (char *) "CameraSettings:CameraISO", (char *) NULL},
331
+ { 0xC100 + 17, (char *) "CameraSettings:MeteringMode", (char *) NULL},
332
+ { 0xC100 + 18, (char *) "CameraSettings:FocusRange", (char *) NULL},
333
+ { 0xC100 + 19, (char *) "CameraSettings:AFPoint", (char *) NULL},
334
+ { 0xC100 + 20, (char *) "CameraSettings:CanonExposureMode", (char *) NULL},
335
+ { 0xC100 + 21, (char *) "CameraSettings:0x0015", (char *) NULL},
336
+ { 0xC100 + 22, (char *) "CameraSettings:LensType", (char *) NULL},
337
+ { 0xC100 + 23, (char *) "CameraSettings:LongFocal", (char *) NULL},
338
+ { 0xC100 + 24, (char *) "CameraSettings:ShortFocal", (char *) NULL},
339
+ { 0xC100 + 25, (char *) "CameraSettings:FocalUnits", (char *) "Focal Units per mm"},
340
+ { 0xC100 + 26, (char *) "CameraSettings:MaxAperture", (char *) NULL},
341
+ { 0xC100 + 27, (char *) "CameraSettings:MinAperture", (char *) NULL},
342
+ { 0xC100 + 28, (char *) "CameraSettings:FlashActivity", (char *) NULL},
343
+ { 0xC100 + 29, (char *) "CameraSettings:FlashBits", (char *) NULL},
344
+ { 0xC100 + 30, (char *) "CameraSettings:0x001E", (char *) NULL},
345
+ { 0xC100 + 31, (char *) "CameraSettings:0x001F", (char *) NULL},
346
+ { 0xC100 + 32, (char *) "CameraSettings:FocusContinuous", (char *) NULL},
347
+ { 0xC100 + 33, (char *) "CameraSettings:AESetting", (char *) NULL},
348
+ { 0xC100 + 34, (char *) "CameraSettings:ImageStabilization", (char *) NULL},
349
+ { 0xC100 + 35, (char *) "CameraSettings:DisplayAperture", (char *) NULL},
350
+ { 0xC100 + 36, (char *) "CameraSettings:ZoomSourceWidth", (char *) NULL},
351
+ { 0xC100 + 37, (char *) "CameraSettings:ZoomTargetWidth", (char *) NULL},
352
+ { 0xC100 + 38, (char *) "CameraSettings:0x0026", (char *) NULL},
353
+ { 0xC100 + 39, (char *) "CameraSettings:SpotMeteringMode", (char *) NULL},
354
+ { 0xC100 + 40, (char *) "CameraSettings:PhotoEffect", (char *) NULL},
355
+ { 0xC100 + 41, (char *) "CameraSettings:ManualFlashOutput", (char *) NULL},
356
+ { 0xC100 + 42, (char *) "CameraSettings:ColorTone", (char *) NULL},
357
+ { 0xC100 + 43, (char *) "CameraSettings:0x002B", (char *) NULL},
358
+ { 0xC100 + 44, (char *) "CameraSettings:0x002C", (char *) NULL},
359
+ { 0xC100 + 45, (char *) "CameraSettings:0x002D", (char *) NULL},
360
+ { 0xC100 + 46, (char *) "CameraSettings:SRAWQuality", (char *) NULL},
361
+ { 0xC100 + 47, (char *) "CameraSettings:0x002F", (char *) NULL},
362
+ { 0xC100 + 48, (char *) "CameraSettings:0x0030", (char *) NULL},
363
+
364
+ // Fields under tag 0x0002 (we add 0xC200 to make unique tag id)
365
+ { 0xC200 + 0, (char *) "FocalLength:FocalType", (char *) NULL},
366
+ { 0xC200 + 1, (char *) "FocalLength:FocalLength", (char *) NULL},
367
+ { 0xC200 + 2, (char *) "FocalLength:FocalPlaneXSize", (char *) NULL},
368
+ { 0xC200 + 3, (char *) "FocalLength:FocalPlaneYSize", (char *) NULL},
369
+
370
+ // Fields under tag 0x0004 (we add 0xC400 to make unique tag id)
371
+ { 0xC400 + 1, (char *) "ShotInfo:AutoISO", (char *) NULL},
372
+ { 0xC400 + 2, (char *) "ShotInfo:BaseISO", (char *) NULL},
373
+ { 0xC400 + 3, (char *) "ShotInfo:MeasuredEV", (char *) NULL},
374
+ { 0xC400 + 4, (char *) "ShotInfo:TargetAperture", (char *) NULL},
375
+ { 0xC400 + 5, (char *) "ShotInfo:TargetExposureTime", (char *) NULL},
376
+ { 0xC400 + 6, (char *) "ShotInfo:ExposureCompensation", (char *) NULL},
377
+ { 0xC400 + 7, (char *) "ShotInfo:WhiteBalance", (char *) NULL},
378
+ { 0xC400 + 8, (char *) "ShotInfo:SlowShutter", (char *) NULL},
379
+ { 0xC400 + 9, (char *) "ShotInfo:SequenceNumber", (char *) NULL},
380
+ { 0xC400 + 10, (char *) "ShotInfo:OpticalZoomCode", (char *) NULL},
381
+ { 0xC400 + 11, (char *) "ShotInfo:0x000B", (char *) NULL},
382
+ { 0xC400 + 12, (char *) "ShotInfo:CameraTemperature", (char *) NULL},
383
+ { 0xC400 + 13, (char *) "ShotInfo:FlashGuideNumber", (char *) NULL},
384
+ { 0xC400 + 14, (char *) "ShotInfo:AFPointsInFocus", (char *) NULL},
385
+ { 0xC400 + 15, (char *) "ShotInfo:FlashExposureComp", (char *) NULL},
386
+ { 0xC400 + 16, (char *) "ShotInfo:AutoExposureBracketing", (char *) NULL},
387
+ { 0xC400 + 17, (char *) "ShotInfo:AEBBracketValue", (char *) NULL},
388
+ { 0xC400 + 18, (char *) "ShotInfo:ControlMode", (char *) NULL},
389
+ { 0xC400 + 19, (char *) "ShotInfo:FocusDistanceUpper", (char *) NULL},
390
+ { 0xC400 + 20, (char *) "ShotInfo:FocusDistanceLower", (char *) NULL},
391
+ { 0xC400 + 21, (char *) "ShotInfo:FNumber", (char *) NULL},
392
+ { 0xC400 + 22, (char *) "ShotInfo:ExposureTime", (char *) NULL},
393
+ { 0xC400 + 23, (char *) "ShotInfo:MeasuredEV2", (char *) NULL},
394
+ { 0xC400 + 24, (char *) "ShotInfo:BulbDuration", (char *) NULL},
395
+ { 0xC400 + 25, (char *) "ShotInfo:0x0019", (char *) NULL},
396
+ { 0xC400 + 26, (char *) "ShotInfo:CameraType", (char *) NULL},
397
+ { 0xC400 + 27, (char *) "ShotInfo:AutoRotate", (char *) NULL},
398
+ { 0xC400 + 28, (char *) "ShotInfo:NDFilter", (char *) NULL},
399
+ { 0xC400 + 29, (char *) "ShotInfo:SelfTimer2", (char *) NULL},
400
+ { 0xC400 + 30, (char *) "ShotInfo:0x001E", (char *) NULL},
401
+ { 0xC400 + 31, (char *) "ShotInfo:0x001F", (char *) NULL},
402
+ { 0xC400 + 32, (char *) "ShotInfo:0x0020", (char *) NULL},
403
+ { 0xC400 + 33, (char *) "ShotInfo:FlashOutput", (char *) NULL},
404
+
405
+ // Fields under tag 0x0012 (we add 0x1200 to make unique tag id)
406
+ { 0x1200 + 0, (char *) "AFInfo:NumAFPoints", (char *) NULL},
407
+ { 0x1200 + 1, (char *) "AFInfo:ValidAFPoints", (char *) NULL},
408
+ { 0x1200 + 2, (char *) "AFInfo:CanonImageWidth", (char *) NULL},
409
+ { 0x1200 + 3, (char *) "AFInfo:CanonImageHeight", (char *) NULL},
410
+ { 0x1200 + 4, (char *) "AFInfo:AFImageWidth", (char *) NULL},
411
+ { 0x1200 + 5, (char *) "AFInfo:AFImageHeight", (char *) NULL},
412
+ { 0x1200 + 6, (char *) "AFInfo:AFAreaWidth", (char *) NULL},
413
+ { 0x1200 + 7, (char *) "AFInfo:AFAreaHeight", (char *) NULL},
414
+ { 0x1200 + 8, (char *) "AFInfo:AFAreaXPositions", (char *) NULL},
415
+ { 0x1200 + 9, (char *) "AFInfo:AFAreaYPositions", (char *) NULL},
416
+ { 0x1200 + 10, (char *) "AFInfo:AFPointsInFocus", (char *) NULL},
417
+ { 0x1200 + 11, (char *) "AFInfo:PrimaryAFPoint?", (char *) NULL},
418
+ { 0x1200 + 12, (char *) "AFInfo:PrimaryAFPoint", (char *) NULL},
419
+ { 0x1200 + 13, (char *) "AFInfo:0x000D", (char *) NULL},
420
+ { 0x1200 + 14, (char *) "AFInfo:0x000E", (char *) NULL},
421
+ { 0x1200 + 15, (char *) "AFInfo:0x000F", (char *) NULL},
422
+ { 0x1200 + 16, (char *) "AFInfo:0x0010", (char *) NULL},
423
+ { 0x1200 + 17, (char *) "AFInfo:0x0011", (char *) NULL},
424
+ { 0x1200 + 18, (char *) "AFInfo:0x0012", (char *) NULL},
425
+ { 0x1200 + 19, (char *) "AFInfo:0x0013", (char *) NULL},
426
+ { 0x1200 + 20, (char *) "AFInfo:0x0014", (char *) NULL},
427
+ { 0x1200 + 21, (char *) "AFInfo:0x0015", (char *) NULL},
428
+ { 0x1200 + 22, (char *) "AFInfo:0x0016", (char *) NULL},
429
+ { 0x1200 + 23, (char *) "AFInfo:0x0017", (char *) NULL},
430
+ { 0x1200 + 24, (char *) "AFInfo:0x0018", (char *) NULL},
431
+ { 0x1200 + 25, (char *) "AFInfo:0x0019", (char *) NULL},
432
+ { 0x1200 + 26, (char *) "AFInfo:0x001A", (char *) NULL},
433
+ { 0x1200 + 27, (char *) "AFInfo:0x001B", (char *) NULL},
434
+
435
+ // Fields under tag 0x00A0 (we add 0xCA00 to make unique tag id)
436
+ { 0xCA00 + 1, (char *) "ProcessingInfo:ToneCurve", (char *) NULL},
437
+ { 0xCA00 + 2, (char *) "ProcessingInfo:Sharpness", (char *) NULL},
438
+ { 0xCA00 + 3, (char *) "ProcessingInfo:SharpnessFrequency", (char *) NULL},
439
+ { 0xCA00 + 4, (char *) "ProcessingInfo:SensorRedLevel", (char *) NULL},
440
+ { 0xCA00 + 5, (char *) "ProcessingInfo:SensorBlueLevel", (char *) NULL},
441
+ { 0xCA00 + 6, (char *) "ProcessingInfo:WhiteBalanceRed", (char *) NULL},
442
+ { 0xCA00 + 7, (char *) "ProcessingInfo:WhiteBalanceBlue", (char *) NULL},
443
+ { 0xCA00 + 8, (char *) "ProcessingInfo:WhiteBalance", (char *) NULL},
444
+ { 0xCA00 + 9, (char *) "ProcessingInfo:ColorTemperature", (char *) NULL},
445
+ { 0xCA00 + 10, (char *) "ProcessingInfo:PictureStyle", (char *) NULL},
446
+ { 0xCA00 + 11, (char *) "ProcessingInfo:DigitalGain", (char *) NULL},
447
+ { 0xCA00 + 12, (char *) "ProcessingInfo:WBShiftAB", (char *) NULL},
448
+ { 0xCA00 + 13, (char *) "ProcessingInfo:WBShiftGM", (char *) NULL},
449
+
450
+ // Fields under tag 0x00E0 (we add 0xCE00 to make unique tag id)
451
+ { 0xCE00 + 1, (char *) "SensorInfo:SensorWidth", (char *) NULL},
452
+ { 0xCE00 + 2, (char *) "SensorInfo:SensorHeight", (char *) NULL},
453
+ { 0xCE00 + 3, (char *) "SensorInfo:0x0003", (char *) NULL},
454
+ { 0xCE00 + 4, (char *) "SensorInfo:0x0004", (char *) NULL},
455
+ { 0xCE00 + 5, (char *) "SensorInfo:SensorLeftBorder", (char *) NULL},
456
+ { 0xCE00 + 6, (char *) "SensorInfo:SensorTopBorder", (char *) NULL},
457
+ { 0xCE00 + 7, (char *) "SensorInfo:SensorRightBorder", (char *) NULL},
458
+ { 0xCE00 + 8, (char *) "SensorInfo:SensorBottomBorder", (char *) NULL},
459
+ { 0xCE00 + 9, (char *) "SensorInfo:BlackMaskLeftBorder", (char *) NULL},
460
+ { 0xCE00 + 10, (char *) "SensorInfo:BlackMaskTopBorder", (char *) NULL},
461
+ { 0xCE00 + 11, (char *) "SensorInfo:BlackMaskRightBorder", (char *) NULL},
462
+ { 0xCE00 + 12, (char *) "SensorInfo:BlackMaskBottomBorder", (char *) NULL},
463
+ { 0xCE00 + 13, (char *) "SensorInfo:0x000D", (char *) NULL},
464
+ { 0xCE00 + 14, (char *) "SensorInfo:0x000E", (char *) NULL},
465
+ { 0xCE00 + 15, (char *) "SensorInfo:0x000F", (char *) NULL},
466
+ { 0xCE00 + 16, (char *) "SensorInfo:0x0010", (char *) NULL},
467
+
468
+ { 0x0000, (char *) NULL, (char *) NULL}
469
+ };
470
+
471
+ /**
472
+ Casio type 1 maker note
473
+ */
474
+ static TagInfo
475
+ exif_casio_type1_tag_table[] =
476
+ {
477
+ { 0x0001, (char *) "RecordingMode", (char *) NULL},
478
+ { 0x0002, (char *) "Quality", (char *) NULL},
479
+ { 0x0003, (char *) "FocusMode", (char *) NULL},
480
+ { 0x0004, (char *) "FlashMode", (char *) NULL},
481
+ { 0x0005, (char *) "FlashIntensity", (char *) NULL},
482
+ { 0x0006, (char *) "ObjectDistance", (char *) NULL},
483
+ { 0x0007, (char *) "WhiteBalance", (char *) NULL},
484
+ { 0x000A, (char *) "DigitalZoom", (char *) NULL},
485
+ { 0x000B, (char *) "Sharpness", (char *) NULL},
486
+ { 0x000C, (char *) "Contrast", (char *) NULL},
487
+ { 0x000D, (char *) "Saturation", (char *) NULL},
488
+ { 0x0014, (char *) "ISO", (char *) NULL},
489
+ { 0x0015, (char *) "FirmwareDate", (char *) NULL},
490
+ { 0x0016, (char *) "Enhancement", (char *) NULL},
491
+ { 0x0017, (char *) "ColorFilter", (char *) NULL},
492
+ { 0x0018, (char *) "AFPoint", (char *) NULL},
493
+ { 0x0019, (char *) "FlashIntensity", (char *) NULL},
494
+ { 0x0E00, (char *) "PrintIM", (char *) NULL},
495
+ { 0x0000, (char *) NULL, (char *) NULL}
496
+ };
497
+
498
+ /**
499
+ Casio type 2 maker note
500
+ */
501
+ static TagInfo
502
+ exif_casio_type2_tag_table[] =
503
+ {
504
+ { 0x0002, (char *) "PreviewImageSize", (char *) NULL},
505
+ { 0x0003, (char *) "PreviewImageLength", (char *) NULL},
506
+ { 0x0004, (char *) "PreviewImageStart", (char *) NULL},
507
+ { 0x0008, (char *) "QualityMode", (char *) NULL},
508
+ { 0x0009, (char *) "CasioImageSize", (char *) NULL},
509
+ { 0x000D, (char *) "FocusMode", (char *) NULL},
510
+ { 0x0014, (char *) "ISO", (char *) NULL},
511
+ { 0x0019, (char *) "WhiteBalance", (char *) NULL},
512
+ { 0x001D, (char *) "FocalLength", (char *) NULL},
513
+ { 0x001F, (char *) "Saturation", (char *) NULL},
514
+ { 0x0020, (char *) "Contrast", (char *) NULL},
515
+ { 0x0021, (char *) "Sharpness", (char *) NULL},
516
+ { 0x0E00, (char *) "PrintIM", (char *) NULL},
517
+ { 0x2000, (char *) "PreviewImage", (char *) NULL},
518
+ { 0x2001, (char *) "FirmwareDate", (char *) NULL},
519
+ { 0x2011, (char *) "WhiteBalanceBias", (char *) NULL},
520
+ { 0x2012, (char *) "WhiteBalance", (char *) NULL},
521
+ { 0x2021, (char *) "AFPointPosition", (char *) NULL},
522
+ { 0x2022, (char *) "ObjectDistance", (char *) NULL},
523
+ { 0x2034, (char *) "FlashDistance", (char *) NULL},
524
+ { 0x2076, (char *) "SpecialEffectMode", (char *) NULL},
525
+ { 0x3000, (char *) "RecordMode", (char *) NULL},
526
+ { 0x3001, (char *) "ReleaseMode", (char *) NULL},
527
+ { 0x3002, (char *) "Quality", (char *) NULL},
528
+ { 0x3003, (char *) "FocusMode", (char *) NULL},
529
+ { 0x3006, (char *) "HometownCity", (char *) NULL},
530
+ { 0x3007, (char *) "BestShotMode", (char *) NULL},
531
+ { 0x3008, (char *) "AutoISO", (char *) NULL},
532
+ { 0x3009, (char *) "AFMode", (char *) NULL},
533
+ { 0x3011, (char *) "Sharpness", (char *) NULL},
534
+ { 0x3012, (char *) "Contrast", (char *) NULL},
535
+ { 0x3013, (char *) "Saturation", (char *) NULL},
536
+ { 0x3014, (char *) "ISO", (char *) NULL},
537
+ { 0x3015, (char *) "ColorMode", (char *) NULL},
538
+ { 0x3016, (char *) "Enhancement", (char *) NULL},
539
+ { 0x3017, (char *) "ColorFilter", (char *) NULL},
540
+ { 0x301B, (char *) "ArtMode", (char *) NULL},
541
+ { 0x301C, (char *) "SequenceNumber", (char *) NULL},
542
+ { 0x301D, (char *) "BracketSequence", (char *) NULL},
543
+ { 0x3020, (char *) "ImageStabilization", (char *) NULL},
544
+ { 0x302A, (char *) "LightingMode", (char *) NULL},
545
+ { 0x302B, (char *) "PortraitRefiner", (char *) NULL},
546
+ { 0x3030, (char *) "SpecialEffectLevel", (char *) NULL},
547
+ { 0x3031, (char *) "SpecialEffectSetting", (char *) NULL},
548
+ { 0x3103, (char *) "DriveMode", (char *) NULL},
549
+ { 0x4001, (char *) "CaptureFrameRate", (char *) NULL},
550
+ { 0x4003, (char *) "VideoQuality", (char *) NULL},
551
+ { 0x0000, (char *) NULL, (char *) NULL}
552
+ };
553
+
554
+ /**
555
+ FujiFilm maker note
556
+ */
557
+ static TagInfo
558
+ exif_fujifilm_tag_table[] =
559
+ {
560
+ { 0x0000, (char *) "Version", (char *) NULL},
561
+ { 0x0010, (char *) "InternalSerialNumber", (char *) NULL},
562
+ { 0x1000, (char *) "Quality", (char *) NULL},
563
+ { 0x1001, (char *) "Sharpness", (char *) NULL},
564
+ { 0x1002, (char *) "WhiteBalance", (char *) NULL},
565
+ { 0x1003, (char *) "Saturation", (char *) NULL},
566
+ { 0x1004, (char *) "Contrast", (char *) NULL},
567
+ { 0x1005, (char *) "ColorTemperature", (char *) NULL},
568
+ { 0x100A, (char *) "WhiteBalanceFineTune", (char *) NULL},
569
+ { 0x100B, (char *) "NoiseReduction", (char *) NULL},
570
+ { 0x1010, (char *) "FujiFlashMode", (char *) NULL},
571
+ { 0x1011, (char *) "FlashExposureComp", (char *) NULL},
572
+ { 0x1020, (char *) "Macro", (char *) NULL},
573
+ { 0x1021, (char *) "FocusMode", (char *) NULL},
574
+ { 0x1023, (char *) "FocusPixel", (char *) NULL},
575
+ { 0x1030, (char *) "SlowSync", (char *) NULL},
576
+ { 0x1031, (char *) "PictureMode", (char *) NULL},
577
+ { 0x1033, (char *) "EXRAuto", (char *) NULL},
578
+ { 0x1034, (char *) "EXRMode", (char *) NULL},
579
+ { 0x1100, (char *) "AutoBracketting", (char *) NULL},
580
+ { 0x1101, (char *) "SequenceNumber", (char *) NULL},
581
+ { 0x1210, (char *) "ColorMode", (char *) NULL},
582
+ { 0x1300, (char *) "BlurWarning", (char *) NULL},
583
+ { 0x1301, (char *) "FocusWarning", (char *) NULL},
584
+ { 0x1302, (char *) "ExposureWarning", (char *) NULL},
585
+ { 0x1400, (char *) "DynamicRange", (char *) NULL},
586
+ { 0x1401, (char *) "FilmMode", (char *) NULL},
587
+ { 0x1402, (char *) "DynamicRangeSetting", (char *) NULL},
588
+ { 0x1403, (char *) "DevelopmentDynamicRange", (char *) NULL},
589
+ { 0x1404, (char *) "MinFocalLength", (char *) NULL},
590
+ { 0x1405, (char *) "MaxFocalLength", (char *) NULL},
591
+ { 0x1406, (char *) "MaxApertureAtMinFocal", (char *) NULL},
592
+ { 0x1407, (char *) "MaxApertureAtMaxFocal", (char *) NULL},
593
+ { 0x4100, (char *) "FacesDetected", (char *) NULL},
594
+ { 0x4103, (char *) "FacePositions", (char *) NULL},
595
+ { 0x8000, (char *) "FileSource", (char *) NULL},
596
+ { 0x8002, (char *) "OrderNumber", (char *) NULL},
597
+ { 0x8003, (char *) "FrameNumber", (char *) NULL},
598
+ { 0xB211, (char *) "Parallax", (char *) NULL},
599
+ { 0x0000, (char *) NULL, (char *) NULL}
600
+ };
601
+
602
+ /**
603
+ Kyocera maker note
604
+ */
605
+ static TagInfo
606
+ exif_kyocera_tag_table[] =
607
+ {
608
+ { 0x0001, (char *) "ThumbnailImage", (char *) NULL},
609
+ { 0x0E00, (char *) "PrintIM", (char *) "Print Image Matching Info"},
610
+ { 0x0000, (char *) NULL, (char *) NULL}
611
+ };
612
+
613
+ /**
614
+ Olympus Type 1 / Epson / Agfa maker note
615
+ */
616
+ static TagInfo
617
+ exif_olympus_type1_tag_table[] =
618
+ {
619
+ { 0x0000, (char *) "MakerNoteVersion", (char *) NULL},
620
+ { 0x0001, (char *) "MinoltaCameraSettingsOld", (char *) NULL},
621
+ { 0x0003, (char *) "MinoltaCameraSettings", (char *) NULL},
622
+ { 0x0040, (char *) "CompressedImageSize", (char *) NULL},
623
+ { 0x0081, (char *) "PreviewImageData", (char *) NULL},
624
+ { 0x0088, (char *) "PreviewImageStart", (char *) NULL},
625
+ { 0x0089, (char *) "PreviewImageLength", (char *) NULL},
626
+ { 0x0100, (char *) "ThumbnailImage", (char *) NULL},
627
+ { 0x0104, (char *) "BodyFirmwareVersion", (char *) NULL},
628
+ { 0x0200, (char *) "SpecialMode", (char *) NULL},
629
+ { 0x0201, (char *) "Quality", (char *) NULL},
630
+ { 0x0202, (char *) "Macro", (char *) NULL},
631
+ { 0x0203, (char *) "BWMode", (char *) NULL},
632
+ { 0x0204, (char *) "DigitalZoom", (char *) NULL},
633
+ { 0x0205, (char *) "FocalPlaneDiagonal", (char *) NULL},
634
+ { 0x0206, (char *) "LensDistortionParams", (char *) NULL},
635
+ { 0x0207, (char *) "CameraType", (char *) NULL},
636
+ { 0x0208, (char *) "TextInfo", (char *) "Olympus TextInfo Tags"},
637
+ { 0x0209, (char *) "CameraID", (char *) NULL},
638
+ { 0x020B, (char *) "EpsonImageWidth", (char *) NULL},
639
+ { 0x020C, (char *) "EpsonImageHeight", (char *) NULL},
640
+ { 0x020D, (char *) "EpsonSoftware", (char *) NULL},
641
+ { 0x0280, (char *) "PreviewImage", (char *) NULL},
642
+ { 0x0300, (char *) "PreCaptureFrames", (char *) NULL},
643
+ { 0x0301, (char *) "WhiteBoard", (char *) NULL},
644
+ { 0x0302, (char *) "OneTouchWB", (char *) NULL},
645
+ { 0x0303, (char *) "WhiteBalanceBracket", (char *) NULL},
646
+ { 0x0304, (char *) "WhiteBalanceBias", (char *) NULL},
647
+ { 0x0403, (char *) "SceneMode", (char *) NULL},
648
+ { 0x0404, (char *) "SerialNumber", (char *) NULL},
649
+ { 0x0405, (char *) "Firmware", (char *) NULL},
650
+ { 0x0E00, (char *) "PrintIM", (char *) "PrintIM Tags"},
651
+ { 0x0F00, (char *) "DataDump", (char *) NULL},
652
+ { 0x0F01, (char *) "DataDump2", (char *) NULL},
653
+ { 0x1000, (char *) "ShutterSpeedValue", (char *) NULL},
654
+ { 0x1001, (char *) "ISOValue", (char *) NULL},
655
+ { 0x1002, (char *) "ApertureValue", (char *) NULL},
656
+ { 0x1003, (char *) "BrightnessValue", (char *) NULL},
657
+ { 0x1004, (char *) "FlashMode", (char *) NULL},
658
+ { 0x1005, (char *) "FlashDevice", (char *) NULL},
659
+ { 0x1006, (char *) "ExposureCompensation", (char *) NULL},
660
+ { 0x1007, (char *) "SensorTemperature", (char *) NULL},
661
+ { 0x1008, (char *) "LensTemperature", (char *) NULL},
662
+ { 0x1009, (char *) "LightCondition", (char *) NULL},
663
+ { 0x100A, (char *) "FocusRange", (char *) NULL},
664
+ { 0x100B, (char *) "FocusMode", (char *) NULL},
665
+ { 0x100C, (char *) "ManualFocusDistance", (char *) NULL},
666
+ { 0x100D, (char *) "ZoomStepCount", (char *) NULL},
667
+ { 0x100E, (char *) "FocusStepCount", (char *) NULL},
668
+ { 0x100F, (char *) "Sharpness", (char *) NULL},
669
+ { 0x1010, (char *) "FlashChargeLevel", (char *) NULL},
670
+ { 0x1011, (char *) "ColorMatrix", (char *) NULL},
671
+ { 0x1012, (char *) "BlackLevel", (char *) NULL},
672
+ { 0x1015, (char *) "WBMode", (char *) NULL},
673
+ { 0x1017, (char *) "RedBalance", (char *) NULL},
674
+ { 0x1018, (char *) "BlueBalance", (char *) NULL},
675
+ { 0x1019, (char *) "ColorMatrixNumber", (char *) NULL},
676
+ { 0x101A, (char *) "SerialNumber", (char *) NULL},
677
+ { 0x1023, (char *) "FlashExposureComp", (char *) NULL},
678
+ { 0x1024, (char *) "InternalFlashTable", (char *) NULL},
679
+ { 0x1025, (char *) "ExternalFlashGValue", (char *) NULL},
680
+ { 0x1026, (char *) "ExternalFlashBounce", (char *) NULL},
681
+ { 0x1027, (char *) "ExternalFlashZoom", (char *) NULL},
682
+ { 0x1028, (char *) "ExternalFlashMode", (char *) NULL},
683
+ { 0x1029, (char *) "Contrast", (char *) NULL},
684
+ { 0x102A, (char *) "SharpnessFactor", (char *) NULL},
685
+ { 0x102B, (char *) "ColorControl", (char *) NULL},
686
+ { 0x102C, (char *) "ValidBits", (char *) NULL},
687
+ { 0x102D, (char *) "CoringFilter", (char *) NULL},
688
+ { 0x102E, (char *) "OlympusImageWidth", (char *) NULL},
689
+ { 0x102F, (char *) "OlympusImageHeight", (char *) NULL},
690
+ { 0x1030, (char *) "SceneDetect", (char *) NULL},
691
+ { 0x1031, (char *) "SceneArea?", (char *) NULL},
692
+ { 0x1033, (char *) "SceneDetectData?", (char *) NULL},
693
+ { 0x1034, (char *) "CompressionRatio", (char *) NULL},
694
+ { 0x1035, (char *) "PreviewImageValid", (char *) NULL},
695
+ { 0x1036, (char *) "PreviewImageStart", (char *) NULL},
696
+ { 0x1037, (char *) "PreviewImageLength", (char *) NULL},
697
+ { 0x1038, (char *) "AFResult", (char *) NULL},
698
+ { 0x1039, (char *) "CCDScanMode", (char *) NULL},
699
+ { 0x103A, (char *) "NoiseReduction", (char *) NULL},
700
+ { 0x103B, (char *) "InfinityLensStep", (char *) NULL},
701
+ { 0x103C, (char *) "NearLensStep", (char *) NULL},
702
+ { 0x103D, (char *) "LightValueCenter", (char *) NULL},
703
+ { 0x103E, (char *) "LightValuePeriphery", (char *) NULL},
704
+ { 0x2010, (char *) "Equipment", (char *) "Olympus Equipment Tags"},
705
+ { 0x2020, (char *) "CameraSettings", (char *) "Olympus CameraSettings Tags"},
706
+ { 0x2030, (char *) "RawDevelopment", (char *) "Olympus RawDevelopment Tags"},
707
+ { 0x2040, (char *) "ImageProcessing", (char *) "Olympus ImageProcessing Tags"},
708
+ { 0x2050, (char *) "FocusInfo", (char *) "Olympus FocusInfo Tags"},
709
+ { 0x2100, (char *) "Olympus2100", (char *) "Olympus FE Tags"},
710
+ { 0x2200, (char *) "Olympus2200", (char *) "Olympus FE Tags"},
711
+ { 0x2300, (char *) "Olympus2300", (char *) "Olympus FE Tags"},
712
+ { 0x2400, (char *) "Olympus2400", (char *) "Olympus FE Tags"},
713
+ { 0x2500, (char *) "Olympus2500", (char *) "Olympus FE Tags"},
714
+ { 0x2600, (char *) "Olympus2600", (char *) "Olympus FE Tags"},
715
+ { 0x2700, (char *) "Olympus2700", (char *) "Olympus FE Tags"},
716
+ { 0x2800, (char *) "Olympus2800", (char *) "Olympus FE Tags"},
717
+ { 0x2900, (char *) "Olympus2900", (char *) "Olympus FE Tags"},
718
+ { 0x3000, (char *) "RawInfo", (char *) "Olympus RawInfo Tags"},
719
+ { 0x4000, (char *) "MainInfo", (char *) "Olympus MainInfo Tags"},
720
+ { 0x0000, (char *) NULL, (char *) NULL}
721
+ };
722
+
723
+ /**
724
+ Minolta maker note
725
+ */
726
+ static TagInfo
727
+ exif_minolta_tag_table[] =
728
+ {
729
+ { 0x0000, (char *) "MakerNoteVersion", (char *) NULL},
730
+ { 0x0001, (char *) "MinoltaCameraSettingsOld", (char *) NULL},
731
+ { 0x0003, (char *) "MinoltaCameraSettings", (char *) NULL},
732
+ { 0x0004, (char *) "MinoltaCameraSettings7D", (char *) NULL},
733
+ { 0x0018, (char *) "ImageStabilization", (char *) NULL},
734
+ { 0x0040, (char *) "CompressedImageSize", (char *) NULL},
735
+ { 0x0081, (char *) "PreviewImage", (char *) NULL},
736
+ { 0x0088, (char *) "PreviewImageStart", (char *) NULL},
737
+ { 0x0089, (char *) "PreviewImageLength", (char *) NULL},
738
+ { 0x0100, (char *) "SceneMode", (char *) NULL},
739
+ { 0x0101, (char *) "ColorMode", (char *) NULL},
740
+ { 0x0102, (char *) "MinoltaQuality", (char *) NULL},
741
+ { 0x0103, (char *) "MinoltaImageSize", (char *) NULL},
742
+ { 0x0104, (char *) "FlashExposureComp", (char *) NULL},
743
+ { 0x0105, (char *) "Teleconverter", (char *) NULL},
744
+ { 0x0107, (char *) "ImageStabilization", (char *) NULL},
745
+ { 0x0109, (char *) "RawAndJpgRecording", (char *) NULL},
746
+ { 0x010A, (char *) "ZoneMatching", (char *) NULL},
747
+ { 0x010B, (char *) "ColorTemperature", (char *) NULL},
748
+ { 0x010C, (char *) "LensType", (char *) NULL},
749
+ { 0x0111, (char *) "ColorCompensationFilter", (char *) NULL},
750
+ { 0x0112, (char *) "WhiteBalanceFineTune", (char *) NULL},
751
+ { 0x0113, (char *) "ImageStabilization", (char *) NULL},
752
+ { 0x0114, (char *) "MinoltaCameraSettings5D", (char *) NULL},
753
+ { 0x0115, (char *) "WhiteBalance", (char *) NULL},
754
+ { 0x0E00, (char *) "PrintIM", (char *) NULL},
755
+ { 0x0F00, (char *) "MinoltaCameraSettings2", (char *) NULL},
756
+ { 0x0000, (char *) NULL, (char *) NULL}
757
+ };
758
+
759
+ /**
760
+ There are 3 formats of Nikon's MakerNote. MakerNote of E700/E800/E900/E900S/E910/E950
761
+ starts from ASCII string "Nikon". Data format is the same as IFD, but it starts from
762
+ offset 0x08. This is the same as Olympus except start string.
763
+ */
764
+
765
+ /**
766
+ TYPE 1 is for E-Series cameras prior to (not including) E990
767
+ */
768
+ static TagInfo
769
+ exif_nikon_type1_tag_table[] =
770
+ {
771
+ { 0x0002, (char *) "FamilyID", (char *) NULL},
772
+ { 0x0003, (char *) "Quality", (char *) NULL},
773
+ { 0x0004, (char *) "ColorMode", (char *) NULL},
774
+ { 0x0005, (char *) "ImageAdjustment", (char *) NULL},
775
+ { 0x0006, (char *) "CCDSensitivity", (char *) NULL},
776
+ { 0x0007, (char *) "WhiteBalance", (char *) NULL},
777
+ { 0x0008, (char *) "Focus", (char *) NULL},
778
+ { 0x000A, (char *) "DigitalZoom", (char *) NULL},
779
+ { 0x000B, (char *) "FisheyeConverter", (char *) NULL},
780
+ { 0x0000, (char *) NULL, (char *) NULL}
781
+ };
782
+
783
+ /**
784
+ Nikon type 2 maker note
785
+ */
786
+ static TagInfo
787
+ exif_nikon_type2_tag_table[] =
788
+ {
789
+ { 0x0001, (char *) "MakerNoteVersion", (char *) NULL},
790
+ { 0x0002, (char *) "ISO", (char *) NULL},
791
+ { 0x0003, (char *) "ColorMode", (char *) NULL},
792
+ { 0x0004, (char *) "Quality", (char *) NULL},
793
+ { 0x0005, (char *) "WhiteBalance", (char *) NULL},
794
+ { 0x0006, (char *) "Sharpness", (char *) NULL},
795
+ { 0x0007, (char *) "FocusMode", (char *) NULL},
796
+ { 0x0008, (char *) "FlashSetting", (char *) NULL},
797
+ { 0x0009, (char *) "FlashType", (char *) NULL},
798
+ { 0x000B, (char *) "WhiteBalanceFineTune", (char *) NULL},
799
+ { 0x000F, (char *) "ISOSelection", (char *) NULL},
800
+ { 0x0010, (char *) "DataDump", (char *) NULL},
801
+ { 0x0080, (char *) "ImageAdjustment", (char *) NULL},
802
+ { 0x0082, (char *) "AuxiliaryLens", (char *) NULL},
803
+ { 0x0085, (char *) "ManualFocusDistance", (char *) NULL},
804
+ { 0x0086, (char *) "DigitalZoom", (char *) NULL},
805
+ { 0x0088, (char *) "AFInfo", (char *) NULL},
806
+ { 0x0089, (char *) "ShootingMode", (char *) NULL},
807
+ { 0x008D, (char *) "ColorMode", (char *) NULL},
808
+ { 0x008F, (char *) "SceneMode", (char *) NULL},
809
+ { 0x0092, (char *) "HueAdjustment", (char *) NULL},
810
+ { 0x0094, (char *) "Saturation", (char *) NULL},
811
+ { 0x0095, (char *) "NoiseReduction", (char *) NULL},
812
+ { 0x0E00, (char *) "PrintIM", (char *) NULL},
813
+ { 0x0000, (char *) NULL, (char *) NULL}
814
+ };
815
+
816
+ /**
817
+ The type-3 directory is for D-Series cameras such as the D1 and D100.
818
+ see http://www.timelesswanderings.net/equipment/D100/NEF.html
819
+ */
820
+ static TagInfo
821
+ exif_nikon_type3_tag_table[] =
822
+ {
823
+ { 0x0001, (char *) "MakerNoteVersion", (char *) NULL},
824
+ { 0x0002, (char *) "ISO", (char *) NULL},
825
+ { 0x0003, (char *) "ColorMode", (char *) NULL},
826
+ { 0x0004, (char *) "Quality", (char *) NULL},
827
+ { 0x0005, (char *) "WhiteBalance", (char *) NULL},
828
+ { 0x0006, (char *) "Sharpness", (char *) NULL},
829
+ { 0x0007, (char *) "FocusMode", (char *) NULL},
830
+ { 0x0008, (char *) "FlashSetting", (char *) NULL},
831
+ { 0x0009, (char *) "FlashType", (char *) NULL},
832
+ { 0x000B, (char *) "WhiteBalanceFineTune", (char *) NULL},
833
+ { 0x000C, (char *) "WB_RBLevels", (char *) NULL},
834
+ { 0x000D, (char *) "ProgramShift", (char *) NULL},
835
+ { 0x000E, (char *) "ExposureDifference", (char *) NULL},
836
+ { 0x000F, (char *) "ISOSelection", (char *) NULL},
837
+ { 0x0010, (char *) "DataDump", (char *) NULL},
838
+ { 0x0011, (char *) "PreviewIFD", (char *) NULL},
839
+ { 0x0012, (char *) "FlashExposureComp", (char *) NULL},
840
+ { 0x0013, (char *) "ISOSetting", (char *) NULL},
841
+ { 0x0014, (char *) "ColorBalanceA", (char *) NULL},
842
+ { 0x0016, (char *) "ImageBoundary", (char *) NULL},
843
+ { 0x0017, (char *) "FlashExposureComp", (char *) NULL},
844
+ { 0x0018, (char *) "FlashExposureBracketValue", (char *) NULL},
845
+ { 0x0019, (char *) "ExposureBracketValue", (char *) NULL},
846
+ { 0x001A, (char *) "ImageProcessing", (char *) NULL},
847
+ { 0x001B, (char *) "CropHiSpeed", (char *) NULL},
848
+ { 0x001C, (char *) "ExposureTuning", (char *) NULL},
849
+ { 0x001D, (char *) "SerialNumber", (char *) NULL},
850
+ { 0x001E, (char *) "ColorSpace", (char *) NULL},
851
+ { 0x001F, (char *) "VRInfo", (char *) NULL},
852
+ { 0x0020, (char *) "ImageAuthentication", (char *) NULL},
853
+ { 0x0022, (char *) "ActiveD-Lighting", (char *) NULL},
854
+ { 0x0023, (char *) "PictureControl", (char *) NULL},
855
+ { 0x0024, (char *) "WorldTime", (char *) NULL},
856
+ { 0x0025, (char *) "ISOInfo", (char *) NULL},
857
+ { 0x002A, (char *) "VignetteControl", (char *) NULL},
858
+ { 0x002B, (char *) "DistortInfo", (char *) NULL},
859
+ { 0x0080, (char *) "ImageAdjustment", (char *) NULL},
860
+ { 0x0081, (char *) "ToneComp", (char *) NULL},
861
+ { 0x0082, (char *) "AuxiliaryLens", (char *) NULL},
862
+ { 0x0083, (char *) "LensType", (char *) NULL},
863
+ { 0x0084, (char *) "Lens", (char *) NULL},
864
+ { 0x0085, (char *) "ManualFocusDistance", (char *) NULL},
865
+ { 0x0086, (char *) "DigitalZoom", (char *) NULL},
866
+ { 0x0087, (char *) "FlashMode", (char *) NULL},
867
+ { 0x0088, (char *) "AFInfo", (char *) NULL},
868
+ { 0x0089, (char *) "ShootingMode", (char *) NULL},
869
+ { 0x008B, (char *) "LensFStops", (char *) NULL},
870
+ { 0x008C, (char *) "ContrastCurve", (char *) NULL},
871
+ { 0x008D, (char *) "ColorHue", (char *) NULL},
872
+ { 0x008F, (char *) "SceneMode", (char *) NULL},
873
+ { 0x0090, (char *) "LightSource", (char *) NULL},
874
+ { 0x0091, (char *) "ShotInfo", (char *) NULL},
875
+ { 0x0092, (char *) "HueAdjustment", (char *) NULL},
876
+ { 0x0093, (char *) "NEFCompression", (char *) NULL},
877
+ { 0x0094, (char *) "Saturation", (char *) NULL},
878
+ { 0x0095, (char *) "NoiseReduction", (char *) NULL},
879
+ { 0x0096, (char *) "LinearizationTable", (char *) NULL},
880
+ { 0x0097, (char *) "ColorBalance", (char *) NULL},
881
+ { 0x0098, (char *) "LensData", (char *) NULL},
882
+ { 0x0099, (char *) "RawImageCenter", (char *) NULL},
883
+ { 0x009A, (char *) "SensorPixelSize", (char *) NULL},
884
+ { 0x009C, (char *) "SceneAssist", (char *) NULL},
885
+ { 0x009E, (char *) "RetouchHistory", (char *) NULL},
886
+ { 0x00A0, (char *) "SerialNumber", (char *) NULL},
887
+ { 0x00A2, (char *) "ImageDataSize", (char *) NULL},
888
+ { 0x00A5, (char *) "ImageCount", (char *) NULL},
889
+ { 0x00A6, (char *) "DeletedImageCount", (char *) NULL},
890
+ { 0x00A7, (char *) "ShutterCount", (char *) NULL},
891
+ { 0x00A8, (char *) "FlashInfo", (char *) NULL},
892
+ { 0x00A9, (char *) "ImageOptimization", (char *) NULL},
893
+ { 0x00AA, (char *) "Saturation", (char *) NULL},
894
+ { 0x00AB, (char *) "VariProgram", (char *) NULL},
895
+ { 0x00AC, (char *) "ImageStabilization", (char *) NULL},
896
+ { 0x00AD, (char *) "AFResponse", (char *) NULL},
897
+ { 0x00B0, (char *) "MultiExposure", (char *) NULL},
898
+ { 0x00B1, (char *) "HighISONoiseReduction", (char *) NULL},
899
+ { 0x00B3, (char *) "ToningEffect", (char *) NULL},
900
+ { 0x00B6, (char *) "PowerUpTime", (char *) NULL},
901
+ { 0x00B7, (char *) "AFInfo2", (char *) NULL},
902
+ { 0x00B8, (char *) "FileInfo", (char *) NULL},
903
+ { 0x00B9, (char *) "AFTune", (char *) NULL},
904
+ { 0x00BD, (char *) "PictureControl", (char *) NULL},
905
+ { 0x0E00, (char *) "PrintIM", (char *) NULL},
906
+ { 0x0E01, (char *) "NikonCaptureData", (char *) NULL},
907
+ { 0x0E09, (char *) "NikonCaptureVersion", (char *) NULL},
908
+ { 0x0E0E, (char *) "NikonCaptureOffsets", (char *) NULL},
909
+ { 0x0E10, (char *) "NikonScanIFD", (char *) NULL},
910
+ { 0x0E1D, (char *) "NikonICCProfile", (char *) NULL},
911
+ { 0x0E1E, (char *) "NikonCaptureOutput", (char *) NULL},
912
+ { 0x0E22, (char *) "NEFBitDepth", (char *) NULL},
913
+ { 0x0000, (char *) NULL, (char *) NULL}
914
+ };
915
+
916
+ /**
917
+ Panasonic / Leica maker note
918
+ */
919
+ static TagInfo
920
+ exif_panasonic_tag_table[] =
921
+ {
922
+ { 0x0001, (char *) "ImageQuality", (char *) NULL},
923
+ { 0x0002, (char *) "FirmwareVersion", (char *) NULL},
924
+ { 0x0003, (char *) "WhiteBalance", (char *) NULL},
925
+ { 0x0007, (char *) "FocusMode", (char *) NULL},
926
+ { 0x000F, (char *) "AFAreaMode", (char *) NULL},
927
+ { 0x001A, (char *) "ImageStabilization", (char *) NULL},
928
+ { 0x001C, (char *) "MacroMode", (char *) NULL},
929
+ { 0x001F, (char *) "ShootingMode", (char *) NULL},
930
+ { 0x0020, (char *) "Audio", (char *) NULL},
931
+ { 0x0021, (char *) "DataDump", (char *) NULL},
932
+ { 0x0022, (char *) "EasyMode", (char *) NULL},
933
+ { 0x0023, (char *) "WhiteBalanceBias", (char *) NULL},
934
+ { 0x0024, (char *) "FlashBias", (char *) NULL},
935
+ { 0x0025, (char *) "InternalSerialNumber", (char *) NULL},
936
+ { 0x0026, (char *) "PanasonicExifVersion", (char *) NULL},
937
+ { 0x0028, (char *) "ColorEffect", (char *) NULL},
938
+ { 0x0029, (char *) "TimeSincePowerOn", (char *) NULL},
939
+ { 0x002A, (char *) "BurstMode", (char *) NULL},
940
+ { 0x002B, (char *) "SequenceNumber", (char *) NULL},
941
+ { 0x002C, (char *) "ContrastMode", (char *) NULL},
942
+ { 0x002D, (char *) "NoiseReduction", (char *) NULL},
943
+ { 0x002E, (char *) "SelfTimer", (char *) NULL},
944
+ { 0x0030, (char *) "Rotation", (char *) NULL},
945
+ { 0x0031, (char *) "AFAssistLamp", (char *) NULL},
946
+ { 0x0032, (char *) "ColorMode", (char *) NULL},
947
+ { 0x0033, (char *) "BabyAge_0x0033", (char *) NULL},
948
+ { 0x0034, (char *) "OpticalZoomMode", (char *) NULL},
949
+ { 0x0035, (char *) "ConversionLens", (char *) NULL},
950
+ { 0x0036, (char *) "TravelDay", (char *) NULL},
951
+ { 0x0039, (char *) "Contrast", (char *) NULL},
952
+ { 0x003A, (char *) "WorldTimeLocation", (char *) NULL},
953
+ { 0x003B, (char *) "TextStamp_0x003B", (char *) NULL},
954
+ { 0x003C, (char *) "ProgramISO", (char *) NULL},
955
+ { 0x003D, (char *) "AdvancedSceneMode", (char *) NULL},
956
+ { 0x003E, (char *) "TextStamp_0x003E", (char *) NULL},
957
+ { 0x003F, (char *) "FacesDetected", (char *) NULL},
958
+ { 0x0040, (char *) "Saturation", (char *) NULL},
959
+ { 0x0041, (char *) "Sharpness", (char *) NULL},
960
+ { 0x0042, (char *) "FilmMode", (char *) NULL},
961
+ { 0x0046, (char *) "WBAdjustAB", (char *) NULL},
962
+ { 0x0047, (char *) "WBAdjustGM", (char *) NULL},
963
+ { 0x004B, (char *) "PanasonicImageWidth", (char *) NULL},
964
+ { 0x004C, (char *) "PanasonicImageHeight", (char *) NULL},
965
+ { 0x004D, (char *) "AFPointPosition", (char *) NULL},
966
+ { 0x004E, (char *) "FaceDetInfo", (char *) "Panasonic FaceDetInfo Tags"},
967
+ { 0x0051, (char *) "LensType", (char *) NULL},
968
+ { 0x0052, (char *) "LensSerialNumber", (char *) NULL},
969
+ { 0x0053, (char *) "AccessoryType", (char *) NULL},
970
+ { 0x0059, (char *) "Transform", (char *) NULL},
971
+ { 0x005D, (char *) "IntelligentExposure", (char *) NULL},
972
+ { 0x0061, (char *) "FaceRecInfo", (char *) "Panasonic FaceRecInfo Tags"},
973
+ { 0x0062, (char *) "FlashWarning", (char *) NULL},
974
+ { 0x0063, (char *) "RecognizedFaceFlags?", (char *) NULL},
975
+ { 0x0065, (char *) "Title", (char *) NULL},
976
+ { 0x0066, (char *) "BabyName", (char *) NULL},
977
+ { 0x0067, (char *) "Location", (char *) NULL},
978
+ { 0x0069, (char *) "Country", (char *) NULL},
979
+ { 0x006B, (char *) "State", (char *) NULL},
980
+ { 0x006D, (char *) "City", (char *) NULL},
981
+ { 0x006F, (char *) "Landmark", (char *) NULL},
982
+ { 0x0070, (char *) "IntelligentResolution", (char *) NULL},
983
+ { 0x0079, (char *) "IntelligentD-Range", (char *) NULL},
984
+ { 0x0E00, (char *) "PrintIM", (char *) NULL},
985
+ { 0x8000, (char *) "MakerNoteVersion", (char *) NULL},
986
+ { 0x8001, (char *) "SceneMode", (char *) NULL},
987
+ { 0x8004, (char *) "WBRedLevel", (char *) NULL},
988
+ { 0x8005, (char *) "WBGreenLevel", (char *) NULL},
989
+ { 0x8006, (char *) "WBBlueLevel", (char *) NULL},
990
+ { 0x8007, (char *) "FlashFired", (char *) NULL},
991
+ { 0x8008, (char *) "TextStamp_0x8008", (char *) NULL},
992
+ { 0x8009, (char *) "TextStamp_0x8009", (char *) NULL},
993
+ { 0x8010, (char *) "BabyAge_0x8010", (char *) NULL},
994
+ { 0x8012, (char *) "Transform", (char *) NULL},
995
+ { 0x0000, (char *) NULL, (char *) NULL}
996
+ };
997
+
998
+ /**
999
+ Pentax (Asahi) maker note type 1
1000
+ */
1001
+ static TagInfo
1002
+ exif_asahi_tag_table[] =
1003
+ {
1004
+ { 0x0001, (char *) "Capture Mode", (char *) NULL},
1005
+ { 0x0002, (char *) "Quality Level", (char *) NULL},
1006
+ { 0x0003, (char *) "Focus Mode", (char *) NULL},
1007
+ { 0x0004, (char *) "Flash Mode", (char *) NULL},
1008
+ { 0x0007, (char *) "White Balance", (char *) NULL},
1009
+ { 0x000A, (char *) "Digital Zoom", (char *) NULL},
1010
+ { 0x000B, (char *) "Sharpness", (char *) NULL},
1011
+ { 0x000C, (char *) "Contrast", (char *) NULL},
1012
+ { 0x000D, (char *) "Saturation", (char *) NULL},
1013
+ { 0x0014, (char *) "ISO Speed", (char *) NULL},
1014
+ { 0x0017, (char *) "Color", (char *) NULL},
1015
+ { 0x0E00, (char *) "PrintIM", (char *) NULL},
1016
+ { 0x1000, (char *) "Time Zone", (char *) NULL},
1017
+ { 0x1001, (char *) "Daylight Savings", (char *) NULL},
1018
+ { 0x0000, (char *) NULL, (char *) NULL}
1019
+ };
1020
+
1021
+ /**
1022
+ Pentax maker note type 2
1023
+ */
1024
+ static TagInfo
1025
+ exif_pentax_tag_table[] =
1026
+ {
1027
+ { 0x0000, (char *) "PentaxVersion", (char *) NULL},
1028
+ { 0x0001, (char *) "PentaxMode", (char *) NULL},
1029
+ { 0x0002, (char *) "PreviewImageSize", (char *) NULL},
1030
+ { 0x0003, (char *) "PreviewImageLength", (char *) NULL},
1031
+ { 0x0004, (char *) "PreviewImageStart", (char *) NULL},
1032
+ { 0x0005, (char *) "PentaxModelID", (char *) "Pentax PentaxModelID Values"},
1033
+ { 0x0006, (char *) "Date", (char *) NULL},
1034
+ { 0x0007, (char *) "Time", (char *) NULL},
1035
+ { 0x0008, (char *) "Quality", (char *) NULL},
1036
+ { 0x0009, (char *) "PentaxImageSize", (char *) NULL},
1037
+ { 0x000B, (char *) "PictureMode", (char *) NULL},
1038
+ { 0x000C, (char *) "FlashMode", (char *) NULL},
1039
+ { 0x000D, (char *) "FocusMode", (char *) NULL},
1040
+ { 0x000E, (char *) "AFPointSelected", (char *) NULL},
1041
+ { 0x000F, (char *) "AFPointsInFocus", (char *) NULL},
1042
+ { 0x0010, (char *) "FocusPosition", (char *) NULL},
1043
+ { 0x0012, (char *) "ExposureTime", (char *) NULL},
1044
+ { 0x0013, (char *) "FNumber", (char *) NULL},
1045
+ { 0x0014, (char *) "ISO", (char *) NULL},
1046
+ { 0x0015, (char *) "LightReading", (char *) NULL},
1047
+ { 0x0016, (char *) "ExposureCompensation", (char *) NULL},
1048
+ { 0x0017, (char *) "MeteringMode", (char *) NULL},
1049
+ { 0x0018, (char *) "AutoBracketing", (char *) NULL},
1050
+ { 0x0019, (char *) "WhiteBalance", (char *) NULL},
1051
+ { 0x001A, (char *) "WhiteBalanceMode", (char *) NULL},
1052
+ { 0x001B, (char *) "BlueBalance", (char *) NULL},
1053
+ { 0x001C, (char *) "RedBalance", (char *) NULL},
1054
+ { 0x001D, (char *) "FocalLength", (char *) NULL},
1055
+ { 0x001E, (char *) "DigitalZoom", (char *) NULL},
1056
+ { 0x001F, (char *) "Saturation", (char *) NULL},
1057
+ { 0x0020, (char *) "Contrast", (char *) NULL},
1058
+ { 0x0021, (char *) "Sharpness", (char *) NULL},
1059
+ { 0x0022, (char *) "WorldTimeLocation", (char *) NULL},
1060
+ { 0x0023, (char *) "HometownCity", (char *) "Pentax City Values"},
1061
+ { 0x0024, (char *) "DestinationCity", (char *) "Pentax City Values"},
1062
+ { 0x0025, (char *) "HometownDST", (char *) NULL},
1063
+ { 0x0026, (char *) "DestinationDST", (char *) NULL},
1064
+ { 0x0027, (char *) "DSPFirmwareVersion", (char *) NULL},
1065
+ { 0x0028, (char *) "CPUFirmwareVersion", (char *) NULL},
1066
+ { 0x0029, (char *) "FrameNumber", (char *) NULL},
1067
+ { 0x002D, (char *) "EffectiveLV", (char *) NULL},
1068
+ { 0x0032, (char *) "ImageProcessing", (char *) NULL},
1069
+ { 0x0033, (char *) "PictureMode", (char *) NULL},
1070
+ { 0x0034, (char *) "DriveMode", (char *) NULL},
1071
+ { 0x0035, (char *) "SensorSize", (char *) NULL},
1072
+ { 0x0037, (char *) "ColorSpace", (char *) NULL},
1073
+ { 0x0039, (char *) "RawImageSize", (char *) NULL},
1074
+ { 0x003C, (char *) "AFPointsInFocus", (char *) NULL},
1075
+ { 0x003E, (char *) "PreviewImageBorders", (char *) NULL},
1076
+ { 0x003F, (char *) "LensType", (char *) "Pentax LensType Values"},
1077
+ { 0x0040, (char *) "SensitivityAdjust", (char *) NULL},
1078
+ { 0x0041, (char *) "ImageProcessingCount", (char *) NULL},
1079
+ { 0x0047, (char *) "CameraTemperature", (char *) NULL},
1080
+ { 0x0048, (char *) "AELock", (char *) NULL},
1081
+ { 0x0049, (char *) "NoiseReduction", (char *) NULL},
1082
+ { 0x004D, (char *) "FlashExposureComp", (char *) NULL},
1083
+ { 0x004F, (char *) "ImageTone", (char *) NULL},
1084
+ { 0x0050, (char *) "ColorTemperature", (char *) NULL},
1085
+ { 0x005C, (char *) "ShakeReductionInfo", (char *) "Pentax SRInfo Tags"},
1086
+ { 0x005D, (char *) "ShutterCount", (char *) NULL},
1087
+ { 0x0060, (char *) "FaceInfo", (char *) "Pentax FaceInfo Tags"},
1088
+ { 0x0067, (char *) "Hue", (char *) NULL},
1089
+ { 0x0068, (char *) "AWBInfo", (char *) "Pentax AWBInfo Tags"},
1090
+ { 0x0069, (char *) "DynamicRangeExpansion", (char *) NULL},
1091
+ { 0x006B, (char *) "TimeInfo", (char *) "Pentax TimeInfo Tags"},
1092
+ { 0x006C, (char *) "HighLowKeyAdj", (char *) NULL},
1093
+ { 0x006D, (char *) "ContrastHighlight", (char *) NULL},
1094
+ { 0x006E, (char *) "ContrastShadow", (char *) NULL},
1095
+ { 0x006F, (char *) "ContrastHighlightShadowAdj", (char *) NULL},
1096
+ { 0x0070, (char *) "FineSharpness", (char *) NULL},
1097
+ { 0x0071, (char *) "HighISONoiseReduction", (char *) NULL},
1098
+ { 0x0072, (char *) "AFAdjustment", (char *) NULL},
1099
+ { 0x0073, (char *) "MonochromeFilterEffect", (char *) NULL},
1100
+ { 0x0074, (char *) "MonochromeToning", (char *) NULL},
1101
+ { 0x0076, (char *) "FaceDetect", (char *) NULL},
1102
+ { 0x0077, (char *) "FaceDetectFrameSize", (char *) NULL},
1103
+ { 0x0079, (char *) "ShadowCompensation", (char *) NULL},
1104
+ { 0x007A, (char *) "ISOAutoParameters", (char *) NULL},
1105
+ { 0x007B, (char *) "CrossProcess", (char *) NULL},
1106
+ { 0x007D, (char *) "LensCorr", (char *) "Pentax LensCorr Tags"},
1107
+ { 0x007F, (char *) "BleachBypassToning", (char *) NULL},
1108
+ { 0x0200, (char *) "BlackPoint", (char *) NULL},
1109
+ { 0x0201, (char *) "WhitePoint", (char *) NULL},
1110
+ { 0x0203, (char *) "ColorMatrixA", (char *) NULL},
1111
+ { 0x0204, (char *) "ColorMatrixB", (char *) NULL},
1112
+ { 0x0205, (char *) "CameraSettings", (char *) "Pentax CameraSettings Tags"},
1113
+ { 0x0206, (char *) "AEInfo", (char *) "Pentax AEInfo Tags"},
1114
+ { 0x0207, (char *) "LensInfo", (char *) "Pentax LensInfo Tags"},
1115
+ { 0x0208, (char *) "FlashInfo", (char *) "Pentax FlashInfo Tags"},
1116
+ { 0x0209, (char *) "AEMeteringSegments", (char *) NULL},
1117
+ { 0x020A, (char *) "FlashMeteringSegments", (char *) NULL},
1118
+ { 0x020B, (char *) "SlaveFlashMeteringSegments", (char *) NULL},
1119
+ { 0x020D, (char *) "WB_RGGBLevelsDaylight", (char *) NULL},
1120
+ { 0x020E, (char *) "WB_RGGBLevelsShade", (char *) NULL},
1121
+ { 0x020F, (char *) "WB_RGGBLevelsCloudy", (char *) NULL},
1122
+ { 0x0210, (char *) "WB_RGGBLevelsTungsten", (char *) NULL},
1123
+ { 0x0211, (char *) "WB_RGGBLevelsFluorescentD", (char *) NULL},
1124
+ { 0x0212, (char *) "WB_RGGBLevelsFluorescentN", (char *) NULL},
1125
+ { 0x0213, (char *) "WB_RGGBLevelsFluorescentW", (char *) NULL},
1126
+ { 0x0214, (char *) "WB_RGGBLevelsFlash", (char *) NULL},
1127
+ { 0x0215, (char *) "CameraInfo", (char *) "Pentax CameraInfo Tags"},
1128
+ { 0x0216, (char *) "BatteryInfo", (char *) "Pentax BatteryInfo Tags"},
1129
+ { 0x021B, (char *) "SaturationInfo", (char *) NULL},
1130
+ { 0x021F, (char *) "AFInfo", (char *) "Pentax AFInfo Tags"},
1131
+ { 0x0222, (char *) "ColorInfo", (char *) "Pentax ColorInfo Tags"},
1132
+ { 0x0224, (char *) "EVStepInfo", (char *) "Pentax EVStepInfo Tags"},
1133
+ { 0x0226, (char *) "ShotInfo", (char *) "Pentax ShotInfo Tags"},
1134
+ { 0x0227, (char *) "FacePos", (char *) "Pentax FacePos Tags"},
1135
+ { 0x0228, (char *) "FaceSize", (char *) "Pentax FaceSize Tags"},
1136
+ { 0x0229, (char *) "SerialNumber", (char *) NULL},
1137
+ { 0x022A, (char *) "FilterInfo", (char *) "Pentax FilterInfo Tags"},
1138
+ { 0x022B, (char *) "LevelInfo", (char *) "Pentax LevelInfo Tags"},
1139
+ { 0x022E, (char *) "Artist", (char *) NULL},
1140
+ { 0x022F, (char *) "Copyright", (char *) NULL},
1141
+ { 0x0230, (char *) "FirmwareVersion", (char *) NULL},
1142
+ { 0x0231, (char *) "ContrastDetectAFArea", (char *) NULL},
1143
+ { 0x0235, (char *) "CrossProcessParams", (char *) NULL},
1144
+ { 0x03FE, (char *) "DataDump", (char *) NULL},
1145
+ { 0x0402, (char *) "ToneCurve", (char *) NULL},
1146
+ { 0x0403, (char *) "ToneCurves", (char *) NULL},
1147
+ { 0x0E00, (char *) "PrintIM", (char *) NULL},
1148
+ { 0x1000, (char *) "HometownCityCode", (char *) NULL},
1149
+ { 0x1001, (char *) "DestinationCityCode", (char *) NULL},
1150
+ { 0x2000, (char *) "PreviewImageData", (char *) NULL},
1151
+ { 0x0000, (char *) NULL, (char *) NULL}
1152
+ };
1153
+
1154
+ /**
1155
+ Sony maker note
1156
+ */
1157
+ static TagInfo
1158
+ exif_sony_tag_table[] =
1159
+ {
1160
+ { 0x0102, (char *) "Quality", (char *) NULL},
1161
+ { 0x0104, (char *) "FlashExposureComp", (char *) NULL},
1162
+ { 0x0105, (char *) "Teleconverter", (char *) NULL},
1163
+ { 0x0112, (char *) "WhiteBalanceFineTune", (char *) NULL},
1164
+ { 0x0114, (char *) "CameraSettings", (char *) NULL},
1165
+ { 0x0115, (char *) "WhiteBalance", (char *) NULL},
1166
+ { 0x0E00, (char *) "PrintIM", (char *) NULL},
1167
+ { 0x1000, (char *) "MultiBurstMode", (char *) NULL},
1168
+ { 0x1001, (char *) "MultiBurstImageWidth", (char *) NULL},
1169
+ { 0x1002, (char *) "MultiBurstImageHeight", (char *) NULL},
1170
+ { 0x1003, (char *) "Panorama", (char *) NULL},
1171
+ { 0x2001, (char *) "PreviewImage", (char *) NULL},
1172
+ { 0x2004, (char *) "Contrast", (char *) NULL},
1173
+ { 0x2005, (char *) "Saturation", (char *) NULL},
1174
+ { 0x2006, (char *) "Sharpness", (char *) NULL},
1175
+ { 0x2007, (char *) "Brightness", (char *) NULL},
1176
+ { 0x2008, (char *) "LongExposureNoiseReduction", (char *) NULL},
1177
+ { 0x2009, (char *) "HighISONoiseReduction", (char *) NULL},
1178
+ { 0x200A, (char *) "HDR", (char *) NULL},
1179
+ { 0x200B, (char *) "MultiFrameNoiseReduction", (char *) NULL},
1180
+ { 0x3000, (char *) "ShotInfo", (char *) NULL},
1181
+ { 0xB000, (char *) "FileFormat", (char *) NULL},
1182
+ { 0xB001, (char *) "SonyModelID", (char *) NULL},
1183
+ { 0xB020, (char *) "ColorReproduction", (char *) NULL},
1184
+ { 0xB021, (char *) "ColorTemperature", (char *) NULL},
1185
+ { 0xB022, (char *) "ColorCompensationFilter", (char *) NULL},
1186
+ { 0xB023, (char *) "SceneMode", (char *) NULL},
1187
+ { 0xB024, (char *) "ZoneMatching", (char *) NULL},
1188
+ { 0xB025, (char *) "DynamicRangeOptimizer", (char *) NULL},
1189
+ { 0xB026, (char *) "ImageStabilization", (char *) NULL},
1190
+ { 0xB027, (char *) "LensType", (char *) NULL},
1191
+ { 0xB028, (char *) "MinoltaMakerNote", (char *) NULL},
1192
+ { 0xB029, (char *) "ColorMode", (char *) NULL},
1193
+ { 0xB02B, (char *) "FullImageSize", (char *) NULL},
1194
+ { 0xB02C, (char *) "PreviewImageSize", (char *) NULL},
1195
+ { 0xB040, (char *) "Macro", (char *) NULL},
1196
+ { 0xB041, (char *) "ExposureMode", (char *) NULL},
1197
+ { 0xB042, (char *) "FocusMode", (char *) NULL},
1198
+ { 0xB043, (char *) "AFMode", (char *) NULL},
1199
+ { 0xB044, (char *) "AFIlluminator", (char *) NULL},
1200
+ { 0xB047, (char *) "Quality2", (char *) NULL},
1201
+ { 0xB048, (char *) "FlashLevel", (char *) NULL},
1202
+ { 0xB049, (char *) "ReleaseMode", (char *) NULL},
1203
+ { 0xB04A, (char *) "SequenceNumber", (char *) NULL},
1204
+ { 0xB04B, (char *) "Anti-Blur", (char *) NULL},
1205
+ { 0xB04E, (char *) "LongExposureNoiseReduction", (char *) NULL},
1206
+ { 0xB04F, (char *) "DynamicRangeOptimizer", (char *) NULL},
1207
+ { 0xB052, (char *) "IntelligentAuto", (char *) NULL},
1208
+ { 0xB054, (char *) "WhiteBalance2", (char *) NULL},
1209
+ { 0x0000, (char *) NULL, (char *) NULL}
1210
+ };
1211
+
1212
+ /**
1213
+ Sigma SD1 maker note
1214
+ */
1215
+ static TagInfo
1216
+ exif_sigma_sd1_tag_table[] =
1217
+ {
1218
+ { 0x0002, (char *) "SerialNumber", (char *) NULL},
1219
+ { 0x0003, (char *) "DriveMode", (char *) NULL},
1220
+ { 0x0004, (char *) "ResolutionMode", (char *) NULL},
1221
+ { 0x0005, (char *) "AFMode", (char *) NULL},
1222
+ { 0x0006, (char *) "FocusSetting", (char *) NULL},
1223
+ { 0x0007, (char *) "WhiteBalance", (char *) NULL},
1224
+ { 0x0008, (char *) "ExposureMode", (char *) NULL},
1225
+ { 0x0009, (char *) "MeteringMode", (char *) NULL},
1226
+ { 0x000A, (char *) "LensFocalRange", (char *) NULL},
1227
+ { 0x000B, (char *) "ColorSpace", (char *) NULL},
1228
+ { 0x000C, (char *) "ExposureCompensation", (char *) NULL},
1229
+ { 0x000D, (char *) "Contrast", (char *) NULL},
1230
+ { 0x000E, (char *) "Shadow", (char *) NULL},
1231
+ { 0x000F, (char *) "Highlight", (char *) NULL},
1232
+ { 0x0010, (char *) "Saturation", (char *) NULL},
1233
+ { 0x0011, (char *) "Sharpness", (char *) NULL},
1234
+ { 0x0012, (char *) "X3FillLight", (char *) NULL},
1235
+ { 0x0014, (char *) "ColorAdjustment", (char *) NULL},
1236
+ { 0x0015, (char *) "AdjustmentMode", (char *) NULL},
1237
+ { 0x0016, (char *) "Quality", (char *) NULL},
1238
+ { 0x0017, (char *) "Firmware", (char *) NULL},
1239
+ { 0x0018, (char *) "Software", (char *) NULL},
1240
+ { 0x0019, (char *) "AutoBracket", (char *) NULL},
1241
+ { 0x001A, (char *) "ChrominanceNoiseReduction", (char *) NULL},
1242
+ { 0x001B, (char *) "LuminanceNoiseReduction", (char *) NULL},
1243
+ { 0x001C, (char *) "PreviewImageStart", (char *) NULL},
1244
+ { 0x001D, (char *) "PreviewImageLength", (char *) NULL},
1245
+ { 0x001F, (char *) "MakerNoteVersion", (char *) NULL},
1246
+ { 0x0026, (char *) "FileFormat", (char *) NULL},
1247
+ { 0x002C, (char *) "ColorMode", (char *) NULL},
1248
+ { 0x0030, (char *) "Calibration", (char *) NULL},
1249
+ { 0x0048, (char *) "LensApertureRange", (char *) NULL},
1250
+ { 0x0049, (char *) "FNumber", (char *) NULL},
1251
+ { 0x004A, (char *) "ExposureTime", (char *) NULL},
1252
+ { 0x004B, (char *) "ExposureTime2", (char *) NULL},
1253
+ { 0x004D, (char *) "ExposureCompensation_SD1", (char *) NULL},
1254
+ { 0x0055, (char *) "SensorTemperature", (char *) NULL},
1255
+ { 0x0056, (char *) "FlashExposureComp", (char *) NULL},
1256
+ { 0x0057, (char *) "Firmware_SD1", (char *) NULL},
1257
+ { 0x0058, (char *) "WhiteBalance", (char *) NULL},
1258
+ { 0x0000, (char *) NULL, (char *) NULL}
1259
+ };
1260
+
1261
+ /**
1262
+ Sigma / Foveon maker note (others than SD1 models)
1263
+ NB: many tags are not consistent between different models
1264
+ */
1265
+ static TagInfo
1266
+ exif_sigma_foveon_tag_table[] =
1267
+ {
1268
+ { 0x0002, (char *) "SerialNumber", (char *) NULL},
1269
+ { 0x0003, (char *) "DriveMode", (char *) NULL},
1270
+ { 0x0004, (char *) "ResolutionMode", (char *) NULL},
1271
+ { 0x0005, (char *) "AFMode", (char *) NULL},
1272
+ { 0x0006, (char *) "FocusSetting", (char *) NULL},
1273
+ { 0x0007, (char *) "WhiteBalance", (char *) NULL},
1274
+ { 0x0008, (char *) "ExposureMode", (char *) NULL},
1275
+ { 0x0009, (char *) "MeteringMode", (char *) NULL},
1276
+ { 0x000A, (char *) "LensFocalRange", (char *) NULL},
1277
+ { 0x000B, (char *) "ColorSpace", (char *) NULL},
1278
+ { 0x000C, (char *) "ExposureCompensation", (char *) NULL},
1279
+ { 0x000D, (char *) "Contrast", (char *) NULL},
1280
+ { 0x000E, (char *) "Shadow", (char *) NULL},
1281
+ { 0x000F, (char *) "Highlight", (char *) NULL},
1282
+ { 0x0010, (char *) "Saturation", (char *) NULL},
1283
+ { 0x0011, (char *) "Sharpness", (char *) NULL},
1284
+ { 0x0012, (char *) "X3FillLight", (char *) NULL},
1285
+ { 0x0014, (char *) "ColorAdjustment", (char *) NULL},
1286
+ { 0x0015, (char *) "AdjustmentMode", (char *) NULL},
1287
+ { 0x0016, (char *) "Quality", (char *) NULL},
1288
+ { 0x0017, (char *) "Firmware", (char *) NULL},
1289
+ { 0x0018, (char *) "Software", (char *) NULL},
1290
+ { 0x0019, (char *) "AutoBracket", (char *) NULL},
1291
+ { 0x001A, (char *) "PreviewImageStart", (char *) NULL},
1292
+ { 0x001B, (char *) "PreviewImageLength", (char *) NULL},
1293
+ { 0x001C, (char *) "PreviewImageSize", (char *) NULL},
1294
+ { 0x001D, (char *) "MakerNoteVersion", (char *) NULL},
1295
+ { 0x001F, (char *) "AFPoint", (char *) NULL},
1296
+ { 0x0022, (char *) "FileFormat", (char *) NULL},
1297
+ { 0x0024, (char *) "Calibration", (char *) NULL},
1298
+ { 0x002C, (char *) "ColorMode", (char *) NULL},
1299
+ { 0x0030, (char *) "LensApertureRange", (char *) NULL},
1300
+ { 0x0031, (char *) "FNumber", (char *) NULL},
1301
+ { 0x0032, (char *) "ExposureTime", (char *) NULL},
1302
+ { 0x0033, (char *) "ExposureTime2", (char *) NULL},
1303
+ { 0x0034, (char *) "BurstShot", (char *) NULL},
1304
+ { 0x0035, (char *) "ExposureCompensation", (char *) NULL},
1305
+ { 0x0039, (char *) "SensorTemperature", (char *) NULL},
1306
+ { 0x003A, (char *) "FlashExposureComp", (char *) NULL},
1307
+ { 0x003B, (char *) "Firmware", (char *) NULL},
1308
+ { 0x003C, (char *) "WhiteBalance", (char *) NULL},
1309
+ { 0x003D, (char *) "PictureMode", (char *) NULL},
1310
+ { 0x0000, (char *) NULL, (char *) NULL}
1311
+ };
1312
+
1313
+ // --------------------------------------------------------------------------
1314
+ // IPTC tags definition
1315
+ // --------------------------------------------------------------------------
1316
+
1317
+ static TagInfo
1318
+ iptc_tag_table[] =
1319
+ {
1320
+ // IPTC-NAA IIM version 4
1321
+ { 0x0200 + 0, (char *) "ApplicationRecordVersion", (char *) "Application Record Version"},
1322
+ { 0x0200 + 3, (char *) "ObjectTypeReference", (char *) "Object Type Reference"},
1323
+ { 0x0200 + 4, (char *) "ObjectAttributeReference", (char *) "Object Attribute Reference"},
1324
+ { 0x0200 + 5, (char *) "ObjectName", (char *) "Title"},
1325
+ { 0x0200 + 7, (char *) "EditStatus", (char *) "Edit Status"},
1326
+ { 0x0200 + 8, (char *) "EditorialUpdate", (char *) "Editorial Update"},
1327
+ { 0x0200 + 10, (char *) "Urgency", (char *) "Urgency"},
1328
+ { 0x0200 + 12, (char *) "SubjectReference", (char *) "Subject Reference"},
1329
+ { 0x0200 + 15, (char *) "Category", (char *) "Category"},
1330
+ { 0x0200 + 20, (char *) "SupplementalCategories", (char *) "Supplemental Categories"},
1331
+ { 0x0200 + 22, (char *) "FixtureIdentifier", (char *) "Fixture Identifier"},
1332
+ { 0x0200 + 25, (char *) "Keywords", (char *) "Keywords"},
1333
+ { 0x0200 + 26, (char *) "ContentLocationCode", (char *) "Content Location Code"},
1334
+ { 0x0200 + 27, (char *) "ContentLocationName", (char *) "Content Location Name"},
1335
+ { 0x0200 + 30, (char *) "ReleaseDate", (char *) "Release Date"},
1336
+ { 0x0200 + 35, (char *) "ReleaseTime", (char *) "Release Time"},
1337
+ { 0x0200 + 37, (char *) "ExpirationDate", (char *) "Expiration Date"},
1338
+ { 0x0200 + 38, (char *) "ExpirationTime", (char *) "Expiration Time"},
1339
+ { 0x0200 + 40, (char *) "SpecialInstructions", (char *) "Instructions"},
1340
+ { 0x0200 + 42, (char *) "ActionAdvised", (char *) "Action Advised"},
1341
+ { 0x0200 + 45, (char *) "ReferenceService", (char *) "Reference Service"},
1342
+ { 0x0200 + 47, (char *) "ReferenceDate", (char *) "Reference Date"},
1343
+ { 0x0200 + 50, (char *) "ReferenceNumber", (char *) "Reference Number"},
1344
+ { 0x0200 + 55, (char *) "DateCreated", (char *) "Date Created"},
1345
+ { 0x0200 + 60, (char *) "TimeCreated", (char *) "Time Created"},
1346
+ { 0x0200 + 62, (char *) "DigitalCreationDate", (char *) "Digital Creation Date"},
1347
+ { 0x0200 + 63, (char *) "DigitalCreationTime", (char *) "Digital Creation Time"},
1348
+ { 0x0200 + 65, (char *) "OriginatingProgram", (char *) "Originating Program"},
1349
+ { 0x0200 + 70, (char *) "ProgramVersion", (char *) "Program Version"},
1350
+ { 0x0200 + 75, (char *) "ObjectCycle", (char *) "Object Cycle"},
1351
+ { 0x0200 + 80, (char *) "By-line", (char *) "Author"},
1352
+ { 0x0200 + 85, (char *) "By-lineTitle", (char *) "Author's Position"},
1353
+ { 0x0200 + 90, (char *) "City", (char *) "City"},
1354
+ { 0x0200 + 92, (char *) "SubLocation", (char *) "Sub-Location"},
1355
+ { 0x0200 + 95, (char *) "Province-State", (char *) "State/Province"},
1356
+ { 0x0200 + 100, (char *) "Country-PrimaryLocationCode", (char *) "Country Code"},
1357
+ { 0x0200 + 101, (char *) "Country-PrimaryLocationName", (char *) "Country Name"},
1358
+ { 0x0200 + 103, (char *) "OriginalTransmissionReference", (char *) "Transmission Reference"},
1359
+ { 0x0200 + 105, (char *) "Headline", (char *) "Headline"},
1360
+ { 0x0200 + 110, (char *) "Credit", (char *) "Credit"},
1361
+ { 0x0200 + 115, (char *) "Source", (char *) "Source"},
1362
+ { 0x0200 + 116, (char *) "CopyrightNotice", (char *) "Copyright Notice"},
1363
+ { 0x0200 + 118, (char *) "Contact", (char *) "Contact"},
1364
+ { 0x0200 + 120, (char *) "Caption-Abstract", (char *) "Caption"},
1365
+ { 0x0200 + 122, (char *) "Writer-Editor", (char *) "Caption Writer"},
1366
+ { 0x0200 + 125, (char *) "RasterizedCaption", (char *) "Rasterized Caption"},
1367
+ { 0x0200 + 130, (char *) "ImageType", (char *) "Image Type"},
1368
+ { 0x0200 + 131, (char *) "ImageOrientation", (char *) "Image Orientation"},
1369
+ { 0x0200 + 135, (char *) "LanguageIdentifier", (char *) "Language Identifier"},
1370
+ { 0x0200 + 150, (char *) "AudioType", (char *) "Audio Type"},
1371
+ { 0x0200 + 151, (char *) "AudioSamplingRate", (char *) "Audio Sampling Rate"},
1372
+ { 0x0200 + 152, (char *) "AudioSamplingResolution", (char *) "Audio Sampling Resolution"},
1373
+ { 0x0200 + 153, (char *) "AudioDuration", (char *) "Audio Duration"},
1374
+ { 0x0200 + 154, (char *) "AudioOutcue", (char *) "Audio Outcue"},
1375
+ // Metadata seen in other softwares (see also http://owl.phy.queensu.ca/~phil/exiftool/TagNames/IPTC.html#ApplicationRecord)
1376
+ { 0x0200 + 184, (char *) "JobID", (char *) "Job ID"},
1377
+ { 0x0200 + 185, (char *) "MasterDocumentID", (char *) "Master Document ID"},
1378
+ { 0x0200 + 186, (char *) "ShortDocumentID", (char *) "Short Document ID"},
1379
+ { 0x0200 + 187, (char *) "UniqueDocumentID", (char *) "Unique Document ID"},
1380
+ { 0x0200 + 188, (char *) "OwnerID", (char *) "Owner ID"},
1381
+ // IPTC-NAA IIM version 4
1382
+ { 0x0200 + 200, (char *) "ObjectPreviewFileFormat", (char *) "Object Preview File Format"},
1383
+ { 0x0200 + 201, (char *) "ObjectPreviewFileVersion", (char *) "Object Preview File Version"},
1384
+ { 0x0200 + 202, (char *) "ObjectPreviewData", (char *) "Audio Outcue"},
1385
+ // Metadata seen in other softwares (see also http://owl.phy.queensu.ca/~phil/exiftool/TagNames/IPTC.html#ApplicationRecord)
1386
+ { 0x0200 + 221, (char *) "Prefs", (char *) "PhotoMechanic preferences"},
1387
+ { 0x0200 + 225, (char *) "ClassifyState", (char *) "Classify State"},
1388
+ { 0x0200 + 228, (char *) "SimilarityIndex", (char *) "Similarity Index"},
1389
+ { 0x0200 + 230, (char *) "DocumentNotes", (char *) "Document Notes"},
1390
+ { 0x0200 + 231, (char *) "DocumentHistory", (char *) "Document History"},
1391
+ { 0x0200 + 232, (char *) "ExifCameraInfo", (char *) "Exif Camera Info"},
1392
+
1393
+ { 0x0000, (char *) NULL, (char *) NULL}
1394
+ };
1395
+
1396
+ // --------------------------------------------------------------------------
1397
+ // GeoTIFF tags definition
1398
+ // --------------------------------------------------------------------------
1399
+
1400
+ static TagInfo
1401
+ geotiff_tag_table[] =
1402
+ {
1403
+ { 0x830E, (char *) "GeoPixelScale", (char *) NULL},
1404
+ { 0x8480, (char *) "Intergraph TransformationMatrix", (char *) NULL},
1405
+ { 0x8482, (char *) "GeoTiePoints", (char *) NULL},
1406
+ { 0x85D7, (char *) "JPL Carto IFD offset", (char *) NULL},
1407
+ { 0x85D8, (char *) "GeoTransformationMatrix", (char *) NULL},
1408
+ { 0x87AF, (char *) "GeoKeyDirectory", (char *) NULL},
1409
+ { 0x87B0, (char *) "GeoDoubleParams", (char *) NULL},
1410
+ { 0x87B1, (char *) "GeoASCIIParams", (char *) NULL},
1411
+ { 0x0000, (char *) NULL, (char *) NULL}
1412
+ };
1413
+
1414
+ // --------------------------------------------------------------------------
1415
+ // Animation tags definition
1416
+ // --------------------------------------------------------------------------
1417
+
1418
+ static TagInfo
1419
+ animation_tag_table[] =
1420
+ {
1421
+ { 0x0001, (char *) "LogicalWidth", (char *) "Logical width"},
1422
+ { 0x0002, (char *) "LogicalHeight", (char *) "Logical height"},
1423
+ { 0x0003, (char *) "GlobalPalette", (char *) "Global Palette"},
1424
+ { 0x0004, (char *) "Loop", (char *) "loop"},
1425
+ { 0x1001, (char *) "FrameLeft", (char *) "Frame left"},
1426
+ { 0x1002, (char *) "FrameTop", (char *) "Frame top"},
1427
+ { 0x1003, (char *) "NoLocalPalette", (char *) "No Local Palette"},
1428
+ { 0x1004, (char *) "Interlaced", (char *) "Interlaced"},
1429
+ { 0x1005, (char *) "FrameTime", (char *) "Frame display time"},
1430
+ { 0x1006, (char *) "DisposalMethod", (char *) "Frame disposal method"},
1431
+ { 0x0000, (char *) NULL, (char *) NULL}
1432
+ };
1433
+
1434
+ // --------------------------------------------------------------------------
1435
+ // TagLib class definition
1436
+ // --------------------------------------------------------------------------
1437
+
1438
+
1439
+ /**
1440
+ This is where the tag info tables are initialized
1441
+ */
1442
+ TagLib::TagLib() {
1443
+ // initialize all known metadata models
1444
+ // ====================================
1445
+
1446
+ // Exif
1447
+ addMetadataModel(TagLib::EXIF_MAIN, exif_exif_tag_table);
1448
+ addMetadataModel(TagLib::EXIF_EXIF, exif_exif_tag_table);
1449
+ addMetadataModel(TagLib::EXIF_GPS, exif_gps_tag_table);
1450
+ addMetadataModel(TagLib::EXIF_INTEROP, exif_interop_tag_table);
1451
+
1452
+ // Exif maker note
1453
+ addMetadataModel(TagLib::EXIF_MAKERNOTE_CANON, exif_canon_tag_table);
1454
+ addMetadataModel(TagLib::EXIF_MAKERNOTE_CASIOTYPE1, exif_casio_type1_tag_table);
1455
+ addMetadataModel(TagLib::EXIF_MAKERNOTE_CASIOTYPE2, exif_casio_type2_tag_table);
1456
+ addMetadataModel(TagLib::EXIF_MAKERNOTE_FUJIFILM, exif_fujifilm_tag_table);
1457
+ addMetadataModel(TagLib::EXIF_MAKERNOTE_KYOCERA, exif_kyocera_tag_table);
1458
+ addMetadataModel(TagLib::EXIF_MAKERNOTE_MINOLTA, exif_minolta_tag_table);
1459
+ addMetadataModel(TagLib::EXIF_MAKERNOTE_NIKONTYPE1, exif_nikon_type1_tag_table);
1460
+ addMetadataModel(TagLib::EXIF_MAKERNOTE_NIKONTYPE2, exif_nikon_type2_tag_table);
1461
+ addMetadataModel(TagLib::EXIF_MAKERNOTE_NIKONTYPE3, exif_nikon_type3_tag_table);
1462
+ addMetadataModel(TagLib::EXIF_MAKERNOTE_OLYMPUSTYPE1, exif_olympus_type1_tag_table);
1463
+ addMetadataModel(TagLib::EXIF_MAKERNOTE_PANASONIC, exif_panasonic_tag_table);
1464
+ addMetadataModel(TagLib::EXIF_MAKERNOTE_ASAHI, exif_asahi_tag_table);
1465
+ addMetadataModel(TagLib::EXIF_MAKERNOTE_PENTAX, exif_pentax_tag_table);
1466
+ addMetadataModel(TagLib::EXIF_MAKERNOTE_SONY, exif_sony_tag_table);
1467
+ addMetadataModel(TagLib::EXIF_MAKERNOTE_SIGMA_SD1, exif_sigma_sd1_tag_table);
1468
+ addMetadataModel(TagLib::EXIF_MAKERNOTE_SIGMA_FOVEON, exif_sigma_foveon_tag_table);
1469
+
1470
+ // IPTC/NAA
1471
+ addMetadataModel(TagLib::IPTC, iptc_tag_table);
1472
+
1473
+ // GeoTIFF
1474
+ addMetadataModel(TagLib::GEOTIFF, geotiff_tag_table);
1475
+
1476
+ // Animation
1477
+ addMetadataModel(TagLib::ANIMATION, animation_tag_table);
1478
+ }
1479
+
1480
+ BOOL TagLib::addMetadataModel(MDMODEL md_model, TagInfo *tag_table) {
1481
+ // check that the model doesn't already exist
1482
+ if((_table_map.find(md_model) == _table_map.end()) && (tag_table != NULL)) {
1483
+
1484
+ // add the tag description table
1485
+ TAGINFO *info_map = new(std::nothrow) TAGINFO();
1486
+ if(!info_map) return FALSE;
1487
+
1488
+ for(int i = 0; ; i++) {
1489
+ if((tag_table[i].tag == 0) && (tag_table[i].fieldname == NULL))
1490
+ break;
1491
+ (*info_map)[tag_table[i].tag] = &tag_table[i];
1492
+ }
1493
+
1494
+ // add the metadata model
1495
+ _table_map[md_model] = info_map;
1496
+
1497
+ return TRUE;
1498
+ }
1499
+
1500
+ return FALSE;
1501
+ }
1502
+
1503
+ TagLib::~TagLib() {
1504
+ // delete metadata models
1505
+ for(TABLEMAP::iterator i = _table_map.begin(); i != _table_map.end(); i++) {
1506
+ TAGINFO *info_map = (*i).second;
1507
+ delete info_map;
1508
+ }
1509
+ }
1510
+
1511
+
1512
+ TagLib&
1513
+ TagLib::instance() {
1514
+ static TagLib s;
1515
+ return s;
1516
+ }
1517
+
1518
+ const TagInfo*
1519
+ TagLib::getTagInfo(MDMODEL md_model, WORD tagID) {
1520
+
1521
+ if(_table_map.find(md_model) != _table_map.end()) {
1522
+
1523
+ TAGINFO *info_map = (TAGINFO*)_table_map[md_model];
1524
+ if(info_map->find(tagID) != info_map->end()) {
1525
+ return (*info_map)[tagID];
1526
+ }
1527
+ }
1528
+ return NULL;
1529
+ }
1530
+
1531
+ const char*
1532
+ TagLib::getTagFieldName(MDMODEL md_model, WORD tagID, char *defaultKey) {
1533
+
1534
+ const TagInfo *info = getTagInfo(md_model, tagID);
1535
+ if(NULL == info) {
1536
+ if(defaultKey != NULL) {
1537
+ sprintf(defaultKey, "Tag 0x%04X", tagID);
1538
+ return &defaultKey[0];
1539
+ } else {
1540
+ return NULL;
1541
+ }
1542
+ }
1543
+
1544
+ return info->fieldname;
1545
+ }
1546
+
1547
+ const char*
1548
+ TagLib::getTagDescription(MDMODEL md_model, WORD tagID) {
1549
+
1550
+ const TagInfo *info = getTagInfo(md_model, tagID);
1551
+ if(info) {
1552
+ return info->description;
1553
+ }
1554
+
1555
+ return NULL;
1556
+ }
1557
+
1558
+ int TagLib::getTagID(MDMODEL md_model, const char *key) {
1559
+
1560
+ if(_table_map.find(md_model) != _table_map.end()) {
1561
+
1562
+ TAGINFO *info_map = (TAGINFO*)_table_map[md_model];
1563
+ for(TAGINFO::iterator i = info_map->begin(); i != info_map->end(); i++) {
1564
+ const TagInfo *info = (*i).second;
1565
+ if(info && (strcmp(info->fieldname, key) == 0)) {
1566
+ return (int)info->tag;
1567
+ }
1568
+ }
1569
+ }
1570
+ return -1;
1571
+ }
1572
+
1573
+ FREE_IMAGE_MDMODEL
1574
+ TagLib::getFreeImageModel(MDMODEL model) {
1575
+ switch(model) {
1576
+ case EXIF_MAIN:
1577
+ return FIMD_EXIF_MAIN;
1578
+
1579
+ case EXIF_EXIF:
1580
+ return FIMD_EXIF_EXIF;
1581
+
1582
+ case EXIF_GPS:
1583
+ return FIMD_EXIF_GPS;
1584
+
1585
+ case EXIF_INTEROP:
1586
+ return FIMD_EXIF_INTEROP;
1587
+
1588
+ case EXIF_MAKERNOTE_CANON:
1589
+ case EXIF_MAKERNOTE_CASIOTYPE1:
1590
+ case EXIF_MAKERNOTE_CASIOTYPE2:
1591
+ case EXIF_MAKERNOTE_FUJIFILM:
1592
+ case EXIF_MAKERNOTE_KYOCERA:
1593
+ case EXIF_MAKERNOTE_MINOLTA:
1594
+ case EXIF_MAKERNOTE_NIKONTYPE1:
1595
+ case EXIF_MAKERNOTE_NIKONTYPE2:
1596
+ case EXIF_MAKERNOTE_NIKONTYPE3:
1597
+ case EXIF_MAKERNOTE_OLYMPUSTYPE1:
1598
+ case EXIF_MAKERNOTE_PANASONIC:
1599
+ case EXIF_MAKERNOTE_ASAHI:
1600
+ case EXIF_MAKERNOTE_PENTAX:
1601
+ case EXIF_MAKERNOTE_SONY:
1602
+ case EXIF_MAKERNOTE_SIGMA_SD1:
1603
+ case EXIF_MAKERNOTE_SIGMA_FOVEON:
1604
+ return FIMD_EXIF_MAKERNOTE;
1605
+
1606
+ case IPTC:
1607
+ return FIMD_IPTC;
1608
+
1609
+ case GEOTIFF:
1610
+ return FIMD_GEOTIFF;
1611
+
1612
+ case ANIMATION:
1613
+ return FIMD_ANIMATION;
1614
+ }
1615
+
1616
+ return FIMD_NODATA;
1617
+ }
1618
+