[gimp/gimp-2-8] app: add gimp_grid_get_spacing() and gimp_grid_get_offset()



commit d2536c1f8a264cdc1f876501b19b813a0f9e449c
Author: Michael Natterer <mitch gimp org>
Date:   Wed May 21 21:25:41 2014 +0200

    app: add gimp_grid_get_spacing() and gimp_grid_get_offset()
    
    and do the rounding to integer there instead of in several places.
    
    (cherry picked from commit 5e2ded502066e7d54a120a0fb03927e41b723453)

 app/core/gimpgrid.c          |   25 +++++++++++++++++++++++++
 app/core/gimpgrid.h          |    8 ++++++++
 app/core/gimpimage-snap.c    |   37 +++++++------------------------------
 app/display/gimpcanvasgrid.c |   14 ++------------
 4 files changed, 42 insertions(+), 42 deletions(-)
---
diff --git a/app/core/gimpgrid.c b/app/core/gimpgrid.c
index 0ae08f1..b92ee8e 100644
--- a/app/core/gimpgrid.c
+++ b/app/core/gimpgrid.c
@@ -25,6 +25,7 @@
 #include <cairo.h>
 #include <glib-object.h>
 
+#include "libgimpmath/gimpmath.h"
 #include "libgimpbase/gimpbase.h"
 #include "libgimpconfig/gimpconfig.h"
 
@@ -224,6 +225,30 @@ gimp_grid_set_property (GObject      *object,
     }
 }
 
+void
+gimp_grid_get_spacing (GimpGrid *grid,
+                       gdouble  *xspacing,
+                       gdouble  *yspacing)
+{
+  g_return_if_fail (GIMP_IS_GRID (grid));
+
+  /* FIXME subpixel grid */
+  if (xspacing) *xspacing = RINT (grid->xspacing);
+  if (yspacing) *yspacing = RINT (grid->yspacing);
+}
+
+void
+gimp_grid_get_offset (GimpGrid *grid,
+                      gdouble  *xoffset,
+                      gdouble  *yoffset)
+{
+  g_return_if_fail (GIMP_IS_GRID (grid));
+
+  /* FIXME subpixel grid */
+  if (xoffset) *xoffset = RINT (grid->xoffset);
+  if (yoffset) *yoffset = RINT (grid->yoffset);
+}
+
 const gchar *
 gimp_grid_parasite_name (void)
 {
diff --git a/app/core/gimpgrid.h b/app/core/gimpgrid.h
index ae2904b..198ac48 100644
--- a/app/core/gimpgrid.h
+++ b/app/core/gimpgrid.h
@@ -58,6 +58,14 @@ struct _GimpGridClass
 
 
 GType          gimp_grid_get_type               (void) G_GNUC_CONST;
+
+void           gimp_grid_get_spacing            (GimpGrid           *grid,
+                                                 gdouble            *xspacing,
+                                                 gdouble            *yspacing);
+void           gimp_grid_get_offset             (GimpGrid           *grid,
+                                                 gdouble            *xoffset,
+                                                 gdouble            *yoffset);
+
 const gchar  * gimp_grid_parasite_name          (void) G_GNUC_CONST;
 GimpParasite * gimp_grid_to_parasite            (const GimpGrid     *grid);
 GimpGrid     * gimp_grid_from_parasite          (const GimpParasite *parasite);
diff --git a/app/core/gimpimage-snap.c b/app/core/gimpimage-snap.c
index 284d53c..f553693 100644
--- a/app/core/gimpimage-snap.c
+++ b/app/core/gimpimage-snap.c
@@ -24,6 +24,7 @@
 #include "core-types.h"
 
 #include "gimp.h"
+#include "gimpgrid.h"
 #include "gimpguide.h"
 #include "gimpimage.h"
 #include "gimpimage-grid.h"
@@ -100,16 +101,8 @@ gimp_image_snap_x (GimpImage *image,
       gdouble   xoffset;
       gdouble   i;
 
-      g_object_get (grid,
-                    "xspacing", &xspacing,
-                    "xoffset",  &xoffset,
-                    NULL);
-
-      /* FIXME subpixel grid */
-      xspacing = RINT (xspacing);
-      xoffset  = RINT (xoffset);
-
-      g_printerr ("snap: spacing = %f  offset = %f\n", xspacing, xoffset);
+      gimp_grid_get_spacing (grid, &xspacing, NULL);
+      gimp_grid_get_offset  (grid, &xoffset,  NULL);
 
       /* the snap-to-grid part could probably be rewritten */
       while (xoffset > xspacing)
@@ -193,14 +186,8 @@ gimp_image_snap_y (GimpImage *image,
       gdouble    yoffset;
       gdouble    i;
 
-      g_object_get (grid,
-                    "yspacing", &yspacing,
-                    "yoffset",  &yoffset,
-                    NULL);
-
-      /* FIXME subpixel grid */
-      yspacing = RINT (yspacing);
-      yoffset  = RINT (yoffset);
+      gimp_grid_get_spacing (grid, NULL, &yspacing);
+      gimp_grid_get_offset  (grid, NULL, &yoffset);
 
       while (yoffset > yspacing)
         yoffset -= yspacing;
@@ -305,18 +292,8 @@ gimp_image_snap_point (GimpImage *image,
       gdouble   xoffset, yoffset;
       gdouble   i;
 
-      g_object_get (grid,
-                    "xspacing", &xspacing,
-                    "yspacing", &yspacing,
-                    "xoffset",  &xoffset,
-                    "yoffset",  &yoffset,
-                    NULL);
-
-      /* FIXME subpixel grid */
-      xspacing = RINT (xspacing);
-      yspacing = RINT (yspacing);
-      xoffset  = RINT (xoffset);
-      yoffset  = RINT (yoffset);
+      gimp_grid_get_spacing (grid, &xspacing, &yspacing);
+      gimp_grid_get_offset  (grid, &xoffset,  &yoffset);
 
       while (xoffset > xspacing)
         xoffset -= xspacing;
diff --git a/app/display/gimpcanvasgrid.c b/app/display/gimpcanvasgrid.c
index 011dcb5..e82912f 100644
--- a/app/display/gimpcanvasgrid.c
+++ b/app/display/gimpcanvasgrid.c
@@ -205,18 +205,8 @@ gimp_canvas_grid_draw (GimpCanvasItem   *item,
 
 #define CROSSHAIR 2
 
-  g_object_get (private->grid,
-                "xspacing", &xspacing,
-                "yspacing", &yspacing,
-                "xoffset",  &xoffset,
-                "yoffset",  &yoffset,
-                NULL);
-
-  /* FIXME subpixel grid */
-  xspacing = RINT (xspacing);
-  yspacing = RINT (yspacing);
-  xoffset  = RINT (xoffset);
-  yoffset  = RINT (yoffset);
+  gimp_grid_get_spacing (private->grid, &xspacing, &yspacing);
+  gimp_grid_get_offset  (private->grid, &xoffset,  &yoffset);
 
   g_return_if_fail (xspacing > 0.0 &&
                     yspacing > 0.0);


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