Separated the MNOTE_SANYO_TAG_SELFTIMER 2 sec. case from the other
authorDan Fandrich <dan@coneharvesters.com>
Sat, 31 Jan 2009 23:36:18 +0000 (15:36 -0800)
committerDan Fandrich <dan@coneharvesters.com>
Sat, 31 Jan 2009 23:36:18 +0000 (15:36 -0800)
On/Off cases
Renamed MNOTE_NIKON_TAG_PREVIEWIMAGE_IFD_POINTERS to show that it's
an IFD. The case of IFDs in MakerNotes needs to be handled better
because right now, those MakerNote IFD tags are corrupted since
the sub-IFDs aren't being read and written.

ChangeLog
libexif/olympus/mnote-olympus-entry.c
libexif/olympus/mnote-olympus-tag.c
libexif/olympus/mnote-olympus-tag.h

index 227e118..44f9fb2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,6 +6,12 @@
        * Fixed some signed vs unsigned formatting errors
        * Format the EXIF_TAG_GPS_TIME_STAMP & EXIF_TAG_GPS_ALTITUDE_REF tags
        * Improved the wrong data type fixup
+       * Separated the MNOTE_SANYO_TAG_SELFTIMER 2 sec. case from the other
+         On/Off cases
+       * Renamed MNOTE_NIKON_TAG_PREVIEWIMAGE_IFD_POINTERS to show that it's 
+         an IFD. The case of IFDs in MakerNotes needs to be handled better
+         because right now, those MakerNote IFD tags are corrupted since
+         the sub-IFDs aren't being read and written.
 
 2009-01-22  Dan Fandrich <dan@coneharvesters.com>
 
index ca9706b..a743ba1 100644 (file)
@@ -516,7 +516,6 @@ mnote_olympus_entry_get_value (MnoteOlympusEntry *entry, char *v, unsigned int m
        case MNOTE_SANYO_TAG_WIDERANGE:
        case MNOTE_SANYO_TAG_COLORADJUSTMENTMODE:
        case MNOTE_SANYO_TAG_QUICKSHOT:
-       case MNOTE_SANYO_TAG_SELFTIMER:
        case MNOTE_SANYO_TAG_VOICEMEMO:
        case MNOTE_SANYO_TAG_FLICKERREDUCE:
        case MNOTE_SANYO_TAG_OPTICALZOOM:
@@ -533,7 +532,28 @@ mnote_olympus_entry_get_value (MnoteOlympusEntry *entry, char *v, unsigned int m
                        strncpy (v, _("On"), maxlen);
                        break;
                default:
-                       strncpy (v, _("Unknown"), maxlen);
+                       sprintf (buf, _("Unknown %hu"), vs);
+                       strncat (v, buf, maxlen - strlen (v));
+                       break;
+               }
+               break;
+       case MNOTE_SANYO_TAG_SELFTIMER:
+               CF (entry->format, EXIF_FORMAT_SHORT, v, maxlen);
+               CC (entry->components, 1, v, maxlen);
+               vs = exif_get_short (entry->data, entry->order);
+               switch (vs) {
+               case 0:
+                       strncpy (v, _("Off"), maxlen);
+                       break;
+               case 1:
+                       strncpy (v, _("On"), maxlen);
+                       break;
+               case 2:
+                       strncpy (v, _("2 sec."), maxlen);
+                       break;
+               default:
+                       sprintf (buf, _("Unknown %hu"), vs);
+                       strncat (v, buf, maxlen - strlen (v));
                        break;
                }
                break;
index bc9c328..4dea065 100644 (file)
@@ -47,7 +47,7 @@ static const struct {
        {MNOTE_NIKON_TAG_WHITEBALANCERB,  "WHITEBALANCERB", N_("White Balance RB"), ""},
        {MNOTE_NIKON_TAG_UNKNOWN_0X000D,  NULL, NULL, NULL},
        {MNOTE_NIKON_TAG_ISOSELECTION,    "ISOSELECTION", N_("ISO Selection"), ""},
-       {MNOTE_NIKON_TAG_PREVIEWIMAGE,    "PREVIEWIMAGE", N_("Preview Image"), ""},
+       {MNOTE_NIKON_TAG_PREVIEWIMAGE_IFD_POINTER, "PREVIEWIMAGE", N_("Preview Image IFD"), ""},
        {MNOTE_NIKON_TAG_EXPOSUREDIFF,    "EXPOSUREDIFF", N_("Exposurediff ?"), ""},
        {MNOTE_NIKON_TAG_FLASHEXPCOMPENSATION, "FLASHEXPCOMPENSATION", N_("Flash Exposure Compensation"), ""},
        {MNOTE_NIKON_TAG_ISO2,            "ISO", N_("ISO Setting"), ""},
index 02f23eb..228db3c 100644 (file)
@@ -42,7 +42,7 @@ enum _MnoteOlympusTag {
        MNOTE_NIKON_TAG_UNKNOWN_0X000D          = 0x000d,
        MNOTE_NIKON_TAG_EXPOSUREDIFF            = 0x000e,
        MNOTE_NIKON_TAG_ISOSELECTION            = 0x000f,
-       MNOTE_NIKON_TAG_PREVIEWIMAGE            = 0x0011,
+       MNOTE_NIKON_TAG_PREVIEWIMAGE_IFD_POINTER= 0x0011,
        MNOTE_NIKON_TAG_FLASHEXPCOMPENSATION    = 0x0012,
        MNOTE_NIKON_TAG_ISO2                    = 0x0013,
        MNOTE_NIKON_TAG_IMAGEBOUNDARY           = 0x0016,
@@ -163,6 +163,11 @@ enum _MnoteOlympusTag {
        MNOTE_OLYMPUS_TAG_LIGHTVALUECENTER      = 0x103d,
        MNOTE_OLYMPUS_TAG_LIGHTVALUEPERIPHERY   = 0x103e,
 
+       /* Epson */
+       MNOTE_EPSON_TAG_IMAGE_WIDTH             = 0x020b,
+       MNOTE_EPSON_TAG_IMAGE_HEIGHT            = 0x020c,
+       MNOTE_EPSON_TAG_SOFTWARE                = 0x020d,
+
        /* Sanyo */
        MNOTE_SANYO_TAG_SEQUENTIALSHOT          = 0x020e,
        MNOTE_SANYO_TAG_WIDERANGE               = 0x020f,
@@ -181,11 +186,6 @@ enum _MnoteOlympusTag {
        MNOTE_SANYO_TAG_SCENESELECT             = 0x021f,
        MNOTE_SANYO_TAG_MANUALFOCUSDISTANCE     = 0x0223,
        MNOTE_SANYO_TAG_SEQUENCESHOTINTERVAL    = 0x0224,
-
-       /* Epson */
-       MNOTE_EPSON_TAG_IMAGE_WIDTH             = 0x020b,
-       MNOTE_EPSON_TAG_IMAGE_HEIGHT            = 0x020c,
-       MNOTE_EPSON_TAG_SOFTWARE                = 0x020d,
 };
 typedef enum _MnoteOlympusTag MnoteOlympusTag;
 
@@ -194,6 +194,7 @@ typedef enum _MnoteOlympusTag MnoteOlympusTag;
 #define MNOTE_OLYMPUS_TAG_UNKNOWN_2    MNOTE_OLYMPUS_TAG_FOCALPLANEDIAGONAL
 #define MNOTE_OLYMPUS_TAG_UNKNOWN_3    MNOTE_OLYMPUS_TAG_LENSDISTORTION
 #define MNOTE_OLYMPUS_TAG_UNKNOWN_5    MNOTE_OLYMPUS_TAG_DATADUMP
+#define MNOTE_NIKON_TAG_PREVIEWIMAGE   MNOTE_NIKON_TAG_PREVIEWIMAGE_IFD_POINTER
 
 /*! Return a textual name of the given tag within the Olympus-style MakerNote.
  * The name is a short, unique, non-localized text string containing only
@@ -217,7 +218,6 @@ const char *mnote_olympus_tag_get_title       (MnoteOlympusTag tag);
  * The description is a verbose, localized description of the tag.
  *
  * \param[in] tag EXIF tag
- * \param[in] ifd IFD
  * \return textual description of the tag, or NULL if the tag is unknown
  */
 const char *mnote_olympus_tag_get_description (MnoteOlympusTag tag);