[gimp] app: make the shift-coordinates-by-anchor functions public API



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]