[gimp] app: make the shift-coordinates-by-anchor functions public API
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: make the shift-coordinates-by-anchor functions public API
- Date: Tue, 9 Nov 2010 10:29:15 +0000 (UTC)
commit 1541d8b666843db7be3bee3a00f9d3c71d6739a8
Author: Michael Natterer <mitch gimp org>
Date: Tue Nov 9 11:27:51 2010 +0100
app: make the shift-coordinates-by-anchor functions public API
app/display/Makefile.am | 2 +
app/display/gimpcanvashandle.c | 145 +++-------------------------------
app/display/gimpcanvasitem-utils.c | 153 ++++++++++++++++++++++++++++++++++++
app/display/gimpcanvasitem-utils.h | 41 ++++++++++
4 files changed, 207 insertions(+), 134 deletions(-)
---
diff --git a/app/display/Makefile.am b/app/display/Makefile.am
index 00a3064..6b24211 100644
--- a/app/display/Makefile.am
+++ b/app/display/Makefile.am
@@ -37,6 +37,8 @@ libappdisplay_a_sources = \
gimpcanvashandle.h \
gimpcanvasitem.c \
gimpcanvasitem.h \
+ gimpcanvasitem-utils.c \
+ gimpcanvasitem-utils.h \
gimpcanvaslayerboundary.c \
gimpcanvaslayerboundary.h \
gimpcanvasline.c \
diff --git a/app/display/gimpcanvashandle.c b/app/display/gimpcanvashandle.c
index da11dd4..f1294e5 100644
--- a/app/display/gimpcanvashandle.c
+++ b/app/display/gimpcanvashandle.c
@@ -31,6 +31,7 @@
#include "widgets/gimpcairo.h"
#include "gimpcanvashandle.h"
+#include "gimpcanvasitem-utils.h"
#include "gimpdisplayshell.h"
#include "gimpdisplayshell-transform.h"
@@ -245,130 +246,6 @@ gimp_canvas_handle_get_property (GObject *object,
}
}
-static inline void
-gimp_canvas_handle_shift_to_north_west (GimpHandleAnchor anchor,
- gdouble x,
- gdouble y,
- gint handle_width,
- gint handle_height,
- gdouble *shifted_x,
- gdouble *shifted_y)
-{
- switch (anchor)
- {
- case GIMP_HANDLE_ANCHOR_CENTER:
- x -= handle_width / 2;
- y -= handle_height / 2;
- break;
-
- case GIMP_HANDLE_ANCHOR_NORTH:
- x -= handle_width / 2;
- break;
-
- case GIMP_HANDLE_ANCHOR_NORTH_WEST:
- /* nothing, this is the default */
- break;
-
- case GIMP_HANDLE_ANCHOR_NORTH_EAST:
- x -= handle_width;
- break;
-
- case GIMP_HANDLE_ANCHOR_SOUTH:
- x -= handle_width / 2;
- y -= handle_height;
- break;
-
- case GIMP_HANDLE_ANCHOR_SOUTH_WEST:
- y -= handle_height;
- break;
-
- case GIMP_HANDLE_ANCHOR_SOUTH_EAST:
- x -= handle_width;
- y -= handle_height;
- break;
-
- case GIMP_HANDLE_ANCHOR_WEST:
- y -= handle_height / 2;
- break;
-
- case GIMP_HANDLE_ANCHOR_EAST:
- x -= handle_width;
- y -= handle_height / 2;
- break;
-
- default:
- break;
- }
-
- if (shifted_x)
- *shifted_x = x;
-
- if (shifted_y)
- *shifted_y = y;
-}
-
-static inline void
-gimp_canvas_handle_shift_to_center (GimpHandleAnchor anchor,
- gdouble x,
- gdouble y,
- gint width,
- gint height,
- gdouble *shifted_x,
- gdouble *shifted_y)
-{
- switch (anchor)
- {
- case GIMP_HANDLE_ANCHOR_CENTER:
- /* nothing, this is the default */
- break;
-
- case GIMP_HANDLE_ANCHOR_NORTH:
- y += height / 2;
- break;
-
- case GIMP_HANDLE_ANCHOR_NORTH_WEST:
- x += width / 2;
- y += height / 2;
- break;
-
- case GIMP_HANDLE_ANCHOR_NORTH_EAST:
- x -= width / 2;
- y += height / 2;
- break;
-
- case GIMP_HANDLE_ANCHOR_SOUTH:
- y -= height / 2;
- break;
-
- case GIMP_HANDLE_ANCHOR_SOUTH_WEST:
- x += width / 2;
- y -= height / 2;
- break;
-
- case GIMP_HANDLE_ANCHOR_SOUTH_EAST:
- x -= width / 2;
- y -= height / 2;
- break;
-
- case GIMP_HANDLE_ANCHOR_WEST:
- x += width / 2;
- break;
-
- case GIMP_HANDLE_ANCHOR_EAST:
- x -= width / 2;
- break;
-
- default:
- break;
- }
-
- if (shifted_x)
- *shifted_x = x;
-
- if (shifted_y)
- *shifted_y = y;
-}
-
static void
gimp_canvas_handle_transform (GimpCanvasItem *item,
GimpDisplayShell *shell,
@@ -385,21 +262,21 @@ gimp_canvas_handle_transform (GimpCanvasItem *item,
{
case GIMP_HANDLE_SQUARE:
case GIMP_HANDLE_FILLED_SQUARE:
- gimp_canvas_handle_shift_to_north_west (private->anchor,
- *x, *y,
- private->width,
- private->height,
- x, y);
+ gimp_canvas_item_shift_to_north_west (private->anchor,
+ *x, *y,
+ private->width,
+ private->height,
+ x, y);
break;
case GIMP_HANDLE_CIRCLE:
case GIMP_HANDLE_FILLED_CIRCLE:
case GIMP_HANDLE_CROSS:
- gimp_canvas_handle_shift_to_center (private->anchor,
- *x, *y,
- private->width,
- private->height,
- x, y);
+ gimp_canvas_item_shift_to_center (private->anchor,
+ *x, *y,
+ private->width,
+ private->height,
+ x, y);
break;
default:
diff --git a/app/display/gimpcanvasitem-utils.c b/app/display/gimpcanvasitem-utils.c
new file mode 100644
index 0000000..73dbd54
--- /dev/null
+++ b/app/display/gimpcanvasitem-utils.c
@@ -0,0 +1,153 @@
+/* GIMP - The GNU Image Manipulation Program
+ * Copyright (C) 1995 Spencer Kimball and Peter Mattis
+ *
+ * gimpcanvasitem-utils.c
+ * Copyright (C) 2010 Michael Natterer <mitch gimp org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "config.h"
+
+#include <gegl.h>
+#include <gtk/gtk.h>
+
+#include "display-types.h"
+
+#include "gimpcanvasitem-utils.h"
+
+
+void
+gimp_canvas_item_shift_to_north_west (GimpHandleAnchor anchor,
+ gdouble x,
+ gdouble y,
+ gint width,
+ gint height,
+ gdouble *shifted_x,
+ gdouble *shifted_y)
+{
+ switch (anchor)
+ {
+ case GIMP_HANDLE_ANCHOR_CENTER:
+ x -= width / 2;
+ y -= height / 2;
+ break;
+
+ case GIMP_HANDLE_ANCHOR_NORTH:
+ x -= width / 2;
+ break;
+
+ case GIMP_HANDLE_ANCHOR_NORTH_WEST:
+ /* nothing, this is the default */
+ break;
+
+ case GIMP_HANDLE_ANCHOR_NORTH_EAST:
+ x -= width;
+ break;
+
+ case GIMP_HANDLE_ANCHOR_SOUTH:
+ x -= width / 2;
+ y -= height;
+ break;
+
+ case GIMP_HANDLE_ANCHOR_SOUTH_WEST:
+ y -= height;
+ break;
+
+ case GIMP_HANDLE_ANCHOR_SOUTH_EAST:
+ x -= width;
+ y -= height;
+ break;
+
+ case GIMP_HANDLE_ANCHOR_WEST:
+ y -= height / 2;
+ break;
+
+ case GIMP_HANDLE_ANCHOR_EAST:
+ x -= width;
+ y -= height / 2;
+ break;
+
+ default:
+ break;
+ }
+
+ if (shifted_x)
+ *shifted_x = x;
+
+ if (shifted_y)
+ *shifted_y = y;
+}
+
+void
+gimp_canvas_item_shift_to_center (GimpHandleAnchor anchor,
+ gdouble x,
+ gdouble y,
+ gint width,
+ gint height,
+ gdouble *shifted_x,
+ gdouble *shifted_y)
+{
+ switch (anchor)
+ {
+ case GIMP_HANDLE_ANCHOR_CENTER:
+ /* nothing, this is the default */
+ break;
+
+ case GIMP_HANDLE_ANCHOR_NORTH:
+ y += height / 2;
+ break;
+
+ case GIMP_HANDLE_ANCHOR_NORTH_WEST:
+ x += width / 2;
+ y += height / 2;
+ break;
+
+ case GIMP_HANDLE_ANCHOR_NORTH_EAST:
+ x -= width / 2;
+ y += height / 2;
+ break;
+
+ case GIMP_HANDLE_ANCHOR_SOUTH:
+ y -= height / 2;
+ break;
+
+ case GIMP_HANDLE_ANCHOR_SOUTH_WEST:
+ x += width / 2;
+ y -= height / 2;
+ break;
+
+ case GIMP_HANDLE_ANCHOR_SOUTH_EAST:
+ x -= width / 2;
+ y -= height / 2;
+ break;
+
+ case GIMP_HANDLE_ANCHOR_WEST:
+ x += width / 2;
+ break;
+
+ case GIMP_HANDLE_ANCHOR_EAST:
+ x -= width / 2;
+ break;
+
+ default:
+ break;
+ }
+
+ if (shifted_x)
+ *shifted_x = x;
+
+ if (shifted_y)
+ *shifted_y = y;
+}
diff --git a/app/display/gimpcanvasitem-utils.h b/app/display/gimpcanvasitem-utils.h
new file mode 100644
index 0000000..7271877
--- /dev/null
+++ b/app/display/gimpcanvasitem-utils.h
@@ -0,0 +1,41 @@
+/* GIMP - The GNU Image Manipulation Program
+ * Copyright (C) 1995 Spencer Kimball and Peter Mattis
+ *
+ * gimpcanvasitem-utils.h
+ * Copyright (C) 2010 Michael Natterer <mitch gimp org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __GIMP_CANVAS_ITEM_UTILS_H__
+#define __GIMP_CANVAS_ITEM_UTILS_H__
+
+
+void gimp_canvas_item_shift_to_north_west (GimpHandleAnchor anchor,
+ gdouble x,
+ gdouble y,
+ gint width,
+ gint height,
+ gdouble *shifted_x,
+ gdouble *shifted_y);
+void gimp_canvas_item_shift_to_center (GimpHandleAnchor anchor,
+ gdouble x,
+ gdouble y,
+ gint width,
+ gint height,
+ gdouble *shifted_x,
+ gdouble *shifted_y);
+
+
+#endif /* __GIMP_CANVAS_ITEM_UTILS_H__ */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]