summaryrefslogtreecommitdiff
path: root/src/generators.c
diff options
context:
space:
mode:
authorTomas Bzatek <tbzatek@users.sourceforge.net>2012-12-24 21:19:25 +0100
committerTomas Bzatek <tbzatek@users.sourceforge.net>2012-12-24 21:19:25 +0100
commite830966319d214b97662d56f10a526a106b92a20 (patch)
treef84a883c0f16dfa8ea21130f5d9d58f4204fcff2 /src/generators.c
parentdb6c3c5a0ef1cca1e951e21ea2633615d43233eb (diff)
downloadcataract-e830966319d214b97662d56f10a526a106b92a20.tar.xz
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).
Diffstat (limited to 'src/generators.c')
-rw-r--r--src/generators.c13
1 files changed, 13 insertions, 0 deletions
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;