[gimp] app: move guide and sample point picking to gimpimage-pick-item.[ch]



commit 523b73ff04bd03b6a11be592c45e06ba403d6cc5
Author: Michael Natterer <mitch gimp org>
Date:   Thu Jun 22 09:43:50 2017 +0200

    app: move guide and sample point picking to gimpimage-pick-item.[ch]
    
    They are not actually items, but close enough.

 app/core/gimpimage-guides.c        |   52 ------------------
 app/core/gimpimage-guides.h        |    6 --
 app/core/gimpimage-pick-item.c     |  103 ++++++++++++++++++++++++++++++++++++
 app/core/gimpimage-pick-item.h     |   29 +++++++---
 app/core/gimpimage-sample-points.c |   48 -----------------
 app/core/gimpimage-sample-points.h |    6 --
 app/tools/gimpaligntool.c          |    5 +-
 app/tools/gimpcolortool.c          |    3 +-
 app/tools/gimpfliptool.c           |    4 +-
 app/tools/gimpmovetool.c           |    7 +--
 10 files changed, 132 insertions(+), 131 deletions(-)
---
diff --git a/app/core/gimpimage-guides.c b/app/core/gimpimage-guides.c
index f698f04..65d9b19 100644
--- a/app/core/gimpimage-guides.c
+++ b/app/core/gimpimage-guides.c
@@ -214,55 +214,3 @@ gimp_image_get_next_guide (GimpImage *image,
 
   return NULL;
 }
-
-GimpGuide *
-gimp_image_find_guide (GimpImage *image,
-                       gdouble    x,
-                       gdouble    y,
-                       gdouble    epsilon_x,
-                       gdouble    epsilon_y)
-{
-  GList     *list;
-  GimpGuide *ret     = NULL;
-  gdouble    mindist = G_MAXDOUBLE;
-
-  g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
-  g_return_val_if_fail (epsilon_x > 0 && epsilon_y > 0, NULL);
-
-  for (list = GIMP_IMAGE_GET_PRIVATE (image)->guides;
-       list;
-       list = g_list_next (list))
-    {
-      GimpGuide *guide    = list->data;
-      gint       position = gimp_guide_get_position (guide);
-      gdouble    dist;
-
-      switch (gimp_guide_get_orientation (guide))
-        {
-        case GIMP_ORIENTATION_HORIZONTAL:
-          dist = ABS (position - y);
-          if (dist < MIN (epsilon_y, mindist))
-            {
-              mindist = dist;
-              ret = guide;
-            }
-          break;
-
-        /* mindist always is in vertical resolution to make it comparable */
-        case GIMP_ORIENTATION_VERTICAL:
-          dist = ABS (position - x);
-          if (dist < MIN (epsilon_x, mindist / epsilon_y * epsilon_x))
-            {
-              mindist = dist * epsilon_y / epsilon_x;
-              ret = guide;
-            }
-          break;
-
-        default:
-          continue;
-        }
-
-    }
-
-  return ret;
-}
diff --git a/app/core/gimpimage-guides.h b/app/core/gimpimage-guides.h
index 874bbfa..89c3a55 100644
--- a/app/core/gimpimage-guides.h
+++ b/app/core/gimpimage-guides.h
@@ -50,11 +50,5 @@ GimpGuide * gimp_image_get_next_guide (GimpImage *image,
                                        guint32    id,
                                        gboolean  *guide_found);
 
-GimpGuide * gimp_image_find_guide     (GimpImage *image,
-                                       gdouble    x,
-                                       gdouble    y,
-                                       gdouble    epsilon_x,
-                                       gdouble    epsilon_y);
-
 
 #endif /* __GIMP_IMAGE_GUIDES_H__ */
diff --git a/app/core/gimpimage-pick-item.c b/app/core/gimpimage-pick-item.c
index 8a811fd..330211d 100644
--- a/app/core/gimpimage-pick-item.c
+++ b/app/core/gimpimage-pick-item.c
@@ -20,12 +20,17 @@
 #include <gdk-pixbuf/gdk-pixbuf.h>
 #include <gegl.h>
 
+#include "libgimpmath/gimpmath.h"
+
 #include "core-types.h"
 
 #include "gimpgrouplayer.h"
+#include "gimpguide.h"
 #include "gimpimage.h"
 #include "gimpimage-pick-item.h"
+#include "gimpimage-private.h"
 #include "gimppickable.h"
+#include "gimpsamplepoint.h"
 
 #include "text/gimptextlayer.h"
 
@@ -150,3 +155,101 @@ gimp_image_pick_text_layer (GimpImage *image,
 
   return NULL;
 }
+
+GimpGuide *
+gimp_image_pick_guide (GimpImage *image,
+                       gdouble    x,
+                       gdouble    y,
+                       gdouble    epsilon_x,
+                       gdouble    epsilon_y)
+{
+  GList     *list;
+  GimpGuide *ret     = NULL;
+  gdouble    mindist = G_MAXDOUBLE;
+
+  g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
+  g_return_val_if_fail (epsilon_x > 0 && epsilon_y > 0, NULL);
+
+  for (list = GIMP_IMAGE_GET_PRIVATE (image)->guides;
+       list;
+       list = g_list_next (list))
+    {
+      GimpGuide *guide    = list->data;
+      gint       position = gimp_guide_get_position (guide);
+      gdouble    dist;
+
+      switch (gimp_guide_get_orientation (guide))
+        {
+        case GIMP_ORIENTATION_HORIZONTAL:
+          dist = ABS (position - y);
+          if (dist < MIN (epsilon_y, mindist))
+            {
+              mindist = dist;
+              ret = guide;
+            }
+          break;
+
+        /* mindist always is in vertical resolution to make it comparable */
+        case GIMP_ORIENTATION_VERTICAL:
+          dist = ABS (position - x);
+          if (dist < MIN (epsilon_x, mindist / epsilon_y * epsilon_x))
+            {
+              mindist = dist * epsilon_y / epsilon_x;
+              ret = guide;
+            }
+          break;
+
+        default:
+          continue;
+        }
+
+    }
+
+  return ret;
+}
+
+GimpSamplePoint *
+gimp_image_pick_sample_point (GimpImage *image,
+                              gdouble    x,
+                              gdouble    y,
+                              gdouble    epsilon_x,
+                              gdouble    epsilon_y)
+{
+  GList           *list;
+  GimpSamplePoint *ret     = NULL;
+  gdouble          mindist = G_MAXDOUBLE;
+
+  g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
+  g_return_val_if_fail (epsilon_x > 0 && epsilon_y > 0, NULL);
+
+  if (x < 0 || x >= gimp_image_get_width  (image) ||
+      y < 0 || y >= gimp_image_get_height (image))
+    {
+      return NULL;
+    }
+
+  for (list = GIMP_IMAGE_GET_PRIVATE (image)->sample_points;
+       list;
+       list = g_list_next (list))
+    {
+      GimpSamplePoint *sample_point = list->data;
+      gint             sp_x;
+      gint             sp_y;
+      gdouble          dist;
+
+      gimp_sample_point_get_position (sample_point, &sp_x, &sp_y);
+
+      if (sp_x < 0 || sp_y < 0)
+        continue;
+
+      dist = hypot ((sp_x + 0.5) - x,
+                    (sp_y + 0.5) - y);
+      if (dist < MIN (epsilon_y, mindist))
+        {
+          mindist = dist;
+          ret = sample_point;
+        }
+    }
+
+  return ret;
+}
diff --git a/app/core/gimpimage-pick-item.h b/app/core/gimpimage-pick-item.h
index 6355898..e97fbc9 100644
--- a/app/core/gimpimage-pick-item.h
+++ b/app/core/gimpimage-pick-item.h
@@ -19,15 +19,26 @@
 #define __GIMP_IMAGE_PICK_ITEM_H__
 
 
-GimpLayer     * gimp_image_pick_layer           (GimpImage *image,
-                                                 gint       x,
-                                                 gint       y);
-GimpLayer     * gimp_image_pick_layer_by_bounds (GimpImage *image,
-                                                 gint       x,
-                                                 gint       y);
-GimpTextLayer * gimp_image_pick_text_layer      (GimpImage *image,
-                                                 gint       x,
-                                                 gint       y);
+GimpLayer       * gimp_image_pick_layer           (GimpImage *image,
+                                                   gint       x,
+                                                   gint       y);
+GimpLayer       * gimp_image_pick_layer_by_bounds (GimpImage *image,
+                                                   gint       x,
+                                                   gint       y);
+GimpTextLayer   * gimp_image_pick_text_layer      (GimpImage *image,
+                                                   gint       x,
+                                                   gint       y);
+
+GimpGuide       * gimp_image_pick_guide           (GimpImage *image,
+                                                   gdouble    x,
+                                                   gdouble    y,
+                                                   gdouble    epsilon_x,
+                                                   gdouble    epsilon_y);
+GimpSamplePoint * gimp_image_pick_sample_point    (GimpImage *image,
+                                                   gdouble    x,
+                                                   gdouble    y,
+                                                   gdouble    epsilon_x,
+                                                   gdouble    epsilon_y);
 
 
 #endif /* __GIMP_IMAGE_PICK_ITEM_H__ */
diff --git a/app/core/gimpimage-sample-points.c b/app/core/gimpimage-sample-points.c
index 608e552..ce3cedd 100644
--- a/app/core/gimpimage-sample-points.c
+++ b/app/core/gimpimage-sample-points.c
@@ -20,8 +20,6 @@
 #include <gdk-pixbuf/gdk-pixbuf.h>
 #include <gegl.h>
 
-#include "libgimpmath/gimpmath.h"
-
 #include "core-types.h"
 
 #include "gimp.h"
@@ -189,49 +187,3 @@ gimp_image_get_next_sample_point (GimpImage *image,
 
   return NULL;
 }
-
-GimpSamplePoint *
-gimp_image_find_sample_point (GimpImage *image,
-                              gdouble    x,
-                              gdouble    y,
-                              gdouble    epsilon_x,
-                              gdouble    epsilon_y)
-{
-  GList           *list;
-  GimpSamplePoint *ret     = NULL;
-  gdouble          mindist = G_MAXDOUBLE;
-
-  g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
-  g_return_val_if_fail (epsilon_x > 0 && epsilon_y > 0, NULL);
-
-  if (x < 0 || x >= gimp_image_get_width  (image) ||
-      y < 0 || y >= gimp_image_get_height (image))
-    {
-      return NULL;
-    }
-
-  for (list = GIMP_IMAGE_GET_PRIVATE (image)->sample_points;
-       list;
-       list = g_list_next (list))
-    {
-      GimpSamplePoint *sample_point = list->data;
-      gint             sp_x;
-      gint             sp_y;
-      gdouble          dist;
-
-      gimp_sample_point_get_position (sample_point, &sp_x, &sp_y);
-
-      if (sp_x < 0 || sp_y < 0)
-        continue;
-
-      dist = hypot ((sp_x + 0.5) - x,
-                    (sp_y + 0.5) - y);
-      if (dist < MIN (epsilon_y, mindist))
-        {
-          mindist = dist;
-          ret = sample_point;
-        }
-    }
-
-  return ret;
-}
diff --git a/app/core/gimpimage-sample-points.h b/app/core/gimpimage-sample-points.h
index 09d5a17..6fd7cd8 100644
--- a/app/core/gimpimage-sample-points.h
+++ b/app/core/gimpimage-sample-points.h
@@ -51,11 +51,5 @@ GimpSamplePoint * gimp_image_get_next_sample_point   (GimpImage       *image,
                                                       guint32          id,
                                                       gboolean        *sample_point_found);
 
-GimpSamplePoint * gimp_image_find_sample_point       (GimpImage       *image,
-                                                      gdouble          x,
-                                                      gdouble          y,
-                                                      gdouble          epsilon_x,
-                                                      gdouble          epsilon_y);
-
 
 #endif /* __GIMP_IMAGE_SAMPLE_POINTS_H__ */
diff --git a/app/tools/gimpaligntool.c b/app/tools/gimpaligntool.c
index c883ab3..674444d 100644
--- a/app/tools/gimpaligntool.c
+++ b/app/tools/gimpaligntool.c
@@ -32,7 +32,6 @@
 #include "core/gimpguide.h"
 #include "core/gimpimage.h"
 #include "core/gimpimage-arrange.h"
-#include "core/gimpimage-guides.h"
 #include "core/gimpimage-pick-item.h"
 #include "core/gimpimage-undo.h"
 #include "core/gimplayer.h"
@@ -292,7 +291,7 @@ gimp_align_tool_button_release (GimpTool              *tool,
           object = G_OBJECT (vectors);
         }
       else if (gimp_display_shell_get_show_guides (shell) &&
-               (guide = gimp_image_find_guide (image,
+               (guide = gimp_image_pick_guide (image,
                                                coords->x, coords->y,
                                                FUNSCALEX (shell, snap_distance),
                                                FUNSCALEY (shell, snap_distance))))
@@ -443,7 +442,7 @@ gimp_align_tool_oper_update (GimpTool         *tool,
         align_tool->function = ALIGN_TOOL_PICK_PATH;
     }
   else if (gimp_display_shell_get_show_guides (shell) &&
-           gimp_image_find_guide (image,
+           gimp_image_pick_guide (image,
                                   coords->x, coords->y,
                                   FUNSCALEX (shell, snap_distance),
                                   FUNSCALEY (shell, snap_distance)))
diff --git a/app/tools/gimpcolortool.c b/app/tools/gimpcolortool.c
index d14d57e..96a01d1 100644
--- a/app/tools/gimpcolortool.c
+++ b/app/tools/gimpcolortool.c
@@ -31,6 +31,7 @@
 #include "core/gimpdata.h"
 #include "core/gimpimage.h"
 #include "core/gimpimage-pick-color.h"
+#include "core/gimpimage-pick-item.h"
 #include "core/gimpimage-sample-points.h"
 #include "core/gimpmarshal.h"
 #include "core/gimpsamplepoint.h"
@@ -309,7 +310,7 @@ gimp_color_tool_oper_update (GimpTool         *tool,
           gint       snap_distance = display->config->snap_distance;
 
           sample_point =
-            gimp_image_find_sample_point (image,
+            gimp_image_pick_sample_point (image,
                                           coords->x, coords->y,
                                           FUNSCALEX (shell, snap_distance),
                                           FUNSCALEY (shell, snap_distance));
diff --git a/app/tools/gimpfliptool.c b/app/tools/gimpfliptool.c
index 6459734..fae1889 100644
--- a/app/tools/gimpfliptool.c
+++ b/app/tools/gimpfliptool.c
@@ -31,7 +31,7 @@
 #include "core/gimpdrawable-transform.h"
 #include "core/gimpguide.h"
 #include "core/gimpimage.h"
-#include "core/gimpimage-guides.h"
+#include "core/gimpimage-pick-item.h"
 #include "core/gimpitem-linked.h"
 #include "core/gimplayer.h"
 #include "core/gimplayermask.h"
@@ -205,7 +205,7 @@ gimp_flip_tool_oper_update (GimpTool         *tool,
     {
       gint snap_distance = display->config->snap_distance;
 
-      guide = gimp_image_find_guide (image, coords->x, coords->y,
+      guide = gimp_image_pick_guide (image, coords->x, coords->y,
                                      FUNSCALEX (shell, snap_distance),
                                      FUNSCALEY (shell, snap_distance));
     }
diff --git a/app/tools/gimpmovetool.c b/app/tools/gimpmovetool.c
index c6f2ef4..1e22788 100644
--- a/app/tools/gimpmovetool.c
+++ b/app/tools/gimpmovetool.c
@@ -34,7 +34,6 @@
 #include "core/gimp-cairo.h"
 #include "core/gimpguide.h"
 #include "core/gimpimage.h"
-#include "core/gimpimage-guides.h"
 #include "core/gimpimage-pick-item.h"
 #include "core/gimplayer.h"
 #include "core/gimpimage-undo.h"
@@ -202,7 +201,7 @@ gimp_move_tool_button_press (GimpTool            *tool,
           const gint  snap_distance = display->config->snap_distance;
 
           if (gimp_display_shell_get_show_guides (shell) &&
-              (guide = gimp_image_find_guide (image,
+              (guide = gimp_image_pick_guide (image,
                                               coords->x, coords->y,
                                               FUNSCALEX (shell, snap_distance),
                                               FUNSCALEY (shell, snap_distance))))
@@ -487,7 +486,7 @@ gimp_move_tool_oper_update (GimpTool         *tool,
     {
       gint snap_distance = display->config->snap_distance;
 
-      guide = gimp_image_find_guide (image, coords->x, coords->y,
+      guide = gimp_image_pick_guide (image, coords->x, coords->y,
                                      FUNSCALEX (shell, snap_distance),
                                      FUNSCALEY (shell, snap_distance));
     }
@@ -570,7 +569,7 @@ gimp_move_tool_cursor_update (GimpTool         *tool,
       const gint  snap_distance = display->config->snap_distance;
 
       if (gimp_display_shell_get_show_guides (shell) &&
-          gimp_image_find_guide (image, coords->x, coords->y,
+          gimp_image_pick_guide (image, coords->x, coords->y,
                                  FUNSCALEX (shell, snap_distance),
                                  FUNSCALEY (shell, snap_distance)))
         {


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