mirror of https://github.com/GNOME/gimp.git
plug-ins: interpret Exif.Photo.UserComment before showing in metadata-viewer.
This commit is contained in:
parent
352b5885b1
commit
34463786b1
|
@ -121,6 +121,7 @@ static void metadata_dialog_add_translated_tag (GExiv2Metadata *metadata,
|
||||||
gint tag_column,
|
gint tag_column,
|
||||||
gint value_column,
|
gint value_column,
|
||||||
const gchar *tag);
|
const gchar *tag);
|
||||||
|
static gchar * metadata_interpret_user_comment (gchar *comment);
|
||||||
static gchar * metadata_dialog_format_tag_value (GExiv2Metadata *metadata,
|
static gchar * metadata_dialog_format_tag_value (GExiv2Metadata *metadata,
|
||||||
const gchar *tag,
|
const gchar *tag,
|
||||||
gboolean truncate);
|
gboolean truncate);
|
||||||
|
@ -419,6 +420,39 @@ metadata_dialog_add_translated_tag (GExiv2Metadata *metadata,
|
||||||
g_free (value);
|
g_free (value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gchar *
|
||||||
|
metadata_interpret_user_comment (gchar *comment)
|
||||||
|
{
|
||||||
|
/* Exiv2 can return unwanted text at the start of a comment
|
||||||
|
* taken from Exif.Photo.UserComment since 0.27.3.
|
||||||
|
* Let's remove that part and replace with an empty string
|
||||||
|
* if there is nothing else left as comment. */
|
||||||
|
|
||||||
|
if (comment && g_str_has_prefix (comment, "charset=Ascii "))
|
||||||
|
{
|
||||||
|
gchar *real_comment;
|
||||||
|
|
||||||
|
/* Skip "charset=Ascii " (length 14) to find the real comment */
|
||||||
|
real_comment = comment + 14;
|
||||||
|
if (real_comment[0] == '\0' ||
|
||||||
|
! g_strcmp0 (real_comment, "binary comment"))
|
||||||
|
{
|
||||||
|
g_free (comment);
|
||||||
|
/* Make empty comment instead of returning NULL or else
|
||||||
|
* the exif value will not be shown at all. */
|
||||||
|
comment = g_strdup ("");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
real_comment = g_strdup (real_comment);
|
||||||
|
g_free (comment);
|
||||||
|
return real_comment;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return comment;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
metadata_dialog_append_tags (GExiv2Metadata *metadata,
|
metadata_dialog_append_tags (GExiv2Metadata *metadata,
|
||||||
gchar **tags,
|
gchar **tags,
|
||||||
|
@ -557,6 +591,17 @@ metadata_dialog_append_tags (GExiv2Metadata *metadata,
|
||||||
gps_done = TRUE;
|
gps_done = TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (! strcmp ("Exif.Photo.UserComment", tag))
|
||||||
|
{
|
||||||
|
value = gexiv2_metadata_get_tag_interpreted_string (metadata, tag);
|
||||||
|
/* Can start with charset. Remove part that is not relevant. */
|
||||||
|
value = metadata_interpret_user_comment (value);
|
||||||
|
|
||||||
|
metadata_dialog_add_tag (store, iter,
|
||||||
|
tag_column, value_column,
|
||||||
|
tag, value);
|
||||||
|
g_free (value);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
value = metadata_dialog_format_tag_value (metadata, tag,
|
value = metadata_dialog_format_tag_value (metadata, tag,
|
||||||
|
|
Loading…
Reference in New Issue