PROP_WINDOW_LIMIT,
PROP_WINDOW_LIMIT_VALUE,
PROP_AUTOFIT_LIMIT,
- PROP_AUTOFIT_LIMIT_VALUE
+ PROP_AUTOFIT_LIMIT_VALUE,
+ PROP_ENLARGEMENT_LIMIT_VALUE
};
typedef enum {
100,
G_PARAM_READABLE | G_PARAM_WRITABLE));
+ g_object_class_install_property(gobject_class,
+ PROP_ENLARGEMENT_LIMIT_VALUE,
+ g_param_spec_uint("enlargement_limit_value",
+ "Size increase limit of image when autofitting",
+ NULL,
+ 100,
+ 999,
+ 500,
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+
signals[SIGNAL_ZOOM] =
g_signal_new("zoom",
case PROP_AUTOFIT_LIMIT_VALUE:
pr->autofit_limit_size = g_value_get_uint(value);
break;
+ case PROP_ENLARGEMENT_LIMIT_VALUE:
+ pr->enlargement_limit_size = g_value_get_uint(value);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
break;
case PROP_AUTOFIT_LIMIT_VALUE:
g_value_set_uint(value, pr->autofit_limit_size);
break;
+ case PROP_ENLARGEMENT_LIMIT_VALUE:
+ g_value_set_uint(value, pr->enlargement_limit_size);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
break;
scale = scale * factor;
}
+ if (pr->zoom_expand)
+ {
+ gdouble factor = (gdouble)pr->enlargement_limit_size / 100;
+ if (scale > factor)
+ {
+ w = w * factor / scale;
+ h = h * factor / scale;
+ scale = factor;
+ }
+ }
+
if (w < 1) w = 1;
if (h < 1) h = 1;
}