[Xfce4-commits] <ristretto:master> Fix image-rotation buttons on main-window

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


Updating branch refs/heads/master
         to c846c7b1f8defe410efe8b09c3055ed7465b746f (commit)
       from ccf4b3abcdf2abe22a9bf096ef5ffdc20abd1f5e (commit)

commit c846c7b1f8defe410efe8b09c3055ed7465b746f
Author: Stephan Arts <stephan at xfce.org>
Date:   Sun Aug 7 09:15:02 2011 +0200

    Fix image-rotation buttons on main-window

 src/image_viewer.c |   48 ++++++++++++++++++-------------
 src/image_viewer.h |   39 +++++++++++++++++++------
 src/main_window.c  |   78 +++++++++++++++++++++------------------------------
 3 files changed, 89 insertions(+), 76 deletions(-)

diff --git a/src/image_viewer.c b/src/image_viewer.c
index 84dc85c..d41d465 100644
--- a/src/image_viewer.c
+++ b/src/image_viewer.c
@@ -960,27 +960,11 @@ void
 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)
-    {
-        case RSTTO_IMAGE_VIEWER_ORIENT_NONE:
-        case RSTTO_IMAGE_VIEWER_ORIENT_180:
-            hadjustment = viewer->hadjustment;
-            vadjustment = viewer->vadjustment;
-            break;
-        case RSTTO_IMAGE_VIEWER_ORIENT_270:
-        case RSTTO_IMAGE_VIEWER_ORIENT_90:
-            hadjustment = viewer->vadjustment;
-            vadjustment = viewer->hadjustment;
-            break;
-    }
-
-
     if (scale == 0)
     {
         viewer->priv->auto_scale = TRUE;
@@ -1077,12 +1061,14 @@ rstto_image_viewer_set_scale (RsttoImageViewer *viewer, gdouble scale)
          * 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) - pixbuf_y_offset) / viewer->priv->scale;
-        gtk_adjustment_set_value (vadjustment, (tmp_y*scale - (gtk_adjustment_get_page_size(vadjustment)/2)));
+        tmp_y = (gtk_adjustment_get_value(viewer->vadjustment) + 
+                        (gtk_adjustment_get_page_size (viewer->vadjustment) / 2) - pixbuf_y_offset) / viewer->priv->scale;
+        gtk_adjustment_set_value (viewer->vadjustment, (tmp_y*scale - (gtk_adjustment_get_page_size(viewer->vadjustment)/2)));
 
 
-        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)));
+        tmp_x = (gtk_adjustment_get_value(viewer->hadjustment) +
+                        (gtk_adjustment_get_page_size (viewer->hadjustment) / 2) - pixbuf_x_offset) / viewer->priv->scale;
+        gtk_adjustment_set_value (viewer->hadjustment, (tmp_x*scale - (gtk_adjustment_get_page_size(viewer->hadjustment)/2)));
 
     }
 
@@ -1111,6 +1097,28 @@ rstto_image_viewer_get_motion_state (RsttoImageViewer *viewer)
     return viewer->priv->motion.state;
 }
 
+/*
+ * rstto_image_viewer_set_orientation:
+ * @viewer:
+ * @orientation:
+ *
+ * Set orientation for the image shown here.
+ */
+void
+rstto_image_viewer_set_orientation (
+        RsttoImageViewer *viewer, 
+        RsttoImageViewerOrientation orientation)
+{
+    viewer->priv->orientation = orientation;
+    rstto_image_viewer_queued_repaint (viewer, TRUE);
+}
+
+RsttoImageViewerOrientation
+rstto_image_viewer_get_orientation (RsttoImageViewer *viewer)
+{
+    return viewer->priv->orientation;
+}
+
 
 /************************/
 /** CALLBACK FUNCTIONS **/
diff --git a/src/image_viewer.h b/src/image_viewer.h
index 533d9e2..a7298b6 100644
--- a/src/image_viewer.h
+++ b/src/image_viewer.h
@@ -73,16 +73,35 @@ struct _RsttoImageViewerClass
           GtkAdjustment     *vadjustment);
 };
 
-GType      rstto_image_viewer_get_type();
-
-GtkWidget *rstto_image_viewer_new ();
-void       rstto_image_viewer_set_file (RsttoImageViewer *viewer,
-                                        GFile *file,
-                                        gdouble scale,
-                                        RsttoImageViewerOrientation orientation);
-
-void       rstto_image_viewer_set_scale (RsttoImageViewer *viewer, gdouble scale);
-gdouble    rstto_image_viewer_get_scale (RsttoImageViewer *viewer);
+GType
+rstto_image_viewer_get_type();
+
+GtkWidget *
+rstto_image_viewer_new ();
+
+void
+rstto_image_viewer_set_file (
+        RsttoImageViewer *viewer,
+        GFile *file,
+        gdouble scale,
+        RsttoImageViewerOrientation orientation);
+
+void
+rstto_image_viewer_set_scale (
+        RsttoImageViewer *viewer,
+        gdouble scale);
+
+gdouble
+rstto_image_viewer_get_scale (
+        RsttoImageViewer *viewer);
+
+void
+rstto_image_viewer_set_orientation (
+        RsttoImageViewer *viewer, 
+        RsttoImageViewerOrientation orientation);
+
+RsttoImageViewerOrientation
+rstto_image_viewer_get_orientation (RsttoImageViewer *viewer);
 
 G_END_DECLS
 
diff --git a/src/main_window.c b/src/main_window.c
index 2f32fd0..6481081 100644
--- a/src/main_window.c
+++ b/src/main_window.c
@@ -824,7 +824,7 @@ rstto_main_window_image_list_iter_changed (RsttoMainWindow *window)
             file_info = g_file_query_info (file, "standard::content-type", 0, NULL, NULL);
             content_type  = g_file_info_get_content_type (file_info);
 
-            rstto_image_viewer_set_file (RSTTO_IMAGE_VIEWER(window->priv->image_viewer), file, -1, RSTTO_IMAGE_VIEWER_ORIENT_270);
+            rstto_image_viewer_set_file (RSTTO_IMAGE_VIEWER(window->priv->image_viewer), file, -1, RSTTO_IMAGE_VIEWER_ORIENT_NONE);
 
             app_list = g_app_info_get_all_for_type (content_type);
 
@@ -865,7 +865,7 @@ rstto_main_window_image_list_iter_changed (RsttoMainWindow *window)
             gtk_menu_shell_append (GTK_MENU_SHELL (open_with_menu), menu_item);
             gtk_widget_set_sensitive (menu_item, FALSE);
 
-            rstto_image_viewer_set_file (RSTTO_IMAGE_VIEWER(window->priv->image_viewer), NULL, -1, RSTTO_IMAGE_VIEWER_ORIENT_270);
+            rstto_image_viewer_set_file (RSTTO_IMAGE_VIEWER(window->priv->image_viewer), NULL, -1, RSTTO_IMAGE_VIEWER_ORIENT_NONE);
 
 
             menu_item = gtk_image_menu_item_new_with_label (_("Empty"));
@@ -1840,29 +1840,22 @@ cb_rstto_main_window_zoom_out (GtkWidget *widget, RsttoMainWindow *window)
 static void
 cb_rstto_main_window_rotate_cw (GtkWidget *widget, RsttoMainWindow *window)
 {
-    RsttoImage *image = NULL;
-
-    if (window->priv->iter)
-        image = rstto_image_list_iter_get_image (window->priv->iter);
-
-    if (image)
+    RsttoImageViewer *viewer = RSTTO_IMAGE_VIEWER(window->priv->image_viewer);
+    switch (rstto_image_viewer_get_orientation (viewer))
     {
-        switch (rstto_image_get_orientation (image))
-        {
-            default:
-            case RSTTO_IMAGE_ORIENT_NONE:
-                rstto_image_set_orientation (image, RSTTO_IMAGE_ORIENT_90);
-                break;
-            case RSTTO_IMAGE_ORIENT_90:
-                rstto_image_set_orientation (image, RSTTO_IMAGE_ORIENT_180);
-                break;
-            case RSTTO_IMAGE_ORIENT_180:
-                rstto_image_set_orientation (image, RSTTO_IMAGE_ORIENT_270);
-                break;
-            case RSTTO_IMAGE_ORIENT_270:
-                rstto_image_set_orientation (image, RSTTO_IMAGE_ORIENT_NONE);
-                break;
-        }
+        default:
+        case RSTTO_IMAGE_VIEWER_ORIENT_NONE:
+            rstto_image_viewer_set_orientation (viewer, RSTTO_IMAGE_VIEWER_ORIENT_90);
+            break;
+        case RSTTO_IMAGE_VIEWER_ORIENT_90:
+            rstto_image_viewer_set_orientation (viewer, RSTTO_IMAGE_VIEWER_ORIENT_180);
+            break;
+        case RSTTO_IMAGE_VIEWER_ORIENT_180:
+            rstto_image_viewer_set_orientation (viewer, RSTTO_IMAGE_VIEWER_ORIENT_270);
+            break;
+        case RSTTO_IMAGE_VIEWER_ORIENT_270:
+            rstto_image_viewer_set_orientation (viewer, RSTTO_IMAGE_VIEWER_ORIENT_NONE);
+            break;
     }
 }
 
@@ -1876,29 +1869,22 @@ cb_rstto_main_window_rotate_cw (GtkWidget *widget, RsttoMainWindow *window)
 static void
 cb_rstto_main_window_rotate_ccw (GtkWidget *widget, RsttoMainWindow *window)
 {
-    RsttoImage *image = NULL;
-
-    if (window->priv->iter)
-        image = rstto_image_list_iter_get_image (window->priv->iter);
-
-    if (image)
+    RsttoImageViewer *viewer = RSTTO_IMAGE_VIEWER(window->priv->image_viewer);
+    switch (rstto_image_viewer_get_orientation (viewer))
     {
-        switch (rstto_image_get_orientation (image))
-        {
-            default:
-            case RSTTO_IMAGE_ORIENT_NONE:
-                rstto_image_set_orientation (image, RSTTO_IMAGE_ORIENT_270);
-                break;
-            case RSTTO_IMAGE_ORIENT_90:
-                rstto_image_set_orientation (image, RSTTO_IMAGE_ORIENT_NONE);
-                break;
-            case RSTTO_IMAGE_ORIENT_180:
-                rstto_image_set_orientation (image, RSTTO_IMAGE_ORIENT_90);
-                break;
-            case RSTTO_IMAGE_ORIENT_270:
-                rstto_image_set_orientation (image, RSTTO_IMAGE_ORIENT_180);
-                break;
-        }
+        default:
+        case RSTTO_IMAGE_VIEWER_ORIENT_NONE:
+            rstto_image_viewer_set_orientation (viewer, RSTTO_IMAGE_VIEWER_ORIENT_270);
+            break;
+        case RSTTO_IMAGE_VIEWER_ORIENT_90:
+            rstto_image_viewer_set_orientation (viewer, RSTTO_IMAGE_VIEWER_ORIENT_NONE);
+            break;
+        case RSTTO_IMAGE_VIEWER_ORIENT_180:
+            rstto_image_viewer_set_orientation (viewer, RSTTO_IMAGE_VIEWER_ORIENT_90);
+            break;
+        case RSTTO_IMAGE_VIEWER_ORIENT_270:
+            rstto_image_viewer_set_orientation (viewer, RSTTO_IMAGE_VIEWER_ORIENT_180);
+            break;
     }
 }
 


More information about the Xfce4-commits mailing list