diff --git a/src/makernote_int.hpp b/src/makernote_int.hpp index 1f8c02d3..3f4e9f1e 100644 --- a/src/makernote_int.hpp +++ b/src/makernote_int.hpp @@ -72,6 +72,10 @@ namespace Exiv2 { const uint16_t olymp2mn = 282; //!< Olympus II makernote const uint16_t olympcs = 283; //!< Olympus camera settings const uint16_t olympeq = 284; //!< Olympus equipment tags + const uint16_t olymprd = 285; //!< Olympus raw development tags + const uint16_t olymprd2 = 286; //!< Olympus raw development 2 tags + const uint16_t olympip = 287; //!< Olympus image processing tags + const uint16_t olympfi = 288; //!< Olympus focus info tags } // ***************************************************************************** diff --git a/src/olympusmn.cpp b/src/olympusmn.cpp index c45d0b51..6d10da89 100644 --- a/src/olympusmn.cpp +++ b/src/olympusmn.cpp @@ -667,6 +667,62 @@ namespace Exiv2 { return tagInfoEq_; } + const TagInfo OlympusMakerNote::tagInfoRd_[] = { + TagInfo(0x0000, "RawDevVersion", N_("Raw Development Version"), N_("Raw development version"), olympusRdIfdId, makerTags, undefined, printExifVersion), + + // Todo: Add Olympus raw development tags + + // End of list marker + TagInfo(0xffff, "(UnknownOlympusRdTag)", "(UnknownOlympusRdTag)", N_("Unknown OlympusRd tag"), olympusRdIfdId, makerTags, invalidTypeId, printValue) + }; + + const TagInfo* OlympusMakerNote::tagListRd() + { + return tagInfoRd_; + } + + const TagInfo OlympusMakerNote::tagInfoRd2_[] = { + TagInfo(0x0000, "RawDev2Version", N_("Raw Development 2 Version"), N_("Raw development 2 version"), olympusRd2IfdId, makerTags, undefined, printExifVersion), + + // Todo: Add Olympus raw development 2 tags + + // End of list marker + TagInfo(0xffff, "(UnknownOlympusRd2Tag)", "(UnknownOlympusRd2Tag)", N_("Unknown OlympusRd2 tag"), olympusRd2IfdId, makerTags, invalidTypeId, printValue) + }; + + const TagInfo* OlympusMakerNote::tagListRd2() + { + return tagInfoRd2_; + } + + const TagInfo OlympusMakerNote::tagInfoIp_[] = { + TagInfo(0x0000, "ImageProcessingVersion", N_("Image Processing Version"), N_("Image processing version"), olympusIpIfdId, makerTags, undefined, printExifVersion), + + // Todo: Add Olympus image processing tags + + // End of list marker + TagInfo(0xffff, "(UnknownOlympusIpTag)", "(UnknownOlympusIpTag)", N_("Unknown OlympusIp tag"), olympusIpIfdId, makerTags, invalidTypeId, printValue) + }; + + const TagInfo* OlympusMakerNote::tagListIp() + { + return tagInfoIp_; + } + + const TagInfo OlympusMakerNote::tagInfoFi_[] = { + TagInfo(0x0000, "FocusInfoVersion", N_("Focus Info Version"), N_("Focus info version"), olympusFiIfdId, makerTags, undefined, printExifVersion), + + // Todo: Add Olympus focus info tags + + // End of list marker + TagInfo(0xffff, "(UnknownOlympusFiTag)", "(UnknownOlympusFiTag)", N_("Unknown OlympusFi tag"), olympusFiIfdId, makerTags, invalidTypeId, printValue) + }; + + const TagInfo* OlympusMakerNote::tagListFi() + { + return tagInfoFi_; + } + // Gradation std::ostream& OlympusMakerNote::print0x050f(std::ostream& os, const Value& value, const ExifData*) { diff --git a/src/olympusmn.hpp b/src/olympusmn.hpp index f72c2f69..989384f1 100644 --- a/src/olympusmn.hpp +++ b/src/olympusmn.hpp @@ -63,6 +63,14 @@ namespace Exiv2 { static const TagInfo* tagListCs(); //! Return read-only list of built-in Olympus Equipment tags static const TagInfo* tagListEq(); + //! Return read-only list of built-in Olympus Raw Development tags + static const TagInfo* tagListRd(); + //! Return read-only list of built-in Olympus Raw Development 2 tags + static const TagInfo* tagListRd2(); + //! Return read-only list of built-in Olympus Image Processing tags + static const TagInfo* tagListIp(); + //! Return read-only list of built-in Olympus Focus Info tags + static const TagInfo* tagListFi(); //! @name Print functions for Olympus %MakerNote tags //@{ @@ -83,6 +91,10 @@ namespace Exiv2 { static const TagInfo tagInfo_[]; static const TagInfo tagInfoCs_[]; static const TagInfo tagInfoEq_[]; + static const TagInfo tagInfoRd_[]; + static const TagInfo tagInfoRd2_[]; + static const TagInfo tagInfoIp_[]; + static const TagInfo tagInfoFi_[]; }; // class OlympusMakerNote diff --git a/src/tags.cpp b/src/tags.cpp index 027788b4..95932ea6 100644 --- a/src/tags.cpp +++ b/src/tags.cpp @@ -117,6 +117,10 @@ namespace Exiv2 { { olympus2IfdId, "Makernote", "Olympus2", OlympusMakerNote::tagList }, { olympusCsIfdId, "Makernote", "OlympusCs", OlympusMakerNote::tagListCs }, { olympusEqIfdId, "Makernote", "OlympusEq", OlympusMakerNote::tagListEq }, + { olympusRdIfdId, "Makernote", "OlympusRd", OlympusMakerNote::tagListRd }, + { olympusRd2IfdId, "Makernote", "OlympusRd2", OlympusMakerNote::tagListRd2 }, + { olympusIpIfdId, "Makernote", "OlympusIp", OlympusMakerNote::tagListIp }, + { olympusFiIfdId, "Makernote", "OlympusFi", OlympusMakerNote::tagListFi }, { panasonicIfdId, "Makernote", "Panasonic", PanasonicMakerNote::tagList }, { pentaxIfdId, "Makernote", "Pentax", PentaxMakerNote::tagList }, { sigmaIfdId, "Makernote", "Sigma", SigmaMakerNote::tagList }, diff --git a/src/tiffcomposite.cpp b/src/tiffcomposite.cpp index 936287b3..cbc41e54 100644 --- a/src/tiffcomposite.cpp +++ b/src/tiffcomposite.cpp @@ -106,7 +106,11 @@ namespace Exiv2 { { 281, "Olympus" }, { 282, "Olympus2" }, { 283, "OlympusCs" }, - { 284, "OlympusEq" } + { 284, "OlympusEq" }, + { 285, "OlympusRd" }, + { 286, "OlympusRd2" }, + { 287, "OlympusIp" }, + { 288, "OlympusFi" } }; bool TiffGroupInfo::operator==(const uint16_t& group) const diff --git a/src/tiffimage.cpp b/src/tiffimage.cpp index 0e05836d..bb48faa0 100644 --- a/src/tiffimage.cpp +++ b/src/tiffimage.cpp @@ -376,10 +376,14 @@ namespace Exiv2 { { 0x0003, Group::olymp2mn, Group::minocsn, 0x927c, Group::exif, newTiffArrayEntry }, { 0x2010, Group::olymp2mn, Group::olympeq, 0x927c, Group::exif, newTiffSubIfd }, { 0x2020, Group::olymp2mn, Group::olympcs, 0x927c, Group::exif, newTiffSubIfd }, + { 0x2030, Group::olymp2mn, Group::olymprd, 0x927c, Group::exif, newTiffSubIfd }, + { 0x2031, Group::olymp2mn, Group::olymprd2, 0x927c, Group::exif, newTiffSubIfd }, + { 0x2040, Group::olymp2mn, Group::olympip, 0x927c, Group::exif, newTiffSubIfd }, + { 0x2050, Group::olymp2mn, Group::olympfi, 0x927c, Group::exif, newTiffSubIfd }, { Tag::next, Group::olymp2mn, Group::ignr, 0x927c, Group::exif, newTiffDirectory }, { Tag::all, Group::olymp2mn, Group::olymp2mn, 0x927c, Group::exif, newTiffEntry }, - // Olympus2 Equipment subdir + // Olympus2 equipment subdir { Tag::all, Group::olympeq, Group::olympeq, 0x2010, Group::olymp2mn, newTiffEntry }, // Olympus2 camera settings subdir @@ -387,6 +391,18 @@ namespace Exiv2 { { 0x0102, Group::olympcs, Group::olympcs, 0x2020, Group::olymp2mn, newTiffImageSize<0x0101, Group::olympcs> }, { Tag::all, Group::olympcs, Group::olympcs, 0x2020, Group::olymp2mn, newTiffEntry }, + // Olympus2 raw development subdir + { Tag::all, Group::olymprd, Group::olymprd, 0x2030, Group::olymp2mn, newTiffEntry }, + + // Olympus2 raw development 2 subdir + { Tag::all, Group::olymprd2, Group::olymprd2, 0x2031, Group::olymp2mn, newTiffEntry }, + + // Olympus2 image processing subdir + { Tag::all, Group::olympip, Group::olympip, 0x2040, Group::olymp2mn, newTiffEntry }, + + // Olympus2 focus info subdir + { Tag::all, Group::olympfi, Group::olympfi, 0x2050, Group::olymp2mn, newTiffEntry }, + // Fujifilm makernote { Tag::next, Group::fujimn, Group::ignr, 0x927c, Group::exif, newTiffDirectory }, { Tag::all, Group::fujimn, Group::fujimn, 0x927c, Group::exif, newTiffEntry }, diff --git a/src/types.hpp b/src/types.hpp index b5e60566..984942d9 100644 --- a/src/types.hpp +++ b/src/types.hpp @@ -145,6 +145,7 @@ namespace Exiv2 { minoltaCsOldIfdId, minoltaCsNewIfdId, nikon1IfdId, nikon2IfdId, nikon3IfdId, nikonPvIfdId, olympusIfdId, olympus2IfdId, olympusCsIfdId, olympusEqIfdId, + olympusRdIfdId, olympusRd2IfdId, olympusIpIfdId, olympusFiIfdId, panasonicIfdId, pentaxIfdId, sigmaIfdId, sonyIfdId, lastIfdId };