[Xfce4-commits] <ristretto:master> Fix an error introduced with previous commit when rendering the image with RSTTO_IMAGE_VIEWER_ORIENTATION_NONE.
Stephan Arts
noreply at xfce.org
Mon Aug 8 15:04:31 CEST 2011
Updating branch refs/heads/master
to ccf4b3abcdf2abe22a9bf096ef5ffdc20abd1f5e (commit)
from 0baa638b40c5bdf3bf73c4440625022504680e4c (commit)
commit ccf4b3abcdf2abe22a9bf096ef5ffdc20abd1f5e
Author: Stephan Arts <stephan at xfce.org>
Date: Sun Aug 7 08:32:31 2011 +0200
Fix an error introduced with previous commit when rendering
the image with RSTTO_IMAGE_VIEWER_ORIENTATION_NONE.
Improve the position of the image when using set_scale
and the image passes the widget-border.
src/image_viewer.c | 20 ++++++++++++++++----
1 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/src/image_viewer.c b/src/image_viewer.c
index 97efbfb..84dc85c 100644
--- a/src/image_viewer.c
+++ b/src/image_viewer.c
@@ -961,6 +961,10 @@ rstto_image_viewer_set_scale (RsttoImageViewer *viewer, gdouble scale)
{
gdouble tmp_x, tmp_y;
GtkAdjustment *vadjustment, *hadjustment;
+ gint pixbuf_width = 0;
+ gint pixbuf_height = 0;
+ gint pixbuf_x_offset = 0;
+ gint pixbuf_y_offset = 0;
switch (viewer->priv->orientation)
{
@@ -1060,16 +1064,24 @@ rstto_image_viewer_set_scale (RsttoImageViewer *viewer, gdouble scale)
}
viewer->priv->auto_scale = FALSE;
+
+ if (viewer->priv->dst_pixbuf)
+ {
+ pixbuf_width = gdk_pixbuf_get_width(viewer->priv->dst_pixbuf);
+ pixbuf_height = gdk_pixbuf_get_height(viewer->priv->dst_pixbuf);
+ pixbuf_x_offset = ((GTK_WIDGET(viewer)->allocation.width - pixbuf_width)/2);
+ pixbuf_y_offset = ((GTK_WIDGET(viewer)->allocation.height - pixbuf_height)/2);
+ }
/*
* When zooming in or out,
* try keeping the center of the viewport in the center.
*/
- tmp_y = (gtk_adjustment_get_value(vadjustment) + (gtk_adjustment_get_page_size (vadjustment) / 2)) / viewer->priv->scale;
+ tmp_y = (gtk_adjustment_get_value(vadjustment) + (gtk_adjustment_get_page_size (vadjustment) / 2) - pixbuf_y_offset) / viewer->priv->scale;
gtk_adjustment_set_value (vadjustment, (tmp_y*scale - (gtk_adjustment_get_page_size(vadjustment)/2)));
- tmp_x = (gtk_adjustment_get_value(hadjustment) + (gtk_adjustment_get_page_size (hadjustment) / 2)) / viewer->priv->scale;
+ tmp_x = (gtk_adjustment_get_value(hadjustment) + (gtk_adjustment_get_page_size (hadjustment) / 2) - pixbuf_x_offset) / viewer->priv->scale;
gtk_adjustment_set_value (hadjustment, (tmp_x*scale - (gtk_adjustment_get_page_size(hadjustment)/2)));
}
@@ -1445,12 +1457,13 @@ cb_rstto_image_viewer_queued_repaint (RsttoImageViewer *viewer)
}
gtk_adjustment_set_upper (hadjustment, (gdouble)width*(viewer->priv->scale/viewer->priv->image_scale));
gtk_adjustment_set_upper (vadjustment, (gdouble)height*(viewer->priv->scale/viewer->priv->image_scale));
+
subpixbuf_x_offset = (gint)(gtk_adjustment_get_value (hadjustment) / relative_scale);
subpixbuf_y_offset = (gint)(gtk_adjustment_get_value (vadjustment) / relative_scale);
subpixbuf_width = (gint)((gtk_adjustment_get_page_size (hadjustment) / relative_scale) < width)?
(gtk_adjustment_get_page_size (hadjustment) / relative_scale)+1:(width);
subpixbuf_height = (gint)((gtk_adjustment_get_page_size (vadjustment) / relative_scale) < height)?
- (gtk_adjustment_get_page_size (vadjustment) / relative_scale)+1:(width);
+ (gtk_adjustment_get_page_size (vadjustment) / relative_scale)+1:(height);
break;
case RSTTO_IMAGE_VIEWER_ORIENT_180:
gtk_adjustment_set_upper (hadjustment, (gdouble)width*(viewer->priv->scale/viewer->priv->image_scale));
@@ -1554,7 +1567,6 @@ cb_rstto_image_viewer_queued_repaint (RsttoImageViewer *viewer)
viewer->priv->dst_pixbuf = NULL;
}
-
tmp_pixbuf = gdk_pixbuf_new_subpixbuf (viewer->priv->pixbuf,
subpixbuf_x_offset,
subpixbuf_y_offset,
More information about the Xfce4-commits
mailing list