tag = g_strdup_printf("0x%04x", exif_item_get_tag_id(item));
tag_name = exif_item_get_tag_name(item);
format = exif_item_get_format_name(item, TRUE);
- text = exif_item_get_data_as_text(item);
+ text = exif_item_get_data_as_text(item, exif);
utf8_text = utf8_validate_or_convert(text);
g_free(text);
elements = g_strdup_printf("%d", exif_item_get_elements(item));
if (key_valid) return text;
item = exif_get_item(exif, key);
- if (item) return exif_item_get_data_as_text(item);
+ if (item) return exif_item_get_data_as_text(item, exif);
return nullptr;
}
return exif_item_get_data_as_text_full(item, METADATA_PLAIN);
}
-gchar *exif_item_get_data_as_text(ExifItem *item)
+gchar *exif_item_get_data_as_text(ExifItem *item, ExifData *exif)
{
return exif_item_get_data_as_text_full(item, METADATA_FORMATTED);
}
return NULL;
}
-static void exif_write_item(FILE *f, ExifItem *item)
+static void exif_write_item(FILE *f, ExifItem *item, ExifData *exif)
{
gchar *text;
- text = exif_item_get_data_as_text(item);
+ text = exif_item_get_data_as_text(item, exif);
if (text)
{
gchar *tag = exif_item_get_tag_name(item);
item = (ExifItem*)(work->data);
work = work->next;
- exif_write_item(f, item);
+ exif_write_item(f, item, exif);
}
}
g_fprintf(f, "----------------------------------------------------\n");
gchar *exif_item_get_description(ExifItem *item);
guint exif_item_get_format_id(ExifItem *item);
const gchar *exif_item_get_format_name(ExifItem *item, gboolean brief);
-gchar *exif_item_get_data_as_text(ExifItem *item);
+gchar *exif_item_get_data_as_text(ExifItem *item, ExifData *exif);
gint exif_item_get_integer(ExifItem *item, gint *value);
ExifRational *exif_item_get_rational(ExifItem *item, gint *sign, guint n);
}
-gchar *exif_item_get_data_as_text(ExifItem *item)
+gchar *exif_item_get_data_as_text(ExifItem *item, ExifData *exif)
{
try {
if (!item) return nullptr;
auto metadatum = reinterpret_cast<Exiv2::Metadatum *>(item);
#if EXIV2_TEST_VERSION(0,17,0)
- return utf8_validate_or_convert(metadatum->print().c_str());
+ return utf8_validate_or_convert(metadatum->print(&exif->exifData()).c_str());
#else
std::stringstream str;
Exiv2::Exifdatum *exifdatum;