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.
- checksums.yaml +15 -0
- data/bin/Image-ExifTool-9.33/Changes +6241 -0
- data/bin/Image-ExifTool-9.33/MANIFEST +859 -0
- data/bin/Image-ExifTool-9.33/META.yml +27 -0
- data/bin/Image-ExifTool-9.33/Makefile.PL +41 -0
- data/bin/Image-ExifTool-9.33/README +227 -0
- data/bin/Image-ExifTool-9.33/arg_files/exif2iptc.args +24 -0
- data/bin/Image-ExifTool-9.33/arg_files/exif2xmp.args +38 -0
- data/bin/Image-ExifTool-9.33/arg_files/gps2xmp.args +20 -0
- data/bin/Image-ExifTool-9.33/arg_files/iptc2exif.args +17 -0
- data/bin/Image-ExifTool-9.33/arg_files/iptc2xmp.args +53 -0
- data/bin/Image-ExifTool-9.33/arg_files/iptcCore.args +172 -0
- data/bin/Image-ExifTool-9.33/arg_files/pdf2xmp.args +23 -0
- data/bin/Image-ExifTool-9.33/arg_files/xmp2exif.args +39 -0
- data/bin/Image-ExifTool-9.33/arg_files/xmp2gps.args +24 -0
- data/bin/Image-ExifTool-9.33/arg_files/xmp2iptc.args +62 -0
- data/bin/Image-ExifTool-9.33/arg_files/xmp2pdf.args +23 -0
- data/bin/Image-ExifTool-9.33/config_files/ExifTool_config +299 -0
- data/bin/Image-ExifTool-9.33/config_files/convert_regions.config +81 -0
- data/bin/Image-ExifTool-9.33/exiftool +5715 -0
- data/bin/Image-ExifTool-9.33/fmt_files/gpx.fmt +29 -0
- data/bin/Image-ExifTool-9.33/fmt_files/gpx_wpt.fmt +33 -0
- data/bin/Image-ExifTool-9.33/fmt_files/kml.fmt +53 -0
- data/bin/Image-ExifTool-9.33/html/ExifTool.html +1959 -0
- data/bin/Image-ExifTool-9.33/html/MIE1.1-20070121.pdf +0 -0
- data/bin/Image-ExifTool-9.33/html/Shift.html +173 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/AFCP.html +53 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/AIFF.html +146 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/APE.html +149 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/APP12.html +188 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/ASF.html +1066 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/BMP.html +110 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/Canon.html +8062 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/CanonCustom.html +2044 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/CanonRaw.html +561 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/CanonVRD.html +1222 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/Casio.html +1569 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/Composite.html +665 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/DICOM.html +15762 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/DNG.html +273 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/DV.html +75 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/DarwinCore.html +1445 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/DjVu.html +313 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/EXE.html +697 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/EXIF.html +3244 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/Extra.html +301 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/FLAC.html +183 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/FLIR.html +931 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/Flash.html +419 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/FlashPix.html +1435 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/Font.html +485 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/FotoStation.html +103 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/FujiFilm.html +637 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/GE.html +40 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/GIF.html +116 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/GIMP.html +140 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/GPS.html +222 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/GeoTiff.html +2177 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/H264.html +393 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/HP.html +155 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/HTML.html +666 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/ICC_Profile.html +710 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/ID3.html +1473 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/IPTC.html +895 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/ITC.html +90 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/JFIF.html +61 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/JPEG.html +523 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/JVC.html +56 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/Jpeg2000.html +464 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/Kodak.html +1759 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/KyoceraRaw.html +92 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/LNK.html +478 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/Leaf.html +870 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/M2TS.html +133 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/MIE.html +1026 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/MIFF.html +196 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/MNG.html +847 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/MPC.html +97 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/MPEG.html +249 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/MPF.html +199 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/MWG.html +563 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/MXF.html +6673 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/Matroska.html +1069 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/Microsoft.html +2066 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/Minolta.html +2555 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/MinoltaRaw.html +326 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/Nikon.html +4467 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/NikonCapture.html +776 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/NikonCustom.html +3835 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/OOXML.html +280 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/Ogg.html +44 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/Olympus.html +3386 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/OpenEXR.html +222 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/PDF.html +745 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/PGF.html +80 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/PICT.html +753 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/PLIST.html +86 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/PNG.html +515 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/PSP.html +160 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/Panasonic.html +1452 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/PanasonicRaw.html +214 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/Pentax.html +4332 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/PhaseOne.html +258 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/PhotoCD.html +402 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/PhotoMechanic.html +196 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/Photoshop.html +555 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/PostScript.html +125 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/PrintIM.html +31 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/Qualcomm.html +4778 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/QuickTime.html +3104 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/RIFF.html +1164 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/RSRC.html +74 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/RTF.html +150 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/Radiance.html +87 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/Rawzor.html +45 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/Real.html +780 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/Reconyx.html +132 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/Ricoh.html +456 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/Samsung.html +419 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/Sanyo.html +366 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/Shortcuts.html +237 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/Sigma.html +372 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/SigmaRaw.html +403 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/Sony.html +4279 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/SonyIDC.html +267 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/Stim.html +200 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/Theora.html +102 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/Unknown.html +31 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/Vorbis.html +228 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/XMP.html +7234 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/ZIP.html +204 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/iWork.html +49 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/index.html +192 -0
- data/bin/Image-ExifTool-9.33/html/TagNames/style.css +31 -0
- data/bin/Image-ExifTool-9.33/html/ancient_history.html +6727 -0
- data/bin/Image-ExifTool-9.33/html/canon_raw.html +366 -0
- data/bin/Image-ExifTool-9.33/html/commentary.html +319 -0
- data/bin/Image-ExifTool-9.33/html/config.html +312 -0
- data/bin/Image-ExifTool-9.33/html/data_members.html +265 -0
- data/bin/Image-ExifTool-9.33/html/exiftool_pod.html +2338 -0
- data/bin/Image-ExifTool-9.33/html/faq.html +1434 -0
- data/bin/Image-ExifTool-9.33/html/filename.html +281 -0
- data/bin/Image-ExifTool-9.33/html/geotag.html +642 -0
- data/bin/Image-ExifTool-9.33/html/history.html +358 -0
- data/bin/Image-ExifTool-9.33/html/htmldump.html +732 -0
- data/bin/Image-ExifTool-9.33/html/idiosyncracies.html +251 -0
- data/bin/Image-ExifTool-9.33/html/index.html +1271 -0
- data/bin/Image-ExifTool-9.33/html/install.html +239 -0
- data/bin/Image-ExifTool-9.33/html/metafiles.html +266 -0
- data/bin/Image-ExifTool-9.33/html/overview.png +0 -0
- data/bin/Image-ExifTool-9.33/html/standards.html +277 -0
- data/bin/Image-ExifTool-9.33/html/struct.html +342 -0
- data/bin/Image-ExifTool-9.33/html/style.css +31 -0
- data/bin/Image-ExifTool-9.33/html/under.html +124 -0
- data/bin/Image-ExifTool-9.33/html/verbose.html +195 -0
- data/bin/Image-ExifTool-9.33/html/writing.html +239 -0
- data/bin/Image-ExifTool-9.33/lib/File/RandomAccess.pm +378 -0
- data/bin/Image-ExifTool-9.33/lib/File/RandomAccess.pod +231 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool.pm +6815 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool.pod +2385 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/AES.pm +501 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/AFCP.pm +284 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/AIFF.pm +271 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/APE.pm +262 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/APP12.pm +322 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/ASF.pm +884 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/BMP.pm +179 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/BZZ.pm +472 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/BigTIFF.pm +282 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/BuildTagLookup.pm +2400 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Canon.pm +7794 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/CanonCustom.pm +2523 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/CanonRaw.pm +931 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/CanonVRD.pm +1481 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/CaptureOne.pm +235 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Casio.pm +2013 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset.pm +396 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/Arabic.pm +39 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/Baltic.pm +35 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/Cyrillic.pm +45 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/Greek.pm +40 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/Hebrew.pm +36 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/JIS.pm +1735 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/Latin.pm +24 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/Latin2.pm +36 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/MacArabic.pm +47 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/MacChineseCN.pm +2088 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/MacChineseTW.pm +3623 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/MacCroatian.pm +43 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/MacCyrillic.pm +47 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/MacGreek.pm +45 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/MacHebrew.pm +47 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/MacIceland.pm +42 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/MacJapanese.pm +1933 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/MacKorean.pm +2720 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/MacLatin2.pm +44 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/MacRSymbol.pm +2087 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/MacRoman.pm +42 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/MacRomanian.pm +42 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/MacThai.pm +49 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/MacTurkish.pm +42 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/PDFDoc.pm +28 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/ShiftJIS.pm +1835 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/Symbol.pm +54 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/Thai.pm +41 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/Turkish.pm +25 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Charset/Vietnam.pm +27 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/DICOM.pm +3835 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/DNG.pm +835 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/DV.pm +319 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/DarwinCore.pm +317 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/DjVu.pm +376 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/EXE.pm +1228 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Exif.pm +4542 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/FLAC.pm +296 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/FLIR.pm +972 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Fixup.pm +354 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Flash.pm +755 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/FlashPix.pm +1882 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Font.pm +643 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/FotoStation.pm +258 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/FujiFilm.pm +1020 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/GE.pm +80 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/GIF.pm +542 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/GIMP.pm +258 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/GPS.pm +511 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/GeoTiff.pm +2187 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Geotag.pm +1173 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/H264.pm +1102 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/HP.pm +262 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/HTML.pm +576 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/HtmlDump.pm +895 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/ICC_Profile.pm +999 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/ID3.pm +1532 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/IPTC.pm +1244 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/ITC.pm +215 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Import.pm +308 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/InDesign.pm +277 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/JPEG.pm +588 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/JPEGDigest.pm +2511 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/JVC.pm +130 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Jpeg2000.pm +881 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Kodak.pm +2014 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/KyoceraRaw.pm +173 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/LNK.pm +723 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Lang/cs.pm +1586 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Lang/de.pm +7356 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Lang/en_ca.pm +557 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Lang/en_gb.pm +572 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Lang/es.pm +4016 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Lang/fi.pm +2856 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Lang/fr.pm +4720 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Lang/it.pm +7917 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Lang/ja.pm +5815 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Lang/ko.pm +2332 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Lang/nl.pm +3220 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Lang/pl.pm +1140 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Lang/ru.pm +769 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Lang/sv.pm +639 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Lang/tr.pm +544 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Lang/zh_cn.pm +1329 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Lang/zh_tw.pm +802 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Leaf.pm +515 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/M2TS.pm +729 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/MIE.pm +2561 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/MIEUnits.pod +377 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/MIFF.pm +279 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/MNG.pm +684 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/MPC.pm +156 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/MPEG.pm +736 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/MPF.pm +289 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/MWG.pm +736 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/MXF.pm +3032 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/MakerNotes.pm +1573 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Matroska.pm +891 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Microsoft.pm +879 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Minolta.pm +2833 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/MinoltaRaw.pm +534 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Nikon.pm +6116 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/NikonCapture.pm +911 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/NikonCustom.pm +4405 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/OOXML.pm +409 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Ogg.pm +237 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Olympus.pm +3582 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/OpenEXR.pm +324 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/PDF.pm +2327 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/PGF.pm +143 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/PICT.pm +1260 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/PLIST.pm +449 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/PNG.pm +1100 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/PPM.pm +169 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/PSP.pm +305 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Panasonic.pm +1995 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/PanasonicRaw.pm +535 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Pentax.pm +5489 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/PhaseOne.pm +557 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/PhotoCD.pm +507 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/PhotoMechanic.pm +256 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Photoshop.pm +629 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/PostScript.pm +693 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/PrintIM.pm +125 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Qualcomm.pm +1344 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/QuickTime.pm +3519 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/README +944 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/RIFF.pm +1322 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/RSRC.pm +241 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/RTF.pm +383 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Radiance.pm +144 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Rawzor.pm +190 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Real.pm +736 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Reconyx.pm +190 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Ricoh.pm +741 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Samsung.pm +820 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Sanyo.pm +439 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Shift.pl +594 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Shortcuts.pm +291 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Sigma.pm +574 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/SigmaRaw.pm +649 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Sony.pm +5722 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/SonyIDC.pm +330 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Stim.pm +196 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/TagInfoXML.pm +792 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/TagLookup.pm +8005 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/TagNames.pod +25950 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Theora.pm +145 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Unknown.pm +66 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Vorbis.pm +237 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/WriteCanonRaw.pl +637 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/WriteExif.pl +3674 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/WriteIPTC.pl +702 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/WritePDF.pl +759 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/WritePNG.pl +330 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/WritePhotoshop.pl +266 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/WritePostScript.pl +777 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/WriteXMP.pl +1318 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/Writer.pl +5779 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/XMP.pm +3634 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/XMP2.pl +1298 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/XMPStruct.pl +813 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/ZIP.pm +623 -0
- data/bin/Image-ExifTool-9.33/lib/Image/ExifTool/iWork.pm +223 -0
- data/bin/Image-ExifTool-9.33/perl-Image-ExifTool.spec +104 -0
- data/bin/Image-ExifTool-9.33/t/AFCP.t +44 -0
- data/bin/Image-ExifTool-9.33/t/AFCP_2.out +37 -0
- data/bin/Image-ExifTool-9.33/t/AFCP_3.out +20 -0
- data/bin/Image-ExifTool-9.33/t/AIFF.t +28 -0
- data/bin/Image-ExifTool-9.33/t/AIFF_2.out +31 -0
- data/bin/Image-ExifTool-9.33/t/APE.t +38 -0
- data/bin/Image-ExifTool-9.33/t/APE_2.out +28 -0
- data/bin/Image-ExifTool-9.33/t/APE_3.out +57 -0
- data/bin/Image-ExifTool-9.33/t/ASF.t +28 -0
- data/bin/Image-ExifTool-9.33/t/ASF_2.out +54 -0
- data/bin/Image-ExifTool-9.33/t/BMP.t +28 -0
- data/bin/Image-ExifTool-9.33/t/BMP_2.out +21 -0
- data/bin/Image-ExifTool-9.33/t/BigTIFF.t +28 -0
- data/bin/Image-ExifTool-9.33/t/BigTIFF_2.out +19 -0
- data/bin/Image-ExifTool-9.33/t/Canon.t +41 -0
- data/bin/Image-ExifTool-9.33/t/CanonRaw.t +126 -0
- data/bin/Image-ExifTool-9.33/t/CanonRaw_2.out +165 -0
- data/bin/Image-ExifTool-9.33/t/CanonRaw_4.out +217 -0
- data/bin/Image-ExifTool-9.33/t/CanonRaw_5.out +207 -0
- data/bin/Image-ExifTool-9.33/t/CanonRaw_6.out +231 -0
- data/bin/Image-ExifTool-9.33/t/CanonRaw_7.out +247 -0
- data/bin/Image-ExifTool-9.33/t/CanonVRD.t +129 -0
- data/bin/Image-ExifTool-9.33/t/CanonVRD_11.out +118 -0
- data/bin/Image-ExifTool-9.33/t/CanonVRD_12.out +12 -0
- data/bin/Image-ExifTool-9.33/t/CanonVRD_2.out +116 -0
- data/bin/Image-ExifTool-9.33/t/CanonVRD_3.out +116 -0
- data/bin/Image-ExifTool-9.33/t/CanonVRD_4.out +2 -0
- data/bin/Image-ExifTool-9.33/t/CanonVRD_5.out +3 -0
- data/bin/Image-ExifTool-9.33/t/CanonVRD_6.out +3 -0
- data/bin/Image-ExifTool-9.33/t/CanonVRD_7.out +2 -0
- data/bin/Image-ExifTool-9.33/t/CanonVRD_8.out +2 -0
- data/bin/Image-ExifTool-9.33/t/CanonVRD_9.out +1 -0
- data/bin/Image-ExifTool-9.33/t/Canon_2.out +350 -0
- data/bin/Image-ExifTool-9.33/t/Canon_3.out +3 -0
- data/bin/Image-ExifTool-9.33/t/Casio.t +54 -0
- data/bin/Image-ExifTool-9.33/t/Casio_2.out +70 -0
- data/bin/Image-ExifTool-9.33/t/Casio_3.out +100 -0
- data/bin/Image-ExifTool-9.33/t/Casio_4.out +26 -0
- data/bin/Image-ExifTool-9.33/t/Casio_5.out +78 -0
- data/bin/Image-ExifTool-9.33/t/Casio_6.out +115 -0
- data/bin/Image-ExifTool-9.33/t/DICOM.t +28 -0
- data/bin/Image-ExifTool-9.33/t/DICOM_2.out +108 -0
- data/bin/Image-ExifTool-9.33/t/DNG.t +39 -0
- data/bin/Image-ExifTool-9.33/t/DNG_2.out +326 -0
- data/bin/Image-ExifTool-9.33/t/DNG_3.out +4 -0
- data/bin/Image-ExifTool-9.33/t/DV.t +27 -0
- data/bin/Image-ExifTool-9.33/t/DV_2.out +24 -0
- data/bin/Image-ExifTool-9.33/t/DjVu.t +28 -0
- data/bin/Image-ExifTool-9.33/t/DjVu_2.out +44 -0
- data/bin/Image-ExifTool-9.33/t/EXE.t +31 -0
- data/bin/Image-ExifTool-9.33/t/EXE_2.out +40 -0
- data/bin/Image-ExifTool-9.33/t/EXE_3.out +15 -0
- data/bin/Image-ExifTool-9.33/t/EXE_4.out +14 -0
- data/bin/Image-ExifTool-9.33/t/ExifTool.t +284 -0
- data/bin/Image-ExifTool-9.33/t/ExifTool_16.out +180 -0
- data/bin/Image-ExifTool-9.33/t/ExifTool_17.out +594 -0
- data/bin/Image-ExifTool-9.33/t/ExifTool_2.out +399 -0
- data/bin/Image-ExifTool-9.33/t/ExifTool_20.out +1 -0
- data/bin/Image-ExifTool-9.33/t/ExifTool_21.out +1 -0
- data/bin/Image-ExifTool-9.33/t/ExifTool_22.out +1 -0
- data/bin/Image-ExifTool-9.33/t/ExifTool_23.out +6 -0
- data/bin/Image-ExifTool-9.33/t/ExifTool_24.out +3 -0
- data/bin/Image-ExifTool-9.33/t/ExifTool_25.out +13 -0
- data/bin/Image-ExifTool-9.33/t/ExifTool_26.out +12 -0
- data/bin/Image-ExifTool-9.33/t/ExifTool_3.out +87 -0
- data/bin/Image-ExifTool-9.33/t/ExifTool_4.out +41 -0
- data/bin/Image-ExifTool-9.33/t/ExifTool_5.out +6 -0
- data/bin/Image-ExifTool-9.33/t/ExifTool_6.out +68 -0
- data/bin/Image-ExifTool-9.33/t/ExifTool_7.out +125 -0
- data/bin/Image-ExifTool-9.33/t/ExifTool_8.out +125 -0
- data/bin/Image-ExifTool-9.33/t/ExifTool_9.out +33 -0
- data/bin/Image-ExifTool-9.33/t/FLAC.t +37 -0
- data/bin/Image-ExifTool-9.33/t/FLAC_2.out +25 -0
- data/bin/Image-ExifTool-9.33/t/FLAC_3.out +19 -0
- data/bin/Image-ExifTool-9.33/t/FLIR.t +30 -0
- data/bin/Image-ExifTool-9.33/t/FLIR_2.out +104 -0
- data/bin/Image-ExifTool-9.33/t/FLIR_3.out +47 -0
- data/bin/Image-ExifTool-9.33/t/Flash.t +37 -0
- data/bin/Image-ExifTool-9.33/t/FlashPix.t +30 -0
- data/bin/Image-ExifTool-9.33/t/FlashPix_2.out +48 -0
- data/bin/Image-ExifTool-9.33/t/Flash_2.out +20 -0
- data/bin/Image-ExifTool-9.33/t/Flash_3.out +53 -0
- data/bin/Image-ExifTool-9.33/t/Font.t +30 -0
- data/bin/Image-ExifTool-9.33/t/Font_2.out +23 -0
- data/bin/Image-ExifTool-9.33/t/Font_3.out +35 -0
- data/bin/Image-ExifTool-9.33/t/Font_4.out +26 -0
- data/bin/Image-ExifTool-9.33/t/Font_5.out +26 -0
- data/bin/Image-ExifTool-9.33/t/Font_6.out +36 -0
- data/bin/Image-ExifTool-9.33/t/Font_7.out +36 -0
- data/bin/Image-ExifTool-9.33/t/FotoStation.t +38 -0
- data/bin/Image-ExifTool-9.33/t/FotoStation_2.out +39 -0
- data/bin/Image-ExifTool-9.33/t/FotoStation_3.out +3 -0
- data/bin/Image-ExifTool-9.33/t/FujiFilm.t +78 -0
- data/bin/Image-ExifTool-9.33/t/FujiFilm_2.out +87 -0
- data/bin/Image-ExifTool-9.33/t/FujiFilm_3.out +88 -0
- data/bin/Image-ExifTool-9.33/t/FujiFilm_4.out +117 -0
- data/bin/Image-ExifTool-9.33/t/FujiFilm_5.out +1 -0
- data/bin/Image-ExifTool-9.33/t/GE.t +46 -0
- data/bin/Image-ExifTool-9.33/t/GE_2.out +84 -0
- data/bin/Image-ExifTool-9.33/t/GE_3.out +84 -0
- data/bin/Image-ExifTool-9.33/t/GIF.t +83 -0
- data/bin/Image-ExifTool-9.33/t/GIF_2.out +40 -0
- data/bin/Image-ExifTool-9.33/t/GIF_3.out +41 -0
- data/bin/Image-ExifTool-9.33/t/GIF_4.out +16 -0
- data/bin/Image-ExifTool-9.33/t/GIMP.t +27 -0
- data/bin/Image-ExifTool-9.33/t/GIMP_2.out +63 -0
- data/bin/Image-ExifTool-9.33/t/GPS.t +42 -0
- data/bin/Image-ExifTool-9.33/t/GPS_2.out +94 -0
- data/bin/Image-ExifTool-9.33/t/GPS_3.out +96 -0
- data/bin/Image-ExifTool-9.33/t/GeoTiff.t +36 -0
- data/bin/Image-ExifTool-9.33/t/GeoTiff_2.out +36 -0
- data/bin/Image-ExifTool-9.33/t/GeoTiff_3.out +36 -0
- data/bin/Image-ExifTool-9.33/t/Geotag.t +164 -0
- data/bin/Image-ExifTool-9.33/t/Geotag_2.out +9 -0
- data/bin/Image-ExifTool-9.33/t/Geotag_3.out +6 -0
- data/bin/Image-ExifTool-9.33/t/Geotag_5.out +1 -0
- data/bin/Image-ExifTool-9.33/t/Geotag_6.out +9 -0
- data/bin/Image-ExifTool-9.33/t/Geotag_7.out +53 -0
- data/bin/Image-ExifTool-9.33/t/Geotag_8.out +15 -0
- data/bin/Image-ExifTool-9.33/t/HTML.t +28 -0
- data/bin/Image-ExifTool-9.33/t/HTML_2.out +68 -0
- data/bin/Image-ExifTool-9.33/t/IPTC.t +157 -0
- data/bin/Image-ExifTool-9.33/t/IPTC_2.out +58 -0
- data/bin/Image-ExifTool-9.33/t/IPTC_4.out +56 -0
- data/bin/Image-ExifTool-9.33/t/IPTC_5.out +1 -0
- data/bin/Image-ExifTool-9.33/t/IPTC_6.out +2 -0
- data/bin/Image-ExifTool-9.33/t/IPTC_7.out +1 -0
- data/bin/Image-ExifTool-9.33/t/IPTC_8.out +20 -0
- data/bin/Image-ExifTool-9.33/t/ITC.t +28 -0
- data/bin/Image-ExifTool-9.33/t/ITC_2.out +19 -0
- data/bin/Image-ExifTool-9.33/t/InDesign.t +61 -0
- data/bin/Image-ExifTool-9.33/t/InDesign_2.out +19 -0
- data/bin/Image-ExifTool-9.33/t/InDesign_3.out +21 -0
- data/bin/Image-ExifTool-9.33/t/InDesign_4.out +11 -0
- data/bin/Image-ExifTool-9.33/t/JVC.t +36 -0
- data/bin/Image-ExifTool-9.33/t/JVC_2.out +3 -0
- data/bin/Image-ExifTool-9.33/t/JVC_3.out +3 -0
- data/bin/Image-ExifTool-9.33/t/Jpeg2000.t +49 -0
- data/bin/Image-ExifTool-9.33/t/Jpeg2000_2.out +63 -0
- data/bin/Image-ExifTool-9.33/t/Jpeg2000_3.out +51 -0
- data/bin/Image-ExifTool-9.33/t/Jpeg2000_4.out +15 -0
- data/bin/Image-ExifTool-9.33/t/Kodak.t +40 -0
- data/bin/Image-ExifTool-9.33/t/Kodak_2.out +109 -0
- data/bin/Image-ExifTool-9.33/t/Kodak_3.out +119 -0
- data/bin/Image-ExifTool-9.33/t/KyoceraRaw.t +28 -0
- data/bin/Image-ExifTool-9.33/t/KyoceraRaw_2.out +27 -0
- data/bin/Image-ExifTool-9.33/t/LNK.t +28 -0
- data/bin/Image-ExifTool-9.33/t/LNK_2.out +45 -0
- data/bin/Image-ExifTool-9.33/t/Lang.t +40 -0
- data/bin/Image-ExifTool-9.33/t/Lang_1.out +1 -0
- data/bin/Image-ExifTool-9.33/t/Lang_10.out +46 -0
- data/bin/Image-ExifTool-9.33/t/Lang_11.out +46 -0
- data/bin/Image-ExifTool-9.33/t/Lang_12.out +46 -0
- data/bin/Image-ExifTool-9.33/t/Lang_13.out +46 -0
- data/bin/Image-ExifTool-9.33/t/Lang_14.out +46 -0
- data/bin/Image-ExifTool-9.33/t/Lang_15.out +46 -0
- data/bin/Image-ExifTool-9.33/t/Lang_16.out +46 -0
- data/bin/Image-ExifTool-9.33/t/Lang_17.out +46 -0
- data/bin/Image-ExifTool-9.33/t/Lang_18.out +46 -0
- data/bin/Image-ExifTool-9.33/t/Lang_2.out +46 -0
- data/bin/Image-ExifTool-9.33/t/Lang_3.out +46 -0
- data/bin/Image-ExifTool-9.33/t/Lang_4.out +46 -0
- data/bin/Image-ExifTool-9.33/t/Lang_5.out +46 -0
- data/bin/Image-ExifTool-9.33/t/Lang_6.out +46 -0
- data/bin/Image-ExifTool-9.33/t/Lang_7.out +46 -0
- data/bin/Image-ExifTool-9.33/t/Lang_8.out +46 -0
- data/bin/Image-ExifTool-9.33/t/Lang_9.out +46 -0
- data/bin/Image-ExifTool-9.33/t/M2TS.t +29 -0
- data/bin/Image-ExifTool-9.33/t/M2TS_2.out +27 -0
- data/bin/Image-ExifTool-9.33/t/MIE.t +82 -0
- data/bin/Image-ExifTool-9.33/t/MIE_2.out +67 -0
- data/bin/Image-ExifTool-9.33/t/MIE_3.out +134 -0
- data/bin/Image-ExifTool-9.33/t/MIE_5.out +1 -0
- data/bin/Image-ExifTool-9.33/t/MIE_6.out +1 -0
- data/bin/Image-ExifTool-9.33/t/MIFF.t +28 -0
- data/bin/Image-ExifTool-9.33/t/MIFF_2.out +108 -0
- data/bin/Image-ExifTool-9.33/t/MP3.t +29 -0
- data/bin/Image-ExifTool-9.33/t/MP3_2.out +45 -0
- data/bin/Image-ExifTool-9.33/t/MWG.t +72 -0
- data/bin/Image-ExifTool-9.33/t/MWG_2.out +13 -0
- data/bin/Image-ExifTool-9.33/t/MWG_3.out +8 -0
- data/bin/Image-ExifTool-9.33/t/MWG_4.out +5 -0
- data/bin/Image-ExifTool-9.33/t/MWG_5.out +22 -0
- data/bin/Image-ExifTool-9.33/t/MXF.t +27 -0
- data/bin/Image-ExifTool-9.33/t/MXF_2.out +78 -0
- data/bin/Image-ExifTool-9.33/t/Matroska.t +29 -0
- data/bin/Image-ExifTool-9.33/t/Matroska_2.out +64 -0
- data/bin/Image-ExifTool-9.33/t/Minolta.t +50 -0
- data/bin/Image-ExifTool-9.33/t/Minolta_2.out +133 -0
- data/bin/Image-ExifTool-9.33/t/Minolta_3.out +146 -0
- data/bin/Image-ExifTool-9.33/t/Minolta_4.out +148 -0
- data/bin/Image-ExifTool-9.33/t/Nikon.t +114 -0
- data/bin/Image-ExifTool-9.33/t/Nikon_2.out +82 -0
- data/bin/Image-ExifTool-9.33/t/Nikon_3.out +98 -0
- data/bin/Image-ExifTool-9.33/t/Nikon_4.out +174 -0
- data/bin/Image-ExifTool-9.33/t/Nikon_5.out +167 -0
- data/bin/Image-ExifTool-9.33/t/Nikon_7.out +260 -0
- data/bin/Image-ExifTool-9.33/t/Nikon_8.out +4 -0
- data/bin/Image-ExifTool-9.33/t/Olympus.t +85 -0
- data/bin/Image-ExifTool-9.33/t/Olympus_2.out +79 -0
- data/bin/Image-ExifTool-9.33/t/Olympus_3.out +81 -0
- data/bin/Image-ExifTool-9.33/t/Olympus_4.out +192 -0
- data/bin/Image-ExifTool-9.33/t/Olympus_5.out +264 -0
- data/bin/Image-ExifTool-9.33/t/Olympus_6.out +151 -0
- data/bin/Image-ExifTool-9.33/t/Olympus_7.out +482 -0
- data/bin/Image-ExifTool-9.33/t/OpenEXR.t +28 -0
- data/bin/Image-ExifTool-9.33/t/OpenEXR_2.out +23 -0
- data/bin/Image-ExifTool-9.33/t/PDF.t +295 -0
- data/bin/Image-ExifTool-9.33/t/PDF_10.out +10 -0
- data/bin/Image-ExifTool-9.33/t/PDF_11.out +10 -0
- data/bin/Image-ExifTool-9.33/t/PDF_12.out +9 -0
- data/bin/Image-ExifTool-9.33/t/PDF_14.out +5 -0
- data/bin/Image-ExifTool-9.33/t/PDF_15.out +6 -0
- data/bin/Image-ExifTool-9.33/t/PDF_16.out +4 -0
- data/bin/Image-ExifTool-9.33/t/PDF_17.out +4 -0
- data/bin/Image-ExifTool-9.33/t/PDF_18.out +5 -0
- data/bin/Image-ExifTool-9.33/t/PDF_19.out +6 -0
- data/bin/Image-ExifTool-9.33/t/PDF_2.out +117 -0
- data/bin/Image-ExifTool-9.33/t/PDF_20.out +4 -0
- data/bin/Image-ExifTool-9.33/t/PDF_22.out +3 -0
- data/bin/Image-ExifTool-9.33/t/PDF_4.out +12 -0
- data/bin/Image-ExifTool-9.33/t/PDF_5.out +8 -0
- data/bin/Image-ExifTool-9.33/t/PDF_6.out +9 -0
- data/bin/Image-ExifTool-9.33/t/PDF_7.out +11 -0
- data/bin/Image-ExifTool-9.33/t/PDF_8.out +9 -0
- data/bin/Image-ExifTool-9.33/t/PDF_9.out +9 -0
- data/bin/Image-ExifTool-9.33/t/PGF.t +28 -0
- data/bin/Image-ExifTool-9.33/t/PGF_2.out +32 -0
- data/bin/Image-ExifTool-9.33/t/PICT.t +28 -0
- data/bin/Image-ExifTool-9.33/t/PICT_2.out +15 -0
- data/bin/Image-ExifTool-9.33/t/PLIST.t +31 -0
- data/bin/Image-ExifTool-9.33/t/PLIST_2.out +20 -0
- data/bin/Image-ExifTool-9.33/t/PLIST_3.out +20 -0
- data/bin/Image-ExifTool-9.33/t/PNG.t +75 -0
- data/bin/Image-ExifTool-9.33/t/PNG_2.out +22 -0
- data/bin/Image-ExifTool-9.33/t/PNG_3.out +118 -0
- data/bin/Image-ExifTool-9.33/t/PNG_4.out +12 -0
- data/bin/Image-ExifTool-9.33/t/PPM.t +40 -0
- data/bin/Image-ExifTool-9.33/t/PPM_2.out +15 -0
- data/bin/Image-ExifTool-9.33/t/PPM_3.out +9 -0
- data/bin/Image-ExifTool-9.33/t/PSP.t +28 -0
- data/bin/Image-ExifTool-9.33/t/PSP_2.out +32 -0
- data/bin/Image-ExifTool-9.33/t/Panasonic.t +60 -0
- data/bin/Image-ExifTool-9.33/t/Panasonic_2.out +99 -0
- data/bin/Image-ExifTool-9.33/t/Panasonic_3.out +119 -0
- data/bin/Image-ExifTool-9.33/t/Panasonic_4.out +177 -0
- data/bin/Image-ExifTool-9.33/t/Panasonic_5.out +228 -0
- data/bin/Image-ExifTool-9.33/t/Pentax.t +50 -0
- data/bin/Image-ExifTool-9.33/t/Pentax_2.out +219 -0
- data/bin/Image-ExifTool-9.33/t/Pentax_3.out +262 -0
- data/bin/Image-ExifTool-9.33/t/Pentax_4.out +123 -0
- data/bin/Image-ExifTool-9.33/t/PhotoCD.t +28 -0
- data/bin/Image-ExifTool-9.33/t/PhotoCD_2.out +35 -0
- data/bin/Image-ExifTool-9.33/t/PhotoMechanic.t +38 -0
- data/bin/Image-ExifTool-9.33/t/PhotoMechanic_2.out +81 -0
- data/bin/Image-ExifTool-9.33/t/PhotoMechanic_3.out +2 -0
- data/bin/Image-ExifTool-9.33/t/Photoshop.t +42 -0
- data/bin/Image-ExifTool-9.33/t/Photoshop_2.out +96 -0
- data/bin/Image-ExifTool-9.33/t/Photoshop_3.out +108 -0
- data/bin/Image-ExifTool-9.33/t/PostScript.t +49 -0
- data/bin/Image-ExifTool-9.33/t/PostScript_2.out +64 -0
- data/bin/Image-ExifTool-9.33/t/PostScript_3.out +132 -0
- data/bin/Image-ExifTool-9.33/t/QuickTime.t +31 -0
- data/bin/Image-ExifTool-9.33/t/QuickTime_2.out +128 -0
- data/bin/Image-ExifTool-9.33/t/QuickTime_3.out +69 -0
- data/bin/Image-ExifTool-9.33/t/RIFF.t +31 -0
- data/bin/Image-ExifTool-9.33/t/RIFF_2.out +24 -0
- data/bin/Image-ExifTool-9.33/t/RIFF_3.out +52 -0
- data/bin/Image-ExifTool-9.33/t/RIFF_4.out +16 -0
- data/bin/Image-ExifTool-9.33/t/RTF.t +27 -0
- data/bin/Image-ExifTool-9.33/t/RTF_2.out +20 -0
- data/bin/Image-ExifTool-9.33/t/Radiance.t +28 -0
- data/bin/Image-ExifTool-9.33/t/Radiance_2.out +22 -0
- data/bin/Image-ExifTool-9.33/t/Real.t +46 -0
- data/bin/Image-ExifTool-9.33/t/Real_2.out +68 -0
- data/bin/Image-ExifTool-9.33/t/Real_3.out +18 -0
- data/bin/Image-ExifTool-9.33/t/Real_4.out +11 -0
- data/bin/Image-ExifTool-9.33/t/Ricoh.t +47 -0
- data/bin/Image-ExifTool-9.33/t/Ricoh_2.out +70 -0
- data/bin/Image-ExifTool-9.33/t/Ricoh_3.out +98 -0
- data/bin/Image-ExifTool-9.33/t/Ricoh_4.out +112 -0
- data/bin/Image-ExifTool-9.33/t/Sanyo.t +39 -0
- data/bin/Image-ExifTool-9.33/t/Sanyo_2.out +101 -0
- data/bin/Image-ExifTool-9.33/t/Sanyo_3.out +111 -0
- data/bin/Image-ExifTool-9.33/t/Sigma.t +60 -0
- data/bin/Image-ExifTool-9.33/t/Sigma_2.out +91 -0
- data/bin/Image-ExifTool-9.33/t/Sigma_3.out +94 -0
- data/bin/Image-ExifTool-9.33/t/Sigma_4.out +63 -0
- data/bin/Image-ExifTool-9.33/t/Sigma_5.out +192 -0
- data/bin/Image-ExifTool-9.33/t/Sony.t +62 -0
- data/bin/Image-ExifTool-9.33/t/Sony_2.out +84 -0
- data/bin/Image-ExifTool-9.33/t/Sony_3.out +85 -0
- data/bin/Image-ExifTool-9.33/t/Sony_5.out +32 -0
- data/bin/Image-ExifTool-9.33/t/TestLib.pm +417 -0
- data/bin/Image-ExifTool-9.33/t/Unknown.t +36 -0
- data/bin/Image-ExifTool-9.33/t/Unknown_2.out +90 -0
- data/bin/Image-ExifTool-9.33/t/Unknown_3.out +90 -0
- data/bin/Image-ExifTool-9.33/t/Vorbis.t +28 -0
- data/bin/Image-ExifTool-9.33/t/Vorbis_2.out +28 -0
- data/bin/Image-ExifTool-9.33/t/Writer.t +913 -0
- data/bin/Image-ExifTool-9.33/t/Writer_10.out +240 -0
- data/bin/Image-ExifTool-9.33/t/Writer_11.out +37 -0
- data/bin/Image-ExifTool-9.33/t/Writer_13.out +160 -0
- data/bin/Image-ExifTool-9.33/t/Writer_14.out +67 -0
- data/bin/Image-ExifTool-9.33/t/Writer_15.out +171 -0
- data/bin/Image-ExifTool-9.33/t/Writer_16.out +1 -0
- data/bin/Image-ExifTool-9.33/t/Writer_17.out +1 -0
- data/bin/Image-ExifTool-9.33/t/Writer_18.out +3 -0
- data/bin/Image-ExifTool-9.33/t/Writer_19.out +34 -0
- data/bin/Image-ExifTool-9.33/t/Writer_2.out +168 -0
- data/bin/Image-ExifTool-9.33/t/Writer_22.out +4 -0
- data/bin/Image-ExifTool-9.33/t/Writer_24.out +1 -0
- data/bin/Image-ExifTool-9.33/t/Writer_25.out +38 -0
- data/bin/Image-ExifTool-9.33/t/Writer_26.out +32 -0
- data/bin/Image-ExifTool-9.33/t/Writer_27.out +14 -0
- data/bin/Image-ExifTool-9.33/t/Writer_28.out +1 -0
- data/bin/Image-ExifTool-9.33/t/Writer_29.out +2 -0
- data/bin/Image-ExifTool-9.33/t/Writer_30.out +2 -0
- data/bin/Image-ExifTool-9.33/t/Writer_31.out +97 -0
- data/bin/Image-ExifTool-9.33/t/Writer_32.out +3 -0
- data/bin/Image-ExifTool-9.33/t/Writer_33.out +3 -0
- data/bin/Image-ExifTool-9.33/t/Writer_34.out +3 -0
- data/bin/Image-ExifTool-9.33/t/Writer_35.out +187 -0
- data/bin/Image-ExifTool-9.33/t/Writer_36.out +2 -0
- data/bin/Image-ExifTool-9.33/t/Writer_37.out +2 -0
- data/bin/Image-ExifTool-9.33/t/Writer_38.out +62 -0
- data/bin/Image-ExifTool-9.33/t/Writer_39.out +4 -0
- data/bin/Image-ExifTool-9.33/t/Writer_4.out +85 -0
- data/bin/Image-ExifTool-9.33/t/Writer_40.out +4 -0
- data/bin/Image-ExifTool-9.33/t/Writer_41.out +3 -0
- data/bin/Image-ExifTool-9.33/t/Writer_42.out +5 -0
- data/bin/Image-ExifTool-9.33/t/Writer_43.out +5 -0
- data/bin/Image-ExifTool-9.33/t/Writer_44.out +2 -0
- data/bin/Image-ExifTool-9.33/t/Writer_45.out +1 -0
- data/bin/Image-ExifTool-9.33/t/Writer_46.out +77 -0
- data/bin/Image-ExifTool-9.33/t/Writer_47.out +56 -0
- data/bin/Image-ExifTool-9.33/t/Writer_48.out +29 -0
- data/bin/Image-ExifTool-9.33/t/Writer_50.out +3 -0
- data/bin/Image-ExifTool-9.33/t/Writer_51.out +386 -0
- data/bin/Image-ExifTool-9.33/t/Writer_6.out +182 -0
- data/bin/Image-ExifTool-9.33/t/Writer_7.out +149 -0
- data/bin/Image-ExifTool-9.33/t/Writer_9.out +237 -0
- data/bin/Image-ExifTool-9.33/t/XMP.t +521 -0
- data/bin/Image-ExifTool-9.33/t/XMP_10.out +33 -0
- data/bin/Image-ExifTool-9.33/t/XMP_11.out +59 -0
- data/bin/Image-ExifTool-9.33/t/XMP_12.out +4 -0
- data/bin/Image-ExifTool-9.33/t/XMP_13.out +5 -0
- data/bin/Image-ExifTool-9.33/t/XMP_14.out +3 -0
- data/bin/Image-ExifTool-9.33/t/XMP_15.out +3 -0
- data/bin/Image-ExifTool-9.33/t/XMP_16.out +5 -0
- data/bin/Image-ExifTool-9.33/t/XMP_17.out +6 -0
- data/bin/Image-ExifTool-9.33/t/XMP_18.out +10 -0
- data/bin/Image-ExifTool-9.33/t/XMP_19.out +35 -0
- data/bin/Image-ExifTool-9.33/t/XMP_2.out +138 -0
- data/bin/Image-ExifTool-9.33/t/XMP_20.out +35 -0
- data/bin/Image-ExifTool-9.33/t/XMP_21.out +38 -0
- data/bin/Image-ExifTool-9.33/t/XMP_22.out +38 -0
- data/bin/Image-ExifTool-9.33/t/XMP_23.out +9 -0
- data/bin/Image-ExifTool-9.33/t/XMP_24.out +31 -0
- data/bin/Image-ExifTool-9.33/t/XMP_25.out +28 -0
- data/bin/Image-ExifTool-9.33/t/XMP_26.out +52 -0
- data/bin/Image-ExifTool-9.33/t/XMP_27.out +93 -0
- data/bin/Image-ExifTool-9.33/t/XMP_28.out +44 -0
- data/bin/Image-ExifTool-9.33/t/XMP_29.out +24 -0
- data/bin/Image-ExifTool-9.33/t/XMP_3.out +136 -0
- data/bin/Image-ExifTool-9.33/t/XMP_30.out +90 -0
- data/bin/Image-ExifTool-9.33/t/XMP_31.out +19 -0
- data/bin/Image-ExifTool-9.33/t/XMP_32.out +2 -0
- data/bin/Image-ExifTool-9.33/t/XMP_34.out +2 -0
- data/bin/Image-ExifTool-9.33/t/XMP_36.out +18 -0
- data/bin/Image-ExifTool-9.33/t/XMP_37.out +35 -0
- data/bin/Image-ExifTool-9.33/t/XMP_39.out +44 -0
- data/bin/Image-ExifTool-9.33/t/XMP_40.out +3 -0
- data/bin/Image-ExifTool-9.33/t/XMP_41.out +175 -0
- data/bin/Image-ExifTool-9.33/t/XMP_5.out +29 -0
- data/bin/Image-ExifTool-9.33/t/XMP_6.out +87 -0
- data/bin/Image-ExifTool-9.33/t/XMP_7.out +118 -0
- data/bin/Image-ExifTool-9.33/t/XMP_8.out +17 -0
- data/bin/Image-ExifTool-9.33/t/XMP_9.out +36 -0
- data/bin/Image-ExifTool-9.33/t/ZIP.t +69 -0
- data/bin/Image-ExifTool-9.33/t/ZIP_2.out +18 -0
- data/bin/Image-ExifTool-9.33/t/ZIP_3.out +17 -0
- data/bin/Image-ExifTool-9.33/t/ZIP_4.out +213 -0
- data/bin/Image-ExifTool-9.33/t/ZIP_5.out +134 -0
- data/bin/Image-ExifTool-9.33/t/ZIP_6.out +49 -0
- data/bin/Image-ExifTool-9.33/t/ZIP_7.out +28 -0
- data/bin/Image-ExifTool-9.33/t/images/AFCP.jpg +0 -0
- data/bin/Image-ExifTool-9.33/t/images/AIFF.aif +0 -0
- data/bin/Image-ExifTool-9.33/t/images/APE.ape +0 -0
- data/bin/Image-ExifTool-9.33/t/images/APE.mpc +0 -0
- data/bin/Image-ExifTool-9.33/t/images/ASF.wmv +0 -0
- data/bin/Image-ExifTool-9.33/t/images/BMP.bmp +0 -0
- data/bin/Image-ExifTool-9.33/t/images/BigTIFF.btf +0 -0
- data/bin/Image-ExifTool-9.33/t/images/Canon.jpg +0 -0
- data/bin/Image-ExifTool-9.33/t/images/Canon1DmkIII.jpg +0 -0
- data/bin/Image-ExifTool-9.33/t/images/CanonRaw.cr2 +0 -0
- data/bin/Image-ExifTool-9.33/t/images/CanonRaw.crw +0 -0
- data/bin/Image-ExifTool-9.33/t/images/CanonVRD.vrd +0 -0
- data/bin/Image-ExifTool-9.33/t/images/CaptureOne.eip +0 -0
- data/bin/Image-ExifTool-9.33/t/images/Casio.jpg +0 -0
- data/bin/Image-ExifTool-9.33/t/images/Casio2.jpg +0 -0
- data/bin/Image-ExifTool-9.33/t/images/CasioQVCI.jpg +0 -0
- data/bin/Image-ExifTool-9.33/t/images/DICOM.dcm +0 -0
- data/bin/Image-ExifTool-9.33/t/images/DNG.dng +0 -0
- data/bin/Image-ExifTool-9.33/t/images/DV.dv +0 -0
- data/bin/Image-ExifTool-9.33/t/images/DjVu.djvu +0 -0
- data/bin/Image-ExifTool-9.33/t/images/EXE.elf +0 -0
- data/bin/Image-ExifTool-9.33/t/images/EXE.exe +0 -0
- data/bin/Image-ExifTool-9.33/t/images/EXE.macho +0 -0
- data/bin/Image-ExifTool-9.33/t/images/ExifTool.jpg +0 -0
- data/bin/Image-ExifTool-9.33/t/images/ExifTool.tif +0 -0
- data/bin/Image-ExifTool-9.33/t/images/ExtendedXMP.jpg +0 -0
- data/bin/Image-ExifTool-9.33/t/images/FLAC.flac +0 -0
- data/bin/Image-ExifTool-9.33/t/images/FLAC.ogg +0 -0
- data/bin/Image-ExifTool-9.33/t/images/FLIR.fpf +0 -0
- data/bin/Image-ExifTool-9.33/t/images/FLIR.jpg +0 -0
- data/bin/Image-ExifTool-9.33/t/images/Flash.flv +0 -0
- data/bin/Image-ExifTool-9.33/t/images/Flash.swf +0 -0
- data/bin/Image-ExifTool-9.33/t/images/FlashPix.ppt +0 -0
- data/bin/Image-ExifTool-9.33/t/images/Font.afm +28 -0
- data/bin/Image-ExifTool-9.33/t/images/Font.dfont +0 -0
- data/bin/Image-ExifTool-9.33/t/images/Font.pfa +38 -0
- data/bin/Image-ExifTool-9.33/t/images/Font.pfb +0 -0
- data/bin/Image-ExifTool-9.33/t/images/Font.pfm +0 -0
- data/bin/Image-ExifTool-9.33/t/images/Font.ttf +0 -0
- data/bin/Image-ExifTool-9.33/t/images/FotoStation.jpg +0 -0
- data/bin/Image-ExifTool-9.33/t/images/FujiFilm.jpg +0 -0
- data/bin/Image-ExifTool-9.33/t/images/FujiFilm.raf +0 -0
- data/bin/Image-ExifTool-9.33/t/images/GE.jpg +0 -0
- data/bin/Image-ExifTool-9.33/t/images/GIF.gif +0 -0
- data/bin/Image-ExifTool-9.33/t/images/GIMP.xcf +0 -0
- data/bin/Image-ExifTool-9.33/t/images/GPS.jpg +0 -0
- data/bin/Image-ExifTool-9.33/t/images/GeoTiff.tif +0 -0
- data/bin/Image-ExifTool-9.33/t/images/Geotag.gpx +23 -0
- data/bin/Image-ExifTool-9.33/t/images/Geotag.igc +24 -0
- data/bin/Image-ExifTool-9.33/t/images/Geotag.log +13 -0
- data/bin/Image-ExifTool-9.33/t/images/Geotag.xml +23 -0
- data/bin/Image-ExifTool-9.33/t/images/Geotag2.log +7 -0
- data/bin/Image-ExifTool-9.33/t/images/HTML.html +77 -0
- data/bin/Image-ExifTool-9.33/t/images/IPTC.jpg +0 -0
- data/bin/Image-ExifTool-9.33/t/images/ITC.itc +0 -0
- data/bin/Image-ExifTool-9.33/t/images/InDesign.indd +0 -0
- data/bin/Image-ExifTool-9.33/t/images/JVC.jpg +0 -0
- data/bin/Image-ExifTool-9.33/t/images/JVC2.jpg +0 -0
- data/bin/Image-ExifTool-9.33/t/images/Jpeg2000.j2c +0 -0
- data/bin/Image-ExifTool-9.33/t/images/Jpeg2000.jp2 +0 -0
- data/bin/Image-ExifTool-9.33/t/images/Kodak.jpg +0 -0
- data/bin/Image-ExifTool-9.33/t/images/KyoceraRaw.raw +0 -0
- data/bin/Image-ExifTool-9.33/t/images/LNK.lnk +0 -0
- data/bin/Image-ExifTool-9.33/t/images/M2TS.mts +0 -0
- data/bin/Image-ExifTool-9.33/t/images/MIE.mie +0 -0
- data/bin/Image-ExifTool-9.33/t/images/MIFF.miff +0 -0
- data/bin/Image-ExifTool-9.33/t/images/MP3.mp3 +0 -0
- data/bin/Image-ExifTool-9.33/t/images/MWG.jpg +0 -0
- data/bin/Image-ExifTool-9.33/t/images/MXF.mxf +0 -0
- data/bin/Image-ExifTool-9.33/t/images/Matroska.mkv +0 -0
- data/bin/Image-ExifTool-9.33/t/images/Minolta.jpg +0 -0
- data/bin/Image-ExifTool-9.33/t/images/Minolta.mrw +0 -0
- data/bin/Image-ExifTool-9.33/t/images/Nikon.jpg +0 -0
- data/bin/Image-ExifTool-9.33/t/images/Nikon.nef +0 -0
- data/bin/Image-ExifTool-9.33/t/images/NikonD2Hs.jpg +0 -0
- data/bin/Image-ExifTool-9.33/t/images/NikonD70.jpg +0 -0
- data/bin/Image-ExifTool-9.33/t/images/OOXML.docx +0 -0
- data/bin/Image-ExifTool-9.33/t/images/Olympus.jpg +0 -0
- data/bin/Image-ExifTool-9.33/t/images/Olympus2.jpg +0 -0
- data/bin/Image-ExifTool-9.33/t/images/OlympusE1.jpg +0 -0
- data/bin/Image-ExifTool-9.33/t/images/OpenDoc.ods +0 -0
- data/bin/Image-ExifTool-9.33/t/images/OpenEXR.exr +0 -0
- data/bin/Image-ExifTool-9.33/t/images/PDF.pdf +0 -0
- data/bin/Image-ExifTool-9.33/t/images/PDF2.pdf +0 -0
- data/bin/Image-ExifTool-9.33/t/images/PGF.pgf +0 -0
- data/bin/Image-ExifTool-9.33/t/images/PICT.pict +0 -0
- data/bin/Image-ExifTool-9.33/t/images/PLIST-bin.plist +0 -0
- data/bin/Image-ExifTool-9.33/t/images/PLIST-xml.plist +35 -0
- data/bin/Image-ExifTool-9.33/t/images/PNG.png +0 -0
- data/bin/Image-ExifTool-9.33/t/images/PPM.ppm +5 -0
- data/bin/Image-ExifTool-9.33/t/images/PSP.psp +0 -0
- data/bin/Image-ExifTool-9.33/t/images/Panasonic.jpg +0 -0
- data/bin/Image-ExifTool-9.33/t/images/Panasonic.rw2 +0 -0
- data/bin/Image-ExifTool-9.33/t/images/Pentax.avi +0 -0
- data/bin/Image-ExifTool-9.33/t/images/Pentax.jpg +0 -0
- data/bin/Image-ExifTool-9.33/t/images/PhotoCD.pcd +0 -0
- data/bin/Image-ExifTool-9.33/t/images/PhotoMechanic.jpg +0 -0
- data/bin/Image-ExifTool-9.33/t/images/Photoshop.psd +0 -0
- data/bin/Image-ExifTool-9.33/t/images/PostScript.eps +108 -0
- data/bin/Image-ExifTool-9.33/t/images/QuickTime.m4a +0 -0
- data/bin/Image-ExifTool-9.33/t/images/QuickTime.mov +0 -0
- data/bin/Image-ExifTool-9.33/t/images/RIFF.avi +0 -0
- data/bin/Image-ExifTool-9.33/t/images/RIFF.wav +0 -0
- data/bin/Image-ExifTool-9.33/t/images/RIFF.webp +0 -0
- data/bin/Image-ExifTool-9.33/t/images/RTF.rtf +25 -0
- data/bin/Image-ExifTool-9.33/t/images/Radiance.hdr +0 -0
- data/bin/Image-ExifTool-9.33/t/images/Real.ra +0 -0
- data/bin/Image-ExifTool-9.33/t/images/Real.ram +1 -0
- data/bin/Image-ExifTool-9.33/t/images/Real.rm +0 -0
- data/bin/Image-ExifTool-9.33/t/images/Ricoh.jpg +0 -0
- data/bin/Image-ExifTool-9.33/t/images/Ricoh2.jpg +0 -0
- data/bin/Image-ExifTool-9.33/t/images/Sanyo.jpg +0 -0
- data/bin/Image-ExifTool-9.33/t/images/Sigma.jpg +0 -0
- data/bin/Image-ExifTool-9.33/t/images/Sigma.x3f +0 -0
- data/bin/Image-ExifTool-9.33/t/images/SigmaDP2.x3f +0 -0
- data/bin/Image-ExifTool-9.33/t/images/Sony.jpg +0 -0
- data/bin/Image-ExifTool-9.33/t/images/Sony.pmp +0 -0
- data/bin/Image-ExifTool-9.33/t/images/Unknown.jpg +0 -0
- data/bin/Image-ExifTool-9.33/t/images/Vorbis.ogg +0 -0
- data/bin/Image-ExifTool-9.33/t/images/Writer.jpg +0 -0
- data/bin/Image-ExifTool-9.33/t/images/XMP.inx +108 -0
- data/bin/Image-ExifTool-9.33/t/images/XMP.jpg +0 -0
- data/bin/Image-ExifTool-9.33/t/images/XMP.svg +33 -0
- data/bin/Image-ExifTool-9.33/t/images/XMP.xml +98 -0
- data/bin/Image-ExifTool-9.33/t/images/XMP.xmp +99 -0
- data/bin/Image-ExifTool-9.33/t/images/XMP2.xmp +25 -0
- data/bin/Image-ExifTool-9.33/t/images/XMP3.xmp +43 -0
- data/bin/Image-ExifTool-9.33/t/images/XMP4.xmp +93 -0
- data/bin/Image-ExifTool-9.33/t/images/XMP5.xmp +158 -0
- data/bin/Image-ExifTool-9.33/t/images/ZIP.gz +0 -0
- data/bin/Image-ExifTool-9.33/t/images/ZIP.zip +0 -0
- data/bin/Image-ExifTool-9.33/t/images/iWork.numbers +0 -0
- data/lib/exiftool_vendored.rb +10 -0
- data/lib/exiftool_vendored/version.rb +3 -0
- data/lib/exiftool_vendored/version_extractor.rb +17 -0
- metadata +977 -0
|
@@ -0,0 +1,813 @@
|
|
|
1
|
+
#------------------------------------------------------------------------------
|
|
2
|
+
# File: XMPStruct.pl
|
|
3
|
+
#
|
|
4
|
+
# Description: XMP structure support
|
|
5
|
+
#
|
|
6
|
+
# Revisions: 01/01/2011 - P. Harvey Created
|
|
7
|
+
#------------------------------------------------------------------------------
|
|
8
|
+
|
|
9
|
+
package Image::ExifTool::XMP;
|
|
10
|
+
|
|
11
|
+
use strict;
|
|
12
|
+
use vars qw(%specialStruct $xlatNamespace);
|
|
13
|
+
|
|
14
|
+
use Image::ExifTool qw(:Utils);
|
|
15
|
+
use Image::ExifTool::XMP;
|
|
16
|
+
|
|
17
|
+
sub SerializeStruct($;$);
|
|
18
|
+
sub InflateStruct($;$);
|
|
19
|
+
sub DumpStruct($;$);
|
|
20
|
+
sub CheckStruct($$$);
|
|
21
|
+
sub AddNewStruct($$$$$$);
|
|
22
|
+
sub ConvertStruct($$$$;$);
|
|
23
|
+
|
|
24
|
+
#------------------------------------------------------------------------------
|
|
25
|
+
# Serialize a structure (or other object) into a simple string
|
|
26
|
+
# Inputs: 0) HASH ref, ARRAY ref, or SCALAR, 1) closing bracket (or undef)
|
|
27
|
+
# Returns: serialized structure string
|
|
28
|
+
# ie) "{field=text with {braces|}|, and a comma, field2=val2,field3={field4=[a,b]}}"
|
|
29
|
+
sub SerializeStruct($;$)
|
|
30
|
+
{
|
|
31
|
+
my ($obj, $ket) = @_;
|
|
32
|
+
my ($key, $val, @vals, $rtnVal);
|
|
33
|
+
|
|
34
|
+
if (ref $obj eq 'HASH') {
|
|
35
|
+
foreach $key (sort keys %$obj) {
|
|
36
|
+
push @vals, $key . '=' . SerializeStruct($$obj{$key}, '}');
|
|
37
|
+
}
|
|
38
|
+
$rtnVal = '{' . join(',', @vals) . '}';
|
|
39
|
+
} elsif (ref $obj eq 'ARRAY') {
|
|
40
|
+
foreach $val (@$obj) {
|
|
41
|
+
push @vals, SerializeStruct($val, ']');
|
|
42
|
+
}
|
|
43
|
+
$rtnVal = '[' . join(',', @vals) . ']';
|
|
44
|
+
} elsif (defined $obj) {
|
|
45
|
+
$obj = $$obj if ref $obj eq 'SCALAR';
|
|
46
|
+
# escape necessary characters in string (closing bracket plus "," and "|")
|
|
47
|
+
my $pat = $ket ? "\\$ket|,|\\|" : ',|\\|';
|
|
48
|
+
($rtnVal = $obj) =~ s/($pat)/|$1/g;
|
|
49
|
+
# also must escape opening bracket or whitespace at start of string
|
|
50
|
+
$rtnVal =~ s/^([\s\[\{])/|$1/;
|
|
51
|
+
} else {
|
|
52
|
+
$rtnVal = ''; # allow undefined list items
|
|
53
|
+
}
|
|
54
|
+
return $rtnVal;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
#------------------------------------------------------------------------------
|
|
58
|
+
# Inflate structure (or other object) from a serialized string
|
|
59
|
+
# Inputs: 0) reference to object in string form (serialized using the '|' escape)
|
|
60
|
+
# 1) extra delimiter for scalar values delimiters
|
|
61
|
+
# Returns: 0) object as a SCALAR, HASH ref, or ARRAY ref (or undef on error),
|
|
62
|
+
# 1) warning string (or undef)
|
|
63
|
+
# Notes: modifies input string to remove parsed objects
|
|
64
|
+
sub InflateStruct($;$)
|
|
65
|
+
{
|
|
66
|
+
my ($obj, $delim) = @_;
|
|
67
|
+
my ($val, $warn, $part);
|
|
68
|
+
|
|
69
|
+
if ($$obj =~ s/^\s*\{//) {
|
|
70
|
+
my %struct;
|
|
71
|
+
while ($$obj =~ s/^\s*([-\w:]+#?)\s*=//s) {
|
|
72
|
+
my $tag = $1;
|
|
73
|
+
my ($v, $w) = InflateStruct($obj, '}');
|
|
74
|
+
$warn = $w if $w and not $warn;
|
|
75
|
+
return(undef, $warn) unless defined $v;
|
|
76
|
+
$struct{$tag} = $v;
|
|
77
|
+
# eat comma separator, or all done if there wasn't one
|
|
78
|
+
last unless $$obj =~ s/^\s*,//s;
|
|
79
|
+
}
|
|
80
|
+
# eat closing brace and warn if we didn't find one
|
|
81
|
+
unless ($$obj =~ s/^\s*\}//s or $warn) {
|
|
82
|
+
if (length $$obj) {
|
|
83
|
+
($part = $$obj) =~ s/^\s*//s;
|
|
84
|
+
$part =~ s/[\x0d\x0a].*//s;
|
|
85
|
+
$part = substr($part,0,27) . '...' if length($part) > 30;
|
|
86
|
+
$warn = "Invalid structure field at '$part'";
|
|
87
|
+
} else {
|
|
88
|
+
$warn = 'Missing closing brace for structure';
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
$val = \%struct;
|
|
92
|
+
} elsif ($$obj =~ s/^\s*\[//) {
|
|
93
|
+
my @list;
|
|
94
|
+
for (;;) {
|
|
95
|
+
my ($v, $w) = InflateStruct($obj, ']');
|
|
96
|
+
$warn = $w if $w and not $warn;
|
|
97
|
+
return(undef, $warn) unless defined $v;
|
|
98
|
+
push @list, $v;
|
|
99
|
+
last unless $$obj =~ s/^\s*,//s;
|
|
100
|
+
}
|
|
101
|
+
# eat closing bracket and warn if we didn't find one
|
|
102
|
+
$$obj =~ s/^\s*\]//s or $warn or $warn = 'Missing closing bracket for list';
|
|
103
|
+
$val = \@list;
|
|
104
|
+
} else {
|
|
105
|
+
$$obj =~ s/^\s+//s; # remove leading whitespace
|
|
106
|
+
# read scalar up to specified delimiter (or "," if not defined)
|
|
107
|
+
$val = '';
|
|
108
|
+
$delim = $delim ? "\\$delim|,|\\||\$" : ',|\\||$';
|
|
109
|
+
for (;;) {
|
|
110
|
+
$$obj =~ s/^(.*?)($delim)//s and $val .= $1;
|
|
111
|
+
last unless $2;
|
|
112
|
+
$2 eq '|' or $$obj = $2 . $$obj, last;
|
|
113
|
+
$$obj =~ s/^(.)//s and $val .= $1; # add escaped character
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return($val, $warn);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
#------------------------------------------------------------------------------
|
|
120
|
+
# Get XMP language code from tag name string
|
|
121
|
+
# Inputs: 0) tag name string
|
|
122
|
+
# Returns: 0) separated tag name, 1) language code (in standard case), or '' if
|
|
123
|
+
# language code was 'x-default', or undef if the tag had no language code
|
|
124
|
+
sub GetLangCode($)
|
|
125
|
+
{
|
|
126
|
+
my $tag = shift;
|
|
127
|
+
if ($tag =~ /^(\w+)[-_]([a-z]{2,3}|[xi])([-_][a-z\d]{2,8}([-_][a-z\d]{1,8})*)?$/i) {
|
|
128
|
+
# normalize case of language codes
|
|
129
|
+
my ($tg, $langCode) = ($1, lc($2));
|
|
130
|
+
$langCode .= (length($3) == 3 ? uc($3) : lc($3)) if $3;
|
|
131
|
+
$langCode =~ tr/_/-/; # RFC 3066 specifies '-' as a separator
|
|
132
|
+
$langCode = '' if lc($langCode) eq 'x-default';
|
|
133
|
+
return($tg, $langCode);
|
|
134
|
+
} else {
|
|
135
|
+
return($tag, undef);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
#------------------------------------------------------------------------------
|
|
140
|
+
# Debugging routine to dump a structure, list or scalar
|
|
141
|
+
# Inputs: 0) scalar, ARRAY ref or HASH ref, 1) indent (or undef)
|
|
142
|
+
sub DumpStruct($;$)
|
|
143
|
+
{
|
|
144
|
+
local $_;
|
|
145
|
+
my ($obj, $indent) = @_;
|
|
146
|
+
|
|
147
|
+
$indent or $indent = '';
|
|
148
|
+
if (ref $obj eq 'HASH') {
|
|
149
|
+
print "{\n";
|
|
150
|
+
foreach (sort keys %$obj) {
|
|
151
|
+
print "$indent $_ = ";
|
|
152
|
+
DumpStruct($$obj{$_}, "$indent ");
|
|
153
|
+
}
|
|
154
|
+
print $indent, "},\n";
|
|
155
|
+
} elsif (ref $obj eq 'ARRAY') {
|
|
156
|
+
print "[\n";
|
|
157
|
+
foreach (@$obj) {
|
|
158
|
+
print "$indent ";
|
|
159
|
+
DumpStruct($_, "$indent ");
|
|
160
|
+
}
|
|
161
|
+
print $indent, "],\n",
|
|
162
|
+
} else {
|
|
163
|
+
print "\"$obj\",\n";
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
#------------------------------------------------------------------------------
|
|
168
|
+
# Recursively validate structure fields (tags)
|
|
169
|
+
# Inputs: 0) ExifTool ref, 1) Structure ref, 2) structure table definition ref
|
|
170
|
+
# Returns: 0) validated structure ref, 1) error string, or undef on success
|
|
171
|
+
# Notes:
|
|
172
|
+
# - fixes field names in structure and applies inverse conversions to values
|
|
173
|
+
# - copies structure to avoid interdependencies with calling code on referenced values
|
|
174
|
+
# - handles lang-alt tags, and '#' on field names
|
|
175
|
+
# - resets UTF-8 flag of SCALAR values
|
|
176
|
+
# - un-escapes for XML or HTML as per Escape option setting
|
|
177
|
+
sub CheckStruct($$$)
|
|
178
|
+
{
|
|
179
|
+
my ($exifTool, $struct, $strTable) = @_;
|
|
180
|
+
|
|
181
|
+
my $strName = $$strTable{STRUCT_NAME} || ('XMP ' . RegisterNamespace($strTable));
|
|
182
|
+
ref $struct eq 'HASH' or return wantarray ? (undef, "Expecting $strName structure") : undef;
|
|
183
|
+
|
|
184
|
+
my ($key, $err, $warn, %copy, $rtnVal, $val);
|
|
185
|
+
Key:
|
|
186
|
+
foreach $key (keys %$struct) {
|
|
187
|
+
my $tag = $key;
|
|
188
|
+
# allow trailing '#' to disable print conversion on a per-field basis
|
|
189
|
+
my ($type, $fieldInfo);
|
|
190
|
+
$type = 'ValueConv' if $tag =~ s/#$//;
|
|
191
|
+
$fieldInfo = $$strTable{$tag} unless $specialStruct{$tag};
|
|
192
|
+
# fix case of field name if necessary
|
|
193
|
+
unless ($fieldInfo) {
|
|
194
|
+
# (sort in reverse to get lower case (not special) tags first)
|
|
195
|
+
my ($fix) = reverse sort grep /^$tag$/i, keys %$strTable;
|
|
196
|
+
$fieldInfo = $$strTable{$tag = $fix} if $fix and not $specialStruct{$fix};
|
|
197
|
+
}
|
|
198
|
+
until (ref $fieldInfo eq 'HASH') {
|
|
199
|
+
# generate wildcard fields on the fly (ie. mwg-rs:Extensions)
|
|
200
|
+
unless ($$strTable{NAMESPACE}) {
|
|
201
|
+
my ($grp, $tg, $langCode);
|
|
202
|
+
($grp, $tg) = $tag =~ /^(.+):(.+)/ ? (lc $1, $2) : ('', $tag);
|
|
203
|
+
undef $grp if $grp eq 'XMP'; # (a group of 'XMP' is implied)
|
|
204
|
+
require Image::ExifTool::TagLookup;
|
|
205
|
+
my @matches = Image::ExifTool::TagLookup::FindTagInfo($tg);
|
|
206
|
+
# also look for lang-alt tags
|
|
207
|
+
unless (@matches) {
|
|
208
|
+
($tg, $langCode) = GetLangCode($tg);
|
|
209
|
+
@matches = Image::ExifTool::TagLookup::FindTagInfo($tg) if defined $langCode;
|
|
210
|
+
}
|
|
211
|
+
my ($tagInfo, $priority, $ti, $g1);
|
|
212
|
+
# find best matching tag
|
|
213
|
+
foreach $ti (@matches) {
|
|
214
|
+
my @grps = $exifTool->GetGroup($ti);
|
|
215
|
+
next unless $grps[0] eq 'XMP';
|
|
216
|
+
next if $grp and $grp ne lc $grps[1];
|
|
217
|
+
# must be lang-alt tag if we are writing an alternate language
|
|
218
|
+
next if defined $langCode and not ($$ti{Writable} and $$ti{Writable} eq 'lang-alt');
|
|
219
|
+
my $pri = $$ti{Priority} || 1;
|
|
220
|
+
$pri -= 10 if $$ti{Avoid};
|
|
221
|
+
next if defined $priority and $priority >= $pri;
|
|
222
|
+
$priority = $pri;
|
|
223
|
+
$tagInfo = $ti;
|
|
224
|
+
$g1 = $grps[1];
|
|
225
|
+
}
|
|
226
|
+
$tagInfo or $warn = "'$tag' is not a writable XMP tag", next Key;
|
|
227
|
+
GetPropertyPath($tagInfo); # make sure property path is generated for this tag
|
|
228
|
+
$tag = $$tagInfo{Name};
|
|
229
|
+
$tag = "$g1:$tag" if $grp;
|
|
230
|
+
$tag .= "-$langCode" if $langCode;
|
|
231
|
+
$fieldInfo = $$strTable{$tag};
|
|
232
|
+
# create new structure field if necessary
|
|
233
|
+
$fieldInfo or $fieldInfo = $$strTable{$tag} = {
|
|
234
|
+
%$tagInfo, # (also copies the necessary TagID and PropertyPath)
|
|
235
|
+
Namespace => $$tagInfo{Table}{NAMESPACE},
|
|
236
|
+
LangCode => $langCode,
|
|
237
|
+
};
|
|
238
|
+
# delete stuff we don't need (shouldn't cause harm, but better safe than sorry)
|
|
239
|
+
# - need to keep StructType and Table in case we need to call AddStructType later
|
|
240
|
+
delete $$fieldInfo{Description};
|
|
241
|
+
delete $$fieldInfo{Groups};
|
|
242
|
+
last; # write this dynamically-generated field
|
|
243
|
+
}
|
|
244
|
+
# generate lang-alt fields on the fly (ie. Iptc4xmpExt:AOTitle)
|
|
245
|
+
my ($tg, $langCode) = GetLangCode($tag);
|
|
246
|
+
if (defined $langCode) {
|
|
247
|
+
$fieldInfo = $$strTable{$tg} unless $specialStruct{$tg};
|
|
248
|
+
unless ($fieldInfo) {
|
|
249
|
+
my ($fix) = reverse sort grep /^$tg$/i, keys %$strTable;
|
|
250
|
+
$fieldInfo = $$strTable{$tg = $fix} if $fix and not $specialStruct{$fix};
|
|
251
|
+
}
|
|
252
|
+
if (ref $fieldInfo eq 'HASH' and $$fieldInfo{Writable} and
|
|
253
|
+
$$fieldInfo{Writable} eq 'lang-alt')
|
|
254
|
+
{
|
|
255
|
+
my $srcInfo = $fieldInfo;
|
|
256
|
+
$tag = $tg . '-' . $langCode if $langCode;
|
|
257
|
+
$fieldInfo = $$strTable{$tag};
|
|
258
|
+
# create new structure field if necessary
|
|
259
|
+
$fieldInfo or $fieldInfo = $$strTable{$tag} = {
|
|
260
|
+
%$srcInfo,
|
|
261
|
+
TagID => $tg,
|
|
262
|
+
LangCode => $langCode,
|
|
263
|
+
};
|
|
264
|
+
last; # write this lang-alt field
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
$warn = "'$tag' is not a field of $strName";
|
|
268
|
+
next Key;
|
|
269
|
+
}
|
|
270
|
+
if (ref $$struct{$key} eq 'HASH') {
|
|
271
|
+
$$fieldInfo{Struct} or $warn = "$tag is not a structure in $strName", next Key;
|
|
272
|
+
# recursively check this structure
|
|
273
|
+
($val, $err) = CheckStruct($exifTool, $$struct{$key}, $$fieldInfo{Struct});
|
|
274
|
+
$err and $warn = $err, next Key;
|
|
275
|
+
$copy{$tag} = $val;
|
|
276
|
+
} elsif (ref $$struct{$key} eq 'ARRAY') {
|
|
277
|
+
$$fieldInfo{List} or $warn = "$tag is not a list in $strName", next Key;
|
|
278
|
+
# check all items in the list
|
|
279
|
+
my ($item, @copy);
|
|
280
|
+
my $i = 0;
|
|
281
|
+
foreach $item (@{$$struct{$key}}) {
|
|
282
|
+
if (not ref $item) {
|
|
283
|
+
$item = '' unless defined $item; # use empty string for missing items
|
|
284
|
+
$$fieldInfo{Struct} and $warn = "$tag items are not valid structures", next Key;
|
|
285
|
+
$exifTool->Sanitize(\$item);
|
|
286
|
+
($copy[$i],$err) = $exifTool->ConvInv($item,$fieldInfo,$tag,$strName,$type);
|
|
287
|
+
$err and $warn = $err, next Key;
|
|
288
|
+
$err = CheckXMP($exifTool, $fieldInfo, \$copy[$i]);
|
|
289
|
+
$err and $warn = "$err in $strName $tag", next Key;
|
|
290
|
+
} elsif (ref $item eq 'HASH') {
|
|
291
|
+
$$fieldInfo{Struct} or $warn = "$tag is not a structure in $strName", next Key;
|
|
292
|
+
($copy[$i], $err) = CheckStruct($exifTool, $item, $$fieldInfo{Struct});
|
|
293
|
+
$err and $warn = $err, next Key;
|
|
294
|
+
} else {
|
|
295
|
+
$warn = "Invalid value for $tag in $strName";
|
|
296
|
+
next Key;
|
|
297
|
+
}
|
|
298
|
+
++$i;
|
|
299
|
+
}
|
|
300
|
+
$copy{$tag} = \@copy;
|
|
301
|
+
} elsif ($$fieldInfo{Struct}) {
|
|
302
|
+
$warn = "Improperly formed structure in $strName $tag";
|
|
303
|
+
} else {
|
|
304
|
+
$exifTool->Sanitize(\$$struct{$key});
|
|
305
|
+
($val,$err) = $exifTool->ConvInv($$struct{$key},$fieldInfo,$tag,$strName,$type);
|
|
306
|
+
$err and $warn = $err, next Key;
|
|
307
|
+
$err = CheckXMP($exifTool, $fieldInfo, \$val);
|
|
308
|
+
$err and $warn = "$err in $strName $tag", next Key;
|
|
309
|
+
# turn this into a list if necessary
|
|
310
|
+
$copy{$tag} = $$fieldInfo{List} ? [ $val ] : $val;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
if (%copy) {
|
|
314
|
+
$rtnVal = \%copy;
|
|
315
|
+
undef $err;
|
|
316
|
+
$$exifTool{CHECK_WARN} = $warn if $warn;
|
|
317
|
+
} else {
|
|
318
|
+
$err = $warn || 'Structure has no fields';
|
|
319
|
+
}
|
|
320
|
+
return wantarray ? ($rtnVal, $err) : $rtnVal;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
#------------------------------------------------------------------------------
|
|
324
|
+
# Delete matching structures from existing linearized XMP
|
|
325
|
+
# Inputs: 0) ExifTool ref, 1) capture hash ref, 2) structure path ref,
|
|
326
|
+
# 3) new value hash ref, 4) reference to change counter
|
|
327
|
+
# Returns: 0) delete flag, 1) list index of deleted structure if adding to list
|
|
328
|
+
# 2) flag set if structure existed
|
|
329
|
+
# Notes: updates path to new base path for structure to be added
|
|
330
|
+
sub DeleteStruct($$$$$)
|
|
331
|
+
{
|
|
332
|
+
my ($exifTool, $capture, $pathPt, $nvHash, $changed) = @_;
|
|
333
|
+
my ($deleted, $added, $existed, $p, $pp, $val, $delPath);
|
|
334
|
+
my (@structPaths, @matchingPaths, @delPaths);
|
|
335
|
+
|
|
336
|
+
# find all existing elements belonging to this structure
|
|
337
|
+
($pp = $$pathPt) =~ s/ \d+/ \\d\+/g;
|
|
338
|
+
@structPaths = sort grep(/^$pp(\/|$)/, keys %$capture);
|
|
339
|
+
$existed = 1 if @structPaths;
|
|
340
|
+
# delete only structures with matching fields if necessary
|
|
341
|
+
if ($$nvHash{DelValue}) {
|
|
342
|
+
if (@{$$nvHash{DelValue}}) {
|
|
343
|
+
my $strTable = $$nvHash{TagInfo}{Struct};
|
|
344
|
+
# all fields must match corresponding elements in the same
|
|
345
|
+
# root structure for it to be deleted
|
|
346
|
+
foreach $val (@{$$nvHash{DelValue}}) {
|
|
347
|
+
next unless ref $val eq 'HASH';
|
|
348
|
+
my (%cap, $p2, %match);
|
|
349
|
+
next unless AddNewStruct(undef, undef, \%cap, $$pathPt, $val, $strTable);
|
|
350
|
+
foreach $p (keys %cap) {
|
|
351
|
+
if ($p =~ / /) {
|
|
352
|
+
($p2 = $p) =~ s/ \d+/ \\d\+/g;
|
|
353
|
+
@matchingPaths = sort grep(/^$p2$/, @structPaths);
|
|
354
|
+
} else {
|
|
355
|
+
push @matchingPaths, $p;
|
|
356
|
+
}
|
|
357
|
+
foreach $p2 (@matchingPaths) {
|
|
358
|
+
$p2 =~ /^($pp)/ or next;
|
|
359
|
+
# language attribute must also match if it exists
|
|
360
|
+
my $attr = $cap{$p}[1];
|
|
361
|
+
if ($$attr{'xml:lang'}) {
|
|
362
|
+
my $a2 = $$capture{$p2}[1];
|
|
363
|
+
next unless $$a2{'xml:lang'} and $$a2{'xml:lang'} eq $$attr{'xml:lang'};
|
|
364
|
+
}
|
|
365
|
+
if ($$capture{$p2} and $$capture{$p2}[0] eq $cap{$p}[0]) {
|
|
366
|
+
# ($1 contains root path for this structure)
|
|
367
|
+
$match{$1} = ($match{$1} || 0) + 1;
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
my $num = scalar(keys %cap);
|
|
372
|
+
foreach $p (keys %match) {
|
|
373
|
+
# do nothing unless all fields matched the same structure
|
|
374
|
+
next unless $match{$p} == $num;
|
|
375
|
+
# delete all elements of this structure
|
|
376
|
+
foreach $p2 (@structPaths) {
|
|
377
|
+
push @delPaths, $p2 if $p2 =~ /^$p/;
|
|
378
|
+
}
|
|
379
|
+
# remember path of first deleted structure
|
|
380
|
+
$delPath = $p if not $delPath or $delPath gt $p;
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
} # (else don't delete anything)
|
|
384
|
+
} elsif (@structPaths) {
|
|
385
|
+
@delPaths = @structPaths; # delete all
|
|
386
|
+
$structPaths[0] =~ /^($pp)/;
|
|
387
|
+
$delPath = $1;
|
|
388
|
+
}
|
|
389
|
+
if (@delPaths) {
|
|
390
|
+
my $verbose = $exifTool->Options('Verbose');
|
|
391
|
+
@delPaths = sort @delPaths if $verbose > 1;
|
|
392
|
+
foreach $p (@delPaths) {
|
|
393
|
+
$exifTool->VerboseValue("- XMP-$p", $$capture{$p}[0]) if $verbose > 1;
|
|
394
|
+
delete $$capture{$p};
|
|
395
|
+
$deleted = 1;
|
|
396
|
+
++$$changed;
|
|
397
|
+
}
|
|
398
|
+
$delPath or warn("Internal error 1 in DeleteStruct\n"), return(undef,undef,$existed);
|
|
399
|
+
$$pathPt = $delPath; # return path of first element deleted
|
|
400
|
+
} elsif ($$nvHash{TagInfo}{List}) {
|
|
401
|
+
# NOTE: we don't yet properly handle lang-alt elements!!!!
|
|
402
|
+
if (@structPaths) {
|
|
403
|
+
$structPaths[-1] =~ /^($pp)/ or warn("Internal error 2 in DeleteStruct\n"), return(undef,undef,$existed);
|
|
404
|
+
my $path = $1;
|
|
405
|
+
# delete any improperly formatted xmp
|
|
406
|
+
if ($$capture{$path}) {
|
|
407
|
+
my $cap = $$capture{$path};
|
|
408
|
+
# an error unless this was an empty structure
|
|
409
|
+
$exifTool->Error("Improperly structured XMP ($path)",1) if ref $cap ne 'ARRAY' or $$cap[0];
|
|
410
|
+
delete $$capture{$path};
|
|
411
|
+
}
|
|
412
|
+
# (match last index to put in same lang-alt list for Bag of lang-alt items)
|
|
413
|
+
$path =~ m/.* (\d+)/g or warn("Internal error 3 in DeleteStruct\n"), return(undef,undef,$existed);
|
|
414
|
+
$added = $1;
|
|
415
|
+
# add after last item in list
|
|
416
|
+
my $len = length $added;
|
|
417
|
+
my $pos = pos($path) - $len;
|
|
418
|
+
my $nxt = substr($added, 1) + 1;
|
|
419
|
+
substr($path, $pos, $len) = length($nxt) . $nxt;
|
|
420
|
+
$$pathPt = $path;
|
|
421
|
+
} else {
|
|
422
|
+
$added = '10';
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
return($deleted, $added, $existed);
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
#------------------------------------------------------------------------------
|
|
429
|
+
# Add new element to XMP capture hash
|
|
430
|
+
# Inputs: 0) ExifTool ref, 1) TagInfo ref, 2) capture hash ref,
|
|
431
|
+
# 3) resource path, 4) value ref, 5) hash ref for last used index numbers
|
|
432
|
+
sub AddNewTag($$$$$$)
|
|
433
|
+
{
|
|
434
|
+
my ($exifTool, $tagInfo, $capture, $path, $valPtr, $langIdx) = @_;
|
|
435
|
+
my $val = EscapeXML($$valPtr);
|
|
436
|
+
my %attrs;
|
|
437
|
+
# support writing RDF "resource" values
|
|
438
|
+
if ($$tagInfo{Resource}) {
|
|
439
|
+
$attrs{'rdf:resource'} = $val;
|
|
440
|
+
$val = '';
|
|
441
|
+
}
|
|
442
|
+
if ($$tagInfo{Writable} and $$tagInfo{Writable} eq 'lang-alt') {
|
|
443
|
+
# write the lang-alt tag
|
|
444
|
+
my $langCode = $$tagInfo{LangCode};
|
|
445
|
+
# add indexed lang-alt list properties
|
|
446
|
+
my $i = $$langIdx{$path} || 0;
|
|
447
|
+
$$langIdx{$path} = $i + 1; # save next list index
|
|
448
|
+
if ($i) {
|
|
449
|
+
my $idx = length($i) . $i;
|
|
450
|
+
$path =~ s/(.*) \d+/$1 $idx/; # set list index
|
|
451
|
+
}
|
|
452
|
+
$attrs{'xml:lang'} = $langCode || 'x-default';
|
|
453
|
+
}
|
|
454
|
+
$$capture{$path} = [ $val, \%attrs ];
|
|
455
|
+
# print verbose message
|
|
456
|
+
if ($exifTool and $exifTool->Options('Verbose') > 1) {
|
|
457
|
+
$exifTool->VerboseValue("+ XMP-$path", $val);
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
#------------------------------------------------------------------------------
|
|
462
|
+
# Add new structure to capture hash for writing
|
|
463
|
+
# Inputs: 0) ExifTool object ref (or undef for no warnings),
|
|
464
|
+
# 1) tagInfo ref (or undef if no ExifTool), 2) capture hash ref,
|
|
465
|
+
# 3) base path, 4) struct ref, 5) struct hash ref
|
|
466
|
+
# Returns: number of tags changed
|
|
467
|
+
# Notes: Escapes values for XML
|
|
468
|
+
sub AddNewStruct($$$$$$)
|
|
469
|
+
{
|
|
470
|
+
my ($exifTool, $tagInfo, $capture, $basePath, $struct, $strTable) = @_;
|
|
471
|
+
my $verbose = $exifTool ? $exifTool->Options('Verbose') : 0;
|
|
472
|
+
my ($tag, %langIdx);
|
|
473
|
+
|
|
474
|
+
my $ns = $$strTable{NAMESPACE} || '';
|
|
475
|
+
my $changed = 0;
|
|
476
|
+
|
|
477
|
+
foreach $tag (sort keys %$struct) {
|
|
478
|
+
my $fieldInfo = $$strTable{$tag} or next;
|
|
479
|
+
my $val = $$struct{$tag};
|
|
480
|
+
my $propPath = $$fieldInfo{PropertyPath};
|
|
481
|
+
unless ($propPath) {
|
|
482
|
+
$propPath = ($$fieldInfo{Namespace} || $ns) . ':' . ($$fieldInfo{TagID} || $tag);
|
|
483
|
+
if ($$fieldInfo{List}) {
|
|
484
|
+
$propPath .= "/rdf:$$fieldInfo{List}/rdf:li 10";
|
|
485
|
+
}
|
|
486
|
+
if ($$fieldInfo{Writable} and $$fieldInfo{Writable} eq 'lang-alt') {
|
|
487
|
+
$propPath .= "/rdf:Alt/rdf:li 10";
|
|
488
|
+
}
|
|
489
|
+
$$fieldInfo{PropertyPath} = $propPath; # save for next time
|
|
490
|
+
}
|
|
491
|
+
my $path = $basePath . '/' . ConformPathToNamespace($exifTool, $propPath);
|
|
492
|
+
my $addedTag;
|
|
493
|
+
if (ref $val eq 'HASH') {
|
|
494
|
+
my $subStruct = $$fieldInfo{Struct} or next;
|
|
495
|
+
$changed += AddNewStruct($exifTool, $tagInfo, $capture, $path, $val, $subStruct);
|
|
496
|
+
} elsif (ref $val eq 'ARRAY') {
|
|
497
|
+
next unless $$fieldInfo{List};
|
|
498
|
+
my $i = 0;
|
|
499
|
+
my ($item, $p);
|
|
500
|
+
# loop through all list items (note: can't yet write multi-dimensional lists)
|
|
501
|
+
foreach $item (@{$val}) {
|
|
502
|
+
if ($i) {
|
|
503
|
+
# update first index in field property (may be list of lang-alt lists)
|
|
504
|
+
$p = ConformPathToNamespace($exifTool, $propPath);
|
|
505
|
+
my $idx = length($i) . $i;
|
|
506
|
+
$p =~ s/ \d+/ $idx/;
|
|
507
|
+
$p = "$basePath/$p";
|
|
508
|
+
} else {
|
|
509
|
+
$p = $path;
|
|
510
|
+
}
|
|
511
|
+
if (ref $item eq 'HASH') {
|
|
512
|
+
my $subStruct = $$fieldInfo{Struct} or next;
|
|
513
|
+
AddNewStruct($exifTool, $tagInfo, $capture, $p, $item, $subStruct) or next;
|
|
514
|
+
} elsif (length $item) { # don't write empty items in list
|
|
515
|
+
AddNewTag($exifTool, $fieldInfo, $capture, $p, \$item, \%langIdx);
|
|
516
|
+
$addedTag = 1;
|
|
517
|
+
}
|
|
518
|
+
++$changed;
|
|
519
|
+
++$i;
|
|
520
|
+
}
|
|
521
|
+
} else {
|
|
522
|
+
AddNewTag($exifTool, $fieldInfo, $capture, $path, \$val, \%langIdx);
|
|
523
|
+
$addedTag = 1;
|
|
524
|
+
++$changed;
|
|
525
|
+
}
|
|
526
|
+
# this is tricky, but we must add the rdf:type for contained structures
|
|
527
|
+
# in the case that a whole hierarchy was added at once by writing a
|
|
528
|
+
# flattened tag inside a variable-namespace structure
|
|
529
|
+
if ($addedTag and $$fieldInfo{StructType} and $$fieldInfo{Table}) {
|
|
530
|
+
AddStructType($exifTool, $$fieldInfo{Table}, $capture, $propPath, $basePath);
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
# add 'rdf:type' property if necessary
|
|
534
|
+
if ($$strTable{TYPE} and $changed) {
|
|
535
|
+
my $path = $basePath . '/' . ConformPathToNamespace($exifTool, "rdf:type");
|
|
536
|
+
unless ($$capture{$path}) {
|
|
537
|
+
$$capture{$path} = [ '', { 'rdf:resource' => $$strTable{TYPE} } ];
|
|
538
|
+
$exifTool->VerboseValue("+ XMP-$path", $$strTable{TYPE}) if $verbose > 1;
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
return $changed;
|
|
542
|
+
}
|
|
543
|
+
|
|
544
|
+
#------------------------------------------------------------------------------
|
|
545
|
+
# Convert structure field values for printing
|
|
546
|
+
# Inputs: 0) ExifTool ref, 1) tagInfo ref for structure tag, 2) value,
|
|
547
|
+
# 3) conversion type: PrintConv, ValueConv or Raw (Both not allowed)
|
|
548
|
+
# 4) tagID of parent structure (needed only if there was no flattened tag)
|
|
549
|
+
# Notes: Makes a copy of the hash so any applied escapes won't affect raw values
|
|
550
|
+
sub ConvertStruct($$$$;$)
|
|
551
|
+
{
|
|
552
|
+
my ($exifTool, $tagInfo, $value, $type, $parentID) = @_;
|
|
553
|
+
if (ref $value eq 'HASH') {
|
|
554
|
+
my (%struct, $key);
|
|
555
|
+
my $table = $$tagInfo{Table};
|
|
556
|
+
$parentID = $$tagInfo{TagID} unless $parentID;
|
|
557
|
+
foreach $key (keys %$value) {
|
|
558
|
+
my $tagID = $parentID . ucfirst($key);
|
|
559
|
+
my $flatInfo = $$table{$tagID};
|
|
560
|
+
unless ($flatInfo) {
|
|
561
|
+
# handle variable-namespace structures
|
|
562
|
+
if ($key =~ /^XMP-(.*?:)(.*)/) {
|
|
563
|
+
$tagID = $1 . $parentID . ucfirst($2);
|
|
564
|
+
$flatInfo = $$table{$tagID};
|
|
565
|
+
}
|
|
566
|
+
$flatInfo or $flatInfo = $tagInfo;
|
|
567
|
+
}
|
|
568
|
+
my $v = $$value{$key};
|
|
569
|
+
if (ref $v) {
|
|
570
|
+
$v = ConvertStruct($exifTool, $flatInfo, $v, $type, $tagID);
|
|
571
|
+
} else {
|
|
572
|
+
$v = $exifTool->GetValue($flatInfo, $type, $v);
|
|
573
|
+
}
|
|
574
|
+
$struct{$key} = $v if defined $v; # save the converted value
|
|
575
|
+
}
|
|
576
|
+
return \%struct;
|
|
577
|
+
} elsif (ref $value eq 'ARRAY') {
|
|
578
|
+
my (@list, $val);
|
|
579
|
+
foreach $val (@$value) {
|
|
580
|
+
my $v = ConvertStruct($exifTool, $tagInfo, $val, $type, $parentID);
|
|
581
|
+
push @list, $v if defined $v;
|
|
582
|
+
}
|
|
583
|
+
return \@list;
|
|
584
|
+
} else {
|
|
585
|
+
return $exifTool->GetValue($tagInfo, $type, $value);
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
#------------------------------------------------------------------------------
|
|
590
|
+
# Restore XMP structures in extracted information
|
|
591
|
+
# Inputs: 0) ExifTool object ref, 1) flag to keep original flattened tags
|
|
592
|
+
# Notes: also restores lists (including multi-dimensional)
|
|
593
|
+
sub RestoreStruct($;$)
|
|
594
|
+
{
|
|
595
|
+
local $_;
|
|
596
|
+
my ($exifTool, $keepFlat) = @_;
|
|
597
|
+
my ($key, %structs, %var, %lists, $si, %listKeys);
|
|
598
|
+
my $ex = $$exifTool{TAG_EXTRA};
|
|
599
|
+
my $valueHash = $$exifTool{VALUE};
|
|
600
|
+
my $tagExtra = $$exifTool{TAG_EXTRA};
|
|
601
|
+
foreach $key (keys %{$$exifTool{TAG_INFO}}) {
|
|
602
|
+
$$ex{$key} or next;
|
|
603
|
+
my ($err, $i);
|
|
604
|
+
my $structProps = $$ex{$key}{Struct} or next;
|
|
605
|
+
my $tagInfo = $$exifTool{TAG_INFO}{$key}; # tagInfo for flattened tag
|
|
606
|
+
my $table = $$tagInfo{Table};
|
|
607
|
+
my $prop = shift @$structProps;
|
|
608
|
+
my $tag = $$prop[0];
|
|
609
|
+
# get reference to structure tag (or normal list tag if not a structure)
|
|
610
|
+
my $strInfo = @$structProps ? $$table{$tag} : $tagInfo;
|
|
611
|
+
if ($strInfo) {
|
|
612
|
+
ref $strInfo eq 'HASH' or next; # (just to be safe)
|
|
613
|
+
if (@$structProps and not $$strInfo{Struct}) {
|
|
614
|
+
# this could happen for invalid XMP containing mixed lists
|
|
615
|
+
# (or for something like this -- what should we do here?:
|
|
616
|
+
# <meta:user-defined meta:name="License">test</meta:user-defined>)
|
|
617
|
+
$exifTool->Warn("$$strInfo{Name} is not a structure!");
|
|
618
|
+
next;
|
|
619
|
+
}
|
|
620
|
+
} else {
|
|
621
|
+
# create new entry in tag table for this structure
|
|
622
|
+
my $g1 = $$table{GROUPS}{0} || 'XMP';
|
|
623
|
+
my $name = $tag;
|
|
624
|
+
if ($tag =~ /(.+):(.+)/) {
|
|
625
|
+
my $ns;
|
|
626
|
+
($ns, $name) = ($1, $2);
|
|
627
|
+
$ns = $$xlatNamespace{$ns} if $$xlatNamespace{$ns};
|
|
628
|
+
$g1 .= "-$ns";
|
|
629
|
+
}
|
|
630
|
+
$strInfo = {
|
|
631
|
+
Name => ucfirst $name,
|
|
632
|
+
Groups => { 1 => $g1 },
|
|
633
|
+
Struct => 'Unknown',
|
|
634
|
+
};
|
|
635
|
+
# add Struct entry if this is a structure
|
|
636
|
+
if (@$structProps) {
|
|
637
|
+
# this is a structure
|
|
638
|
+
$$strInfo{Struct} = { STRUCT_NAME => 'XMP Unknown' } if @$structProps;
|
|
639
|
+
} elsif ($$tagInfo{LangCode}) {
|
|
640
|
+
# this is lang-alt list
|
|
641
|
+
$tag = $tag . '-' . $$tagInfo{LangCode};
|
|
642
|
+
$$strInfo{LangCode} = $$tagInfo{LangCode};
|
|
643
|
+
}
|
|
644
|
+
AddTagToTable($table, $tag, $strInfo);
|
|
645
|
+
}
|
|
646
|
+
# use strInfo ref for base key to avoid collisions
|
|
647
|
+
$tag = $strInfo;
|
|
648
|
+
my $struct = \%structs;
|
|
649
|
+
my $oldStruct = $structs{$strInfo};
|
|
650
|
+
# (fyi: 'lang-alt' Writable type will be valid even if tag is not pre-defined)
|
|
651
|
+
my $writable = $$tagInfo{Writable} || '';
|
|
652
|
+
# walk through the stored structure property information
|
|
653
|
+
# to rebuild this structure
|
|
654
|
+
for (;;) {
|
|
655
|
+
my $index = $$prop[1];
|
|
656
|
+
if ($index and not @$structProps) {
|
|
657
|
+
# ignore this list if it is a simple lang-alt tag
|
|
658
|
+
if ($writable eq 'lang-alt') {
|
|
659
|
+
pop @$prop; # remove lang-alt index
|
|
660
|
+
undef $index if @$prop < 2;
|
|
661
|
+
}
|
|
662
|
+
# add language code if necessary
|
|
663
|
+
if ($$tagInfo{LangCode} and not ref $tag) {
|
|
664
|
+
$tag = $tag . '-' . $$tagInfo{LangCode};
|
|
665
|
+
}
|
|
666
|
+
}
|
|
667
|
+
my $nextStruct = $$struct{$tag};
|
|
668
|
+
if (defined $index) {
|
|
669
|
+
# the field is a list
|
|
670
|
+
$index = substr $index, 1; # remove digit count
|
|
671
|
+
if ($nextStruct) {
|
|
672
|
+
ref $nextStruct eq 'ARRAY' or $err = 2, last;
|
|
673
|
+
$struct = $nextStruct;
|
|
674
|
+
} else {
|
|
675
|
+
$struct = $$struct{$tag} = [ ];
|
|
676
|
+
}
|
|
677
|
+
$nextStruct = $$struct[$index];
|
|
678
|
+
# descend into multi-dimensional lists
|
|
679
|
+
for ($i=2; $$prop[$i]; ++$i) {
|
|
680
|
+
if ($nextStruct) {
|
|
681
|
+
ref $nextStruct eq 'ARRAY' or last;
|
|
682
|
+
$struct = $nextStruct;
|
|
683
|
+
} else {
|
|
684
|
+
$lists{$struct} = $struct;
|
|
685
|
+
$struct = $$struct[$index] = [ ];
|
|
686
|
+
}
|
|
687
|
+
$nextStruct = $$struct[$index];
|
|
688
|
+
$index = substr $$prop[$i], 1;
|
|
689
|
+
}
|
|
690
|
+
if (ref $nextStruct eq 'HASH') {
|
|
691
|
+
$struct = $nextStruct; # continue building sub-structure
|
|
692
|
+
} elsif (@$structProps) {
|
|
693
|
+
$lists{$struct} = $struct;
|
|
694
|
+
$struct = $$struct[$index] = { };
|
|
695
|
+
} else {
|
|
696
|
+
$lists{$struct} = $struct;
|
|
697
|
+
$$struct[$index] = $$valueHash{$key};
|
|
698
|
+
last;
|
|
699
|
+
}
|
|
700
|
+
} else {
|
|
701
|
+
if ($nextStruct) {
|
|
702
|
+
ref $nextStruct eq 'HASH' or $err = 3, last;
|
|
703
|
+
$struct = $nextStruct;
|
|
704
|
+
} elsif (@$structProps) {
|
|
705
|
+
$struct = $$struct{$tag} = { };
|
|
706
|
+
} else {
|
|
707
|
+
$$struct{$tag} = $$valueHash{$key};
|
|
708
|
+
last;
|
|
709
|
+
}
|
|
710
|
+
}
|
|
711
|
+
$prop = shift @$structProps or last;
|
|
712
|
+
$tag = $$prop[0];
|
|
713
|
+
if ($tag =~ /(.+):(.+)/) {
|
|
714
|
+
# tag in variable-namespace tables will have a leading
|
|
715
|
+
# XMP namespace on the tag name. In this case, add
|
|
716
|
+
# the corresponding group1 name to the tag ID.
|
|
717
|
+
my ($ns, $name) = ($1, $2);
|
|
718
|
+
$ns = $$xlatNamespace{$ns} if $$xlatNamespace{$ns};
|
|
719
|
+
$tag = "XMP-$ns:" . ucfirst $name;
|
|
720
|
+
} else {
|
|
721
|
+
$tag = ucfirst $tag;
|
|
722
|
+
}
|
|
723
|
+
}
|
|
724
|
+
if ($err) {
|
|
725
|
+
# this may happen if we have a structural error in the XMP
|
|
726
|
+
# (like an improperly contained list for example)
|
|
727
|
+
$exifTool->Warn("Error $err placing $$tagInfo{Name} in structure", 1);
|
|
728
|
+
delete $structs{$strInfo} unless $oldStruct;
|
|
729
|
+
} elsif ($tagInfo eq $strInfo) {
|
|
730
|
+
# just a regular list tag
|
|
731
|
+
if ($oldStruct) {
|
|
732
|
+
# keep tag with lowest numbered key (well, not exactly, since
|
|
733
|
+
# "Tag (10)" is lt "Tag (2)", but at least "Tag" is lt
|
|
734
|
+
# everything else, and this is really what we care about)
|
|
735
|
+
my $k = $listKeys{$oldStruct};
|
|
736
|
+
$k lt $key and $exifTool->DeleteTag($key), next;
|
|
737
|
+
$exifTool->DeleteTag($k); # remove tag with greater copy number
|
|
738
|
+
}
|
|
739
|
+
# replace existing value with new list
|
|
740
|
+
$$valueHash{$key} = $structs{$strInfo};
|
|
741
|
+
$listKeys{$structs{$strInfo}} = $key; # save key for this list tag
|
|
742
|
+
} else {
|
|
743
|
+
# save strInfo ref and file order
|
|
744
|
+
if ($var{$strInfo}) {
|
|
745
|
+
# set file order to just before the first associated flattened tag
|
|
746
|
+
if ($var{$strInfo}[1] > $$exifTool{FILE_ORDER}{$key}) {
|
|
747
|
+
$var{$strInfo}[1] = $$exifTool{FILE_ORDER}{$key} - 0.5;
|
|
748
|
+
}
|
|
749
|
+
} else {
|
|
750
|
+
$var{$strInfo} = [ $strInfo, $$exifTool{FILE_ORDER}{$key} - 0.5 ];
|
|
751
|
+
}
|
|
752
|
+
# preserve original flattened tags if requested
|
|
753
|
+
if ($keepFlat) {
|
|
754
|
+
my $extra = $$tagExtra{$key} or next;
|
|
755
|
+
# restore list behaviour of this flattened tag
|
|
756
|
+
if ($$extra{NoList}) {
|
|
757
|
+
$$valueHash{$key} = $$extra{NoList};
|
|
758
|
+
delete $$extra{NoList};
|
|
759
|
+
} elsif ($$extra{NoListDel}) {
|
|
760
|
+
# delete this tag since its value was included another list
|
|
761
|
+
$exifTool->DeleteTag($key);
|
|
762
|
+
}
|
|
763
|
+
} else {
|
|
764
|
+
$exifTool->DeleteTag($key); # delete the flattened tag
|
|
765
|
+
}
|
|
766
|
+
}
|
|
767
|
+
}
|
|
768
|
+
# fill in undefined items in lists. In theory, undefined list items should
|
|
769
|
+
# be fine, but in practice the calling code may not check for this (and
|
|
770
|
+
# historically this wasn't necessary, so do this for backward compatibility)
|
|
771
|
+
foreach $si (keys %lists) {
|
|
772
|
+
defined $_ or $_ = '' foreach @{$lists{$si}};
|
|
773
|
+
}
|
|
774
|
+
# save new structure tags
|
|
775
|
+
foreach $si (keys %structs) {
|
|
776
|
+
next unless $var{$si}; # already handled regular lists
|
|
777
|
+
$key = $exifTool->FoundTag($var{$si}[0], '');
|
|
778
|
+
$$valueHash{$key} = $structs{$si};
|
|
779
|
+
$$exifTool{FILE_ORDER}{$key} = $var{$si}[1];
|
|
780
|
+
}
|
|
781
|
+
}
|
|
782
|
+
|
|
783
|
+
|
|
784
|
+
1; #end
|
|
785
|
+
|
|
786
|
+
__END__
|
|
787
|
+
|
|
788
|
+
=head1 NAME
|
|
789
|
+
|
|
790
|
+
Image::ExifTool::XMPStruct.pl - XMP structure support
|
|
791
|
+
|
|
792
|
+
=head1 SYNOPSIS
|
|
793
|
+
|
|
794
|
+
This module is loaded automatically by Image::ExifTool when required.
|
|
795
|
+
|
|
796
|
+
=head1 DESCRIPTION
|
|
797
|
+
|
|
798
|
+
This file contains routines to provide read/write support of structured XMP
|
|
799
|
+
information.
|
|
800
|
+
|
|
801
|
+
=head1 AUTHOR
|
|
802
|
+
|
|
803
|
+
Copyright 2003-2013, Phil Harvey (phil at owl.phy.queensu.ca)
|
|
804
|
+
|
|
805
|
+
This library is free software; you can redistribute it and/or modify it
|
|
806
|
+
under the same terms as Perl itself.
|
|
807
|
+
|
|
808
|
+
=head1 SEE ALSO
|
|
809
|
+
|
|
810
|
+
L<Image::ExifTool::TagNames/XMP Tags>,
|
|
811
|
+
L<Image::ExifTool(3pm)|Image::ExifTool>
|
|
812
|
+
|
|
813
|
+
=cut
|