summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTomas Bzatek <tbzatek@users.sourceforge.net>2015-01-11 18:42:24 +0100
committerTomas Bzatek <tbzatek@users.sourceforge.net>2015-01-11 18:42:24 +0100
commit28b31f6d427056c5629c7b2af97503f67079ec09 (patch)
tree88627f009d5455b47e0f8a371eca75757b04d88e /src
parent3001d919d5fe66e13b86ea3606513060c5d6a4fe (diff)
downloadcataract-28b31f6d427056c5629c7b2af97503f67079ec09.tar.xz
generators: Allow undefined album image and thumbnail sizes
There may be certain cases where images or thumbnails on album pages are not needed and textual representation is just fine. Metadata pulled from the source image files are still processed and exposed.
Diffstat (limited to 'src')
-rw-r--r--src/generators.c153
1 files changed, 77 insertions, 76 deletions
diff --git a/src/generators.c b/src/generators.c
index f627839..cc1cc0a 100644
--- a/src/generators.c
+++ b/src/generators.c
@@ -758,7 +758,8 @@ process_img_item (TGallerySetup *setup,
GHashTable *defines,
TImageSize *image_size,
TImageSize *thumb_image_size,
- ExifData *exif)
+ ExifData *exif,
+ gboolean list_mode)
{
unsigned long img_w, img_h;
unsigned long img_orig_w, img_orig_h;
@@ -773,53 +774,53 @@ process_img_item (TGallerySetup *setup,
gchar *title, *title_desc;
TImageSize *orig_image_size;
- /* FIXME: checking for image sizes essentially means thumbnails are always generated even though some pages would be fine with just textual item listing */
-
- /* Index stuff */
- album_protected = FALSE;
- if (items->type == GALLERY_TYPE_INDEX) {
- album_objects_count = 0;
- s1 = g_build_filename (path_info->src_dir, item->path, "index.xml", NULL);
- /* FIXME: doing additional I/O, port to global item tree */
- get_album_info (s1, &album_objects_count, &album_protected);
- g_free (s1);
- replace_table_add_key_int (replace_table, "ALBUM_NUM_ITEMS", album_objects_count);
- replace_table_add_key_printf (replace_table, "ALBUM_SUBPATH", "%s/%s", item->path, get_index_filename (items, theme, path_info, item));
- if (album_protected && theme->index_protected_thumbnail != NULL)
- g_hash_table_replace (defines, g_strdup ("IS_PROTECTED"), g_strdup (""));
- }
-
- /* Thumbnail stuff */
- if (thumb_image_size != NULL) {
- if (album_protected && theme->index_protected_thumbnail != NULL) {
- s1 = setup->supplemental_files_use_common_root ? make_string ("../", get_root_level (items)) : g_strdup ("");
- /* expecting both global and theme supplemental files are in place at this moment */
- s2 = g_build_filename (path_info->dest_dir, s1, theme->index_protected_thumbnail, NULL);
- s3 = g_strconcat (s1, theme->index_protected_thumbnail, NULL);
+ if (list_mode) {
+ /* Index stuff */
+ album_protected = FALSE;
+ if (items->type == GALLERY_TYPE_INDEX) {
+ album_objects_count = 0;
+ s1 = g_build_filename (path_info->src_dir, item->path, "index.xml", NULL);
+ /* FIXME: doing additional I/O, port to global item tree */
+ get_album_info (s1, &album_objects_count, &album_protected);
g_free (s1);
+ replace_table_add_key_int (replace_table, "ALBUM_NUM_ITEMS", album_objects_count);
+ replace_table_add_key_printf (replace_table, "ALBUM_SUBPATH", "%s/%s", item->path, get_index_filename (items, theme, path_info, item));
+ if (album_protected && theme->index_protected_thumbnail != NULL)
+ g_hash_table_replace (defines, g_strdup ("IS_PROTECTED"), g_strdup (""));
}
- else {
- get_image_paths (setup, items, item, path_info, thumb_image_size, NULL, &s2, &s3);
- }
- img_thumb_w = img_thumb_h = 0;
- if (s2 != NULL)
- get_image_sizes (s2, &img_thumb_w, &img_thumb_h, setup->autorotate);
+ /* Thumbnail stuff */
+ if (thumb_image_size != NULL) {
+ if (album_protected && theme->index_protected_thumbnail != NULL) {
+ s1 = setup->supplemental_files_use_common_root ? make_string ("../", get_root_level (items)) : g_strdup ("");
+ /* expecting both global and theme supplemental files are in place at this moment */
+ s2 = g_build_filename (path_info->dest_dir, s1, theme->index_protected_thumbnail, NULL);
+ s3 = g_strconcat (s1, theme->index_protected_thumbnail, NULL);
+ g_free (s1);
+ }
+ else {
+ get_image_paths (setup, items, item, path_info, thumb_image_size, NULL, &s2, &s3);
+ }
+
+ img_thumb_w = img_thumb_h = 0;
+ if (s2 != NULL)
+ get_image_sizes (s2, &img_thumb_w, &img_thumb_h, setup->autorotate);
- if (img_thumb_w == img_thumb_h)
- replace_table_add_key (replace_table, "THUMB_ORIENTATION", "squared");
- else
- replace_table_add_key (replace_table, "THUMB_ORIENTATION", (img_thumb_h > img_thumb_w) ? "portrait" : "landscape");
+ if (img_thumb_w == img_thumb_h)
+ replace_table_add_key (replace_table, "THUMB_ORIENTATION", "squared");
+ else
+ replace_table_add_key (replace_table, "THUMB_ORIENTATION", (img_thumb_h > img_thumb_w) ? "portrait" : "landscape");
- if (s3 != NULL) {
- replace_table_add_key (replace_table, "IMG_SRC_THUMB", s3);
- if (img_thumb_w > 0 && img_thumb_h > 0) {
- replace_table_add_key_int (replace_table, "IMG_SIZE_THUMB_W", img_thumb_w);
- replace_table_add_key_int (replace_table, "IMG_SIZE_THUMB_H", img_thumb_h);
+ if (s3 != NULL) {
+ replace_table_add_key (replace_table, "IMG_SRC_THUMB", s3);
+ if (img_thumb_w > 0 && img_thumb_h > 0) {
+ replace_table_add_key_int (replace_table, "IMG_SIZE_THUMB_W", img_thumb_w);
+ replace_table_add_key_int (replace_table, "IMG_SIZE_THUMB_H", img_thumb_h);
+ }
}
+ g_free (s2);
+ g_free (s3);
}
- g_free (s2);
- g_free (s3);
s1 = GET_ITEM_TARGET_FILENAME (item);
replace_table_add_key_printf (replace_table, "IMG_SUBPAGE", theme->picture_filename, s1);
@@ -857,43 +858,43 @@ process_img_item (TGallerySetup *setup,
g_free (img_orig_dst_page);
}
- /* Get title and description from IPTC/EXIF/JPEG if not defined */
- get_item_titles (setup, item, exif, &title, &title_desc);
- replace_table_add_key (replace_table, "IMG_TITLE", title);
- replace_table_add_key (replace_table, "IMG_DESCRIPTION", title_desc);
-
- /* Page title */
- s1 = (title && strlen (title) > 0) ? g_strdup_printf ("%s | ", title) : NULL;
- s2 = g_strdup_printf ("%s [%d/%d]", items->title ? items->title : items->ID, get_display_item_index (items, item), get_display_item_count (items));
- s3 = setup->site_title ? g_strdup_printf (" | %s", setup->site_title) : NULL;
- s4 = g_strconcat (s1 ? s1 : "", s2, s3 ? s3 : "", NULL);
- replace_table_add_key (replace_table, "PAGE_TITLE", s4);
- g_free (s1);
- g_free (s2);
- g_free (s3);
- g_free (s4);
-
- g_free (title);
- g_free (title_desc);
-
- /* EXIF callbacks - all do handle NULL value pointer */
- 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);
- if (exif != NULL && exif_has_key (exif, EXIF_APERTURE) &&
- exif_has_key (exif, EXIF_FOCAL_LENGTH) &&
- exif_has_key (exif, EXIF_EXPOSURE))
- g_hash_table_replace (defines, g_strdup ("HAS_EXIF"), g_strdup (""));
-
- /* Border style */
- s1 = get_prop_string (items, item, PROP_BORDER_STYLE, NULL);
- if (s1)
- g_hash_table_replace (defines, g_strdup ("BORDER_STYLE"), s1);
-
g_free (img_dst);
g_free (img_dst_page);
}
+ /* Get title and description from IPTC/EXIF/JPEG if not defined */
+ get_item_titles (setup, item, exif, &title, &title_desc);
+ replace_table_add_key (replace_table, "IMG_TITLE", title);
+ replace_table_add_key (replace_table, "IMG_DESCRIPTION", title_desc);
+
+ /* Page title */
+ s1 = (title && strlen (title) > 0) ? g_strdup_printf ("%s | ", title) : NULL;
+ s2 = g_strdup_printf ("%s [%d/%d]", items->title ? items->title : items->ID, get_display_item_index (items, item), get_display_item_count (items));
+ s3 = setup->site_title ? g_strdup_printf (" | %s", setup->site_title) : NULL;
+ s4 = g_strconcat (s1 ? s1 : "", s2, s3 ? s3 : "", NULL);
+ replace_table_add_key (replace_table, "PAGE_TITLE", s4);
+ g_free (s1);
+ g_free (s2);
+ g_free (s3);
+ g_free (s4);
+
+ g_free (title);
+ g_free (title_desc);
+
+ /* EXIF callbacks - all do handle NULL value pointer */
+ 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);
+ if (exif != NULL && exif_has_key (exif, EXIF_APERTURE) &&
+ exif_has_key (exif, EXIF_FOCAL_LENGTH) &&
+ exif_has_key (exif, EXIF_EXPOSURE))
+ g_hash_table_replace (defines, g_strdup ("HAS_EXIF"), g_strdup (""));
+
+ /* Border style */
+ s1 = get_prop_string (items, item, PROP_BORDER_STYLE, NULL);
+ if (s1)
+ g_hash_table_replace (defines, g_strdup ("BORDER_STYLE"), s1);
+
/* Common tags */
replace_table_add_key_printf (replace_table, "IMG_POS_MARKER", POSITION_MARKER_FMT, get_item_index (items, item));
replace_table_add_key_int (replace_table, "ITEM_INDEX", get_display_item_index (items, item));
@@ -1055,7 +1056,7 @@ write_html_page (TGallerySetup *setup,
s1 = block_parser_get_data (block_parser, "LIST_PICTURE");
if (image_size != NULL)
exif = get_img_exif_data (setup, path_info, items, iter_item, image_size);
- process_img_item (setup, path_info, theme, items, iter_item, local_block_parser, local_replace_table, local_defines, image_size, thumb_image_size, exif);
+ process_img_item (setup, path_info, theme, items, iter_item, local_block_parser, local_replace_table, local_defines, image_size, thumb_image_size, exif, TRUE);
}
break;
@@ -1095,7 +1096,7 @@ write_html_page (TGallerySetup *setup,
exif = NULL;
if (image_size != NULL)
exif = get_img_exif_data (setup, path_info, items, item, image_size);
- process_img_item (setup, path_info, theme, items, item, local_block_parser, global_replace_table, defines, image_size, thumb_image_size, exif);
+ process_img_item (setup, path_info, theme, items, item, local_block_parser, global_replace_table, defines, image_size, thumb_image_size, exif, FALSE);
s1 = block_parser_get_data (block_parser, "SINGLE_PICTURE");
s2 = process_block (setup, local_block_parser, global_replace_table, defines, s1);
replace_table_process (&s2, global_replace_table);