summaryrefslogtreecommitdiff
path: root/src/generators.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/generators.c')
-rw-r--r--src/generators.c97
1 files changed, 44 insertions, 53 deletions
diff --git a/src/generators.c b/src/generators.c
index a7f94cb..e1bedf9 100644
--- a/src/generators.c
+++ b/src/generators.c
@@ -190,7 +190,6 @@ get_item_titles (TGallerySetup *setup,
*title_desc = g_strstrip (*title_desc);
}
-/* FIXME: this badly needs port to the new theming system */
static void
get_image_paths (TGallerySetup *setup,
TAlbum *items,
@@ -202,7 +201,6 @@ get_image_paths (TGallerySetup *setup,
gchar **page_img_dst)
{
gboolean nofullsize;
- gboolean is_preview;
gboolean is_original;
gchar *s1, *s2, *s3;
gchar *target_image_dir;
@@ -214,10 +212,8 @@ get_image_paths (TGallerySetup *setup,
*full_img_dst = NULL;
if (page_img_dst)
*page_img_dst = NULL;
- preview_image_size = NULL;
nofullsize = IS_NOFULLSIZE (item, items, setup);
- is_preview = g_ascii_strcasecmp ("preview", image_size->name) == 0;
is_original = g_ascii_strcasecmp ("original", image_size->name) == 0;
/* ignore combinations that are not valid */
@@ -226,52 +222,48 @@ get_image_paths (TGallerySetup *setup,
(image_size->is_thumbnail && items->type == GALLERY_TYPE_INDEX && (item->thumbnail == NULL || strlen (item->thumbnail) == 0)))
return;
- /* nofullsize specified, fall back to preview if available */
- if (is_original && nofullsize)
- preview_image_size = lookup_image_size_for_name (setup, "preview");
- target_image_dir = g_strdup_printf ("%s%s", TARGET_IMAGE_DIR_PREFIX, preview_image_size ? preview_image_size->name : image_size->name);
+ s1 = NULL;
+ if (image_size->is_thumbnail && items->type == GALLERY_TYPE_INDEX)
+ s1 = item->thumbnail;
+ if (s1 == NULL && ! is_original && item->image_sizes != NULL) {
+ s1 = g_hash_table_lookup (item->image_sizes, image_size->name);
+ }
+ if (s1 == NULL)
+ s1 = item->path;
+
+ /* legacy behaviour fallback */
+ if (s1 == NULL && item->image_sizes != NULL)
+ s1 = g_hash_table_lookup (item->image_sizes, "preview");
+ if (s1 == NULL) {
+ log_error ("Unable to find image source for item #%d (\"%s\") for image size \"%s\"\n", get_item_index (items, item), item->title, image_size->name);
+ return;
+ }
- /* Thumbnail special case */
- if (image_size->is_thumbnail) {
- s1 = NULL;
- if (items->type == GALLERY_TYPE_INDEX) {
- s1 = item->thumbnail;
- } else
- if (items->type == GALLERY_TYPE_ALBUM) {
- s1 = (item->path == NULL && item->preview) ? item->preview : item->path;
- s1 = (item->thumbnail) ? item->thumbnail : s1;
+ if (full_img_src)
+ *full_img_src = g_build_filename (path_info->src_dir, s1, NULL);
+
+ /* Use preview image for targets but leave original source if nofullsize is defined (legacy behaviour) */
+ preview_image_size = NULL;
+ if (is_original && nofullsize && item->image_sizes != NULL) {
+ s2 = g_hash_table_lookup (item->image_sizes, "preview");
+ if (s2 != NULL) {
+ s1 = s2;
+ preview_image_size = lookup_image_size_for_name (setup, "preview");
}
- s2 = g_path_get_basename (s1);
- if (full_img_src)
- *full_img_src = g_build_filename (path_info->src_dir, s1, NULL);
- s3 = g_strdup_printf (THUMBNAIL_NAME_FORMAT, get_item_index (items, item), s2);
- g_free (s2);
- if (full_img_dst)
- *full_img_dst = g_build_filename (path_info->dest_dir, target_image_dir, s3, NULL);
- if (page_img_dst)
- *page_img_dst = g_build_filename (target_image_dir, s3, NULL);
- g_free (s3);
}
+ target_image_dir = g_strdup_printf ("%s%s", TARGET_IMAGE_DIR_PREFIX, preview_image_size ? preview_image_size->name : image_size->name);
- /* Other image sizes */
- else {
- if (is_preview)
- s1 = (item->preview) ? item->preview : item->path;
- else
- s1 = (item->path == NULL && item->preview) ? item->preview : item->path;
- if (full_img_src)
- *full_img_src = g_build_filename (path_info->src_dir, s1, NULL);
- /* Use preview image for targets but leave original source if nofullsize is defined */
- if (is_original && nofullsize)
- s1 = (item->preview) ? item->preview : item->path;
- s2 = g_path_get_basename (s1);
- if (full_img_dst)
- *full_img_dst = g_build_filename (path_info->dest_dir, target_image_dir, s2, NULL);
- if (page_img_dst)
- *page_img_dst = g_build_filename (target_image_dir, s2, NULL);
+ s2 = g_path_get_basename (s1);
+ if (image_size->is_thumbnail) {
+ s3 = g_strdup_printf (THUMBNAIL_NAME_FORMAT, get_item_index (items, item), s2);
g_free (s2);
+ s2 = s3;
}
-
+ if (full_img_dst)
+ *full_img_dst = g_build_filename (path_info->dest_dir, target_image_dir, s2, NULL);
+ if (page_img_dst)
+ *page_img_dst = g_build_filename (target_image_dir, s2, NULL);
+ g_free (s2);
g_free (target_image_dir);
}
@@ -369,9 +361,8 @@ generate_image (TGallerySetup *setup,
for (l = g_list_first (setup->design->image_sizes); l; l = g_list_next (l)) {
image_size = l->data;
- /* TODO: this is too specific */
- is_preview = g_ascii_strcasecmp ("preview", image_size->name) == 0;
is_original = g_ascii_strcasecmp ("original", image_size->name) == 0;
+ is_preview = g_ascii_strcasecmp ("preview", image_size->name) == 0;
if (is_original && IS_NOFULLSIZE (item, items, setup))
continue;
@@ -392,8 +383,8 @@ generate_image (TGallerySetup *setup,
/* Do something when required */
res = res || needs_update (img_src, img_dst);
if (! query_update) {
- /* Copy the source file */
- if (! image_size->is_thumbnail && image_size->no_resize && ((is_preview && item->preview) || is_original)) {
+ /* Determine whether to perform file copy or resize */
+ if (! image_size->is_thumbnail && image_size->no_resize && (is_original || (item->image_sizes && g_hash_table_lookup (item->image_sizes, image_size->name)))) {
if (! copy_file (img_src, img_dst))
log_error (" Error copying image %s to %s\n", img_src, img_dst);
}
@@ -417,7 +408,7 @@ generate_image (TGallerySetup *setup,
}
}
else {
- /* Only the "preview" size is affected by deprecated item and album overrides */
+ /* Only the "preview" size is affected by legacy item and album overrides */
if (is_preview) {
tmpw = get_prop_int (items, item, PROP_WIDTH, img_w);
tmph = get_prop_int (items, item, PROP_HEIGHT, img_h);
@@ -669,7 +660,7 @@ add_next_prev_links (TGallerySetup *setup,
}
if (next_item) {
- s = GET_ITEM_TARGET_FILENAME (next_item);
+ s = get_item_target_filename (next_item);
replace_table_add_key_printf (replace_table, "LINK_NEXT", theme->picture_filename, s);
g_free (s);
}
@@ -677,7 +668,7 @@ add_next_prev_links (TGallerySetup *setup,
replace_table_add_key (replace_table, "LINK_NEXT", get_index_filename (items, theme, NULL, NULL));
if (previous_item) {
- s = GET_ITEM_TARGET_FILENAME (previous_item);
+ s = get_item_target_filename (previous_item);
replace_table_add_key_printf (replace_table, "LINK_PREV", theme->picture_filename, s);
g_free (s);
}
@@ -822,7 +813,7 @@ process_img_item (TGallerySetup *setup,
g_free (s3);
}
- s1 = GET_ITEM_TARGET_FILENAME (item);
+ s1 = get_item_target_filename (item);
replace_table_add_key_printf (replace_table, "IMG_SUBPAGE", theme->picture_filename, s1);
replace_table_add_key (replace_table, "IMG_FILENAME", s1);
g_free (s1);
@@ -1096,7 +1087,7 @@ write_html_page (TGallerySetup *setup,
}
if (block_parser_has_unused_data (block_parser, "NAV_BAR")) {
- s2 = item != NULL ? GET_ITEM_TARGET_FILENAME (item) : NULL;
+ s2 = item != NULL ? get_item_target_filename (item) : NULL;
s1 = make_navbar_string (setup, theme, block_parser, defines, items, item ? get_item_index (items, item) : -1, s2 ? s2 : items->ID);
g_free (s2);
replace_table_process (&s1, global_replace_table);