From b578236b19ac8893fd4647d99ca5db6c65133cb1 Mon Sep 17 00:00:00 2001 From: Tomas Bzatek Date: Sat, 25 Apr 2009 16:34:05 +0200 Subject: Custom thumbnail file name format --- src/generators.c | 21 +++++++++++++++++++-- src/setup.c | 5 +++++ src/setup.h | 2 ++ 3 files changed, 26 insertions(+), 2 deletions(-) (limited to 'src') 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; -- cgit v1.2.3