[gimp] app: move guide and sample point picking to gimpimage-pick-item.[ch]
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: move guide and sample point picking to gimpimage-pick-item.[ch]
- Date: Thu, 22 Jun 2017 07:44:54 +0000 (UTC)
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]