summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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);