Added subIFD olympcs to Olympus2 makernote and ifdIds, tags. Still incomplete.

v0.27.3
Andreas Huggel 17 years ago
parent 695aa1750a
commit 7216dae83d

@ -70,6 +70,7 @@ namespace Exiv2 {
const uint16_t nikonpv = 280; //!< Nikon preview sub-IFD const uint16_t nikonpv = 280; //!< Nikon preview sub-IFD
const uint16_t olymp1mn = 281; //!< Olympus makernote const uint16_t olymp1mn = 281; //!< Olympus makernote
const uint16_t olymp2mn = 282; //!< Olympus II makernote const uint16_t olymp2mn = 282; //!< Olympus II makernote
const uint16_t olympcs = 283; //!< Olympus camera settings
} }
// ***************************************************************************** // *****************************************************************************

@ -57,6 +57,12 @@ namespace Exiv2 {
{ 1, N_("On") } { 1, N_("On") }
}; };
//! NoYes, multiple tags
extern const TagDetails olympusNoYes[] = {
{ 0, N_("No") },
{ 1, N_("Yes") }
};
//! Quality, tag 0x0201 //! Quality, tag 0x0201
extern const TagDetails olympusQuality[] = { extern const TagDetails olympusQuality[] = {
{ 1, N_("Standard Quality (SQ)") }, { 1, N_("Standard Quality (SQ)") },
@ -403,6 +409,35 @@ namespace Exiv2 {
return tagInfo_; return tagInfo_;
} }
//! ExposureMode, tag 0x0200
extern const TagDetails olympusExposureMode[] = {
{ 1, N_("Manual") },
{ 2, N_("Program") },
{ 3, N_("Aperture-priority AE") },
{ 4, N_("Shutter speed priority AE") },
{ 5, N_("Program-shift") }
};
const TagInfo OlympusMakerNote::tagInfoCs_[] = {
TagInfo(0x0000, "CameraSettingsVersion", N_("Camera Settings Version"), N_("Camera settings version"), olympusCsIfdId, makerTags, undefined, printValue),
TagInfo(0x0100, "PreviewImageValid", N_("PreviewImage Valid"), N_("Preview image valid"), olympusCsIfdId, makerTags, unsignedLong, EXV_PRINT_TAG(olympusNoYes)),
TagInfo(0x0101, "PreviewImageStart", N_("PreviewImage Start"), N_("Preview image start"), olympusCsIfdId, makerTags, unsignedLong, printValue),
TagInfo(0x0102, "PreviewImageLength", N_("PreviewImage Length"), N_("Preview image length"), olympusCsIfdId, makerTags, unsignedLong, printValue),
TagInfo(0x0200, "ExposureMode", N_("Exposure Mode"), N_("Exposure mode"), olympusCsIfdId, makerTags, unsignedShort, EXV_PRINT_TAG(olympusExposureMode)),
TagInfo(0x0201, "AELock", N_("AE Lock"), N_("Auto exposure lock"), olympusCsIfdId, makerTags, unsignedShort, EXV_PRINT_TAG(olympusOffOn)),
// Todo: add remaining tags...
// End of list marker
TagInfo(0xffff, "(UnknownOlympusCsTag)", "(UnknownOlympusCsTag)",
N_("Unknown OlympusCs tag"),
olympusCsIfdId, makerTags, invalidTypeId, printValue)
};
const TagInfo* OlympusMakerNote::tagListCs()
{
return tagInfoCs_;
}
std::ostream& OlympusMakerNote::print0x0200(std::ostream& os, const Value& value, const ExifData*) std::ostream& OlympusMakerNote::print0x0200(std::ostream& os, const Value& value, const ExifData*)
{ {
if (value.count() != 3 || value.typeId() != unsignedLong) { if (value.count() != 3 || value.typeId() != unsignedLong) {

@ -59,6 +59,8 @@ namespace Exiv2 {
public: public:
//! Return read-only list of built-in Olympus tags //! Return read-only list of built-in Olympus tags
static const TagInfo* tagList(); static const TagInfo* tagList();
//! Return read-only list of built-in Olympus Camera Settings tags
static const TagInfo* tagListCs();
//! @name Print functions for Olympus %MakerNote tags //! @name Print functions for Olympus %MakerNote tags
//@{ //@{
@ -73,6 +75,7 @@ namespace Exiv2 {
private: private:
//! Tag information //! Tag information
static const TagInfo tagInfo_[]; static const TagInfo tagInfo_[];
static const TagInfo tagInfoCs_[];
}; // class OlympusMakerNote }; // class OlympusMakerNote

@ -110,6 +110,8 @@ namespace Exiv2 {
{ nikon3IfdId, "Makernote", "Nikon3", Nikon3MakerNote::tagList }, { nikon3IfdId, "Makernote", "Nikon3", Nikon3MakerNote::tagList },
{ nikonPvIfdId, "Makernote", "NikonPreview", ExifTags::ifdTagList }, { nikonPvIfdId, "Makernote", "NikonPreview", ExifTags::ifdTagList },
{ olympusIfdId, "Makernote", "Olympus", OlympusMakerNote::tagList }, { olympusIfdId, "Makernote", "Olympus", OlympusMakerNote::tagList },
{ olympus2IfdId, "Makernote", "Olympus2", OlympusMakerNote::tagList },
{ olympusCsIfdId, "Makernote", "OlympusCs", OlympusMakerNote::tagListCs },
{ panasonicIfdId, "Makernote", "Panasonic", PanasonicMakerNote::tagList }, { panasonicIfdId, "Makernote", "Panasonic", PanasonicMakerNote::tagList },
{ pentaxIfdId, "Makernote", "Pentax", PentaxMakerNote::tagList }, { pentaxIfdId, "Makernote", "Pentax", PentaxMakerNote::tagList },
{ sigmaIfdId, "Makernote", "Sigma", SigmaMakerNote::tagList }, { sigmaIfdId, "Makernote", "Sigma", SigmaMakerNote::tagList },

@ -65,7 +65,8 @@ namespace Exiv2 {
}; };
// Todo: This mapping table probably belongs somewhere else - move it // Todo: This mapping table probably belongs somewhere else - move it
//! List of groups and their names // Note: Names must be unique!
//! List of groups and their names.
extern const TiffGroupInfo tiffGroupInfo[] = { extern const TiffGroupInfo tiffGroupInfo[] = {
{ 1, "Image" }, { 1, "Image" },
{ 2, "Thumbnail" }, { 2, "Thumbnail" },
@ -77,7 +78,7 @@ namespace Exiv2 {
{ 8, "SubImage2" }, { 8, "SubImage2" },
{ 9, "SubImage3" }, { 9, "SubImage3" },
{ 10, "SubImage4" }, { 10, "SubImage4" },
// { 257, "Olympus" }, // 257 not needed (olympmn)
{ 258, "Fujifilm" }, { 258, "Fujifilm" },
{ 259, "Canon" }, { 259, "Canon" },
{ 260, "CanonCs" }, { 260, "CanonCs" },
@ -91,7 +92,7 @@ namespace Exiv2 {
{ 268, "Sigma" }, { 268, "Sigma" },
// 269 not needed (sonymn) // 269 not needed (sonymn)
{ 270, "Sony" }, { 270, "Sony" },
{ 271, "Sony" }, { 271, "Sony" }, // Todo: Need second Sony group!
{ 272, "Minolta" }, { 272, "Minolta" },
{ 273, "MinoltaCsOld" }, { 273, "MinoltaCsOld" },
{ 274, "MinoltaCsNew" }, { 274, "MinoltaCsNew" },
@ -102,7 +103,8 @@ namespace Exiv2 {
{ 279, "Pentax" }, { 279, "Pentax" },
{ 280, "NikonPreview" }, { 280, "NikonPreview" },
{ 281, "Olympus" }, { 281, "Olympus" },
{ 282, "Olympus" } { 282, "Olympus2" },
{ 283, "OlympusCs" }
}; };
bool TiffGroupInfo::operator==(const uint16_t& group) const bool TiffGroupInfo::operator==(const uint16_t& group) const

@ -371,10 +371,10 @@ namespace Exiv2 {
{ Tag::next, Group::olymp1mn, Group::ignr, 0x927c, Group::exif, newTiffDirectory }, { Tag::next, Group::olymp1mn, Group::ignr, 0x927c, Group::exif, newTiffDirectory },
{ Tag::all, Group::olymp1mn, Group::olymp1mn, 0x927c, Group::exif, newTiffEntry }, { Tag::all, Group::olymp1mn, Group::olymp1mn, 0x927c, Group::exif, newTiffEntry },
// Olympus makernote - some Olympus cameras use Minolta structures // Olympus2 makernote
// Todo: Adding such tags will not work (maybe result in a Minolta makernote), need separate groups
{ 0x0001, Group::olymp2mn, Group::minocso, 0x927c, Group::exif, newTiffArrayEntry<ttUnsignedLong, false> }, { 0x0001, Group::olymp2mn, Group::minocso, 0x927c, Group::exif, newTiffArrayEntry<ttUnsignedLong, false> },
{ 0x0003, Group::olymp2mn, Group::minocsn, 0x927c, Group::exif, newTiffArrayEntry<ttUnsignedLong, false> }, { 0x0003, Group::olymp2mn, Group::minocsn, 0x927c, Group::exif, newTiffArrayEntry<ttUnsignedLong, false> },
{ 0x2020, Group::olymp2mn, Group::olympcs, 0x927c, Group::exif, newTiffSubIfd },
{ Tag::next, Group::olymp2mn, Group::ignr, 0x927c, Group::exif, newTiffDirectory }, { Tag::next, Group::olymp2mn, Group::ignr, 0x927c, Group::exif, newTiffDirectory },
{ Tag::all, Group::olymp2mn, Group::olymp2mn, 0x927c, Group::exif, newTiffEntry }, { Tag::all, Group::olymp2mn, Group::olymp2mn, 0x927c, Group::exif, newTiffEntry },

@ -142,7 +142,8 @@ namespace Exiv2 {
minoltaIfdId, minoltaCs5DIfdId, minoltaCs7DIfdId, minoltaIfdId, minoltaCs5DIfdId, minoltaCs7DIfdId,
minoltaCsOldIfdId, minoltaCsNewIfdId, minoltaCsOldIfdId, minoltaCsNewIfdId,
nikon1IfdId, nikon2IfdId, nikon3IfdId, nikonPvIfdId, nikon1IfdId, nikon2IfdId, nikon3IfdId, nikonPvIfdId,
olympusIfdId, panasonicIfdId, pentaxIfdId, sigmaIfdId, sonyIfdId, olympusIfdId, olympus2IfdId, olympusCsIfdId,
panasonicIfdId, pentaxIfdId, sigmaIfdId, sonyIfdId,
lastIfdId }; lastIfdId };
//! Container for binary data //! Container for binary data

Loading…
Cancel
Save