exiftool_vendored 9.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (864) hide show
  1. checksums.yaml +15 -0
  2. data/bin/Image-ExifTool-9.33/Changes +6241 -0
  3. data/bin/Image-ExifTool-9.33/MANIFEST +859 -0
  4. data/bin/Image-ExifTool-9.33/META.yml +27 -0
  5. data/bin/Image-ExifTool-9.33/Makefile.PL +41 -0
  6. data/bin/Image-ExifTool-9.33/README +227 -0
  7. data/bin/Image-ExifTool-9.33/arg_files/exif2iptc.args +24 -0
  8. data/bin/Image-ExifTool-9.33/arg_files/exif2xmp.args +38 -0
  9. data/bin/Image-ExifTool-9.33/arg_files/gps2xmp.args +20 -0
  10. data/bin/Image-ExifTool-9.33/arg_files/iptc2exif.args +17 -0
  11. data/bin/Image-ExifTool-9.33/arg_files/iptc2xmp.args +53 -0
  12. data/bin/Image-ExifTool-9.33/arg_files/iptcCore.args +172 -0
  13. data/bin/Image-ExifTool-9.33/arg_files/pdf2xmp.args +23 -0
  14. data/bin/Image-ExifTool-9.33/arg_files/xmp2exif.args +39 -0
  15. data/bin/Image-ExifTool-9.33/arg_files/xmp2gps.args +24 -0
  16. data/bin/Image-ExifTool-9.33/arg_files/xmp2iptc.args +62 -0
  17. data/bin/Image-ExifTool-9.33/arg_files/xmp2pdf.args +23 -0
  18. data/bin/Image-ExifTool-9.33/config_files/ExifTool_config +299 -0
  19. data/bin/Image-ExifTool-9.33/config_files/convert_regions.config +81 -0
  20. data/bin/Image-ExifTool-9.33/exiftool +5715 -0
  21. data/bin/Image-ExifTool-9.33/fmt_files/gpx.fmt +29 -0
  22. data/bin/Image-ExifTool-9.33/fmt_files/gpx_wpt.fmt +33 -0
  23. data/bin/Image-ExifTool-9.33/fmt_files/kml.fmt +53 -0
  24. data/bin/Image-ExifTool-9.33/html/ExifTool.html +1959 -0
  25. data/bin/Image-ExifTool-9.33/html/MIE1.1-20070121.pdf +0 -0
  26. data/bin/Image-ExifTool-9.33/html/Shift.html +173 -0
  27. data/bin/Image-ExifTool-9.33/html/TagNames/AFCP.html +53 -0
  28. data/bin/Image-ExifTool-9.33/html/TagNames/AIFF.html +146 -0
  29. data/bin/Image-ExifTool-9.33/html/TagNames/APE.html +149 -0
  30. data/bin/Image-ExifTool-9.33/html/TagNames/APP12.html +188 -0
  31. data/bin/Image-ExifTool-9.33/html/TagNames/ASF.html +1066 -0
  32. data/bin/Image-ExifTool-9.33/html/TagNames/BMP.html +110 -0
  33. data/bin/Image-ExifTool-9.33/html/TagNames/Canon.html +8062 -0
  34. data/bin/Image-ExifTool-9.33/html/TagNames/CanonCustom.html +2044 -0
  35. data/bin/Image-ExifTool-9.33/html/TagNames/CanonRaw.html +561 -0
  36. data/bin/Image-ExifTool-9.33/html/TagNames/CanonVRD.html +1222 -0
  37. data/bin/Image-ExifTool-9.33/html/TagNames/Casio.html +1569 -0
  38. data/bin/Image-ExifTool-9.33/html/TagNames/Composite.html +665 -0
  39. data/bin/Image-ExifTool-9.33/html/TagNames/DICOM.html +15762 -0
  40. data/bin/Image-ExifTool-9.33/html/TagNames/DNG.html +273 -0
  41. data/bin/Image-ExifTool-9.33/html/TagNames/DV.html +75 -0
  42. data/bin/Image-ExifTool-9.33/html/TagNames/DarwinCore.html +1445 -0
  43. data/bin/Image-ExifTool-9.33/html/TagNames/DjVu.html +313 -0
  44. data/bin/Image-ExifTool-9.33/html/TagNames/EXE.html +697 -0
  45. data/bin/Image-ExifTool-9.33/html/TagNames/EXIF.html +3244 -0
  46. data/bin/Image-ExifTool-9.33/html/TagNames/Extra.html +301 -0
  47. data/bin/Image-ExifTool-9.33/html/TagNames/FLAC.html +183 -0
  48. data/bin/Image-ExifTool-9.33/html/TagNames/FLIR.html +931 -0
  49. data/bin/Image-ExifTool-9.33/html/TagNames/Flash.html +419 -0
  50. data/bin/Image-ExifTool-9.33/html/TagNames/FlashPix.html +1435 -0
  51. data/bin/Image-ExifTool-9.33/html/TagNames/Font.html +485 -0
  52. data/bin/Image-ExifTool-9.33/html/TagNames/FotoStation.html +103 -0
  53. data/bin/Image-ExifTool-9.33/html/TagNames/FujiFilm.html +637 -0
  54. data/bin/Image-ExifTool-9.33/html/TagNames/GE.html +40 -0
  55. data/bin/Image-ExifTool-9.33/html/TagNames/GIF.html +116 -0
  56. data/bin/Image-ExifTool-9.33/html/TagNames/GIMP.html +140 -0
  57. data/bin/Image-ExifTool-9.33/html/TagNames/GPS.html +222 -0
  58. data/bin/Image-ExifTool-9.33/html/TagNames/GeoTiff.html +2177 -0
  59. data/bin/Image-ExifTool-9.33/html/TagNames/H264.html +393 -0
  60. data/bin/Image-ExifTool-9.33/html/TagNames/HP.html +155 -0
  61. data/bin/Image-ExifTool-9.33/html/TagNames/HTML.html +666 -0
  62. data/bin/Image-ExifTool-9.33/html/TagNames/ICC_Profile.html +710 -0
  63. data/bin/Image-ExifTool-9.33/html/TagNames/ID3.html +1473 -0
  64. data/bin/Image-ExifTool-9.33/html/TagNames/IPTC.html +895 -0
  65. data/bin/Image-ExifTool-9.33/html/TagNames/ITC.html +90 -0
  66. data/bin/Image-ExifTool-9.33/html/TagNames/JFIF.html +61 -0
  67. data/bin/Image-ExifTool-9.33/html/TagNames/JPEG.html +523 -0
  68. data/bin/Image-ExifTool-9.33/html/TagNames/JVC.html +56 -0
  69. data/bin/Image-ExifTool-9.33/html/TagNames/Jpeg2000.html +464 -0
  70. data/bin/Image-ExifTool-9.33/html/TagNames/Kodak.html +1759 -0
  71. data/bin/Image-ExifTool-9.33/html/TagNames/KyoceraRaw.html +92 -0
  72. data/bin/Image-ExifTool-9.33/html/TagNames/LNK.html +478 -0
  73. data/bin/Image-ExifTool-9.33/html/TagNames/Leaf.html +870 -0
  74. data/bin/Image-ExifTool-9.33/html/TagNames/M2TS.html +133 -0
  75. data/bin/Image-ExifTool-9.33/html/TagNames/MIE.html +1026 -0
  76. data/bin/Image-ExifTool-9.33/html/TagNames/MIFF.html +196 -0
  77. data/bin/Image-ExifTool-9.33/html/TagNames/MNG.html +847 -0
  78. data/bin/Image-ExifTool-9.33/html/TagNames/MPC.html +97 -0
  79. data/bin/Image-ExifTool-9.33/html/TagNames/MPEG.html +249 -0
  80. data/bin/Image-ExifTool-9.33/html/TagNames/MPF.html +199 -0
  81. data/bin/Image-ExifTool-9.33/html/TagNames/MWG.html +563 -0
  82. data/bin/Image-ExifTool-9.33/html/TagNames/MXF.html +6673 -0
  83. data/bin/Image-ExifTool-9.33/html/TagNames/Matroska.html +1069 -0
  84. data/bin/Image-ExifTool-9.33/html/TagNames/Microsoft.html +2066 -0
  85. data/bin/Image-ExifTool-9.33/html/TagNames/Minolta.html +2555 -0
  86. data/bin/Image-ExifTool-9.33/html/TagNames/MinoltaRaw.html +326 -0
  87. data/bin/Image-ExifTool-9.33/html/TagNames/Nikon.html +4467 -0
  88. data/bin/Image-ExifTool-9.33/html/TagNames/NikonCapture.html +776 -0
  89. data/bin/Image-ExifTool-9.33/html/TagNames/NikonCustom.html +3835 -0
  90. data/bin/Image-ExifTool-9.33/html/TagNames/OOXML.html +280 -0
  91. data/bin/Image-ExifTool-9.33/html/TagNames/Ogg.html +44 -0
  92. data/bin/Image-ExifTool-9.33/html/TagNames/Olympus.html +3386 -0
  93. data/bin/Image-ExifTool-9.33/html/TagNames/OpenEXR.html +222 -0
  94. data/bin/Image-ExifTool-9.33/html/TagNames/PDF.html +745 -0
  95. data/bin/Image-ExifTool-9.33/html/TagNames/PGF.html +80 -0
  96. data/bin/Image-ExifTool-9.33/html/TagNames/PICT.html +753 -0
  97. data/bin/Image-ExifTool-9.33/html/TagNames/PLIST.html +86 -0
  98. data/bin/Image-ExifTool-9.33/html/TagNames/PNG.html +515 -0
  99. data/bin/Image-ExifTool-9.33/html/TagNames/PSP.html +160 -0
  100. data/bin/Image-ExifTool-9.33/html/TagNames/Panasonic.html +1452 -0
  101. data/bin/Image-ExifTool-9.33/html/TagNames/PanasonicRaw.html +214 -0
  102. data/bin/Image-ExifTool-9.33/html/TagNames/Pentax.html +4332 -0
  103. data/bin/Image-ExifTool-9.33/html/TagNames/PhaseOne.html +258 -0
  104. data/bin/Image-ExifTool-9.33/html/TagNames/PhotoCD.html +402 -0
  105. data/bin/Image-ExifTool-9.33/html/TagNames/PhotoMechanic.html +196 -0
  106. data/bin/Image-ExifTool-9.33/html/TagNames/Photoshop.html +555 -0
  107. data/bin/Image-ExifTool-9.33/html/TagNames/PostScript.html +125 -0
  108. data/bin/Image-ExifTool-9.33/html/TagNames/PrintIM.html +31 -0
  109. data/bin/Image-ExifTool-9.33/html/TagNames/Qualcomm.html +4778 -0
  110. data/bin/Image-ExifTool-9.33/html/TagNames/QuickTime.html +3104 -0
  111. data/bin/Image-ExifTool-9.33/html/TagNames/RIFF.html +1164 -0
  112. data/bin/Image-ExifTool-9.33/html/TagNames/RSRC.html +74 -0
  113. data/bin/Image-ExifTool-9.33/html/TagNames/RTF.html +150 -0
  114. data/bin/Image-ExifTool-9.33/html/TagNames/Radiance.html +87 -0
  115. data/bin/Image-ExifTool-9.33/html/TagNames/Rawzor.html +45 -0
  116. data/bin/Image-ExifTool-9.33/html/TagNames/Real.html +780 -0
  117. data/bin/Image-ExifTool-9.33/html/TagNames/Reconyx.html +132 -0
  118. data/bin/Image-ExifTool-9.33/html/TagNames/Ricoh.html +456 -0
  119. data/bin/Image-ExifTool-9.33/html/TagNames/Samsung.html +419 -0
  120. data/bin/Image-ExifTool-9.33/html/TagNames/Sanyo.html +366 -0
  121. data/bin/Image-ExifTool-9.33/html/TagNames/Shortcuts.html +237 -0
  122. data/bin/Image-ExifTool-9.33/html/TagNames/Sigma.html +372 -0
  123. data/bin/Image-ExifTool-9.33/html/TagNames/SigmaRaw.html +403 -0
  124. data/bin/Image-ExifTool-9.33/html/TagNames/Sony.html +4279 -0
  125. data/bin/Image-ExifTool-9.33/html/TagNames/SonyIDC.html +267 -0
  126. data/bin/Image-ExifTool-9.33/html/TagNames/Stim.html +200 -0
  127. data/bin/Image-ExifTool-9.33/html/TagNames/Theora.html +102 -0
  128. data/bin/Image-ExifTool-9.33/html/TagNames/Unknown.html +31 -0
  129. data/bin/Image-ExifTool-9.33/html/TagNames/Vorbis.html +228 -0
  130. data/bin/Image-ExifTool-9.33/html/TagNames/XMP.html +7234 -0
  131. data/bin/Image-ExifTool-9.33/html/TagNames/ZIP.html +204 -0
  132. data/bin/Image-ExifTool-9.33/html/TagNames/iWork.html +49 -0
  133. data/bin/Image-ExifTool-9.33/html/TagNames/index.html +192 -0
  134. data/bin/Image-ExifTool-9.33/html/TagNames/style.css +31 -0
  135. data/bin/Image-ExifTool-9.33/html/ancient_history.html +6727 -0
  136. data/bin/Image-ExifTool-9.33/html/canon_raw.html +366 -0
  137. data/bin/Image-ExifTool-9.33/html/commentary.html +319 -0
  138. data/bin/Image-ExifTool-9.33/html/config.html +312 -0
  139. data/bin/Image-ExifTool-9.33/html/data_members.html +265 -0
  140. data/bin/Image-ExifTool-9.33/html/exiftool_pod.html +2338 -0
  141. data/bin/Image-ExifTool-9.33/html/faq.html +1434 -0
  142. data/bin/Image-ExifTool-9.33/html/filename.html +281 -0
  143. data/bin/Image-ExifTool-9.33/html/geotag.html +642 -0
  144. data/bin/Image-ExifTool-9.33/html/history.html +358 -0
  145. data/bin/Image-ExifTool-9.33/html/htmldump.html +732 -0
  146. data/bin/Image-ExifTool-9.33/html/idiosyncracies.html +251 -0
  147. data/bin/Image-ExifTool-9.33/html/index.html +1271 -0
  148. data/bin/Image-ExifTool-9.33/html/install.html +239 -0
  149. data/bin/Image-ExifTool-9.33/html/metafiles.html +266 -0
  150. data/bin/Image-ExifTool-9.33/html/overview.png +0 -0
  151. data/bin/Image-ExifTool-9.33/html/standards.html +277 -0
  152. data/bin/Image-ExifTool-9.33/html/struct.html +342 -0
  153. data/bin/Image-ExifTool-9.33/html/style.css +31 -0
  154. data/bin/Image-ExifTool-9.33/html/under.html +124 -0
  155. data/bin/Image-ExifTool-9.33/html/verbose.html +195 -0
  156. data/bin/Image-ExifTool-9.33/html/writing.html +239 -0
  157. data/bin/Image-ExifTool-9.33/lib/File/RandomAccess.pm +378 -0
  158. data/bin/Image-ExifTool-9.33/lib/File/RandomAccess.pod +231 -0
  159. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool.pm +6815 -0
  160. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool.pod +2385 -0
  161. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/AES.pm +501 -0
  162. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/AFCP.pm +284 -0
  163. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/AIFF.pm +271 -0
  164. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/APE.pm +262 -0
  165. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/APP12.pm +322 -0
  166. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/ASF.pm +884 -0
  167. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/BMP.pm +179 -0
  168. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/BZZ.pm +472 -0
  169. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/BigTIFF.pm +282 -0
  170. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/BuildTagLookup.pm +2400 -0
  171. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Canon.pm +7794 -0
  172. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/CanonCustom.pm +2523 -0
  173. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/CanonRaw.pm +931 -0
  174. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/CanonVRD.pm +1481 -0
  175. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/CaptureOne.pm +235 -0
  176. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Casio.pm +2013 -0
  177. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset.pm +396 -0
  178. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/Arabic.pm +39 -0
  179. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/Baltic.pm +35 -0
  180. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/Cyrillic.pm +45 -0
  181. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/Greek.pm +40 -0
  182. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/Hebrew.pm +36 -0
  183. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/JIS.pm +1735 -0
  184. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/Latin.pm +24 -0
  185. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/Latin2.pm +36 -0
  186. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/MacArabic.pm +47 -0
  187. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/MacChineseCN.pm +2088 -0
  188. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/MacChineseTW.pm +3623 -0
  189. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/MacCroatian.pm +43 -0
  190. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/MacCyrillic.pm +47 -0
  191. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/MacGreek.pm +45 -0
  192. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/MacHebrew.pm +47 -0
  193. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/MacIceland.pm +42 -0
  194. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/MacJapanese.pm +1933 -0
  195. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/MacKorean.pm +2720 -0
  196. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/MacLatin2.pm +44 -0
  197. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/MacRSymbol.pm +2087 -0
  198. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/MacRoman.pm +42 -0
  199. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/MacRomanian.pm +42 -0
  200. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/MacThai.pm +49 -0
  201. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/MacTurkish.pm +42 -0
  202. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/PDFDoc.pm +28 -0
  203. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/ShiftJIS.pm +1835 -0
  204. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/Symbol.pm +54 -0
  205. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/Thai.pm +41 -0
  206. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/Turkish.pm +25 -0
  207. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/Vietnam.pm +27 -0
  208. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/DICOM.pm +3835 -0
  209. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/DNG.pm +835 -0
  210. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/DV.pm +319 -0
  211. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/DarwinCore.pm +317 -0
  212. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/DjVu.pm +376 -0
  213. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/EXE.pm +1228 -0
  214. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Exif.pm +4542 -0
  215. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/FLAC.pm +296 -0
  216. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/FLIR.pm +972 -0
  217. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Fixup.pm +354 -0
  218. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Flash.pm +755 -0
  219. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/FlashPix.pm +1882 -0
  220. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Font.pm +643 -0
  221. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/FotoStation.pm +258 -0
  222. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/FujiFilm.pm +1020 -0
  223. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/GE.pm +80 -0
  224. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/GIF.pm +542 -0
  225. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/GIMP.pm +258 -0
  226. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/GPS.pm +511 -0
  227. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/GeoTiff.pm +2187 -0
  228. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Geotag.pm +1173 -0
  229. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/H264.pm +1102 -0
  230. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/HP.pm +262 -0
  231. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/HTML.pm +576 -0
  232. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/HtmlDump.pm +895 -0
  233. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/ICC_Profile.pm +999 -0
  234. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/ID3.pm +1532 -0
  235. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/IPTC.pm +1244 -0
  236. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/ITC.pm +215 -0
  237. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Import.pm +308 -0
  238. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/InDesign.pm +277 -0
  239. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/JPEG.pm +588 -0
  240. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/JPEGDigest.pm +2511 -0
  241. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/JVC.pm +130 -0
  242. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Jpeg2000.pm +881 -0
  243. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Kodak.pm +2014 -0
  244. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/KyoceraRaw.pm +173 -0
  245. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/LNK.pm +723 -0
  246. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Lang/cs.pm +1586 -0
  247. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Lang/de.pm +7356 -0
  248. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Lang/en_ca.pm +557 -0
  249. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Lang/en_gb.pm +572 -0
  250. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Lang/es.pm +4016 -0
  251. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Lang/fi.pm +2856 -0
  252. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Lang/fr.pm +4720 -0
  253. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Lang/it.pm +7917 -0
  254. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Lang/ja.pm +5815 -0
  255. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Lang/ko.pm +2332 -0
  256. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Lang/nl.pm +3220 -0
  257. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Lang/pl.pm +1140 -0
  258. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Lang/ru.pm +769 -0
  259. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Lang/sv.pm +639 -0
  260. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Lang/tr.pm +544 -0
  261. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Lang/zh_cn.pm +1329 -0
  262. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Lang/zh_tw.pm +802 -0
  263. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Leaf.pm +515 -0
  264. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/M2TS.pm +729 -0
  265. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/MIE.pm +2561 -0
  266. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/MIEUnits.pod +377 -0
  267. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/MIFF.pm +279 -0
  268. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/MNG.pm +684 -0
  269. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/MPC.pm +156 -0
  270. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/MPEG.pm +736 -0
  271. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/MPF.pm +289 -0
  272. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/MWG.pm +736 -0
  273. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/MXF.pm +3032 -0
  274. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/MakerNotes.pm +1573 -0
  275. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Matroska.pm +891 -0
  276. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Microsoft.pm +879 -0
  277. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Minolta.pm +2833 -0
  278. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/MinoltaRaw.pm +534 -0
  279. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Nikon.pm +6116 -0
  280. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/NikonCapture.pm +911 -0
  281. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/NikonCustom.pm +4405 -0
  282. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/OOXML.pm +409 -0
  283. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Ogg.pm +237 -0
  284. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Olympus.pm +3582 -0
  285. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/OpenEXR.pm +324 -0
  286. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/PDF.pm +2327 -0
  287. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/PGF.pm +143 -0
  288. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/PICT.pm +1260 -0
  289. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/PLIST.pm +449 -0
  290. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/PNG.pm +1100 -0
  291. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/PPM.pm +169 -0
  292. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/PSP.pm +305 -0
  293. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Panasonic.pm +1995 -0
  294. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/PanasonicRaw.pm +535 -0
  295. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Pentax.pm +5489 -0
  296. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/PhaseOne.pm +557 -0
  297. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/PhotoCD.pm +507 -0
  298. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/PhotoMechanic.pm +256 -0
  299. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Photoshop.pm +629 -0
  300. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/PostScript.pm +693 -0
  301. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/PrintIM.pm +125 -0
  302. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Qualcomm.pm +1344 -0
  303. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/QuickTime.pm +3519 -0
  304. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/README +944 -0
  305. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/RIFF.pm +1322 -0
  306. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/RSRC.pm +241 -0
  307. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/RTF.pm +383 -0
  308. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Radiance.pm +144 -0
  309. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Rawzor.pm +190 -0
  310. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Real.pm +736 -0
  311. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Reconyx.pm +190 -0
  312. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Ricoh.pm +741 -0
  313. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Samsung.pm +820 -0
  314. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Sanyo.pm +439 -0
  315. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Shift.pl +594 -0
  316. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Shortcuts.pm +291 -0
  317. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Sigma.pm +574 -0
  318. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/SigmaRaw.pm +649 -0
  319. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Sony.pm +5722 -0
  320. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/SonyIDC.pm +330 -0
  321. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Stim.pm +196 -0
  322. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/TagInfoXML.pm +792 -0
  323. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/TagLookup.pm +8005 -0
  324. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/TagNames.pod +25950 -0
  325. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Theora.pm +145 -0
  326. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Unknown.pm +66 -0
  327. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Vorbis.pm +237 -0
  328. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/WriteCanonRaw.pl +637 -0
  329. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/WriteExif.pl +3674 -0
  330. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/WriteIPTC.pl +702 -0
  331. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/WritePDF.pl +759 -0
  332. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/WritePNG.pl +330 -0
  333. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/WritePhotoshop.pl +266 -0
  334. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/WritePostScript.pl +777 -0
  335. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/WriteXMP.pl +1318 -0
  336. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Writer.pl +5779 -0
  337. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/XMP.pm +3634 -0
  338. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/XMP2.pl +1298 -0
  339. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/XMPStruct.pl +813 -0
  340. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/ZIP.pm +623 -0
  341. data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/iWork.pm +223 -0
  342. data/bin/Image-ExifTool-9.33/perl-Image-ExifTool.spec +104 -0
  343. data/bin/Image-ExifTool-9.33/t/AFCP.t +44 -0
  344. data/bin/Image-ExifTool-9.33/t/AFCP_2.out +37 -0
  345. data/bin/Image-ExifTool-9.33/t/AFCP_3.out +20 -0
  346. data/bin/Image-ExifTool-9.33/t/AIFF.t +28 -0
  347. data/bin/Image-ExifTool-9.33/t/AIFF_2.out +31 -0
  348. data/bin/Image-ExifTool-9.33/t/APE.t +38 -0
  349. data/bin/Image-ExifTool-9.33/t/APE_2.out +28 -0
  350. data/bin/Image-ExifTool-9.33/t/APE_3.out +57 -0
  351. data/bin/Image-ExifTool-9.33/t/ASF.t +28 -0
  352. data/bin/Image-ExifTool-9.33/t/ASF_2.out +54 -0
  353. data/bin/Image-ExifTool-9.33/t/BMP.t +28 -0
  354. data/bin/Image-ExifTool-9.33/t/BMP_2.out +21 -0
  355. data/bin/Image-ExifTool-9.33/t/BigTIFF.t +28 -0
  356. data/bin/Image-ExifTool-9.33/t/BigTIFF_2.out +19 -0
  357. data/bin/Image-ExifTool-9.33/t/Canon.t +41 -0
  358. data/bin/Image-ExifTool-9.33/t/CanonRaw.t +126 -0
  359. data/bin/Image-ExifTool-9.33/t/CanonRaw_2.out +165 -0
  360. data/bin/Image-ExifTool-9.33/t/CanonRaw_4.out +217 -0
  361. data/bin/Image-ExifTool-9.33/t/CanonRaw_5.out +207 -0
  362. data/bin/Image-ExifTool-9.33/t/CanonRaw_6.out +231 -0
  363. data/bin/Image-ExifTool-9.33/t/CanonRaw_7.out +247 -0
  364. data/bin/Image-ExifTool-9.33/t/CanonVRD.t +129 -0
  365. data/bin/Image-ExifTool-9.33/t/CanonVRD_11.out +118 -0
  366. data/bin/Image-ExifTool-9.33/t/CanonVRD_12.out +12 -0
  367. data/bin/Image-ExifTool-9.33/t/CanonVRD_2.out +116 -0
  368. data/bin/Image-ExifTool-9.33/t/CanonVRD_3.out +116 -0
  369. data/bin/Image-ExifTool-9.33/t/CanonVRD_4.out +2 -0
  370. data/bin/Image-ExifTool-9.33/t/CanonVRD_5.out +3 -0
  371. data/bin/Image-ExifTool-9.33/t/CanonVRD_6.out +3 -0
  372. data/bin/Image-ExifTool-9.33/t/CanonVRD_7.out +2 -0
  373. data/bin/Image-ExifTool-9.33/t/CanonVRD_8.out +2 -0
  374. data/bin/Image-ExifTool-9.33/t/CanonVRD_9.out +1 -0
  375. data/bin/Image-ExifTool-9.33/t/Canon_2.out +350 -0
  376. data/bin/Image-ExifTool-9.33/t/Canon_3.out +3 -0
  377. data/bin/Image-ExifTool-9.33/t/Casio.t +54 -0
  378. data/bin/Image-ExifTool-9.33/t/Casio_2.out +70 -0
  379. data/bin/Image-ExifTool-9.33/t/Casio_3.out +100 -0
  380. data/bin/Image-ExifTool-9.33/t/Casio_4.out +26 -0
  381. data/bin/Image-ExifTool-9.33/t/Casio_5.out +78 -0
  382. data/bin/Image-ExifTool-9.33/t/Casio_6.out +115 -0
  383. data/bin/Image-ExifTool-9.33/t/DICOM.t +28 -0
  384. data/bin/Image-ExifTool-9.33/t/DICOM_2.out +108 -0
  385. data/bin/Image-ExifTool-9.33/t/DNG.t +39 -0
  386. data/bin/Image-ExifTool-9.33/t/DNG_2.out +326 -0
  387. data/bin/Image-ExifTool-9.33/t/DNG_3.out +4 -0
  388. data/bin/Image-ExifTool-9.33/t/DV.t +27 -0
  389. data/bin/Image-ExifTool-9.33/t/DV_2.out +24 -0
  390. data/bin/Image-ExifTool-9.33/t/DjVu.t +28 -0
  391. data/bin/Image-ExifTool-9.33/t/DjVu_2.out +44 -0
  392. data/bin/Image-ExifTool-9.33/t/EXE.t +31 -0
  393. data/bin/Image-ExifTool-9.33/t/EXE_2.out +40 -0
  394. data/bin/Image-ExifTool-9.33/t/EXE_3.out +15 -0
  395. data/bin/Image-ExifTool-9.33/t/EXE_4.out +14 -0
  396. data/bin/Image-ExifTool-9.33/t/ExifTool.t +284 -0
  397. data/bin/Image-ExifTool-9.33/t/ExifTool_16.out +180 -0
  398. data/bin/Image-ExifTool-9.33/t/ExifTool_17.out +594 -0
  399. data/bin/Image-ExifTool-9.33/t/ExifTool_2.out +399 -0
  400. data/bin/Image-ExifTool-9.33/t/ExifTool_20.out +1 -0
  401. data/bin/Image-ExifTool-9.33/t/ExifTool_21.out +1 -0
  402. data/bin/Image-ExifTool-9.33/t/ExifTool_22.out +1 -0
  403. data/bin/Image-ExifTool-9.33/t/ExifTool_23.out +6 -0
  404. data/bin/Image-ExifTool-9.33/t/ExifTool_24.out +3 -0
  405. data/bin/Image-ExifTool-9.33/t/ExifTool_25.out +13 -0
  406. data/bin/Image-ExifTool-9.33/t/ExifTool_26.out +12 -0
  407. data/bin/Image-ExifTool-9.33/t/ExifTool_3.out +87 -0
  408. data/bin/Image-ExifTool-9.33/t/ExifTool_4.out +41 -0
  409. data/bin/Image-ExifTool-9.33/t/ExifTool_5.out +6 -0
  410. data/bin/Image-ExifTool-9.33/t/ExifTool_6.out +68 -0
  411. data/bin/Image-ExifTool-9.33/t/ExifTool_7.out +125 -0
  412. data/bin/Image-ExifTool-9.33/t/ExifTool_8.out +125 -0
  413. data/bin/Image-ExifTool-9.33/t/ExifTool_9.out +33 -0
  414. data/bin/Image-ExifTool-9.33/t/FLAC.t +37 -0
  415. data/bin/Image-ExifTool-9.33/t/FLAC_2.out +25 -0
  416. data/bin/Image-ExifTool-9.33/t/FLAC_3.out +19 -0
  417. data/bin/Image-ExifTool-9.33/t/FLIR.t +30 -0
  418. data/bin/Image-ExifTool-9.33/t/FLIR_2.out +104 -0
  419. data/bin/Image-ExifTool-9.33/t/FLIR_3.out +47 -0
  420. data/bin/Image-ExifTool-9.33/t/Flash.t +37 -0
  421. data/bin/Image-ExifTool-9.33/t/FlashPix.t +30 -0
  422. data/bin/Image-ExifTool-9.33/t/FlashPix_2.out +48 -0
  423. data/bin/Image-ExifTool-9.33/t/Flash_2.out +20 -0
  424. data/bin/Image-ExifTool-9.33/t/Flash_3.out +53 -0
  425. data/bin/Image-ExifTool-9.33/t/Font.t +30 -0
  426. data/bin/Image-ExifTool-9.33/t/Font_2.out +23 -0
  427. data/bin/Image-ExifTool-9.33/t/Font_3.out +35 -0
  428. data/bin/Image-ExifTool-9.33/t/Font_4.out +26 -0
  429. data/bin/Image-ExifTool-9.33/t/Font_5.out +26 -0
  430. data/bin/Image-ExifTool-9.33/t/Font_6.out +36 -0
  431. data/bin/Image-ExifTool-9.33/t/Font_7.out +36 -0
  432. data/bin/Image-ExifTool-9.33/t/FotoStation.t +38 -0
  433. data/bin/Image-ExifTool-9.33/t/FotoStation_2.out +39 -0
  434. data/bin/Image-ExifTool-9.33/t/FotoStation_3.out +3 -0
  435. data/bin/Image-ExifTool-9.33/t/FujiFilm.t +78 -0
  436. data/bin/Image-ExifTool-9.33/t/FujiFilm_2.out +87 -0
  437. data/bin/Image-ExifTool-9.33/t/FujiFilm_3.out +88 -0
  438. data/bin/Image-ExifTool-9.33/t/FujiFilm_4.out +117 -0
  439. data/bin/Image-ExifTool-9.33/t/FujiFilm_5.out +1 -0
  440. data/bin/Image-ExifTool-9.33/t/GE.t +46 -0
  441. data/bin/Image-ExifTool-9.33/t/GE_2.out +84 -0
  442. data/bin/Image-ExifTool-9.33/t/GE_3.out +84 -0
  443. data/bin/Image-ExifTool-9.33/t/GIF.t +83 -0
  444. data/bin/Image-ExifTool-9.33/t/GIF_2.out +40 -0
  445. data/bin/Image-ExifTool-9.33/t/GIF_3.out +41 -0
  446. data/bin/Image-ExifTool-9.33/t/GIF_4.out +16 -0
  447. data/bin/Image-ExifTool-9.33/t/GIMP.t +27 -0
  448. data/bin/Image-ExifTool-9.33/t/GIMP_2.out +63 -0
  449. data/bin/Image-ExifTool-9.33/t/GPS.t +42 -0
  450. data/bin/Image-ExifTool-9.33/t/GPS_2.out +94 -0
  451. data/bin/Image-ExifTool-9.33/t/GPS_3.out +96 -0
  452. data/bin/Image-ExifTool-9.33/t/GeoTiff.t +36 -0
  453. data/bin/Image-ExifTool-9.33/t/GeoTiff_2.out +36 -0
  454. data/bin/Image-ExifTool-9.33/t/GeoTiff_3.out +36 -0
  455. data/bin/Image-ExifTool-9.33/t/Geotag.t +164 -0
  456. data/bin/Image-ExifTool-9.33/t/Geotag_2.out +9 -0
  457. data/bin/Image-ExifTool-9.33/t/Geotag_3.out +6 -0
  458. data/bin/Image-ExifTool-9.33/t/Geotag_5.out +1 -0
  459. data/bin/Image-ExifTool-9.33/t/Geotag_6.out +9 -0
  460. data/bin/Image-ExifTool-9.33/t/Geotag_7.out +53 -0
  461. data/bin/Image-ExifTool-9.33/t/Geotag_8.out +15 -0
  462. data/bin/Image-ExifTool-9.33/t/HTML.t +28 -0
  463. data/bin/Image-ExifTool-9.33/t/HTML_2.out +68 -0
  464. data/bin/Image-ExifTool-9.33/t/IPTC.t +157 -0
  465. data/bin/Image-ExifTool-9.33/t/IPTC_2.out +58 -0
  466. data/bin/Image-ExifTool-9.33/t/IPTC_4.out +56 -0
  467. data/bin/Image-ExifTool-9.33/t/IPTC_5.out +1 -0
  468. data/bin/Image-ExifTool-9.33/t/IPTC_6.out +2 -0
  469. data/bin/Image-ExifTool-9.33/t/IPTC_7.out +1 -0
  470. data/bin/Image-ExifTool-9.33/t/IPTC_8.out +20 -0
  471. data/bin/Image-ExifTool-9.33/t/ITC.t +28 -0
  472. data/bin/Image-ExifTool-9.33/t/ITC_2.out +19 -0
  473. data/bin/Image-ExifTool-9.33/t/InDesign.t +61 -0
  474. data/bin/Image-ExifTool-9.33/t/InDesign_2.out +19 -0
  475. data/bin/Image-ExifTool-9.33/t/InDesign_3.out +21 -0
  476. data/bin/Image-ExifTool-9.33/t/InDesign_4.out +11 -0
  477. data/bin/Image-ExifTool-9.33/t/JVC.t +36 -0
  478. data/bin/Image-ExifTool-9.33/t/JVC_2.out +3 -0
  479. data/bin/Image-ExifTool-9.33/t/JVC_3.out +3 -0
  480. data/bin/Image-ExifTool-9.33/t/Jpeg2000.t +49 -0
  481. data/bin/Image-ExifTool-9.33/t/Jpeg2000_2.out +63 -0
  482. data/bin/Image-ExifTool-9.33/t/Jpeg2000_3.out +51 -0
  483. data/bin/Image-ExifTool-9.33/t/Jpeg2000_4.out +15 -0
  484. data/bin/Image-ExifTool-9.33/t/Kodak.t +40 -0
  485. data/bin/Image-ExifTool-9.33/t/Kodak_2.out +109 -0
  486. data/bin/Image-ExifTool-9.33/t/Kodak_3.out +119 -0
  487. data/bin/Image-ExifTool-9.33/t/KyoceraRaw.t +28 -0
  488. data/bin/Image-ExifTool-9.33/t/KyoceraRaw_2.out +27 -0
  489. data/bin/Image-ExifTool-9.33/t/LNK.t +28 -0
  490. data/bin/Image-ExifTool-9.33/t/LNK_2.out +45 -0
  491. data/bin/Image-ExifTool-9.33/t/Lang.t +40 -0
  492. data/bin/Image-ExifTool-9.33/t/Lang_1.out +1 -0
  493. data/bin/Image-ExifTool-9.33/t/Lang_10.out +46 -0
  494. data/bin/Image-ExifTool-9.33/t/Lang_11.out +46 -0
  495. data/bin/Image-ExifTool-9.33/t/Lang_12.out +46 -0
  496. data/bin/Image-ExifTool-9.33/t/Lang_13.out +46 -0
  497. data/bin/Image-ExifTool-9.33/t/Lang_14.out +46 -0
  498. data/bin/Image-ExifTool-9.33/t/Lang_15.out +46 -0
  499. data/bin/Image-ExifTool-9.33/t/Lang_16.out +46 -0
  500. data/bin/Image-ExifTool-9.33/t/Lang_17.out +46 -0
  501. data/bin/Image-ExifTool-9.33/t/Lang_18.out +46 -0
  502. data/bin/Image-ExifTool-9.33/t/Lang_2.out +46 -0
  503. data/bin/Image-ExifTool-9.33/t/Lang_3.out +46 -0
  504. data/bin/Image-ExifTool-9.33/t/Lang_4.out +46 -0
  505. data/bin/Image-ExifTool-9.33/t/Lang_5.out +46 -0
  506. data/bin/Image-ExifTool-9.33/t/Lang_6.out +46 -0
  507. data/bin/Image-ExifTool-9.33/t/Lang_7.out +46 -0
  508. data/bin/Image-ExifTool-9.33/t/Lang_8.out +46 -0
  509. data/bin/Image-ExifTool-9.33/t/Lang_9.out +46 -0
  510. data/bin/Image-ExifTool-9.33/t/M2TS.t +29 -0
  511. data/bin/Image-ExifTool-9.33/t/M2TS_2.out +27 -0
  512. data/bin/Image-ExifTool-9.33/t/MIE.t +82 -0
  513. data/bin/Image-ExifTool-9.33/t/MIE_2.out +67 -0
  514. data/bin/Image-ExifTool-9.33/t/MIE_3.out +134 -0
  515. data/bin/Image-ExifTool-9.33/t/MIE_5.out +1 -0
  516. data/bin/Image-ExifTool-9.33/t/MIE_6.out +1 -0
  517. data/bin/Image-ExifTool-9.33/t/MIFF.t +28 -0
  518. data/bin/Image-ExifTool-9.33/t/MIFF_2.out +108 -0
  519. data/bin/Image-ExifTool-9.33/t/MP3.t +29 -0
  520. data/bin/Image-ExifTool-9.33/t/MP3_2.out +45 -0
  521. data/bin/Image-ExifTool-9.33/t/MWG.t +72 -0
  522. data/bin/Image-ExifTool-9.33/t/MWG_2.out +13 -0
  523. data/bin/Image-ExifTool-9.33/t/MWG_3.out +8 -0
  524. data/bin/Image-ExifTool-9.33/t/MWG_4.out +5 -0
  525. data/bin/Image-ExifTool-9.33/t/MWG_5.out +22 -0
  526. data/bin/Image-ExifTool-9.33/t/MXF.t +27 -0
  527. data/bin/Image-ExifTool-9.33/t/MXF_2.out +78 -0
  528. data/bin/Image-ExifTool-9.33/t/Matroska.t +29 -0
  529. data/bin/Image-ExifTool-9.33/t/Matroska_2.out +64 -0
  530. data/bin/Image-ExifTool-9.33/t/Minolta.t +50 -0
  531. data/bin/Image-ExifTool-9.33/t/Minolta_2.out +133 -0
  532. data/bin/Image-ExifTool-9.33/t/Minolta_3.out +146 -0
  533. data/bin/Image-ExifTool-9.33/t/Minolta_4.out +148 -0
  534. data/bin/Image-ExifTool-9.33/t/Nikon.t +114 -0
  535. data/bin/Image-ExifTool-9.33/t/Nikon_2.out +82 -0
  536. data/bin/Image-ExifTool-9.33/t/Nikon_3.out +98 -0
  537. data/bin/Image-ExifTool-9.33/t/Nikon_4.out +174 -0
  538. data/bin/Image-ExifTool-9.33/t/Nikon_5.out +167 -0
  539. data/bin/Image-ExifTool-9.33/t/Nikon_7.out +260 -0
  540. data/bin/Image-ExifTool-9.33/t/Nikon_8.out +4 -0
  541. data/bin/Image-ExifTool-9.33/t/Olympus.t +85 -0
  542. data/bin/Image-ExifTool-9.33/t/Olympus_2.out +79 -0
  543. data/bin/Image-ExifTool-9.33/t/Olympus_3.out +81 -0
  544. data/bin/Image-ExifTool-9.33/t/Olympus_4.out +192 -0
  545. data/bin/Image-ExifTool-9.33/t/Olympus_5.out +264 -0
  546. data/bin/Image-ExifTool-9.33/t/Olympus_6.out +151 -0
  547. data/bin/Image-ExifTool-9.33/t/Olympus_7.out +482 -0
  548. data/bin/Image-ExifTool-9.33/t/OpenEXR.t +28 -0
  549. data/bin/Image-ExifTool-9.33/t/OpenEXR_2.out +23 -0
  550. data/bin/Image-ExifTool-9.33/t/PDF.t +295 -0
  551. data/bin/Image-ExifTool-9.33/t/PDF_10.out +10 -0
  552. data/bin/Image-ExifTool-9.33/t/PDF_11.out +10 -0
  553. data/bin/Image-ExifTool-9.33/t/PDF_12.out +9 -0
  554. data/bin/Image-ExifTool-9.33/t/PDF_14.out +5 -0
  555. data/bin/Image-ExifTool-9.33/t/PDF_15.out +6 -0
  556. data/bin/Image-ExifTool-9.33/t/PDF_16.out +4 -0
  557. data/bin/Image-ExifTool-9.33/t/PDF_17.out +4 -0
  558. data/bin/Image-ExifTool-9.33/t/PDF_18.out +5 -0
  559. data/bin/Image-ExifTool-9.33/t/PDF_19.out +6 -0
  560. data/bin/Image-ExifTool-9.33/t/PDF_2.out +117 -0
  561. data/bin/Image-ExifTool-9.33/t/PDF_20.out +4 -0
  562. data/bin/Image-ExifTool-9.33/t/PDF_22.out +3 -0
  563. data/bin/Image-ExifTool-9.33/t/PDF_4.out +12 -0
  564. data/bin/Image-ExifTool-9.33/t/PDF_5.out +8 -0
  565. data/bin/Image-ExifTool-9.33/t/PDF_6.out +9 -0
  566. data/bin/Image-ExifTool-9.33/t/PDF_7.out +11 -0
  567. data/bin/Image-ExifTool-9.33/t/PDF_8.out +9 -0
  568. data/bin/Image-ExifTool-9.33/t/PDF_9.out +9 -0
  569. data/bin/Image-ExifTool-9.33/t/PGF.t +28 -0
  570. data/bin/Image-ExifTool-9.33/t/PGF_2.out +32 -0
  571. data/bin/Image-ExifTool-9.33/t/PICT.t +28 -0
  572. data/bin/Image-ExifTool-9.33/t/PICT_2.out +15 -0
  573. data/bin/Image-ExifTool-9.33/t/PLIST.t +31 -0
  574. data/bin/Image-ExifTool-9.33/t/PLIST_2.out +20 -0
  575. data/bin/Image-ExifTool-9.33/t/PLIST_3.out +20 -0
  576. data/bin/Image-ExifTool-9.33/t/PNG.t +75 -0
  577. data/bin/Image-ExifTool-9.33/t/PNG_2.out +22 -0
  578. data/bin/Image-ExifTool-9.33/t/PNG_3.out +118 -0
  579. data/bin/Image-ExifTool-9.33/t/PNG_4.out +12 -0
  580. data/bin/Image-ExifTool-9.33/t/PPM.t +40 -0
  581. data/bin/Image-ExifTool-9.33/t/PPM_2.out +15 -0
  582. data/bin/Image-ExifTool-9.33/t/PPM_3.out +9 -0
  583. data/bin/Image-ExifTool-9.33/t/PSP.t +28 -0
  584. data/bin/Image-ExifTool-9.33/t/PSP_2.out +32 -0
  585. data/bin/Image-ExifTool-9.33/t/Panasonic.t +60 -0
  586. data/bin/Image-ExifTool-9.33/t/Panasonic_2.out +99 -0
  587. data/bin/Image-ExifTool-9.33/t/Panasonic_3.out +119 -0
  588. data/bin/Image-ExifTool-9.33/t/Panasonic_4.out +177 -0
  589. data/bin/Image-ExifTool-9.33/t/Panasonic_5.out +228 -0
  590. data/bin/Image-ExifTool-9.33/t/Pentax.t +50 -0
  591. data/bin/Image-ExifTool-9.33/t/Pentax_2.out +219 -0
  592. data/bin/Image-ExifTool-9.33/t/Pentax_3.out +262 -0
  593. data/bin/Image-ExifTool-9.33/t/Pentax_4.out +123 -0
  594. data/bin/Image-ExifTool-9.33/t/PhotoCD.t +28 -0
  595. data/bin/Image-ExifTool-9.33/t/PhotoCD_2.out +35 -0
  596. data/bin/Image-ExifTool-9.33/t/PhotoMechanic.t +38 -0
  597. data/bin/Image-ExifTool-9.33/t/PhotoMechanic_2.out +81 -0
  598. data/bin/Image-ExifTool-9.33/t/PhotoMechanic_3.out +2 -0
  599. data/bin/Image-ExifTool-9.33/t/Photoshop.t +42 -0
  600. data/bin/Image-ExifTool-9.33/t/Photoshop_2.out +96 -0
  601. data/bin/Image-ExifTool-9.33/t/Photoshop_3.out +108 -0
  602. data/bin/Image-ExifTool-9.33/t/PostScript.t +49 -0
  603. data/bin/Image-ExifTool-9.33/t/PostScript_2.out +64 -0
  604. data/bin/Image-ExifTool-9.33/t/PostScript_3.out +132 -0
  605. data/bin/Image-ExifTool-9.33/t/QuickTime.t +31 -0
  606. data/bin/Image-ExifTool-9.33/t/QuickTime_2.out +128 -0
  607. data/bin/Image-ExifTool-9.33/t/QuickTime_3.out +69 -0
  608. data/bin/Image-ExifTool-9.33/t/RIFF.t +31 -0
  609. data/bin/Image-ExifTool-9.33/t/RIFF_2.out +24 -0
  610. data/bin/Image-ExifTool-9.33/t/RIFF_3.out +52 -0
  611. data/bin/Image-ExifTool-9.33/t/RIFF_4.out +16 -0
  612. data/bin/Image-ExifTool-9.33/t/RTF.t +27 -0
  613. data/bin/Image-ExifTool-9.33/t/RTF_2.out +20 -0
  614. data/bin/Image-ExifTool-9.33/t/Radiance.t +28 -0
  615. data/bin/Image-ExifTool-9.33/t/Radiance_2.out +22 -0
  616. data/bin/Image-ExifTool-9.33/t/Real.t +46 -0
  617. data/bin/Image-ExifTool-9.33/t/Real_2.out +68 -0
  618. data/bin/Image-ExifTool-9.33/t/Real_3.out +18 -0
  619. data/bin/Image-ExifTool-9.33/t/Real_4.out +11 -0
  620. data/bin/Image-ExifTool-9.33/t/Ricoh.t +47 -0
  621. data/bin/Image-ExifTool-9.33/t/Ricoh_2.out +70 -0
  622. data/bin/Image-ExifTool-9.33/t/Ricoh_3.out +98 -0
  623. data/bin/Image-ExifTool-9.33/t/Ricoh_4.out +112 -0
  624. data/bin/Image-ExifTool-9.33/t/Sanyo.t +39 -0
  625. data/bin/Image-ExifTool-9.33/t/Sanyo_2.out +101 -0
  626. data/bin/Image-ExifTool-9.33/t/Sanyo_3.out +111 -0
  627. data/bin/Image-ExifTool-9.33/t/Sigma.t +60 -0
  628. data/bin/Image-ExifTool-9.33/t/Sigma_2.out +91 -0
  629. data/bin/Image-ExifTool-9.33/t/Sigma_3.out +94 -0
  630. data/bin/Image-ExifTool-9.33/t/Sigma_4.out +63 -0
  631. data/bin/Image-ExifTool-9.33/t/Sigma_5.out +192 -0
  632. data/bin/Image-ExifTool-9.33/t/Sony.t +62 -0
  633. data/bin/Image-ExifTool-9.33/t/Sony_2.out +84 -0
  634. data/bin/Image-ExifTool-9.33/t/Sony_3.out +85 -0
  635. data/bin/Image-ExifTool-9.33/t/Sony_5.out +32 -0
  636. data/bin/Image-ExifTool-9.33/t/TestLib.pm +417 -0
  637. data/bin/Image-ExifTool-9.33/t/Unknown.t +36 -0
  638. data/bin/Image-ExifTool-9.33/t/Unknown_2.out +90 -0
  639. data/bin/Image-ExifTool-9.33/t/Unknown_3.out +90 -0
  640. data/bin/Image-ExifTool-9.33/t/Vorbis.t +28 -0
  641. data/bin/Image-ExifTool-9.33/t/Vorbis_2.out +28 -0
  642. data/bin/Image-ExifTool-9.33/t/Writer.t +913 -0
  643. data/bin/Image-ExifTool-9.33/t/Writer_10.out +240 -0
  644. data/bin/Image-ExifTool-9.33/t/Writer_11.out +37 -0
  645. data/bin/Image-ExifTool-9.33/t/Writer_13.out +160 -0
  646. data/bin/Image-ExifTool-9.33/t/Writer_14.out +67 -0
  647. data/bin/Image-ExifTool-9.33/t/Writer_15.out +171 -0
  648. data/bin/Image-ExifTool-9.33/t/Writer_16.out +1 -0
  649. data/bin/Image-ExifTool-9.33/t/Writer_17.out +1 -0
  650. data/bin/Image-ExifTool-9.33/t/Writer_18.out +3 -0
  651. data/bin/Image-ExifTool-9.33/t/Writer_19.out +34 -0
  652. data/bin/Image-ExifTool-9.33/t/Writer_2.out +168 -0
  653. data/bin/Image-ExifTool-9.33/t/Writer_22.out +4 -0
  654. data/bin/Image-ExifTool-9.33/t/Writer_24.out +1 -0
  655. data/bin/Image-ExifTool-9.33/t/Writer_25.out +38 -0
  656. data/bin/Image-ExifTool-9.33/t/Writer_26.out +32 -0
  657. data/bin/Image-ExifTool-9.33/t/Writer_27.out +14 -0
  658. data/bin/Image-ExifTool-9.33/t/Writer_28.out +1 -0
  659. data/bin/Image-ExifTool-9.33/t/Writer_29.out +2 -0
  660. data/bin/Image-ExifTool-9.33/t/Writer_30.out +2 -0
  661. data/bin/Image-ExifTool-9.33/t/Writer_31.out +97 -0
  662. data/bin/Image-ExifTool-9.33/t/Writer_32.out +3 -0
  663. data/bin/Image-ExifTool-9.33/t/Writer_33.out +3 -0
  664. data/bin/Image-ExifTool-9.33/t/Writer_34.out +3 -0
  665. data/bin/Image-ExifTool-9.33/t/Writer_35.out +187 -0
  666. data/bin/Image-ExifTool-9.33/t/Writer_36.out +2 -0
  667. data/bin/Image-ExifTool-9.33/t/Writer_37.out +2 -0
  668. data/bin/Image-ExifTool-9.33/t/Writer_38.out +62 -0
  669. data/bin/Image-ExifTool-9.33/t/Writer_39.out +4 -0
  670. data/bin/Image-ExifTool-9.33/t/Writer_4.out +85 -0
  671. data/bin/Image-ExifTool-9.33/t/Writer_40.out +4 -0
  672. data/bin/Image-ExifTool-9.33/t/Writer_41.out +3 -0
  673. data/bin/Image-ExifTool-9.33/t/Writer_42.out +5 -0
  674. data/bin/Image-ExifTool-9.33/t/Writer_43.out +5 -0
  675. data/bin/Image-ExifTool-9.33/t/Writer_44.out +2 -0
  676. data/bin/Image-ExifTool-9.33/t/Writer_45.out +1 -0
  677. data/bin/Image-ExifTool-9.33/t/Writer_46.out +77 -0
  678. data/bin/Image-ExifTool-9.33/t/Writer_47.out +56 -0
  679. data/bin/Image-ExifTool-9.33/t/Writer_48.out +29 -0
  680. data/bin/Image-ExifTool-9.33/t/Writer_50.out +3 -0
  681. data/bin/Image-ExifTool-9.33/t/Writer_51.out +386 -0
  682. data/bin/Image-ExifTool-9.33/t/Writer_6.out +182 -0
  683. data/bin/Image-ExifTool-9.33/t/Writer_7.out +149 -0
  684. data/bin/Image-ExifTool-9.33/t/Writer_9.out +237 -0
  685. data/bin/Image-ExifTool-9.33/t/XMP.t +521 -0
  686. data/bin/Image-ExifTool-9.33/t/XMP_10.out +33 -0
  687. data/bin/Image-ExifTool-9.33/t/XMP_11.out +59 -0
  688. data/bin/Image-ExifTool-9.33/t/XMP_12.out +4 -0
  689. data/bin/Image-ExifTool-9.33/t/XMP_13.out +5 -0
  690. data/bin/Image-ExifTool-9.33/t/XMP_14.out +3 -0
  691. data/bin/Image-ExifTool-9.33/t/XMP_15.out +3 -0
  692. data/bin/Image-ExifTool-9.33/t/XMP_16.out +5 -0
  693. data/bin/Image-ExifTool-9.33/t/XMP_17.out +6 -0
  694. data/bin/Image-ExifTool-9.33/t/XMP_18.out +10 -0
  695. data/bin/Image-ExifTool-9.33/t/XMP_19.out +35 -0
  696. data/bin/Image-ExifTool-9.33/t/XMP_2.out +138 -0
  697. data/bin/Image-ExifTool-9.33/t/XMP_20.out +35 -0
  698. data/bin/Image-ExifTool-9.33/t/XMP_21.out +38 -0
  699. data/bin/Image-ExifTool-9.33/t/XMP_22.out +38 -0
  700. data/bin/Image-ExifTool-9.33/t/XMP_23.out +9 -0
  701. data/bin/Image-ExifTool-9.33/t/XMP_24.out +31 -0
  702. data/bin/Image-ExifTool-9.33/t/XMP_25.out +28 -0
  703. data/bin/Image-ExifTool-9.33/t/XMP_26.out +52 -0
  704. data/bin/Image-ExifTool-9.33/t/XMP_27.out +93 -0
  705. data/bin/Image-ExifTool-9.33/t/XMP_28.out +44 -0
  706. data/bin/Image-ExifTool-9.33/t/XMP_29.out +24 -0
  707. data/bin/Image-ExifTool-9.33/t/XMP_3.out +136 -0
  708. data/bin/Image-ExifTool-9.33/t/XMP_30.out +90 -0
  709. data/bin/Image-ExifTool-9.33/t/XMP_31.out +19 -0
  710. data/bin/Image-ExifTool-9.33/t/XMP_32.out +2 -0
  711. data/bin/Image-ExifTool-9.33/t/XMP_34.out +2 -0
  712. data/bin/Image-ExifTool-9.33/t/XMP_36.out +18 -0
  713. data/bin/Image-ExifTool-9.33/t/XMP_37.out +35 -0
  714. data/bin/Image-ExifTool-9.33/t/XMP_39.out +44 -0
  715. data/bin/Image-ExifTool-9.33/t/XMP_40.out +3 -0
  716. data/bin/Image-ExifTool-9.33/t/XMP_41.out +175 -0
  717. data/bin/Image-ExifTool-9.33/t/XMP_5.out +29 -0
  718. data/bin/Image-ExifTool-9.33/t/XMP_6.out +87 -0
  719. data/bin/Image-ExifTool-9.33/t/XMP_7.out +118 -0
  720. data/bin/Image-ExifTool-9.33/t/XMP_8.out +17 -0
  721. data/bin/Image-ExifTool-9.33/t/XMP_9.out +36 -0
  722. data/bin/Image-ExifTool-9.33/t/ZIP.t +69 -0
  723. data/bin/Image-ExifTool-9.33/t/ZIP_2.out +18 -0
  724. data/bin/Image-ExifTool-9.33/t/ZIP_3.out +17 -0
  725. data/bin/Image-ExifTool-9.33/t/ZIP_4.out +213 -0
  726. data/bin/Image-ExifTool-9.33/t/ZIP_5.out +134 -0
  727. data/bin/Image-ExifTool-9.33/t/ZIP_6.out +49 -0
  728. data/bin/Image-ExifTool-9.33/t/ZIP_7.out +28 -0
  729. data/bin/Image-ExifTool-9.33/t/images/AFCP.jpg +0 -0
  730. data/bin/Image-ExifTool-9.33/t/images/AIFF.aif +0 -0
  731. data/bin/Image-ExifTool-9.33/t/images/APE.ape +0 -0
  732. data/bin/Image-ExifTool-9.33/t/images/APE.mpc +0 -0
  733. data/bin/Image-ExifTool-9.33/t/images/ASF.wmv +0 -0
  734. data/bin/Image-ExifTool-9.33/t/images/BMP.bmp +0 -0
  735. data/bin/Image-ExifTool-9.33/t/images/BigTIFF.btf +0 -0
  736. data/bin/Image-ExifTool-9.33/t/images/Canon.jpg +0 -0
  737. data/bin/Image-ExifTool-9.33/t/images/Canon1DmkIII.jpg +0 -0
  738. data/bin/Image-ExifTool-9.33/t/images/CanonRaw.cr2 +0 -0
  739. data/bin/Image-ExifTool-9.33/t/images/CanonRaw.crw +0 -0
  740. data/bin/Image-ExifTool-9.33/t/images/CanonVRD.vrd +0 -0
  741. data/bin/Image-ExifTool-9.33/t/images/CaptureOne.eip +0 -0
  742. data/bin/Image-ExifTool-9.33/t/images/Casio.jpg +0 -0
  743. data/bin/Image-ExifTool-9.33/t/images/Casio2.jpg +0 -0
  744. data/bin/Image-ExifTool-9.33/t/images/CasioQVCI.jpg +0 -0
  745. data/bin/Image-ExifTool-9.33/t/images/DICOM.dcm +0 -0
  746. data/bin/Image-ExifTool-9.33/t/images/DNG.dng +0 -0
  747. data/bin/Image-ExifTool-9.33/t/images/DV.dv +0 -0
  748. data/bin/Image-ExifTool-9.33/t/images/DjVu.djvu +0 -0
  749. data/bin/Image-ExifTool-9.33/t/images/EXE.elf +0 -0
  750. data/bin/Image-ExifTool-9.33/t/images/EXE.exe +0 -0
  751. data/bin/Image-ExifTool-9.33/t/images/EXE.macho +0 -0
  752. data/bin/Image-ExifTool-9.33/t/images/ExifTool.jpg +0 -0
  753. data/bin/Image-ExifTool-9.33/t/images/ExifTool.tif +0 -0
  754. data/bin/Image-ExifTool-9.33/t/images/ExtendedXMP.jpg +0 -0
  755. data/bin/Image-ExifTool-9.33/t/images/FLAC.flac +0 -0
  756. data/bin/Image-ExifTool-9.33/t/images/FLAC.ogg +0 -0
  757. data/bin/Image-ExifTool-9.33/t/images/FLIR.fpf +0 -0
  758. data/bin/Image-ExifTool-9.33/t/images/FLIR.jpg +0 -0
  759. data/bin/Image-ExifTool-9.33/t/images/Flash.flv +0 -0
  760. data/bin/Image-ExifTool-9.33/t/images/Flash.swf +0 -0
  761. data/bin/Image-ExifTool-9.33/t/images/FlashPix.ppt +0 -0
  762. data/bin/Image-ExifTool-9.33/t/images/Font.afm +28 -0
  763. data/bin/Image-ExifTool-9.33/t/images/Font.dfont +0 -0
  764. data/bin/Image-ExifTool-9.33/t/images/Font.pfa +38 -0
  765. data/bin/Image-ExifTool-9.33/t/images/Font.pfb +0 -0
  766. data/bin/Image-ExifTool-9.33/t/images/Font.pfm +0 -0
  767. data/bin/Image-ExifTool-9.33/t/images/Font.ttf +0 -0
  768. data/bin/Image-ExifTool-9.33/t/images/FotoStation.jpg +0 -0
  769. data/bin/Image-ExifTool-9.33/t/images/FujiFilm.jpg +0 -0
  770. data/bin/Image-ExifTool-9.33/t/images/FujiFilm.raf +0 -0
  771. data/bin/Image-ExifTool-9.33/t/images/GE.jpg +0 -0
  772. data/bin/Image-ExifTool-9.33/t/images/GIF.gif +0 -0
  773. data/bin/Image-ExifTool-9.33/t/images/GIMP.xcf +0 -0
  774. data/bin/Image-ExifTool-9.33/t/images/GPS.jpg +0 -0
  775. data/bin/Image-ExifTool-9.33/t/images/GeoTiff.tif +0 -0
  776. data/bin/Image-ExifTool-9.33/t/images/Geotag.gpx +23 -0
  777. data/bin/Image-ExifTool-9.33/t/images/Geotag.igc +24 -0
  778. data/bin/Image-ExifTool-9.33/t/images/Geotag.log +13 -0
  779. data/bin/Image-ExifTool-9.33/t/images/Geotag.xml +23 -0
  780. data/bin/Image-ExifTool-9.33/t/images/Geotag2.log +7 -0
  781. data/bin/Image-ExifTool-9.33/t/images/HTML.html +77 -0
  782. data/bin/Image-ExifTool-9.33/t/images/IPTC.jpg +0 -0
  783. data/bin/Image-ExifTool-9.33/t/images/ITC.itc +0 -0
  784. data/bin/Image-ExifTool-9.33/t/images/InDesign.indd +0 -0
  785. data/bin/Image-ExifTool-9.33/t/images/JVC.jpg +0 -0
  786. data/bin/Image-ExifTool-9.33/t/images/JVC2.jpg +0 -0
  787. data/bin/Image-ExifTool-9.33/t/images/Jpeg2000.j2c +0 -0
  788. data/bin/Image-ExifTool-9.33/t/images/Jpeg2000.jp2 +0 -0
  789. data/bin/Image-ExifTool-9.33/t/images/Kodak.jpg +0 -0
  790. data/bin/Image-ExifTool-9.33/t/images/KyoceraRaw.raw +0 -0
  791. data/bin/Image-ExifTool-9.33/t/images/LNK.lnk +0 -0
  792. data/bin/Image-ExifTool-9.33/t/images/M2TS.mts +0 -0
  793. data/bin/Image-ExifTool-9.33/t/images/MIE.mie +0 -0
  794. data/bin/Image-ExifTool-9.33/t/images/MIFF.miff +0 -0
  795. data/bin/Image-ExifTool-9.33/t/images/MP3.mp3 +0 -0
  796. data/bin/Image-ExifTool-9.33/t/images/MWG.jpg +0 -0
  797. data/bin/Image-ExifTool-9.33/t/images/MXF.mxf +0 -0
  798. data/bin/Image-ExifTool-9.33/t/images/Matroska.mkv +0 -0
  799. data/bin/Image-ExifTool-9.33/t/images/Minolta.jpg +0 -0
  800. data/bin/Image-ExifTool-9.33/t/images/Minolta.mrw +0 -0
  801. data/bin/Image-ExifTool-9.33/t/images/Nikon.jpg +0 -0
  802. data/bin/Image-ExifTool-9.33/t/images/Nikon.nef +0 -0
  803. data/bin/Image-ExifTool-9.33/t/images/NikonD2Hs.jpg +0 -0
  804. data/bin/Image-ExifTool-9.33/t/images/NikonD70.jpg +0 -0
  805. data/bin/Image-ExifTool-9.33/t/images/OOXML.docx +0 -0
  806. data/bin/Image-ExifTool-9.33/t/images/Olympus.jpg +0 -0
  807. data/bin/Image-ExifTool-9.33/t/images/Olympus2.jpg +0 -0
  808. data/bin/Image-ExifTool-9.33/t/images/OlympusE1.jpg +0 -0
  809. data/bin/Image-ExifTool-9.33/t/images/OpenDoc.ods +0 -0
  810. data/bin/Image-ExifTool-9.33/t/images/OpenEXR.exr +0 -0
  811. data/bin/Image-ExifTool-9.33/t/images/PDF.pdf +0 -0
  812. data/bin/Image-ExifTool-9.33/t/images/PDF2.pdf +0 -0
  813. data/bin/Image-ExifTool-9.33/t/images/PGF.pgf +0 -0
  814. data/bin/Image-ExifTool-9.33/t/images/PICT.pict +0 -0
  815. data/bin/Image-ExifTool-9.33/t/images/PLIST-bin.plist +0 -0
  816. data/bin/Image-ExifTool-9.33/t/images/PLIST-xml.plist +35 -0
  817. data/bin/Image-ExifTool-9.33/t/images/PNG.png +0 -0
  818. data/bin/Image-ExifTool-9.33/t/images/PPM.ppm +5 -0
  819. data/bin/Image-ExifTool-9.33/t/images/PSP.psp +0 -0
  820. data/bin/Image-ExifTool-9.33/t/images/Panasonic.jpg +0 -0
  821. data/bin/Image-ExifTool-9.33/t/images/Panasonic.rw2 +0 -0
  822. data/bin/Image-ExifTool-9.33/t/images/Pentax.avi +0 -0
  823. data/bin/Image-ExifTool-9.33/t/images/Pentax.jpg +0 -0
  824. data/bin/Image-ExifTool-9.33/t/images/PhotoCD.pcd +0 -0
  825. data/bin/Image-ExifTool-9.33/t/images/PhotoMechanic.jpg +0 -0
  826. data/bin/Image-ExifTool-9.33/t/images/Photoshop.psd +0 -0
  827. data/bin/Image-ExifTool-9.33/t/images/PostScript.eps +108 -0
  828. data/bin/Image-ExifTool-9.33/t/images/QuickTime.m4a +0 -0
  829. data/bin/Image-ExifTool-9.33/t/images/QuickTime.mov +0 -0
  830. data/bin/Image-ExifTool-9.33/t/images/RIFF.avi +0 -0
  831. data/bin/Image-ExifTool-9.33/t/images/RIFF.wav +0 -0
  832. data/bin/Image-ExifTool-9.33/t/images/RIFF.webp +0 -0
  833. data/bin/Image-ExifTool-9.33/t/images/RTF.rtf +25 -0
  834. data/bin/Image-ExifTool-9.33/t/images/Radiance.hdr +0 -0
  835. data/bin/Image-ExifTool-9.33/t/images/Real.ra +0 -0
  836. data/bin/Image-ExifTool-9.33/t/images/Real.ram +1 -0
  837. data/bin/Image-ExifTool-9.33/t/images/Real.rm +0 -0
  838. data/bin/Image-ExifTool-9.33/t/images/Ricoh.jpg +0 -0
  839. data/bin/Image-ExifTool-9.33/t/images/Ricoh2.jpg +0 -0
  840. data/bin/Image-ExifTool-9.33/t/images/Sanyo.jpg +0 -0
  841. data/bin/Image-ExifTool-9.33/t/images/Sigma.jpg +0 -0
  842. data/bin/Image-ExifTool-9.33/t/images/Sigma.x3f +0 -0
  843. data/bin/Image-ExifTool-9.33/t/images/SigmaDP2.x3f +0 -0
  844. data/bin/Image-ExifTool-9.33/t/images/Sony.jpg +0 -0
  845. data/bin/Image-ExifTool-9.33/t/images/Sony.pmp +0 -0
  846. data/bin/Image-ExifTool-9.33/t/images/Unknown.jpg +0 -0
  847. data/bin/Image-ExifTool-9.33/t/images/Vorbis.ogg +0 -0
  848. data/bin/Image-ExifTool-9.33/t/images/Writer.jpg +0 -0
  849. data/bin/Image-ExifTool-9.33/t/images/XMP.inx +108 -0
  850. data/bin/Image-ExifTool-9.33/t/images/XMP.jpg +0 -0
  851. data/bin/Image-ExifTool-9.33/t/images/XMP.svg +33 -0
  852. data/bin/Image-ExifTool-9.33/t/images/XMP.xml +98 -0
  853. data/bin/Image-ExifTool-9.33/t/images/XMP.xmp +99 -0
  854. data/bin/Image-ExifTool-9.33/t/images/XMP2.xmp +25 -0
  855. data/bin/Image-ExifTool-9.33/t/images/XMP3.xmp +43 -0
  856. data/bin/Image-ExifTool-9.33/t/images/XMP4.xmp +93 -0
  857. data/bin/Image-ExifTool-9.33/t/images/XMP5.xmp +158 -0
  858. data/bin/Image-ExifTool-9.33/t/images/ZIP.gz +0 -0
  859. data/bin/Image-ExifTool-9.33/t/images/ZIP.zip +0 -0
  860. data/bin/Image-ExifTool-9.33/t/images/iWork.numbers +0 -0
  861. data/lib/exiftool_vendored.rb +10 -0
  862. data/lib/exiftool_vendored/version.rb +3 -0
  863. data/lib/exiftool_vendored/version_extractor.rb +17 -0
  864. metadata +977 -0
@@ -0,0 +1,289 @@
1
+ #------------------------------------------------------------------------------
2
+ # File: MPF.pm
3
+ #
4
+ # Description: Read Multi-Picture Format information
5
+ #
6
+ # Revisions: 06/12/2009 - P. Harvey Created
7
+ #
8
+ # References: 1) http://www.cipa.jp/english/hyoujunka/kikaku/pdf/DC-007_E.pdf
9
+ #------------------------------------------------------------------------------
10
+
11
+ package Image::ExifTool::MPF;
12
+
13
+ use strict;
14
+ use vars qw($VERSION);
15
+ use Image::ExifTool qw(:DataAccess :Utils);
16
+ use Image::ExifTool::Exif;
17
+
18
+ $VERSION = '1.06';
19
+
20
+ sub ProcessMPImageList($$$);
21
+
22
+ # Tags found in MPF APP2 segment in JPEG images
23
+ %Image::ExifTool::MPF::Main = (
24
+ GROUPS => { 0 => 'MPF', 1 => 'MPF0', 2 => 'Image'},
25
+ NOTES => q{
26
+ These tags are part of the CIPA Multi-Picture Format specification, and are
27
+ found in the APP2 "MPF" segment of JPEG images. MPImage data referenced
28
+ from this segment is stored as a JPEG trailer. The MPF tags are not
29
+ writable, however the MPG segment may be deleted as a group (with "MPF:All")
30
+ but then the JPEG trailer should also be deleted (with "Trailer:All"). See
31
+ L<http://www.cipa.jp/english/hyoujunka/kikaku/pdf/DC-007_E.pdf> for the
32
+ official specification.
33
+ },
34
+ 0xb000 => 'MPFVersion',
35
+ 0xb001 => 'NumberOfImages',
36
+ 0xb002 => {
37
+ Name => 'MPImageList',
38
+ SubDirectory => {
39
+ TagTable => 'Image::ExifTool::MPF::MPImage',
40
+ ProcessProc => \&ProcessMPImageList,
41
+ },
42
+ },
43
+ 0xb003 => {
44
+ Name => 'ImageUIDList',
45
+ Binary => 1,
46
+ },
47
+ 0xb004 => 'TotalFrames',
48
+ 0xb101 => 'MPIndividualNum',
49
+ 0xb201 => {
50
+ Name => 'PanOrientation',
51
+ PrintHex => 1,
52
+ Notes => 'long integer is split into 4 bytes',
53
+ ValueConv => 'join(" ",unpack("C*",pack("N",$val)))',
54
+ PrintConv => [
55
+ '"$val rows"',
56
+ '"$val columns"',
57
+ {
58
+ 0 => '[unused]',
59
+ 1 => 'Start at top right',
60
+ 2 => 'Start at top left',
61
+ 3 => 'Start at bottom left',
62
+ 4 => 'Start at bottom right',
63
+ },
64
+ {
65
+ 0x01 => 'Left to right',
66
+ 0x02 => 'Right to left',
67
+ 0x03 => 'Top to bottom',
68
+ 0x04 => 'Bottom to top',
69
+ 0x10 => 'Clockwise',
70
+ 0x20 => 'Counter clockwise',
71
+ 0x30 => 'Zigzag (row start)',
72
+ 0x40 => 'Zigzag (column start)',
73
+ },
74
+ ],
75
+ },
76
+ 0xb202 => 'PanOverlapH',
77
+ 0xb203 => 'PanOverlapV',
78
+ 0xb204 => 'BaseViewpointNum',
79
+ 0xb205 => 'ConvergenceAngle',
80
+ 0xb206 => 'BaselineLength',
81
+ 0xb207 => 'VerticalDivergence',
82
+ 0xb208 => 'AxisDistanceX',
83
+ 0xb209 => 'AxisDistanceY',
84
+ 0xb20a => 'AxisDistanceZ',
85
+ 0xb20b => 'YawAngle',
86
+ 0xb20c => 'PitchAngle',
87
+ 0xb20d => 'RollAngle',
88
+ );
89
+
90
+ # Tags found in MPImage structure
91
+ %Image::ExifTool::MPF::MPImage = (
92
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
93
+ #WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
94
+ #CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
95
+ #WRITABLE => 1,
96
+ GROUPS => { 0 => 'MPF', 1 => 'MPImage', 2 => 'Image'},
97
+ NOTES => q{
98
+ The first MPF "Large Thumbnail" image is extracted as PreviewImage, and the
99
+ rest of the embedded MPF images are extracted as MPImage#. The
100
+ ExtractEmbedded (-ee) option may be used to extract information from these
101
+ embedded images.
102
+ },
103
+ 0.1 => {
104
+ Name => 'MPImageFlags',
105
+ Format => 'int32u',
106
+ Mask => 0xf8000000,
107
+ PrintConv => { BITMASK => {
108
+ 29 => 'Representative image',
109
+ 30 => 'Dependent child image',
110
+ 31 => 'Dependent parent image',
111
+ }},
112
+ },
113
+ 0.2 => {
114
+ Name => 'MPImageFormat',
115
+ Format => 'int32u',
116
+ Mask => 0x07000000,
117
+ PrintConv => {
118
+ 0 => 'JPEG',
119
+ },
120
+ },
121
+ 0.3 => {
122
+ Name => 'MPImageType',
123
+ Format => 'int32u',
124
+ Mask => 0x00ffffff,
125
+ PrintHex => 1,
126
+ PrintConv => {
127
+ 0x000000 => 'Undefined',
128
+ 0x010001 => 'Large Thumbnail (VGA equivalent)',
129
+ 0x010002 => 'Large Thumbnail (full HD equivalent)',
130
+ 0x020001 => 'Multi-frame Panorama',
131
+ 0x020002 => 'Multi-frame Disparity',
132
+ 0x020003 => 'Multi-angle',
133
+ 0x030000 => 'Baseline MP Primary Image',
134
+ },
135
+ },
136
+ 4 => {
137
+ Name => 'MPImageLength',
138
+ Format => 'int32u',
139
+ },
140
+ 8 => {
141
+ Name => 'MPImageStart',
142
+ Format => 'int32u',
143
+ IsOffset => '$val',
144
+ },
145
+ 12 => {
146
+ Name => 'DependentImage1EntryNumber',
147
+ Format => 'int16u',
148
+ },
149
+ 14 => {
150
+ Name => 'DependentImage2EntryNumber',
151
+ Format => 'int16u',
152
+ },
153
+ );
154
+
155
+ # extract MP Images as composite tags
156
+ %Image::ExifTool::MPF::Composite = (
157
+ GROUPS => { 2 => 'Image' },
158
+ MPImage => {
159
+ Require => {
160
+ 0 => 'MPImageStart',
161
+ 1 => 'MPImageLength',
162
+ 2 => 'MPImageType',
163
+ },
164
+ Notes => q{
165
+ the first MPF "Large Thumbnail" is extracted as PreviewImage, and the rest
166
+ of the embedded MPF images are extracted as MPImage#. The ExtractEmbedded
167
+ option may be used to extract information from these embedded images.
168
+ },
169
+ # extract all MPF images (not just one)
170
+ RawConv => q{
171
+ require Image::ExifTool::MPF;
172
+ Image::ExifTool::MPF::ExtractMPImages($self);
173
+ },
174
+ },
175
+ );
176
+
177
+ # add our composite tags
178
+ Image::ExifTool::AddCompositeTags('Image::ExifTool::MPF');
179
+
180
+ #------------------------------------------------------------------------------
181
+ # Extract all MP images
182
+ # Inputs: 0) ExifTool object ref
183
+ # Returns: undef
184
+ sub ExtractMPImages($)
185
+ {
186
+ my $exifTool = shift;
187
+ my $ee = $exifTool->Options('ExtractEmbedded');
188
+ my $saveBinary = $exifTool->Options('Binary');
189
+ my ($i, $didPreview, $xtra);
190
+
191
+ for ($i=1; $xtra or not defined $xtra; ++$i) {
192
+ # run through MP images in the same order they were extracted
193
+ $xtra = defined $$exifTool{VALUE}{"MPImageStart ($i)"} ? " ($i)" : '';
194
+ my $off = $exifTool->GetValue("MPImageStart$xtra");
195
+ my $len = $exifTool->GetValue("MPImageLength$xtra");
196
+ if ($off and $len) {
197
+ my $type = $exifTool->GetValue("MPImageType$xtra", 'ValueConv');
198
+ my $tag = "MPImage$i";
199
+ # store first "Large Thumbnail" as a PreviewImage
200
+ if (not $didPreview and $type and ($type & 0x0f0000) == 0x010000) {
201
+ $tag = 'PreviewImage';
202
+ $didPreview = 1;
203
+ }
204
+ $exifTool->Options('Binary', 1) if $ee;
205
+ my $val = Image::ExifTool::Exif::ExtractImage($exifTool, $off, $len, $tag);
206
+ $exifTool->Options('Binary', $saveBinary) if $ee;
207
+ next unless defined $val;
208
+ unless ($Image::ExifTool::Extra{$tag}) {
209
+ AddTagToTable(\%Image::ExifTool::Extra, $tag, {
210
+ Name => $tag,
211
+ Groups => { 0 => 'Composite', 1 => 'Composite', 2 => 'Image'},
212
+ });
213
+ }
214
+ my $key = $exifTool->FoundTag($tag, $val);
215
+ # set groups for PreviewImage
216
+ if ($tag eq 'PreviewImage') {
217
+ $exifTool->SetGroup($key, 'Composite', 0);
218
+ $exifTool->SetGroup($key, 'Composite');
219
+ }
220
+ # extract information from MP images if ExtractEmbedded option used
221
+ if ($ee) {
222
+ $$exifTool{DOC_NUM} = $i;
223
+ $exifTool->ExtractInfo($val, { ReEntry => 1 });
224
+ delete $$exifTool{DOC_NUM};
225
+ }
226
+ }
227
+ }
228
+ return undef;
229
+ }
230
+
231
+ #------------------------------------------------------------------------------
232
+ # Process MP Entry list
233
+ # Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) tag table ref
234
+ # Returns: 1 on success
235
+ sub ProcessMPImageList($$$)
236
+ {
237
+ my ($exifTool, $dirInfo, $tagTablePtr) = @_;
238
+ my $num = int($$dirInfo{DirLen} / 16); # (16 bytes per MP Entry)
239
+ $$dirInfo{DirLen} = 16;
240
+ my ($i, $success);
241
+ my $oldG1 = $$exifTool{SET_GROUP1};
242
+ for ($i=0; $i<$num; ++$i) {
243
+ $$exifTool{SET_GROUP1} = '+' . ($i + 1);
244
+ $success = $exifTool->ProcessBinaryData($dirInfo, $tagTablePtr);
245
+ $$dirInfo{DirStart} += 16;
246
+ }
247
+ $$exifTool{SET_GROUP1} = $oldG1;
248
+ return $success;
249
+ }
250
+
251
+ 1; # end
252
+
253
+ __END__
254
+
255
+ =head1 NAME
256
+
257
+ Image::ExifTool::MPF - Read Multi-Picture Format information
258
+
259
+ =head1 SYNOPSIS
260
+
261
+ This module is used by Image::ExifTool
262
+
263
+ =head1 DESCRIPTION
264
+
265
+ This module contains tag definitions and routines to read Multi-Picture
266
+ Format (MPF) information from JPEG images.
267
+
268
+ =head1 AUTHOR
269
+
270
+ Copyright 2003-2013, Phil Harvey (phil at owl.phy.queensu.ca)
271
+
272
+ This library is free software; you can redistribute it and/or modify it
273
+ under the same terms as Perl itself.
274
+
275
+ =head1 REFERENCES
276
+
277
+ =over 4
278
+
279
+ =item L<http://www.cipa.jp/english/hyoujunka/kikaku/pdf/DC-007_E.pdf>
280
+
281
+ =back
282
+
283
+ =head1 SEE ALSO
284
+
285
+ L<Image::ExifTool::TagNames/MPF Tags>,
286
+ L<Image::ExifTool(3pm)|Image::ExifTool>
287
+
288
+ =cut
289
+
@@ -0,0 +1,736 @@
1
+ #------------------------------------------------------------------------------
2
+ # File: MWG.pm
3
+ #
4
+ # Description: Metadata Working Group support
5
+ #
6
+ # Revisions: 2009/10/21 - P. Harvey Created
7
+ #
8
+ # References: 1) http://www.metadataworkinggroup.org/
9
+ #------------------------------------------------------------------------------
10
+
11
+ package Image::ExifTool::MWG;
12
+
13
+ use strict;
14
+ use vars qw($VERSION);
15
+ use Image::ExifTool qw(:DataAccess :Utils);
16
+ use Image::ExifTool::Exif;
17
+ use Image::ExifTool::XMP;
18
+
19
+ $VERSION = '1.12';
20
+
21
+ sub RecoverTruncatedIPTC($$$);
22
+ sub ListToString($);
23
+ sub StringToList($$);
24
+ sub OverwriteStringList($$$$);
25
+
26
+ my $mwgLoaded; # flag set if we alreaded Load()ed the MWG tags
27
+
28
+ # MWG Composite tags
29
+ %Image::ExifTool::MWG::Composite = (
30
+ GROUPS => { 0 => 'Composite', 1 => 'MWG', 2 => 'Image' },
31
+ VARS => { NO_ID => 1 },
32
+ NOTES => q{
33
+ The table below lists special Composite tags which are used to access other
34
+ tags based on the MWG 2.0 recommendations. These tags are only accessible
35
+ when explicitly loaded, but this is done automatically by the exiftool
36
+ application if MWG is specified as a group for any tag on the command line,
37
+ or manually with the C<-use MWG> option. Via the API, the MWG Composite
38
+ tags are loaded by calling "C<Image::ExifTool::MWG::Load()>".
39
+
40
+ When reading, the value of each MWG tag is B<Derived From> the specified
41
+ tags based on the MWG guidelines. When writing, the appropriate associated
42
+ tags are written. The value of the IPTCDigest tag is updated automatically
43
+ when the IPTC is changed if either the IPTCDigest tag didn't exist
44
+ beforehand or its value agreed with the original IPTC digest (indicating
45
+ that the XMP is synchronized with the IPTC). IPTC information is written
46
+ only if the original file contained IPTC.
47
+
48
+ Loading the MWG module activates "strict MWG conformance mode", which has
49
+ the effect of causing EXIF, IPTC and XMP in non-standard locations to be
50
+ ignored when reading, as per the MWG recommendations. Instead, a "Warning"
51
+ tag is generated when non-standard metadata is encountered. This feature
52
+ may be disabled by setting C<$Image::ExifTool::MWG::strict = 0> in the
53
+ L<ExifTool config file|../config.html> (or from your Perl script when using the API). Note
54
+ that the behaviour when writing is not changed: ExifTool always creates new
55
+ records only in the standard location, but writes new tags to any
56
+ EXIF/IPTC/XMP records that exist.
57
+
58
+ Contrary to the EXIF specification, the MWG recommends that EXIF "ASCII"
59
+ string values be stored as UTF-8. To honour this, the exiftool application
60
+ sets the default internal EXIF string encoding to "UTF8" when the MWG module
61
+ is loaded (but this setting does not change automatically via the API).
62
+
63
+ A complication of the MWG specification is that although the MWG:Creator
64
+ property may consist of multiple values, the associated EXIF tag
65
+ (EXIF:Artist) is only a simple string. To resolve this discrepancy the MWG
66
+ recommends a technique which allows a list of values to be stored in a
67
+ string by using a semicolon-space separator (with quotes around values if
68
+ necessary). When the MWG module is loaded, ExifTool automatically
69
+ implements this policy and changes EXIF:Artist to a list-type tag.
70
+ },
71
+ Keywords => {
72
+ Flags => ['Writable','List'],
73
+ Desire => {
74
+ 0 => 'IPTC:Keywords', # (64-character limit)
75
+ 1 => 'XMP-dc:Subject',
76
+ 2 => 'CurrentIPTCDigest',
77
+ 3 => 'IPTCDigest',
78
+ },
79
+ RawConv => q{
80
+ return $val[1] if not defined $val[2] or (defined $val[1] and
81
+ (not defined $val[3] or $val[2] eq $val[3]));
82
+ return Image::ExifTool::MWG::RecoverTruncatedIPTC($val[0], $val[1], 64);
83
+ },
84
+ DelCheck => 'Image::ExifTool::MWG::ReconcileIPTCDigest($self)',
85
+ WriteCheck => 'Image::ExifTool::MWG::ReconcileIPTCDigest($self)',
86
+ WriteAlso => {
87
+ # only write Keywords if IPTC exists (ie. set EditGroup option)
88
+ 'IPTC:Keywords' => '$opts{EditGroup} = 1; $val',
89
+ 'XMP-dc:Subject' => '$val',
90
+ },
91
+ },
92
+ Description => {
93
+ Writable => 1,
94
+ Desire => {
95
+ 0 => 'EXIF:ImageDescription',
96
+ 1 => 'IPTC:Caption-Abstract', # (2000-character limit)
97
+ 2 => 'XMP-dc:Description',
98
+ 3 => 'CurrentIPTCDigest',
99
+ 4 => 'IPTCDigest',
100
+ },
101
+ RawConv => q{
102
+ return $val[0] if defined $val[0] and $val[0] !~ /^ *$/;
103
+ return $val[2] if not defined $val[3] or (defined $val[2] and
104
+ (not defined $val[4] or $val[3] eq $val[4]));
105
+ return Image::ExifTool::MWG::RecoverTruncatedIPTC($val[1], $val[2], 2000);
106
+ },
107
+ DelCheck => 'Image::ExifTool::MWG::ReconcileIPTCDigest($self)',
108
+ WriteCheck => 'Image::ExifTool::MWG::ReconcileIPTCDigest($self)',
109
+ WriteAlso => {
110
+ 'EXIF:ImageDescription' => '$val',
111
+ 'IPTC:Caption-Abstract' => '$opts{EditGroup} = 1; $val',
112
+ 'XMP-dc:Description' => '$val',
113
+ },
114
+ },
115
+ DateTimeOriginal => {
116
+ Description => 'Date/Time Original',
117
+ Groups => { 2 => 'Time' },
118
+ Notes => '"creation date of the intellectual content being shown" - MWG',
119
+ Writable => 1,
120
+ Desire => {
121
+ 0 => 'EXIF:DateTimeOriginal',
122
+ 1 => 'EXIF:SubSecTimeOriginal',
123
+ 2 => 'IPTC:DateCreated',
124
+ 3 => 'IPTC:TimeCreated',
125
+ 4 => 'XMP-photoshop:DateCreated',
126
+ 5 => 'CurrentIPTCDigest',
127
+ 6 => 'IPTCDigest',
128
+ },
129
+ # must check for validity in RawConv to avoid hiding a same-named tag,
130
+ # but IPTC dates use a ValueConv so we need to derive the value there
131
+ RawConv => '(defined $val[0] or defined $val[2] or defined $val[4]) ? $val : undef',
132
+ ValueConv => q{
133
+ if (defined $val[0] and $val[0] !~ /^[: ]*$/) {
134
+ return ($val[1] and $val[1] !~ /^ *$/) ? "$val[0].$val[1]" : $val[0];
135
+ }
136
+ return $val[4] if not defined $val[5] or (defined $val[4] and
137
+ (not defined $val[6] or $val[5] eq $val[6]));
138
+ return $val[3] ? "$val[2] $val[3]" : $val[2] if $val[2];
139
+ return undef;
140
+ },
141
+ PrintConv => '$self->ConvertDateTime($val)',
142
+ PrintConvInv => '$self->InverseDateTime($val,undef,1)',
143
+ DelCheck => 'Image::ExifTool::MWG::ReconcileIPTCDigest($self)',
144
+ WriteCheck => 'Image::ExifTool::MWG::ReconcileIPTCDigest($self)',
145
+ WriteAlso => {
146
+ # set EXIF date/time values according to PrintConv option instead
147
+ # of defaulting to Type=ValueConv to allow reformatting to be applied
148
+ 'EXIF:DateTimeOriginal' => 'delete $opts{Type}; $val',
149
+ 'EXIF:SubSecTimeOriginal' => 'delete $opts{Type}; $val',
150
+ 'IPTC:DateCreated' => '$opts{EditGroup} = 1; $val',
151
+ 'IPTC:TimeCreated' => '$opts{EditGroup} = 1; $val',
152
+ 'XMP-photoshop:DateCreated' => '$val',
153
+ },
154
+ },
155
+ CreateDate => {
156
+ Groups => { 2 => 'Time' },
157
+ Notes => '"creation date of the digital representation" - MWG',
158
+ Writable => 1,
159
+ Desire => {
160
+ 0 => 'EXIF:CreateDate',
161
+ 1 => 'EXIF:SubSecTimeDigitized',
162
+ 2 => 'IPTC:DigitalCreationDate',
163
+ 3 => 'IPTC:DigitalCreationTime',
164
+ 4 => 'XMP-xmp:CreateDate',
165
+ 5 => 'CurrentIPTCDigest',
166
+ 6 => 'IPTCDigest',
167
+ },
168
+ RawConv => '(defined $val[0] or defined $val[2] or defined $val[4]) ? $val : undef',
169
+ ValueConv => q{
170
+ if (defined $val[0] and $val[0] !~ /^[: ]*$/) {
171
+ return ($val[1] and $val[1] !~ /^ *$/) ? "$val[0].$val[1]" : $val[0];
172
+ }
173
+ return $val[4] if not defined $val[5] or (defined $val[4] and
174
+ (not defined $val[6] or $val[5] eq $val[6]));
175
+ return $val[3] ? "$val[2] $val[3]" : $val[2] if $val[2];
176
+ return undef;
177
+ },
178
+ PrintConv => '$self->ConvertDateTime($val)',
179
+ PrintConvInv => '$self->InverseDateTime($val,undef,1)',
180
+ DelCheck => 'Image::ExifTool::MWG::ReconcileIPTCDigest($self)',
181
+ WriteCheck => 'Image::ExifTool::MWG::ReconcileIPTCDigest($self)',
182
+ WriteAlso => {
183
+ 'EXIF:CreateDate' => 'delete $opts{Type}; $val',
184
+ 'EXIF:SubSecTimeDigitized' => 'delete $opts{Type}; $val',
185
+ 'IPTC:DigitalCreationDate' => '$opts{EditGroup} = 1; $val',
186
+ 'IPTC:DigitalCreationTime' => '$opts{EditGroup} = 1; $val',
187
+ 'XMP-xmp:CreateDate' => '$val',
188
+ },
189
+ },
190
+ ModifyDate => {
191
+ Groups => { 2 => 'Time' },
192
+ Notes => '"modification date of the digital image file" - MWG',
193
+ Writable => 1,
194
+ Desire => {
195
+ 0 => 'EXIF:ModifyDate',
196
+ 1 => 'EXIF:SubSecTime',
197
+ 2 => 'XMP-xmp:ModifyDate',
198
+ 3 => 'CurrentIPTCDigest',
199
+ 4 => 'IPTCDigest',
200
+ },
201
+ RawConv => q{
202
+ if (defined $val[0] and $val[0] !~ /^[: ]*$/) {
203
+ return ($val[1] and $val[1] !~ /^ *$/) ? "$val[0].$val[1]" : $val[0];
204
+ }
205
+ return $val[2] if not defined $val[3] or not defined $val[4] or $val[3] eq $val[4];
206
+ return undef;
207
+ },
208
+ PrintConv => '$self->ConvertDateTime($val)',
209
+ PrintConvInv => '$self->InverseDateTime($val,undef,1)',
210
+ # return empty string from check routines so this tag will never be set
211
+ # (only WriteAlso tags are written), the only difference is a -v2 message
212
+ DelCheck => '""',
213
+ WriteCheck => '""',
214
+ WriteAlso => {
215
+ 'EXIF:ModifyDate' => 'delete $opts{Type}; $val',
216
+ 'EXIF:SubSecTime' => 'delete $opts{Type}; $val',
217
+ 'XMP-xmp:ModifyDate' => '$val',
218
+ },
219
+ },
220
+ Orientation => {
221
+ Writable => 1,
222
+ Require => 'EXIF:Orientation',
223
+ ValueConv => '$val',
224
+ PrintConv => \%Image::ExifTool::Exif::orientation,
225
+ DelCheck => '""',
226
+ WriteCheck => '""',
227
+ WriteAlso => {
228
+ 'EXIF:Orientation' => '$val',
229
+ },
230
+ },
231
+ Rating => {
232
+ Writable => 1,
233
+ Require => 'XMP-xmp:Rating',
234
+ ValueConv => '$val',
235
+ DelCheck => '""',
236
+ WriteCheck => '""',
237
+ WriteAlso => {
238
+ 'XMP-xmp:Rating' => '$val',
239
+ },
240
+ },
241
+ Copyright => {
242
+ Groups => { 2 => 'Author' },
243
+ Writable => 1,
244
+ Desire => {
245
+ 0 => 'EXIF:Copyright',
246
+ 1 => 'IPTC:CopyrightNotice', # (128-character limit)
247
+ 2 => 'XMP-dc:Rights',
248
+ 3 => 'CurrentIPTCDigest',
249
+ 4 => 'IPTCDigest',
250
+ },
251
+ RawConv => q{
252
+ return $val[0] if defined $val[0] and $val[0] !~ /^ *$/;
253
+ return $val[2] if not defined $val[3] or (defined $val[2] and
254
+ (not defined $val[4] or $val[3] eq $val[4]));
255
+ return Image::ExifTool::MWG::RecoverTruncatedIPTC($val[1], $val[2], 128);
256
+ },
257
+ DelCheck => 'Image::ExifTool::MWG::ReconcileIPTCDigest($self)',
258
+ WriteCheck => 'Image::ExifTool::MWG::ReconcileIPTCDigest($self)',
259
+ WriteAlso => {
260
+ 'EXIF:Copyright' => '$val',
261
+ 'IPTC:CopyrightNotice' => '$opts{EditGroup} = 1; $val',
262
+ 'XMP-dc:Rights' => '$val',
263
+ },
264
+ },
265
+ Creator => {
266
+ Groups => { 2 => 'Author' },
267
+ Flags => ['Writable','List'],
268
+ Desire => {
269
+ 0 => 'EXIF:Artist',
270
+ 1 => 'IPTC:By-line', # (32-character limit)
271
+ 2 => 'XMP-dc:Creator',
272
+ 3 => 'CurrentIPTCDigest',
273
+ 4 => 'IPTCDigest',
274
+ },
275
+ RawConv => q{
276
+ return $val[0] if defined $val[0] and $val[0] !~ /^ *$/;
277
+ return $val[2] if not defined $val[3] or (defined $val[2] and
278
+ (not defined $val[4] or $val[3] eq $val[4]));
279
+ return Image::ExifTool::MWG::RecoverTruncatedIPTC($val[1], $val[2], 32);
280
+ },
281
+ DelCheck => 'Image::ExifTool::MWG::ReconcileIPTCDigest($self)',
282
+ WriteCheck => 'Image::ExifTool::MWG::ReconcileIPTCDigest($self)',
283
+ WriteAlso => {
284
+ 'EXIF:Artist' => '$val',
285
+ 'IPTC:By-line' => '$opts{EditGroup} = 1; $val',
286
+ 'XMP-dc:Creator' => '$val',
287
+ },
288
+ },
289
+ Country => {
290
+ Groups => { 2 => 'Location' },
291
+ Writable => 1,
292
+ Desire => {
293
+ 0 => 'IPTC:Country-PrimaryLocationName', # (64-character limit)
294
+ 1 => 'XMP-photoshop:Country',
295
+ 2 => 'CurrentIPTCDigest',
296
+ 3 => 'IPTCDigest',
297
+ },
298
+ RawConv => q{
299
+ return $val[1] if not defined $val[2] or (defined $val[1] and
300
+ (not defined $val[3] or $val[2] eq $val[3]));
301
+ return Image::ExifTool::MWG::RecoverTruncatedIPTC($val[0], $val[1], 64);
302
+ },
303
+ DelCheck => 'Image::ExifTool::MWG::ReconcileIPTCDigest($self)',
304
+ WriteCheck => 'Image::ExifTool::MWG::ReconcileIPTCDigest($self)',
305
+ WriteAlso => {
306
+ 'IPTC:Country-PrimaryLocationName' => '$opts{EditGroup} = 1; $val',
307
+ 'XMP-photoshop:Country' => '$val',
308
+ },
309
+ },
310
+ State => {
311
+ Groups => { 2 => 'Location' },
312
+ Writable => 1,
313
+ Desire => {
314
+ 0 => 'IPTC:Province-State', # (32-character limit)
315
+ 1 => 'XMP-photoshop:State',
316
+ 2 => 'CurrentIPTCDigest',
317
+ 3 => 'IPTCDigest',
318
+ },
319
+ RawConv => q{
320
+ return $val[1] if not defined $val[2] or (defined $val[1] and
321
+ (not defined $val[3] or $val[2] eq $val[3]));
322
+ return Image::ExifTool::MWG::RecoverTruncatedIPTC($val[0], $val[1], 32);
323
+ },
324
+ DelCheck => 'Image::ExifTool::MWG::ReconcileIPTCDigest($self)',
325
+ WriteCheck => 'Image::ExifTool::MWG::ReconcileIPTCDigest($self)',
326
+ WriteAlso => {
327
+ 'IPTC:Province-State' => '$opts{EditGroup} = 1; $val',
328
+ 'XMP-photoshop:State' => '$val',
329
+ },
330
+ },
331
+ City => {
332
+ Groups => { 2 => 'Location' },
333
+ Writable => 1,
334
+ Desire => {
335
+ 0 => 'IPTC:City', # (32-character limit)
336
+ 1 => 'XMP-photoshop:City',
337
+ 2 => 'CurrentIPTCDigest',
338
+ 3 => 'IPTCDigest',
339
+ },
340
+ RawConv => q{
341
+ return $val[1] if not defined $val[2] or (defined $val[1] and
342
+ (not defined $val[3] or $val[2] eq $val[3]));
343
+ return Image::ExifTool::MWG::RecoverTruncatedIPTC($val[0], $val[1], 32);
344
+ },
345
+ DelCheck => 'Image::ExifTool::MWG::ReconcileIPTCDigest($self)',
346
+ WriteCheck => 'Image::ExifTool::MWG::ReconcileIPTCDigest($self)',
347
+ WriteAlso => {
348
+ 'IPTC:City' => '$opts{EditGroup} = 1; $val',
349
+ 'XMP-photoshop:City' => '$val',
350
+ },
351
+ },
352
+ Location => {
353
+ Groups => { 2 => 'Location' },
354
+ Writable => 1,
355
+ Desire => {
356
+ 0 => 'IPTC:Sub-location', # (32-character limit)
357
+ 1 => 'XMP-iptcCore:Location',
358
+ 2 => 'CurrentIPTCDigest',
359
+ 3 => 'IPTCDigest',
360
+ },
361
+ RawConv => q{
362
+ return $val[1] if not defined $val[2] or (defined $val[1] and
363
+ (not defined $val[3] or $val[2] eq $val[3]));
364
+ return Image::ExifTool::MWG::RecoverTruncatedIPTC($val[0], $val[1], 32);
365
+ },
366
+ DelCheck => 'Image::ExifTool::MWG::ReconcileIPTCDigest($self)',
367
+ WriteCheck => 'Image::ExifTool::MWG::ReconcileIPTCDigest($self)',
368
+ WriteAlso => {
369
+ 'IPTC:Sub-location' => '$opts{EditGroup} = 1; $val',
370
+ 'XMP-iptcCore:Location' => '$val',
371
+ },
372
+ },
373
+ );
374
+
375
+ # MWG XMP structures
376
+ my %sExtensions = (
377
+ STRUCT_NAME => 'MWG Extensions',
378
+ NAMESPACE => undef, # variable namespace
379
+ NOTES => q{
380
+ This structure may contain any top-level XMP tags, but none have been
381
+ pre-defined in ExifTool. Since no flattened tags have been pre-defined,
382
+ RegionExtensions is writable only as a structure (ie.
383
+ C<{xmp-dc:creator=me,rating=5}>). Fields for this structure are identified
384
+ using the standard ExifTool tag name (with optional leading group name,
385
+ and/or trailing language code, and/or trailing C<#> symbol to disable print
386
+ conversion).
387
+ },
388
+ );
389
+ my %sRegionStruct = (
390
+ STRUCT_NAME => 'MWG RegionStruct',
391
+ NAMESPACE => 'mwg-rs',
392
+ Area => { Struct => \%Image::ExifTool::XMP::sArea },
393
+ Type => {
394
+ PrintConv => {
395
+ Face => 'Face',
396
+ Pet => 'Pet',
397
+ Focus => 'Focus',
398
+ BarCode => 'BarCode',
399
+ },
400
+ },
401
+ Name => { },
402
+ Description => { },
403
+ FocusUsage => {
404
+ PrintConv => {
405
+ EvaluatedUsed => 'Evaluated, Used',
406
+ EvaluatedNotUsed => 'Evaluated, Not Used',
407
+ NotEvaluatedNotUsed => 'Not Evaluated, Not Used',
408
+ },
409
+ },
410
+ BarCodeValue=> { },
411
+ Extensions => { Struct => \%sExtensions },
412
+ seeAlso => { Namespace => 'rdfs', Resource => 1 },
413
+ );
414
+ my %sKeywordStruct;
415
+ %sKeywordStruct = (
416
+ STRUCT_NAME => 'MWG KeywordStruct',
417
+ NAMESPACE => 'mwg-kw',
418
+ Keyword => { },
419
+ Applied => { Writable => 'boolean' },
420
+ Children => { Struct => \%sKeywordStruct, List => 'Bag' },
421
+ );
422
+
423
+ # MWG 2.0 XMP region namespace tags
424
+ %Image::ExifTool::MWG::Regions = (
425
+ %Image::ExifTool::XMP::xmpTableDefaults,
426
+ GROUPS => { 0 => 'XMP', 1 => 'XMP-mwg-rs', 2 => 'Image' },
427
+ NAMESPACE => 'mwg-rs',
428
+ NOTES => q{
429
+ Image region metadata defined by the MWG 2.0 specification. These tags
430
+ belong to the ExifTool XMP-mwg-rs group, and as such they may be accessed
431
+ without the need to load the MWG Composite tags above. See
432
+ L<http://www.metadataworkinggroup.org/> for the official specification.
433
+ },
434
+ Regions => {
435
+ Name => 'RegionInfo',
436
+ FlatName => 'Region',
437
+ Struct => {
438
+ STRUCT_NAME => 'MWG RegionInfo',
439
+ NAMESPACE => 'mwg-rs',
440
+ RegionList => {
441
+ FlatName => 'Region',
442
+ Struct => \%sRegionStruct,
443
+ List => 'Bag',
444
+ },
445
+ AppliedToDimensions => { Struct => \%Image::ExifTool::XMP::sDimensions },
446
+ },
447
+ },
448
+ RegionsRegionList => { Flat => 1, Name => 'RegionList' },
449
+ );
450
+
451
+ # MWG 2.0 XMP hierarchical keyword namespace tags
452
+ %Image::ExifTool::MWG::Keywords = (
453
+ %Image::ExifTool::XMP::xmpTableDefaults,
454
+ GROUPS => { 0 => 'XMP', 1 => 'XMP-mwg-kw', 2 => 'Image' },
455
+ NAMESPACE => 'mwg-kw',
456
+ NOTES => q{
457
+ Hierarchical keywords metadata defined by the MWG 2.0 specification. These
458
+ tags belong to the ExifTool XMP-mwg-kw group. ExifTool unrolls keyword
459
+ structures to an arbitrary depth of 6 to allow individual levels to be
460
+ accessed with different tag names, and to avoid infinite recursion. See
461
+ L<http://www.metadataworkinggroup.org/> for the official specification.
462
+ },
463
+ # arbitrarily define only the first 6 levels of the keyword hierarchy
464
+ Keywords => {
465
+ Name => 'KeywordInfo',
466
+ Struct => {
467
+ STRUCT_NAME => 'MWG KeywordInfo',
468
+ NAMESPACE => 'mwg-kw',
469
+ Hierarchy => { Struct => \%sKeywordStruct, List => 'Bag' },
470
+ },
471
+ },
472
+ KeywordsHierarchy => { Name => 'HierarchicalKeywords', Flat => 1 },
473
+ KeywordsHierarchyKeyword => { Name => 'HierarchicalKeywords1', Flat => 1 },
474
+ KeywordsHierarchyApplied => { Name => 'HierarchicalKeywords1Applied', Flat => 1 },
475
+ KeywordsHierarchyChildren => { Name => 'HierarchicalKeywords1Children', Flat => 1 },
476
+ KeywordsHierarchyChildrenKeyword => { Name => 'HierarchicalKeywords2', Flat => 1 },
477
+ KeywordsHierarchyChildrenApplied => { Name => 'HierarchicalKeywords2Applied', Flat => 1 },
478
+ KeywordsHierarchyChildrenChildren => { Name => 'HierarchicalKeywords2Children', Flat => 1 },
479
+ KeywordsHierarchyChildrenChildrenKeyword => { Name => 'HierarchicalKeywords3', Flat => 1 },
480
+ KeywordsHierarchyChildrenChildrenApplied => { Name => 'HierarchicalKeywords3Applied', Flat => 1 },
481
+ KeywordsHierarchyChildrenChildrenChildren => { Name => 'HierarchicalKeywords3Children', Flat => 1 },
482
+ KeywordsHierarchyChildrenChildrenChildrenKeyword => { Name => 'HierarchicalKeywords4', Flat => 1 },
483
+ KeywordsHierarchyChildrenChildrenChildrenApplied => { Name => 'HierarchicalKeywords4Applied', Flat => 1 },
484
+ KeywordsHierarchyChildrenChildrenChildrenChildren => { Name => 'HierarchicalKeywords4Children', Flat => 1 },
485
+ KeywordsHierarchyChildrenChildrenChildrenChildrenKeyword => { Name => 'HierarchicalKeywords5', Flat => 1 },
486
+ KeywordsHierarchyChildrenChildrenChildrenChildrenApplied => { Name => 'HierarchicalKeywords5Applied', Flat => 1 },
487
+ KeywordsHierarchyChildrenChildrenChildrenChildrenChildren => { Name => 'HierarchicalKeywords5Children', Flat => 1, NoSubStruct => 1 }, # break infinite recursion
488
+ KeywordsHierarchyChildrenChildrenChildrenChildrenChildrenKeyword => { Name => 'HierarchicalKeywords6', Flat => 1 },
489
+ KeywordsHierarchyChildrenChildrenChildrenChildrenChildrenApplied => { Name => 'HierarchicalKeywords6Applied', Flat => 1 },
490
+ );
491
+
492
+ # MWG 2.0 XMP collections namespace tags
493
+ %Image::ExifTool::MWG::Collections = (
494
+ %Image::ExifTool::XMP::xmpTableDefaults,
495
+ GROUPS => { 0 => 'XMP', 1 => 'XMP-mwg-coll', 2 => 'Image' },
496
+ NAMESPACE => 'mwg-coll',
497
+ NOTES => q{
498
+ Collections metadata defined by the MWG 2.0 specification. These tags
499
+ belong to the ExifTool XMP-mwg-coll group. See
500
+ L<http://www.metadataworkinggroup.org/> for the official specification.
501
+ },
502
+ Collections => {
503
+ FlatName => '',
504
+ List => 'Bag',
505
+ Struct => {
506
+ STRUCT_NAME => 'MWG CollectionInfo',
507
+ NAMESPACE => 'mwg-coll',
508
+ CollectionName => { },
509
+ CollectionURI => { },
510
+ },
511
+ },
512
+ );
513
+
514
+
515
+ #------------------------------------------------------------------------------
516
+ # Load the MWG Composite tags
517
+ sub Load()
518
+ {
519
+ return if $mwgLoaded;
520
+
521
+ # add our composite tags
522
+ Image::ExifTool::AddCompositeTags('Image::ExifTool::MWG');
523
+ # must also add to lookup so we can write them
524
+ # (since MWG tags aren't in the tag lookup by default)
525
+ Image::ExifTool::AddTagsToLookup(\%Image::ExifTool::MWG::Composite,
526
+ 'Image::ExifTool::Composite');
527
+
528
+ # modify EXIF:Artist to behave as a list-type tag
529
+ my $artist = $Image::ExifTool::Exif::Main{0x13b};
530
+ $$artist{List} = 1;
531
+ $$artist{IsOverwriting} = \&OverwriteStringList;
532
+ $$artist{RawConv} = \&StringToList;
533
+
534
+ # enable MWG strict mode if not set already
535
+ # (causes non-standard EXIF, IPTC and XMP to be ignored)
536
+ $Image::ExifTool::MWG::strict = 1 unless defined $Image::ExifTool::MWG::strict;
537
+
538
+ $mwgLoaded = 1;
539
+ }
540
+
541
+ #------------------------------------------------------------------------------
542
+ # Change a list of values to a string using MWG rules
543
+ # Inputs: 0)reference to list of values
544
+ # Returns: string of values (and may reformat list entries)
545
+ sub ListToString($)
546
+ {
547
+ my $vals = shift;
548
+ foreach (@$vals) {
549
+ # double all quotes in value and quote the value if it begins
550
+ # with a quote or contains a semicolon-space separator
551
+ if (/^"/ or /; /) {
552
+ s/"/""/g; # double all quotes
553
+ $_ = qq{"$_"}; # quote the value
554
+ }
555
+ }
556
+ return join('; ', @$vals);
557
+ }
558
+
559
+ #------------------------------------------------------------------------------
560
+ # Change a string value to a list of values using MWG rules
561
+ # Inputs: 0) string of values, 1) ExifTool ref
562
+ # Returns: value or list reference if more than one value
563
+ # Notes: Sets Warning tag on error
564
+ sub StringToList($$)
565
+ {
566
+ my ($str, $exifTool) = @_;
567
+ my (@vals, $inQuotes);
568
+ my @t = split '; ', $str, -1;
569
+ foreach (@t) {
570
+ my $wasQuotes = $inQuotes;
571
+ $inQuotes = 1 if not $inQuotes and s/^"//;
572
+ if ($inQuotes) {
573
+ # remove the last quote and reset the inQuotes flag if
574
+ # the value ended in an odd number of quotes
575
+ $inQuotes = 0 if s/((^|[^"])("")*)"$/$1/;
576
+ s/""/"/g; # un-double the contained quotes
577
+ }
578
+ if ($wasQuotes) {
579
+ # previous separator was quoted, so concatinate with previous value
580
+ $vals[-1] .= '; ' . $_;
581
+ } else {
582
+ push @vals, $_;
583
+ }
584
+ }
585
+ $exifTool->Warn('Incorrectly quoted MWG string-list value') if $inQuotes;
586
+ return @vals > 1 ? \@vals : $vals[0];
587
+ }
588
+
589
+ #------------------------------------------------------------------------------
590
+ # Handle logic for overwriting EXIF string-type list tag
591
+ # Inputs: 0) new value hash ref, 1) new value hash ref,
592
+ # 2) old string value (or undef if it didn't exist), 3) new value ref
593
+ # Returns: 1 and sets the new value for the tag
594
+ sub OverwriteStringList($$$$)
595
+ {
596
+ local $_;
597
+ my ($exifTool, $nvHash, $val, $newValuePt) = @_;
598
+ my (@new, $delIndex);
599
+ if ($$nvHash{DelValue} and defined $val) {
600
+ # preserve specified old values
601
+ my $old = StringToList($val, $exifTool);
602
+ my @old = ref $old eq 'ARRAY' ? @$old : $old;
603
+ if (@{$$nvHash{DelValue}}) {
604
+ my %del;
605
+ $del{$_} = 1 foreach @{$$nvHash{DelValue}};
606
+ foreach (@old) {
607
+ $del{$_} or push(@new, $_), next;
608
+ $delIndex or $delIndex = scalar @new;
609
+ }
610
+ } else {
611
+ push @new, @old;
612
+ }
613
+ }
614
+ # add new values (at location of deleted values, if any)
615
+ if ($$nvHash{Value}) {
616
+ if (defined $delIndex) {
617
+ splice @new, $delIndex, 0, @{$$nvHash{Value}};
618
+ } else {
619
+ push @new, @{$$nvHash{Value}};
620
+ }
621
+ }
622
+ if (@new) {
623
+ # convert back to string format
624
+ $$newValuePt = ListToString(\@new);
625
+ } else {
626
+ $$newValuePt = undef; # delete the tag
627
+ }
628
+ return 1;
629
+ }
630
+
631
+ #------------------------------------------------------------------------------
632
+ # Reconcile IPTC digest after writing an MWG tag
633
+ # Inputs: 0) ExifTool object ref
634
+ # Returns: empty string
635
+ sub ReconcileIPTCDigest($)
636
+ {
637
+ my $exifTool = shift;
638
+
639
+ # set new value for IPTCDigest if not done already
640
+ unless ($Image::ExifTool::Photoshop::iptcDigestInfo and
641
+ $exifTool->{NEW_VALUE}{$Image::ExifTool::Photoshop::iptcDigestInfo})
642
+ {
643
+ # write new IPTCDigest only if it doesn't exist or
644
+ # is the same as the digest of the original IPTC
645
+ my @a; # (capture warning messages)
646
+ @a = $exifTool->SetNewValue('Photoshop:IPTCDigest', 'old', Protected => 1, DelValue => 1);
647
+ @a = $exifTool->SetNewValue('Photoshop:IPTCDigest', 'new', Protected => 1);
648
+ }
649
+ return '';
650
+ }
651
+
652
+ #------------------------------------------------------------------------------
653
+ # Recover strings which were truncated by IPTC dataset length limit
654
+ # Inputs: 0) IPTC value, 1) XMP value, 2) length limit
655
+ # Notes: handles the case where IPTC and/or XMP values are lists
656
+ sub RecoverTruncatedIPTC($$$)
657
+ {
658
+ my ($iptc, $xmp, $limit) = @_;
659
+
660
+ return $iptc unless defined $xmp;
661
+ if (ref $iptc) {
662
+ $xmp = [ $xmp ] unless ref $xmp;
663
+ my ($i, @vals);
664
+ for ($i=0; $i<@$iptc; ++$i) {
665
+ push @vals, RecoverTruncatedIPTC($$iptc[$i], $$xmp[$i], $limit);
666
+ }
667
+ return \@vals;
668
+ } elsif (defined $iptc and length $iptc == $limit) {
669
+ $xmp = $$xmp[0] if ref $xmp; # take first element of list
670
+ return $xmp if length $xmp > $limit and $iptc eq substr($xmp, 0, $limit);
671
+ }
672
+ return $iptc;
673
+ }
674
+
675
+ 1; # end
676
+
677
+ __END__
678
+
679
+ =head1 NAME
680
+
681
+ Image::ExifTool::MWG - Metadata Working Group support
682
+
683
+ =head1 SYNOPSIS
684
+
685
+ # enable MWG Composite tags
686
+ use Image::ExifTool::MWG;
687
+ Image::ExifTool::MWG::Load();
688
+
689
+ # enable MWG strict mode
690
+ $Image::ExifTool::MWG::strict = 1;
691
+
692
+ # disable MWG strict mode
693
+ $Image::ExifTool::MWG::strict = 0;
694
+
695
+ =head1 DESCRIPTION
696
+
697
+ The MWG module contains Composite tag definitions which are designed to
698
+ simplify implementation of the Metadata Working Group guidelines. These
699
+ special MWG Composite tags are enabled by calling the Load() method:
700
+
701
+ use Image::ExifTool::MWG;
702
+ Image::ExifTool::MWG::Load();
703
+
704
+ By default, loading the MWG Composite tags enables "strict MWG conformance"
705
+ unless previously enabled or disabled by the user. In this mode, ExifTool
706
+ will generate a Warning instead of extracting EXIF, IPTC and XMP from
707
+ non-standard locations. The strict mode may be disabled or enabled at any
708
+ time by setting the MWG "strict" flag to 0 or 1. ie)
709
+
710
+ $Image::ExifTool::MWG::strict = 0;
711
+
712
+ This module also contains the MWG XMP tags which are loaded automatically by
713
+ ExifTool as required, and are independent of the MWG Composite tags which
714
+ must be loaded explicitly as described above.
715
+
716
+ =head1 AUTHOR
717
+
718
+ Copyright 2003-2013, Phil Harvey (phil at owl.phy.queensu.ca)
719
+
720
+ This library is free software; you can redistribute it and/or modify it
721
+ under the same terms as Perl itself.
722
+
723
+ =head1 REFERENCES
724
+
725
+ =over 4
726
+
727
+ =item L<http://www.metadataworkinggroup.org/>
728
+
729
+ =back
730
+
731
+ =head1 SEE ALSO
732
+
733
+ L<Image::ExifTool::TagNames/MWG Tags>,
734
+ L<Image::ExifTool(3pm)|Image::ExifTool>
735
+
736
+ =cut