From e830966319d214b97662d56f10a526a106b92a20 Mon Sep 17 00:00:00 2001 From: Tomas Bzatek Date: Mon, 24 Dec 2012 21:19:25 +0100 Subject: Add has_exif_key() block function Simple check whether the EXIF/IPTC key is available for the current image. Precisely one argument is required, similar to the get_exif_value() custom function, an Exiv2 metadata attribute string is expected. This allows templates to change behaviour when certain metadata key is not present (e.g. don't print the particular table line at all). --- src/generators.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src') diff --git a/src/generators.c b/src/generators.c index 5fe87fe..ab7ab12 100644 --- a/src/generators.c +++ b/src/generators.c @@ -577,6 +577,18 @@ get_exif_value_fixed_cb (gchar **args, gpointer user_data) return get_exif_data_fixed (exif, *args); } +static gboolean +has_exif_key_cb (gchar **args, gpointer user_data) +{ + ExifData *exif = user_data; + + g_return_val_if_fail (exif != NULL, FALSE); + g_return_val_if_fail (g_strv_length (args) != 2, FALSE); /* incl. trailing NULL */ + + return exif_has_key (exif, *args); +} + + /* * write_html_image: process single image template file * @@ -827,6 +839,7 @@ write_html_image (TGallerySetup *setup, replace_table_register_function (replace_table, "get_exif_value", get_exif_value_cb, exif); replace_table_register_function (replace_table, "get_exif_value_fixed", get_exif_value_fixed_cb, exif); + block_parser_register_function (block_parser, "has_exif_key", has_exif_key_cb, exif); /* Border style */ s1 = item->border_style; -- cgit v1.2.3