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 olymp1mn = 281; //!< Olympus 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") }
};
//! NoYes, multiple tags
extern const TagDetails olympusNoYes[] = {
{ 0, N_("No") },
{ 1, N_("Yes") }
};
//! Quality, tag 0x0201
extern const TagDetails olympusQuality[] = {
{ 1, N_("Standard Quality (SQ)") },
@ -403,6 +409,35 @@ namespace Exiv2 {
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*)
{
if (value.count() != 3 || value.typeId() != unsignedLong) {

@ -59,6 +59,8 @@ namespace Exiv2 {
public:
//! Return read-only list of built-in Olympus tags
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
//@{
@ -73,6 +75,7 @@ namespace Exiv2 {
private:
//! Tag information
static const TagInfo tagInfo_[];
static const TagInfo tagInfoCs_[];
}; // class OlympusMakerNote

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

@ -65,7 +65,8 @@ namespace Exiv2 {
};
// 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[] = {
{ 1, "Image" },
{ 2, "Thumbnail" },
@ -77,7 +78,7 @@ namespace Exiv2 {
{ 8, "SubImage2" },
{ 9, "SubImage3" },
{ 10, "SubImage4" },
// { 257, "Olympus" },
// 257 not needed (olympmn)
{ 258, "Fujifilm" },
{ 259, "Canon" },
{ 260, "CanonCs" },
@ -91,7 +92,7 @@ namespace Exiv2 {
{ 268, "Sigma" },
// 269 not needed (sonymn)
{ 270, "Sony" },
{ 271, "Sony" },
{ 271, "Sony" }, // Todo: Need second Sony group!
{ 272, "Minolta" },
{ 273, "MinoltaCsOld" },
{ 274, "MinoltaCsNew" },
@ -102,7 +103,8 @@ namespace Exiv2 {
{ 279, "Pentax" },
{ 280, "NikonPreview" },
{ 281, "Olympus" },
{ 282, "Olympus" }
{ 282, "Olympus2" },
{ 283, "OlympusCs" }
};
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::all, Group::olymp1mn, Group::olymp1mn, 0x927c, Group::exif, newTiffEntry },
// Olympus makernote - some Olympus cameras use Minolta structures
// Todo: Adding such tags will not work (maybe result in a Minolta makernote), need separate groups
// Olympus2 makernote
{ 0x0001, Group::olymp2mn, Group::minocso, 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::all, Group::olymp2mn, Group::olymp2mn, 0x927c, Group::exif, newTiffEntry },

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

Loading…
Cancel
Save