# HG changeset patch # User nadvornik # Date 1206802754 0 # Node ID ad78ad18523a862dec03b88633751532867bc49b # Parent fa0e05f985c3a2ced1f51ba65c5583dc84f54c8f configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN diff -r fa0e05f985c3 -r ad78ad18523a src/globals.c --- a/src/globals.c Sat Mar 29 10:38:15 2008 +0000 +++ b/src/globals.c Sat Mar 29 14:59:14 2008 +0000 @@ -52,6 +52,8 @@ gint limit_window_size = FALSE; gint zoom_to_fit_expands = TRUE; gint max_window_size = 100; +gint limit_autofit_size = FALSE; +gint max_autofit_size = 100; gint thumb_max_width = 96; gint thumb_max_height = 72; gint enable_thumb_caching = TRUE; diff -r fa0e05f985c3 -r ad78ad18523a src/gqview.h --- a/src/gqview.h Sat Mar 29 10:38:15 2008 +0000 +++ b/src/gqview.h Sat Mar 29 14:59:14 2008 +0000 @@ -132,6 +132,8 @@ extern gint limit_window_size; extern gint zoom_to_fit_expands; extern gint max_window_size; +extern gint limit_autofit_size; +extern gint max_autofit_size; extern gint thumb_max_width; extern gint thumb_max_height; extern gint enable_thumb_caching; diff -r fa0e05f985c3 -r ad78ad18523a src/image.c --- a/src/image.c Sat Mar 29 10:38:15 2008 +0000 +++ b/src/image.c Sat Mar 29 14:59:14 2008 +0000 @@ -1720,6 +1720,9 @@ "window_fit", (imd->top_window_sync && fit_window), "window_limit", limit_window_size, "window_limit_value", max_window_size, + "autofit_limit", limit_autofit_size, + "autofit_limit_value", max_autofit_size, + NULL); pixbuf_renderer_set_parent((PixbufRenderer *)imd->pr, (GtkWindow *)imd->top_window); diff -r fa0e05f985c3 -r ad78ad18523a src/pixbuf-renderer.c --- a/src/pixbuf-renderer.c Sat Mar 29 10:38:15 2008 +0000 +++ b/src/pixbuf-renderer.c Sat Mar 29 14:59:14 2008 +0000 @@ -156,7 +156,9 @@ PROP_CACHE_SIZE_TILES, PROP_WINDOW_FIT, PROP_WINDOW_LIMIT, - PROP_WINDOW_LIMIT_VALUE + PROP_WINDOW_LIMIT_VALUE, + PROP_AUTOFIT_LIMIT, + PROP_AUTOFIT_LIMIT_VALUE }; @@ -383,6 +385,25 @@ 150, 100, G_PARAM_READABLE | G_PARAM_WRITABLE)); + + g_object_class_install_property(gobject_class, + PROP_AUTOFIT_LIMIT, + g_param_spec_boolean("autofit_limit", + "Limit size of image when autofitting", + NULL, + FALSE, + G_PARAM_READABLE | G_PARAM_WRITABLE)); + + g_object_class_install_property(gobject_class, + PROP_AUTOFIT_LIMIT_VALUE, + g_param_spec_uint("autofit_limit_value", + "Size limit of image when autofitting", + NULL, + 10, + 150, + 100, + G_PARAM_READABLE | G_PARAM_WRITABLE)); + signals[SIGNAL_ZOOM] = g_signal_new("zoom", @@ -550,6 +571,12 @@ case PROP_WINDOW_LIMIT_VALUE: pr->window_limit_size = g_value_get_uint(value); break; + case PROP_AUTOFIT_LIMIT: + pr->autofit_limit = g_value_get_boolean(value); + break; + case PROP_AUTOFIT_LIMIT_VALUE: + pr->autofit_limit_size = g_value_get_uint(value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; @@ -610,6 +637,12 @@ case PROP_WINDOW_LIMIT_VALUE: g_value_set_uint(value, pr->window_limit_size); break; + case PROP_AUTOFIT_LIMIT: + g_value_set_boolean(value, pr->autofit_limit); + break; + case PROP_AUTOFIT_LIMIT_VALUE: + g_value_set_uint(value, pr->autofit_limit_size); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; @@ -2630,6 +2663,13 @@ h = h * scale + 0.5; if (h > max_h) h = max_h; } + + if (pr->autofit_limit) + { + w = w * pr->autofit_limit_size / 100; + h = h * pr->autofit_limit_size / 100; + } + if (w < 1) w = 1; if (h < 1) h = 1; } diff -r fa0e05f985c3 -r ad78ad18523a src/pixbuf-renderer.h --- a/src/pixbuf-renderer.h Sat Mar 29 10:38:15 2008 +0000 +++ b/src/pixbuf-renderer.h Sat Mar 29 14:59:14 2008 +0000 @@ -86,6 +86,10 @@ gboolean window_limit; gint window_limit_size; + gboolean autofit_limit; + gint autofit_limit_size; + + gint tile_cache_max; /* max mb to use for offscreen buffer */ /*< private >*/ diff -r fa0e05f985c3 -r ad78ad18523a src/preferences.c --- a/src/preferences.c Sat Mar 29 10:38:15 2008 +0000 +++ b/src/preferences.c Sat Mar 29 14:59:14 2008 +0000 @@ -81,6 +81,8 @@ static gint limit_window_size_c; static gint zoom_to_fit_expands_c; static gint max_window_size_c; +static gint limit_autofit_size_c; +static gint max_autofit_size_c; static gint progressive_key_scrolling_c; static gint thumb_max_width_c; static gint thumb_max_height_c; @@ -242,6 +244,8 @@ limit_window_size = limit_window_size_c; zoom_to_fit_expands = zoom_to_fit_expands_c; max_window_size = max_window_size_c; + limit_autofit_size = limit_autofit_size_c; + max_autofit_size = max_autofit_size_c; progressive_key_scrolling = progressive_key_scrolling_c; thumb_max_width = thumb_max_width_c; thumb_max_height = thumb_max_height_c; @@ -938,6 +942,14 @@ pref_checkbox_new_int(group, _("Allow enlargement of image for zoom to fit"), zoom_to_fit_expands, &zoom_to_fit_expands_c); + hbox = pref_box_new(group, FALSE, GTK_ORIENTATION_HORIZONTAL, PREF_PAD_SPACE); + ct_button = pref_checkbox_new_int(hbox, _("Limit image size when autofitting (%):"), + limit_autofit_size, &limit_autofit_size_c); + spin = pref_spin_new_int(hbox, NULL, NULL, + 10, 150, 1, + max_autofit_size, &max_autofit_size_c); + pref_checkbox_link_sensitivity(ct_button, spin); + zoom_increment_c = zoom_increment; spin = pref_spin_new(group, _("Zoom increment:"), NULL, 0.1, 4.0, 1.0, 1, (double)zoom_increment / 10.0, diff -r fa0e05f985c3 -r ad78ad18523a src/rcfile.c --- a/src/rcfile.c Sat Mar 29 10:38:15 2008 +0000 +++ b/src/rcfile.c Sat Mar 29 14:59:14 2008 +0000 @@ -253,6 +253,8 @@ write_bool_option(f, "fit_window_to_image", fit_window); write_bool_option(f, "limit_window_size", limit_window_size); write_int_option(f, "max_window_size", max_window_size); + write_bool_option(f, "limit_autofit_size", limit_autofit_size); + write_int_option(f, "max_autofit_size", max_autofit_size); fprintf(f,"\n"); write_bool_option(f, "progressive_keyboard_scrolling", progressive_key_scrolling); @@ -491,6 +493,10 @@ "limit_window_size", value, limit_window_size); max_window_size = read_int_option(f, option, "max_window_size", value, max_window_size); + limit_autofit_size = read_bool_option(f, option, + "limit_autofit_size", value, limit_autofit_size); + max_autofit_size = read_int_option(f, option, + "max_autofit_size", value, max_autofit_size); progressive_key_scrolling = read_bool_option(f, option, "progressive_keyboard_scrolling", value, progressive_key_scrolling); scroll_reset_method = read_int_option(f, option,