summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomas Bzatek <tbzatek@users.sourceforge.net>2009-04-25 16:34:05 +0200
committerTomas Bzatek <tbzatek@users.sourceforge.net>2009-04-25 16:34:05 +0200
commitb578236b19ac8893fd4647d99ca5db6c65133cb1 (patch)
tree998e9500e1d1ea252eebe2bde5307dc6682e98dc
parente24d78079036ca73f0d2998c4d248bc96c3f0475 (diff)
downloadcataract-b578236b19ac8893fd4647d99ca5db6c65133cb1.tar.xz
Custom thumbnail file name format
-rw-r--r--sample/src/setup.xml6
-rw-r--r--src/generators.c21
-rw-r--r--src/setup.c5
-rw-r--r--src/setup.h2
4 files changed, 32 insertions, 2 deletions
diff --git a/sample/src/setup.xml b/sample/src/setup.xml
index 5a322d1..88e7eba 100644
--- a/sample/src/setup.xml
+++ b/sample/src/setup.xml
@@ -64,6 +64,12 @@
<thumbnail_dir>_thumb</thumbnail_dir>
<preview_dir>_big</preview_dir>
<original_dir>_orig</original_dir>
+
+ <!-- printf() format-style string of thumbnail file names -->
+ <!-- %s is mandatory, represents file name (with ext.) -->
+ <!-- %d is optional, denotes item index in the album -->
+ <!-- this also avoids conflicts with identical names -->
+ <thumbnail_name_format>thn_%d_%s</thumbnail_name_format>
</images>
<meta>
diff --git a/src/generators.c b/src/generators.c
index c094e32..fdea806 100644
--- a/src/generators.c
+++ b/src/generators.c
@@ -35,6 +35,23 @@
#include "stats.h"
+
+static char *
+make_thumbnail_string (TGallerySetup *setup, unsigned int item_index, const char *imgname)
+{
+ char *s;
+ char *num;
+
+ s = g_strdup (setup->thumbnail_name_format);
+ str_replace (&s, "%s", imgname);
+ num = g_strdup_printf ("%.3d", item_index);
+ str_replace (&s, "%d", num);
+ g_free (num);
+
+ return s;
+}
+
+
/*
* generate_image: generate needed image sizes
*/
@@ -72,7 +89,7 @@ generate_image (TGallerySetup *setup,
thumb_src_full = g_strconcat (items->base_dir, "/", item->thumbnail, NULL);
item->gen_img_src = g_path_get_basename (item->thumbnail);
s1 = g_path_get_basename (item->thumbnail);
- item->gen_thumb = g_strdup_printf ("thn_%.3d_%s", item_index, s1);
+ item->gen_thumb = make_thumbnail_string (setup, item_index, s1);
g_free (s1);
}
else
@@ -83,7 +100,7 @@ generate_image (TGallerySetup *setup,
thumb_src_full = g_strconcat (items->base_dir, "/", item->gen_thumb, NULL);
item->gen_img_src = g_path_get_basename (item->gen_img_src);
s1 = g_path_get_basename (item->gen_thumb);
- item->gen_thumb = g_strdup_printf ("thn_%.3d_%s", item_index, s1);
+ item->gen_thumb = make_thumbnail_string (setup, item_index, s1);
g_free (s1);
}
diff --git a/src/setup.c b/src/setup.c
index 3ff9cb8..0b92022 100644
--- a/src/setup.c
+++ b/src/setup.c
@@ -113,6 +113,9 @@ parse_setup_xml (const char *filename, TGallerySetup *setup)
setup->img_orig_dir = xml_file_get_node_value (xml, "/gallery_setup/images/original_dir/text()");
if (setup->img_orig_dir == NULL || strlen (setup->img_orig_dir) == 0)
setup->img_orig_dir = strdup (DEFAULT_IMG_ORIG_DIR);
+ setup->thumbnail_name_format = xml_file_get_node_value (xml, "/gallery_setup/images/thumbnail_name_format/text()");
+ if (setup->thumbnail_name_format == NULL || strlen (setup->thumbnail_name_format) == 0 || strstr (setup->thumbnail_name_format, "%s") == NULL)
+ setup->thumbnail_name_format = strdup (DEFAULT_THUMBNAIL_NAME_FORMAT);
setup->thumbnail_landscape_width = xml_file_get_node_attribute_long (xml, "/gallery_setup/images/thumbnail", "landscape_w", 0);
@@ -293,6 +296,8 @@ free_setup_data (TGallerySetup *setup)
free (setup->img_big_dir);
if (setup->img_orig_dir)
free (setup->img_orig_dir);
+ if (setup->thumbnail_name_format)
+ free (setup->thumbnail_name_format);
free (setup);
setup = NULL;
}
diff --git a/src/setup.h b/src/setup.h
index 2356620..6bc25cb 100644
--- a/src/setup.h
+++ b/src/setup.h
@@ -26,6 +26,7 @@
#define DEFAULT_THUMBNAIL_DIR "_thumb"
#define DEFAULT_IMG_BIG_DIR "_big"
#define DEFAULT_IMG_ORIG_DIR "_orig"
+#define DEFAULT_THUMBNAIL_NAME_FORMAT "thn_%d_%s"
#define SETUP_XML "setup.xml"
#define DEFAULT_INDEX_FILENAME "index.html"
@@ -50,6 +51,7 @@ typedef struct {
char *thumbnail_dir;
char *img_big_dir;
char *img_orig_dir;
+ char *thumbnail_name_format;
char *footer;
char *meta_author;