* 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>
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:
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;
{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"), ""},
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,
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,
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;
#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
* 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);