summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomas Bzatek <tbzatek@users.sourceforge.net>2009-04-11 12:59:58 +0200
committerTomas Bzatek <tbzatek@users.sourceforge.net>2009-04-11 12:59:58 +0200
commit6a54c7817bb71fde9234e7b89e87f1f349920ea1 (patch)
tree07b8766f2369a0f169524a7bc3da1423e4115a30
parent4f83d66c4fe13f605c6fd43789b998f08ce5c108 (diff)
downloadcataract-6a54c7817bb71fde9234e7b89e87f1f349920ea1.tar.xz
User customizable image directories
-rw-r--r--sample/src/setup.xml5
-rw-r--r--src/generators.c18
-rw-r--r--src/job-manager.c6
-rw-r--r--src/setup.c16
-rw-r--r--src/setup.h9
5 files changed, 39 insertions, 15 deletions
diff --git a/sample/src/setup.xml b/sample/src/setup.xml
index c306b80..5a322d1 100644
--- a/sample/src/setup.xml
+++ b/sample/src/setup.xml
@@ -59,6 +59,11 @@
<!-- for full album or selectively for each image -->
<!-- - override with <fullsize/> for album or for separate image -->
<!-- <nofullsize /> -->
+
+ <!-- target image directories -->
+ <thumbnail_dir>_thumb</thumbnail_dir>
+ <preview_dir>_big</preview_dir>
+ <original_dir>_orig</original_dir>
</images>
<meta>
diff --git a/src/generators.c b/src/generators.c
index ff88a73..8100196 100644
--- a/src/generators.c
+++ b/src/generators.c
@@ -91,7 +91,7 @@ generate_image (TGallerySetup *setup,
/* Generate thumbnail */
g_assert (thumb_src_full != NULL);
get_image_sizes (thumb_src_full, &thumb_w, &thumb_h);
- thumb_dst = g_strconcat (dst_dir, "/", THUMBNAIL_DIR, "/", item->gen_thumb, NULL);
+ thumb_dst = g_strconcat (dst_dir, "/", setup->thumbnail_dir, "/", item->gen_thumb, NULL);
if ((thumb_w > 0) && (thumb_h > 0)) {
if (! item->gen_portrait)
@@ -109,7 +109,7 @@ generate_image (TGallerySetup *setup,
/* Generate/copy preview and original image */
if (items->type == GALLERY_TYPE_ALBUM)
{
- big_dst = g_strconcat (dst_dir, "/", IMG_BIG_DIR, "/", item->gen_img_src, NULL);
+ big_dst = g_strconcat (dst_dir, "/", setup->img_big_dir, "/", item->gen_img_src, NULL);
if (item->preview == NULL) {
/* No preview image supplied, generate it from original */
bigq = setup->preview_quality;
@@ -155,7 +155,7 @@ generate_image (TGallerySetup *setup,
if (item->force_fullsize || (items->fullsize && ! item->force_nofullsize) ||
(! item->force_nofullsize && ! items->nofullsize && ! setup->nofullsize))
{
- orig_dst = g_strconcat (dst_dir, "/", IMG_ORIG_DIR, "/", item->gen_img_src, NULL);
+ orig_dst = g_strconcat (dst_dir, "/", setup->img_orig_dir, "/", item->gen_img_src, NULL);
if (! copy_file(img_src_full, orig_dst))
fprintf (stderr, "generate_image: error copying original image %s\n", img_src_full);
modify_exif (orig_dst, setup->erase_exif_thumbnail, setup->add_copyright);
@@ -376,7 +376,7 @@ write_html_album (TGallerySetup *setup,
replace_table_add_key (local_replace_table, "IMG_DESCRIPTION", item->title_description);
replace_table_add_key_printf (local_replace_table, "IMG_LIST_ID", "i%d", i + 1);
if (item->gen_thumb != NULL)
- replace_table_add_key_printf (local_replace_table, "IMG_THUMBNAIL", "%s/%s", THUMBNAIL_DIR, item->gen_thumb);
+ replace_table_add_key_printf (local_replace_table, "IMG_THUMBNAIL", "%s/%s", setup->thumbnail_dir, item->gen_thumb);
replace_table_add_key (local_replace_table, "IMG_FILENAME", item->gen_img_src);
if (items->type == GALLERY_TYPE_INDEX) {
s3 = g_strconcat (items->base_dir, "/", item->path, "/index.xml", NULL);
@@ -517,12 +517,12 @@ write_html_image (TGallerySetup *setup,
imgname = g_path_get_basename ((item->path == NULL && item->preview) ? item->preview : item->path);
if (next_item && setup->preload) {
s1 = g_path_get_basename ((next_item->path == NULL && next_item->preview) ? next_item->preview : next_item->path);
- preload_imgname = g_strconcat (IMG_BIG_DIR, "/", s1, NULL);
+ preload_imgname = g_strconcat (setup->img_big_dir, "/", s1, NULL);
g_free (s1);
}
s1 = g_path_get_dirname (dst);
- big_dst = g_strconcat (s1, "/", IMG_BIG_DIR, "/", imgname, NULL);
- orig_dst = g_strconcat (s1, "/", IMG_ORIG_DIR, "/", imgname, NULL);
+ big_dst = g_strconcat (s1, "/", setup->img_big_dir, "/", imgname, NULL);
+ orig_dst = g_strconcat (s1, "/", setup->img_orig_dir, "/", imgname, NULL);
g_free (s1);
res = TRUE;
@@ -596,8 +596,8 @@ write_html_image (TGallerySetup *setup,
replace_table_add_key_int (replace_table, "IMG_SIZE_BIG_H", img_big_h);
replace_table_add_key_int (replace_table, "IMG_SIZE_ORIG_W", img_orig_w);
replace_table_add_key_int (replace_table, "IMG_SIZE_ORIG_H", img_orig_h);
- replace_table_add_key_printf (replace_table, "IMG_SRC_BIG", "%s/%s", IMG_BIG_DIR, imgname);
- replace_table_add_key_printf (replace_table, "IMG_SRC_FULL", "%s/%s", IMG_ORIG_DIR, imgname);
+ replace_table_add_key_printf (replace_table, "IMG_SRC_BIG", "%s/%s", setup->img_big_dir, imgname);
+ replace_table_add_key_printf (replace_table, "IMG_SRC_FULL", "%s/%s", setup->img_orig_dir, imgname);
replace_table_add_key (replace_table, "IMG_SRC_PRELOAD", preload_imgname ? preload_imgname : "");
/* Navigation bar (NOTE: 'int level' is used below + favicon) */
diff --git a/src/job-manager.c b/src/job-manager.c
index e3ae00d..bcbc0b8 100644
--- a/src/job-manager.c
+++ b/src/job-manager.c
@@ -244,7 +244,7 @@ build_tree (TGallerySetup *setup,
}
/* Prepare target thumbnail directory */
- thumb_dir = g_strconcat (dst_dir, "/", THUMBNAIL_DIR, NULL);
+ thumb_dir = g_strconcat (dst_dir, "/", setup->thumbnail_dir, NULL);
if (access (thumb_dir, R_OK | W_OK | X_OK))
if (g_mkdir_with_parents (thumb_dir, DEFAULT_DATA_DIR_MODE)) {
fprintf (stderr, "error making target thumbnail directory: %s\n", strerror (errno));
@@ -258,8 +258,8 @@ build_tree (TGallerySetup *setup,
if (items->type == GALLERY_TYPE_ALBUM)
{
res = TRUE;
- img_big_dir = g_strconcat (dst_dir, "/", IMG_BIG_DIR, NULL);
- img_orig_dir = g_strconcat (dst_dir, "/", IMG_ORIG_DIR, NULL);
+ img_big_dir = g_strconcat (dst_dir, "/", setup->img_big_dir, NULL);
+ img_orig_dir = g_strconcat (dst_dir, "/", setup->img_orig_dir, NULL);
if (access (img_big_dir, R_OK | W_OK | X_OK))
if (g_mkdir_with_parents (img_big_dir, DEFAULT_DATA_DIR_MODE)) {
fprintf (stderr, "error making target preview directory: %s\n", strerror (errno));
diff --git a/src/setup.c b/src/setup.c
index 145a5f2..d07e6ab 100644
--- a/src/setup.c
+++ b/src/setup.c
@@ -104,6 +104,16 @@ parse_setup_xml (const char *filename, TGallerySetup *setup)
if (setup->index_file_name == NULL || strlen (setup->index_file_name) == 0)
setup->index_file_name = strdup (DEFAULT_INDEX_FILENAME);
+ setup->thumbnail_dir = xml_file_get_node_value (xml, "/gallery_setup/images/thumbnail_dir/text()");
+ if (setup->thumbnail_dir == NULL || strlen (setup->thumbnail_dir) == 0)
+ setup->thumbnail_dir = strdup (DEFAULT_THUMBNAIL_DIR);
+ setup->img_big_dir = xml_file_get_node_value (xml, "/gallery_setup/images/preview_dir/text()");
+ if (setup->img_big_dir == NULL || strlen (setup->img_big_dir) == 0)
+ setup->img_big_dir = strdup (DEFAULT_IMG_BIG_DIR);
+ 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_landscape_width = xml_file_get_node_attribute_long (xml, "/gallery_setup/images/thumbnail", "landscape_w", 0);
setup->thumbnail_landscape_height = xml_file_get_node_attribute_long (xml, "/gallery_setup/images/thumbnail", "landscape_h", 0);
@@ -277,6 +287,12 @@ free_setup_data (TGallerySetup *setup)
free (setup->favicon_file);
if (setup->favicon_type)
free (setup->favicon_type);
+ if (setup->thumbnail_dir)
+ free (setup->thumbnail_dir);
+ if (setup->img_big_dir)
+ free (setup->img_big_dir);
+ if (setup->img_orig_dir)
+ free (setup->img_orig_dir);
free (setup);
setup = NULL;
}
diff --git a/src/setup.h b/src/setup.h
index 7fb32bd..4cd2629 100644
--- a/src/setup.h
+++ b/src/setup.h
@@ -23,9 +23,9 @@
/* Directory names */
-#define THUMBNAIL_DIR "_thumb"
-#define IMG_BIG_DIR "_big"
-#define IMG_ORIG_DIR "_orig"
+#define DEFAULT_THUMBNAIL_DIR "_thumb"
+#define DEFAULT_IMG_BIG_DIR "_big"
+#define DEFAULT_IMG_ORIG_DIR "_orig"
#define SETUP_XML "setup.xml"
#define DEFAULT_INDEX_FILENAME "index.html"
@@ -46,6 +46,9 @@ typedef struct {
char **template_files;
gboolean support_files_use_common_root;
char *index_file_name;
+ char *thumbnail_dir;
+ char *img_big_dir;
+ char *img_orig_dir;
char *footer;
char *meta_author;