[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