diff options
| -rw-r--r-- | src/generators.c | 153 |
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); |
