gimp r26367 - in trunk: . app/core app/display



Author: mitch
Date: Mon Aug  4 20:11:35 2008
New Revision: 26367
URL: http://svn.gnome.org/viewvc/gimp?rev=26367&view=rev

Log:
2008-08-04  Michael Natterer  <mitch gimp org>

	* app/core/gimpimage.[ch] (GimpImage::size-changed-detailed):
	change double to int in signal parameters.

	Remove gimp_image_emit_size_changed_signals() and call
	gimp_viewable_size_changed() in size-changed-detailed's default
	handler.

	* app/core/gimpimageundo.[ch]
	* app/core/gimpimage-undo-push.[ch]: change double to int in
	previous-origin related code.

	* app/core/gimpimage-undo.c
	* app/core/gimpimage-scale.c
	* app/core/gimpimage-crop.c
	* app/core/gimpimage-rotate.c
	* app/core/gimpimage-resize.c: call gimp_image_size_changed_detailed()
	instead of the removed gimp_image_emit_size_changed_signals()

	* app/display/gimpdisplayshell-scroll.[ch]: remove
	gimp_display_shell_handle_size_changed_detailed() because it
	handles both scrolling and scaling and doesn't belong here.

	* app/display/gimpdisplayshell-handlers.c: moved its code back to
	gimp_display_shell_size_changed_detailed_handler() and follow the
	double -> int change above.



Modified:
   trunk/ChangeLog
   trunk/app/core/gimpimage-crop.c
   trunk/app/core/gimpimage-resize.c
   trunk/app/core/gimpimage-rotate.c
   trunk/app/core/gimpimage-scale.c
   trunk/app/core/gimpimage-undo-push.c
   trunk/app/core/gimpimage-undo-push.h
   trunk/app/core/gimpimage-undo.c
   trunk/app/core/gimpimage.c
   trunk/app/core/gimpimage.h
   trunk/app/core/gimpimageundo.c
   trunk/app/core/gimpimageundo.h
   trunk/app/display/gimpdisplayshell-handlers.c
   trunk/app/display/gimpdisplayshell-scroll.c
   trunk/app/display/gimpdisplayshell-scroll.h

Modified: trunk/app/core/gimpimage-crop.c
==============================================================================
--- trunk/app/core/gimpimage-crop.c	(original)
+++ trunk/app/core/gimpimage-crop.c	Mon Aug  4 20:11:35 2008
@@ -267,7 +267,7 @@
                          gimp_image_get_width  (image),
                          gimp_image_get_height (image));
 
-      gimp_image_emit_size_changed_signals (image, -x1, -y1);
+      gimp_image_size_changed_detailed (image, -x1, -y1);
 
       g_object_thaw_notify (G_OBJECT (image));
     }

Modified: trunk/app/core/gimpimage-resize.c
==============================================================================
--- trunk/app/core/gimpimage-resize.c	(original)
+++ trunk/app/core/gimpimage-resize.c	Mon Aug  4 20:11:35 2008
@@ -220,7 +220,7 @@
 
   gimp_image_undo_group_end (image);
 
-  gimp_image_emit_size_changed_signals (image, offset_x, offset_y);
+  gimp_image_size_changed_detailed (image, offset_x, offset_y);
 
   g_object_thaw_notify (G_OBJECT (image));
 

Modified: trunk/app/core/gimpimage-rotate.c
==============================================================================
--- trunk/app/core/gimpimage-rotate.c	(original)
+++ trunk/app/core/gimpimage-rotate.c	Mon Aug  4 20:11:35 2008
@@ -208,7 +208,7 @@
   gimp_image_undo_group_end (image);
 
   if (size_changed)
-    gimp_image_emit_size_changed_signals (image, -offset_x, -offset_y);
+    gimp_image_size_changed_detailed (image, -offset_x, -offset_y);
 
   g_object_thaw_notify (G_OBJECT (image));
 

Modified: trunk/app/core/gimpimage-scale.c
==============================================================================
--- trunk/app/core/gimpimage-scale.c	(original)
+++ trunk/app/core/gimpimage-scale.c	Mon Aug  4 20:11:35 2008
@@ -212,7 +212,7 @@
 
   g_object_unref (sub_progress);
 
-  gimp_image_emit_size_changed_signals (image, -offset_x, -offset_y);
+  gimp_image_size_changed_detailed (image, -offset_x, -offset_y);
 
   g_object_thaw_notify (G_OBJECT (image));
 

Modified: trunk/app/core/gimpimage-undo-push.c
==============================================================================
--- trunk/app/core/gimpimage-undo-push.c	(original)
+++ trunk/app/core/gimpimage-undo-push.c	Mon Aug  4 20:11:35 2008
@@ -81,8 +81,8 @@
 GimpUndo *
 gimp_image_undo_push_image_size (GimpImage   *image,
                                  const gchar *undo_desc,
-                                 gdouble      previous_origin_x,
-                                 gdouble      previous_origin_y)
+                                 gint         previous_origin_x,
+                                 gint         previous_origin_y)
 {
   g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
 

Modified: trunk/app/core/gimpimage-undo-push.h
==============================================================================
--- trunk/app/core/gimpimage-undo-push.h	(original)
+++ trunk/app/core/gimpimage-undo-push.h	Mon Aug  4 20:11:35 2008
@@ -26,8 +26,8 @@
                                                      const gchar   *undo_desc);
 GimpUndo * gimp_image_undo_push_image_size          (GimpImage     *image,
                                                      const gchar   *undo_desc,
-                                                     gdouble        previous_origin_x,
-                                                     gdouble        previous_origin_y);
+                                                     gint           previous_origin_x,
+                                                     gint           previous_origin_y);
 GimpUndo * gimp_image_undo_push_image_resolution    (GimpImage     *image,
                                                      const gchar   *undo_desc);
 GimpUndo * gimp_image_undo_push_image_grid          (GimpImage     *image,

Modified: trunk/app/core/gimpimage-undo.c
==============================================================================
--- trunk/app/core/gimpimage-undo.c	(original)
+++ trunk/app/core/gimpimage-undo.c	Mon Aug  4 20:11:35 2008
@@ -381,9 +381,10 @@
         gimp_image_mode_changed (image);
 
       if (accum.size_changed)
-        gimp_image_emit_size_changed_signals (image,
-                                              accum.previous_origin_x,
-                                              accum.previous_origin_y);
+        gimp_image_size_changed_detailed (image,
+                                          accum.previous_origin_x,
+                                          accum.previous_origin_y);
+
       if (accum.resolution_changed)
         gimp_image_resolution_changed (image);
 

Modified: trunk/app/core/gimpimage.c
==============================================================================
--- trunk/app/core/gimpimage.c	(original)
+++ trunk/app/core/gimpimage.c	Mon Aug  4 20:11:35 2008
@@ -148,6 +148,10 @@
 static void     gimp_image_size_changed          (GimpViewable   *viewable);
 static gchar  * gimp_image_get_description       (GimpViewable   *viewable,
                                                   gchar         **tooltip);
+static void     gimp_image_real_size_changed_detailed
+                                                 (GimpImage      *image,
+                                                  gint            previous_origin_x,
+                                                  gint            previous_origin_y);
 static void     gimp_image_real_colormap_changed (GimpImage      *image,
                                                   gint            color_index);
 static void     gimp_image_real_flush            (GimpImage      *image,
@@ -321,10 +325,10 @@
                   G_SIGNAL_RUN_FIRST,
                   G_STRUCT_OFFSET (GimpImageClass, size_changed_detailed),
                   NULL, NULL,
-                  gimp_marshal_VOID__DOUBLE_DOUBLE,
+                  gimp_marshal_VOID__INT_INT,
                   G_TYPE_NONE, 2,
-                  G_TYPE_DOUBLE,
-                  G_TYPE_DOUBLE);
+                  G_TYPE_INT,
+                  G_TYPE_INT);
 
   gimp_image_signals[UNIT_CHANGED] =
     g_signal_new ("unit-changed",
@@ -516,7 +520,11 @@
   klass->component_visibility_changed = NULL;
   klass->component_active_changed     = NULL;
   klass->mask_changed                 = NULL;
-  klass->size_changed_detailed        = NULL;
+  klass->resolution_changed           = NULL;
+  klass->size_changed_detailed        = gimp_image_real_size_changed_detailed;
+  klass->unit_changed                 = NULL;
+  klass->quick_mask_changed           = NULL;
+  klass->selection_control            = NULL;
 
   klass->clean                        = NULL;
   klass->dirty                        = NULL;
@@ -1112,6 +1120,14 @@
 }
 
 static void
+gimp_image_real_size_changed_detailed (GimpImage *image,
+                                       gint       previous_origin_x,
+                                       gint       previous_origin_y)
+{
+  gimp_viewable_size_changed (GIMP_VIEWABLE (image));
+}
+
+static void
 gimp_image_real_colormap_changed (GimpImage *image,
                                   gint       color_index)
 {
@@ -1483,7 +1499,7 @@
       image->yresolution = yresolution;
 
       gimp_image_resolution_changed (image);
-      gimp_image_emit_size_changed_signals (image, 0.0, 0.0);
+      gimp_image_size_changed_detailed (image, 0, 0);
     }
 }
 
@@ -1816,11 +1832,12 @@
  * position of the image in the display shell on various operations,
  * e.g. crop.
  *
+ * This function makes sure that GimpViewable::size-changed is also emitted.
  **/
 void
 gimp_image_size_changed_detailed (GimpImage *image,
-                                  gdouble    previous_origin_x,
-                                  gdouble    previous_origin_y)
+                                  gint       previous_origin_x,
+                                  gint       previous_origin_y)
 {
   g_return_if_fail (GIMP_IS_IMAGE (image));
 
@@ -1857,21 +1874,6 @@
   g_signal_emit (image, gimp_image_signals[QUICK_MASK_CHANGED], 0);
 }
 
-void
-gimp_image_emit_size_changed_signals (GimpImage *image,
-                                      gdouble    previous_origin_x,
-                                      gdouble    previous_origin_y)
-{
-  /* Emit GimpViewable::size-changed */
-  gimp_viewable_size_changed (GIMP_VIEWABLE (image));
-
-  /* Then emit basically the same signal but with more
-   * details. Clients can choose what signal of these two to listen to
-   * depending on how much info they need.
-   */
-  gimp_image_size_changed_detailed (image, previous_origin_x, previous_origin_y);
-}
-
 
 /*  undo  */
 

Modified: trunk/app/core/gimpimage.h
==============================================================================
--- trunk/app/core/gimpimage.h	(original)
+++ trunk/app/core/gimpimage.h	Mon Aug  4 20:11:35 2008
@@ -191,6 +191,9 @@
                                          GimpChannelType       channel);
   void (* mask_changed)                 (GimpImage            *image);
   void (* resolution_changed)           (GimpImage            *image);
+  void (* size_changed_detailed)        (GimpImage            *image,
+                                         gint                  previous_origin_x,
+                                         gint                  previous_origin_y);
   void (* unit_changed)                 (GimpImage            *image);
   void (* quick_mask_changed)           (GimpImage            *image);
   void (* selection_control)            (GimpImage            *image,
@@ -216,9 +219,6 @@
                                          GimpSamplePoint      *sample_point);
   void (* sample_point_removed)         (GimpImage            *image,
                                          GimpSamplePoint      *sample_point);
-  void (* size_changed_detailed)        (GimpImage            *image,
-                                         gdouble               previous_origin_x,
-                                         gdouble               previous_origin_y);
   void (* parasite_attached)            (GimpImage            *image,
                                          const gchar          *name);
   void (* parasite_detached)            (GimpImage            *image,
@@ -322,19 +322,14 @@
                                                   GimpSamplePoint    *sample_point);
 void            gimp_image_sample_point_removed  (GimpImage          *image,
                                                   GimpSamplePoint    *sample_point);
-void            gimp_image_size_changed_detailed (GimpImage          *image,
-                                                  gdouble             previous_origin_x,
-                                                  gdouble             previous_origin_y);
 void            gimp_image_colormap_changed      (GimpImage          *image,
                                                   gint                col);
 void            gimp_image_selection_control     (GimpImage          *image,
                                                   GimpSelectionControl  control);
 void            gimp_image_quick_mask_changed    (GimpImage          *image);
-void            gimp_image_emit_size_changed_signals
-                                                 (GimpImage          *image,
-                                                  gdouble             previous_origin_x,
-                                                  gdouble             previous_origin_y);
-
+void            gimp_image_size_changed_detailed (GimpImage          *image,
+                                                  gint                previous_origin_x,
+                                                  gint                previous_origin_y);
 
 
 /*  undo  */

Modified: trunk/app/core/gimpimageundo.c
==============================================================================
--- trunk/app/core/gimpimageundo.c	(original)
+++ trunk/app/core/gimpimageundo.c	Mon Aug  4 20:11:35 2008
@@ -92,18 +92,20 @@
   undo_class->free               = gimp_image_undo_free;
 
   g_object_class_install_property (object_class, PROP_PREVIOUS_ORIGIN_X,
-                                   g_param_spec_double ("previous-origin-x", NULL, NULL,
-                                                        -G_MAXDOUBLE,
-                                                        G_MAXDOUBLE,
-                                                        0.0,
-                                                        GIMP_PARAM_READWRITE));
+                                   g_param_spec_int ("previous-origin-x",
+                                                     NULL, NULL,
+                                                     -GIMP_MAX_IMAGE_SIZE,
+                                                     GIMP_MAX_IMAGE_SIZE,
+                                                     0,
+                                                     GIMP_PARAM_READWRITE));
 
   g_object_class_install_property (object_class, PROP_PREVIOUS_ORIGIN_Y,
-                                   g_param_spec_double ("previous-origin-y", NULL, NULL,
-                                                        -G_MAXDOUBLE,
-                                                        G_MAXDOUBLE,
-                                                        0.0,
-                                                        GIMP_PARAM_READWRITE));
+                                   g_param_spec_int ("previous-origin-y",
+                                                     NULL, NULL,
+                                                     -GIMP_MAX_IMAGE_SIZE,
+                                                     GIMP_MAX_IMAGE_SIZE,
+                                                     0,
+                                                     GIMP_PARAM_READWRITE));
 
   g_object_class_install_property (object_class, PROP_GRID,
                                    g_param_spec_object ("grid", NULL, NULL,
@@ -193,10 +195,10 @@
   switch (property_id)
     {
     case PROP_PREVIOUS_ORIGIN_X:
-      image_undo->previous_origin_x = g_value_get_double (value);
+      image_undo->previous_origin_x = g_value_get_int (value);
       break;
     case PROP_PREVIOUS_ORIGIN_Y:
-      image_undo->previous_origin_y = g_value_get_double (value);
+      image_undo->previous_origin_y = g_value_get_int (value);
       break;
     case PROP_GRID:
       {
@@ -227,10 +229,10 @@
   switch (property_id)
     {
     case PROP_PREVIOUS_ORIGIN_X:
-      g_value_set_double (value, image_undo->previous_origin_x);
+      g_value_set_int (value, image_undo->previous_origin_x);
       break;
     case PROP_PREVIOUS_ORIGIN_Y:
-      g_value_set_double (value, image_undo->previous_origin_y);
+      g_value_set_int (value, image_undo->previous_origin_y);
       break;
     case PROP_GRID:
       g_value_set_object (value, image_undo->grid);
@@ -293,10 +295,10 @@
 
     case GIMP_UNDO_IMAGE_SIZE:
       {
-        gint    width;
-        gint    height;
-        gdouble previous_origin_x;
-        gdouble previous_origin_y;
+        gint width;
+        gint height;
+        gint previous_origin_x;
+        gint previous_origin_y;
 
         width             = image_undo->width;
         height            = image_undo->height;

Modified: trunk/app/core/gimpimageundo.h
==============================================================================
--- trunk/app/core/gimpimageundo.h	(original)
+++ trunk/app/core/gimpimageundo.h	Mon Aug  4 20:11:35 2008
@@ -40,8 +40,8 @@
   GimpImageBaseType  base_type;
   gint               width;
   gint               height;
-  gdouble            previous_origin_x;
-  gdouble            previous_origin_y;
+  gint               previous_origin_x;
+  gint               previous_origin_y;
   gdouble            xresolution;
   gdouble            yresolution;
   GimpUnit           resolution_unit;

Modified: trunk/app/display/gimpdisplayshell-handlers.c
==============================================================================
--- trunk/app/display/gimpdisplayshell-handlers.c	(original)
+++ trunk/app/display/gimpdisplayshell-handlers.c	Mon Aug  4 20:11:35 2008
@@ -21,6 +21,7 @@
 #include <gtk/gtk.h>
 
 #include "libgimpcolor/gimpcolor.h"
+#include "libgimpmath/gimpmath.h"
 #include "libgimpwidgets/gimpwidgets.h"
 
 #include "display-types.h"
@@ -67,8 +68,8 @@
                                                              GimpDisplayShell *shell);
 static void   gimp_display_shell_size_changed_detailed_handler
                                                             (GimpImage        *image,
-                                                             gdouble           previous_origin_x,
-                                                             gdouble           previous_origin_y,
+                                                             gint              previous_origin_x,
+                                                             gint              previous_origin_y,
                                                              GimpDisplayShell *shell);
 static void   gimp_display_shell_resolution_changed_handler (GimpImage        *image,
                                                              GimpDisplayShell *shell);
@@ -481,13 +482,32 @@
 
 static void
 gimp_display_shell_size_changed_detailed_handler (GimpImage        *image,
-                                                  gdouble           previous_origin_x,
-                                                  gdouble           previous_origin_y,
+                                                  gint              previous_origin_x,
+                                                  gint              previous_origin_y,
                                                   GimpDisplayShell *shell)
 {
-  gimp_display_shell_handle_size_changed_detailed (shell,
-                                                   previous_origin_x,
-                                                   previous_origin_y);
+  if (shell->display->config->resize_windows_on_resize)
+    {
+      /* If the window is resized just center the image in it when it
+       * has change size
+       */
+      gimp_display_shell_shrink_wrap (shell, FALSE);
+      gimp_display_shell_center_image_on_next_size_allocate (shell);
+    }
+  else
+    {
+      gint scaled_previous_origin_x = SCALEX (shell, previous_origin_x);
+      gint scaled_previous_origin_y = SCALEY (shell, previous_origin_y);
+
+      /* Note that we can't use gimp_display_shell_scroll_private() here
+       * because that would expose the image twice, causing unwanted
+       * flicker.
+       */
+      gimp_display_shell_scale_by_values (shell, gimp_zoom_model_get_factor (shell->zoom),
+                                          shell->offset_x + scaled_previous_origin_x,
+                                          shell->offset_y + scaled_previous_origin_y,
+                                          FALSE);
+    }
 }
 
 static void

Modified: trunk/app/display/gimpdisplayshell-scroll.c
==============================================================================
--- trunk/app/display/gimpdisplayshell-scroll.c	(original)
+++ trunk/app/display/gimpdisplayshell-scroll.c	Mon Aug  4 20:11:35 2008
@@ -205,47 +205,6 @@
 }
 
 /**
- * gimp_display_shell_handle_size_changed_detailed:
- * @shell:
- * @previous_origin_x:
- * @previous_origin_y:
- *
- * On e.g. an image crop we want to avoid repositioning the image
- * content in the display shell if possible.
- *
- **/
-void
-gimp_display_shell_handle_size_changed_detailed (GimpDisplayShell *shell,
-                                                 gdouble           previous_origin_x,
-                                                 gdouble           previous_origin_y)
-{
-  g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
-
-  if (shell->display->config->resize_windows_on_resize)
-    {
-      /* If the window is resized just center the image in it when it
-       * has change size
-       */
-      gimp_display_shell_shrink_wrap (shell, FALSE);
-      gimp_display_shell_center_image_on_next_size_allocate (shell);
-    }
-  else
-    {
-      gint scaled_previous_origin_x = SCALEX (shell, previous_origin_x);
-      gint scaled_previous_origin_y = SCALEY (shell, previous_origin_y);
-
-      /* Note that we can't use gimp_display_shell_scroll_private() here
-       * because that would expose the image twice, causing unwanted
-       * flicker.
-       */
-      gimp_display_shell_scale_by_values (shell, gimp_zoom_model_get_factor (shell->zoom),
-                                          shell->offset_x + scaled_previous_origin_x,
-                                          shell->offset_y + scaled_previous_origin_y,
-                                          FALSE);
-    }
-}
-
-/**
  * gimp_display_shell_get_scaled_viewport:
  * @shell:
  * @x:

Modified: trunk/app/display/gimpdisplayshell-scroll.h
==============================================================================
--- trunk/app/display/gimpdisplayshell-scroll.h	(original)
+++ trunk/app/display/gimpdisplayshell-scroll.h	Mon Aug  4 20:11:35 2008
@@ -26,10 +26,6 @@
 
 void       gimp_display_shell_scroll_clamp_offsets             (GimpDisplayShell       *shell);
 
-void       gimp_display_shell_handle_size_changed_detailed     (GimpDisplayShell       *shell,
-                                                                gdouble                 previous_origin_x,
-                                                                gdouble                 previous_origin_y);
-
 void       gimp_display_shell_get_scaled_viewport              (const GimpDisplayShell *shell,
                                                                 gint                   *x,
                                                                 gint                   *y,



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]