[Xfce4-commits] <ristretto:master> Reduce the nr of floating-point divisions

Stephan Arts noreply at xfce.org
Mon Aug 8 15:04:16 CEST 2011


Updating branch refs/heads/master
         to c17d4a6b7b9a80876f253434213e0c4c9134ec9e (commit)
       from 3be74f9b0b2f911330724ce6563c64fa08a52222 (commit)

commit c17d4a6b7b9a80876f253434213e0c4c9134ec9e
Author: Stephan Arts <stephan at xfce.org>
Date:   Fri Jul 29 16:27:19 2011 +0200

    Reduce the nr of floating-point divisions

 src/image_viewer.c |   35 +++++++++++++++++++++++------------
 1 files changed, 23 insertions(+), 12 deletions(-)

diff --git a/src/image_viewer.c b/src/image_viewer.c
index 97888cb..3aa46a5 100644
--- a/src/image_viewer.c
+++ b/src/image_viewer.c
@@ -1125,6 +1125,15 @@ cb_rstto_image_viewer_queued_repaint (RsttoImageViewer *viewer)
     gint width, height;
     gdouble v_scale, h_scale;
 
+    /*
+     * relative_scale contains viewer->priv->scale / viewer->priv->image_scale
+     * this value is used a lot in this function, storing it once reduces 
+     * nr of floating-point divisions
+     *
+     * It is the scale converted from the original image-size to the actual size of the source pixbuf.
+     */
+    gdouble relative_scale;
+
     g_source_remove (viewer->priv->repaint.idle_id);
     viewer->priv->repaint.idle_id = -1;
     viewer->priv->repaint.refresh = FALSE;
@@ -1180,9 +1189,9 @@ cb_rstto_image_viewer_queued_repaint (RsttoImageViewer *viewer)
         else
         {
             /*
-             * if auto_scale == true, calculate the scale
+             * if auto_scale == TRUE, calculate the scale
              */
-            if (viewer->priv->auto_scale)
+            if (viewer->priv->auto_scale == TRUE)
             {
                 /**
                  * Check if the image should scale to the horizontal
@@ -1203,6 +1212,8 @@ cb_rstto_image_viewer_queued_repaint (RsttoImageViewer *viewer)
             }
         }
 
+        relative_scale = viewer->priv->scale / viewer->priv->image_scale;
+
         /*
          *
          *
@@ -1211,14 +1222,14 @@ cb_rstto_image_viewer_queued_repaint (RsttoImageViewer *viewer)
                 gtk_adjustment_get_value(viewer->vadjustment)) > (viewer->priv->image_height*viewer->priv->scale))
         {
             gtk_adjustment_set_value (viewer->vadjustment,
-                    (height*(viewer->priv->scale/viewer->priv->image_scale)) -
+                    (height*relative_scale) -
                     gtk_adjustment_get_page_size (viewer->vadjustment));
         }
         if ((gtk_adjustment_get_page_size (viewer->hadjustment) + 
                 gtk_adjustment_get_value(viewer->hadjustment)) > (viewer->priv->image_width*viewer->priv->scale))
         {
             gtk_adjustment_set_value (viewer->hadjustment,
-                    (width*(viewer->priv->scale/viewer->priv->image_scale)) - 
+                    (width*relative_scale) - 
                     gtk_adjustment_get_page_size (viewer->hadjustment));
         }
 
@@ -1226,13 +1237,13 @@ cb_rstto_image_viewer_queued_repaint (RsttoImageViewer *viewer)
         {
 
             GdkPixbuf *tmp_pixbuf = gdk_pixbuf_new_subpixbuf (viewer->priv->pixbuf,
-                    (gint)(gtk_adjustment_get_value (viewer->hadjustment) / (viewer->priv->scale/viewer->priv->image_scale)),
-                    (gint)(gtk_adjustment_get_value (viewer->vadjustment) / (viewer->priv->scale/viewer->priv->image_scale)),
-                    (gint)((gtk_adjustment_get_page_size (viewer->hadjustment) / (viewer->priv->scale/viewer->priv->image_scale)) < width)?
-                           (gtk_adjustment_get_page_size (viewer->hadjustment) / (viewer->priv->scale/viewer->priv->image_scale)):
+                    (gint)(gtk_adjustment_get_value (viewer->hadjustment) / relative_scale),
+                    (gint)(gtk_adjustment_get_value (viewer->vadjustment) / relative_scale),
+                    (gint)((gtk_adjustment_get_page_size (viewer->hadjustment) / relative_scale) < width)?
+                           (gtk_adjustment_get_page_size (viewer->hadjustment) / relative_scale):
                            (width),
-                    (gint)((gtk_adjustment_get_page_size (viewer->vadjustment) / (viewer->priv->scale/viewer->priv->image_scale)) < height)?
-                           (gtk_adjustment_get_page_size (viewer->vadjustment) / (viewer->priv->scale/viewer->priv->image_scale)):
+                    (gint)((gtk_adjustment_get_page_size (viewer->vadjustment) / relative_scale) < height)?
+                           (gtk_adjustment_get_page_size (viewer->vadjustment) / relative_scale):
                            (height));
 
             if (viewer->priv->dst_pixbuf)
@@ -1242,8 +1253,8 @@ cb_rstto_image_viewer_queued_repaint (RsttoImageViewer *viewer)
             }
 
             viewer->priv->dst_pixbuf = gdk_pixbuf_scale_simple (tmp_pixbuf,
-                                       (gint)(gdk_pixbuf_get_width(tmp_pixbuf)*(viewer->priv->scale/viewer->priv->image_scale)),
-                                       (gint)(gdk_pixbuf_get_height(tmp_pixbuf)*(viewer->priv->scale/viewer->priv->image_scale)),
+                                       (gint)(gdk_pixbuf_get_width(tmp_pixbuf) * relative_scale),
+                                       (gint)(gdk_pixbuf_get_height(tmp_pixbuf) * relative_scale),
                                        GDK_INTERP_BILINEAR);
 
             g_object_unref (tmp_pixbuf);


More information about the Xfce4-commits mailing list