[Xfce4-commits] <ristretto:ristretto-0.2> Add some rounding fixes and a debug statement
Stephan Arts
noreply at xfce.org
Sun Oct 23 19:14:11 CEST 2011
Updating branch refs/heads/ristretto-0.2
to df2556f3502eec348a75adac49357fec3adabcaa (commit)
from 2097bf66d16136ba67396d489aae3e2a6189bea8 (commit)
commit df2556f3502eec348a75adac49357fec3adabcaa
Author: Stephan Arts <stephan at xfce.org>
Date: Sun Oct 23 08:12:13 2011 +0200
Add some rounding fixes and a debug statement
Conflicts:
src/image_viewer.c
src/image_viewer.c | 72 ++++++++++++++++++++++++++++++++++-----------------
1 files changed, 48 insertions(+), 24 deletions(-)
diff --git a/src/image_viewer.c b/src/image_viewer.c
index 678fc2b..286c61c 100644
--- a/src/image_viewer.c
+++ b/src/image_viewer.c
@@ -22,8 +22,10 @@
#include <string.h>
#include <gio/gio.h>
#include <libexif/exif-data.h>
+#include <math.h>
#include "file.h"
+
#include "image_viewer.h"
#include "settings.h"
#include "marshal.h"
@@ -1615,32 +1617,46 @@ cb_rstto_image_viewer_queued_repaint (RsttoImageViewer *viewer)
{
case RSTTO_IMAGE_VIEWER_ORIENT_NONE:
if ((gtk_adjustment_get_page_size (vadjustment) +
- gtk_adjustment_get_value(vadjustment)) > (viewer->priv->image_height*viewer->priv->scale))
+ gtk_adjustment_get_value(vadjustment)) > floor(viewer->priv->image_height*viewer->priv->scale))
{
gtk_adjustment_set_value (vadjustment,
(height*relative_scale) -
gtk_adjustment_get_page_size (vadjustment));
}
if ((gtk_adjustment_get_page_size (hadjustment) +
- gtk_adjustment_get_value(hadjustment)) > (viewer->priv->image_width*viewer->priv->scale))
+ gtk_adjustment_get_value(hadjustment)) > floor(viewer->priv->image_width*viewer->priv->scale))
{
gtk_adjustment_set_value (hadjustment,
(width*relative_scale) -
gtk_adjustment_get_page_size (hadjustment));
}
- 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));
+ gtk_adjustment_set_upper (hadjustment, floor((gdouble)width*(viewer->priv->scale/viewer->priv->image_scale)));
+ gtk_adjustment_set_upper (vadjustment, floor((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_x_offset = (gint)floor(gtk_adjustment_get_value (hadjustment) / relative_scale);
+ subpixbuf_y_offset = (gint)floor(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);
+ ceil(gtk_adjustment_get_page_size (hadjustment) / relative_scale):(width);
subpixbuf_height = (gint)((gtk_adjustment_get_page_size (vadjustment) / relative_scale) < height)?
- (gtk_adjustment_get_page_size (vadjustment) / relative_scale)+1:(height);
+ ceil(gtk_adjustment_get_page_size (vadjustment) / relative_scale):(height);
break;
case RSTTO_IMAGE_VIEWER_ORIENT_180:
- 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));
+ if ((gtk_adjustment_get_page_size (vadjustment) +
+ gtk_adjustment_get_value(vadjustment)) > floor(viewer->priv->image_height*viewer->priv->scale))
+ {
+ gtk_adjustment_set_value (vadjustment,
+ (height*relative_scale) -
+ gtk_adjustment_get_page_size (vadjustment));
+ }
+ if ((gtk_adjustment_get_page_size (hadjustment) +
+ gtk_adjustment_get_value(hadjustment)) > floor(viewer->priv->image_width*viewer->priv->scale))
+ {
+ gtk_adjustment_set_value (hadjustment,
+ (width*relative_scale) -
+ gtk_adjustment_get_page_size (hadjustment));
+ }
+ gtk_adjustment_set_upper (hadjustment, floor((gdouble)width*(viewer->priv->scale/viewer->priv->image_scale)));
+ gtk_adjustment_set_upper (vadjustment, floor((gdouble)height*(viewer->priv->scale/viewer->priv->image_scale)));
subpixbuf_x_offset = (gint)((gtk_adjustment_get_upper(hadjustment) -
gtk_adjustment_get_page_size(hadjustment) -
gtk_adjustment_get_value (hadjustment)) / relative_scale);
@@ -1648,23 +1664,23 @@ cb_rstto_image_viewer_queued_repaint (RsttoImageViewer *viewer)
gtk_adjustment_get_page_size(vadjustment) -
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);
+ ceil(gtk_adjustment_get_page_size (hadjustment) / relative_scale):(width);
subpixbuf_height = (gint)((gtk_adjustment_get_page_size (vadjustment) / relative_scale) < height)?
- (gtk_adjustment_get_page_size (vadjustment) / relative_scale)+1:(height);
+ ceil(gtk_adjustment_get_page_size (vadjustment) / relative_scale):(height);
break;
case RSTTO_IMAGE_VIEWER_ORIENT_270:
- 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));
+ gtk_adjustment_set_upper (hadjustment, floor((gdouble)width*(viewer->priv->scale/viewer->priv->image_scale)));
+ gtk_adjustment_set_upper (vadjustment, floor((gdouble)height*(viewer->priv->scale/viewer->priv->image_scale)));
if ((gtk_adjustment_get_page_size (hadjustment) +
- gtk_adjustment_get_value(hadjustment)) > (viewer->priv->image_width*viewer->priv->scale))
+ gtk_adjustment_get_value(hadjustment)) > floor(viewer->priv->image_width*viewer->priv->scale))
{
gtk_adjustment_set_value (hadjustment,
(width*relative_scale) -
gtk_adjustment_get_page_size (vadjustment));
}
if ((gtk_adjustment_get_page_size (vadjustment) +
- gtk_adjustment_get_value(vadjustment)) > (viewer->priv->image_height*viewer->priv->scale))
+ gtk_adjustment_get_value(vadjustment)) > floor(viewer->priv->image_height*viewer->priv->scale))
{
gtk_adjustment_set_value (vadjustment,
(height*relative_scale) -
@@ -1676,23 +1692,23 @@ cb_rstto_image_viewer_queued_repaint (RsttoImageViewer *viewer)
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);
+ ceil(gtk_adjustment_get_page_size (hadjustment) / relative_scale):(width);
subpixbuf_height = (gint)((gtk_adjustment_get_page_size (vadjustment) / relative_scale) < height)?
- (gtk_adjustment_get_page_size (vadjustment) / relative_scale)+1:(height);
+ ceil(gtk_adjustment_get_page_size (vadjustment) / relative_scale):(height);
break;
case RSTTO_IMAGE_VIEWER_ORIENT_90:
- 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));
+ gtk_adjustment_set_upper (hadjustment, floor((gdouble)width*(viewer->priv->scale/viewer->priv->image_scale)));
+ gtk_adjustment_set_upper (vadjustment, floor((gdouble)height*(viewer->priv->scale/viewer->priv->image_scale)));
if ((gtk_adjustment_get_page_size (hadjustment) +
- gtk_adjustment_get_value(hadjustment)) > (viewer->priv->image_width*viewer->priv->scale))
+ gtk_adjustment_get_value(hadjustment)) > floor(viewer->priv->image_width*viewer->priv->scale))
{
gtk_adjustment_set_value (hadjustment,
(width*relative_scale) -
gtk_adjustment_get_page_size (vadjustment));
}
if ((gtk_adjustment_get_page_size (vadjustment) +
- gtk_adjustment_get_value(vadjustment)) > (viewer->priv->image_height*viewer->priv->scale))
+ gtk_adjustment_get_value(vadjustment)) > floor(viewer->priv->image_height*viewer->priv->scale))
{
gtk_adjustment_set_value (vadjustment,
(height*relative_scale) -
@@ -1704,9 +1720,9 @@ cb_rstto_image_viewer_queued_repaint (RsttoImageViewer *viewer)
(gtk_adjustment_get_page_size(vadjustment) +
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);
+ ceil(gtk_adjustment_get_page_size (hadjustment) / relative_scale):(width);
subpixbuf_height = (gint)((gtk_adjustment_get_page_size (vadjustment) / relative_scale) < height)?
- (gtk_adjustment_get_page_size (vadjustment) / relative_scale)+1:(height);
+ ceil(gtk_adjustment_get_page_size (vadjustment) / relative_scale):(height);
break;
}
@@ -1773,6 +1789,14 @@ cb_rstto_image_viewer_queued_repaint (RsttoImageViewer *viewer)
g_object_unref (tmp_pixbuf);
}
+ else
+ {
+ g_warning ("TMP Pixbuf could not be created, [x:%d,y:%d,w:%d,h:%d]",
+ subpixbuf_x_offset,
+ subpixbuf_y_offset,
+ subpixbuf_width,
+ subpixbuf_height);
+ }
}
/*
More information about the Xfce4-commits
mailing list