[gimp] app, icons: add GimpPivotSelector widget
- From: Ell <ell src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app, icons: add GimpPivotSelector widget
- Date: Mon, 6 Jan 2020 21:21:04 +0000 (UTC)
commit 46e01d37db96ff63785f6e8bff80c76c9a09abe4
Author: Ell <ell_se yahoo com>
Date: Mon Jan 6 12:36:16 2020 +0200
app, icons: add GimpPivotSelector widget
GimpPivotSelector is a 3x3 grid of toggle buttons, used for
selecting a natural pivot position (e.g., for a transform) relative
to an item: its center, its corners, and the midpoints of its
edges.
app/widgets/Makefile.am | 2 +
app/widgets/gimppivotselector.c | 550 +++++++++++++++++++++
app/widgets/gimppivotselector.h | 78 +++
app/widgets/widgets-types.h | 1 +
icons/Color/12/gimp-pivot-center.png | Bin 0 -> 172 bytes
icons/Color/12/gimp-pivot-east.png | Bin 0 -> 196 bytes
icons/Color/12/gimp-pivot-north-east.png | Bin 0 -> 195 bytes
icons/Color/12/gimp-pivot-north-west.png | Bin 0 -> 190 bytes
icons/Color/12/gimp-pivot-north.png | Bin 0 -> 184 bytes
icons/Color/12/gimp-pivot-south-east.png | Bin 0 -> 201 bytes
icons/Color/12/gimp-pivot-south-west.png | Bin 0 -> 201 bytes
icons/Color/12/gimp-pivot-south.png | Bin 0 -> 184 bytes
icons/Color/12/gimp-pivot-west.png | Bin 0 -> 196 bytes
icons/Color/icon-list.mk | 18 +
icons/Color/scalable/gimp-pivot-center.svg | 81 +++
icons/Color/scalable/gimp-pivot-east.svg | 118 +++++
icons/Color/scalable/gimp-pivot-north-east.svg | 122 +++++
icons/Color/scalable/gimp-pivot-north-west.svg | 118 +++++
icons/Color/scalable/gimp-pivot-north.svg | 119 +++++
icons/Color/scalable/gimp-pivot-south-east.svg | 122 +++++
icons/Color/scalable/gimp-pivot-south-west.svg | 122 +++++
icons/Color/scalable/gimp-pivot-south.svg | 119 +++++
icons/Color/scalable/gimp-pivot-west.svg | 118 +++++
icons/Symbolic/icon-list.mk | 18 +
.../scalable/gimp-pivot-center-symbolic.svg | 74 +++
.../Symbolic/scalable/gimp-pivot-east-symbolic.svg | 89 ++++
.../scalable/gimp-pivot-north-east-symbolic.svg | 89 ++++
.../scalable/gimp-pivot-north-symbolic.svg | 85 ++++
.../scalable/gimp-pivot-north-west-symbolic.svg | 85 ++++
.../scalable/gimp-pivot-south-east-symbolic.svg | 89 ++++
.../scalable/gimp-pivot-south-symbolic.svg | 85 ++++
.../scalable/gimp-pivot-south-west-symbolic.svg | 89 ++++
.../Symbolic/scalable/gimp-pivot-west-symbolic.svg | 89 ++++
libgimpwidgets/gimpicons.h | 10 +
34 files changed, 2490 insertions(+)
---
diff --git a/app/widgets/Makefile.am b/app/widgets/Makefile.am
index 7c510acbc8..f52b64c9b6 100644
--- a/app/widgets/Makefile.am
+++ b/app/widgets/Makefile.am
@@ -310,6 +310,8 @@ libappwidgets_a_sources = \
gimppickablebutton.h \
gimppickablepopup.c \
gimppickablepopup.h \
+ gimppivotselector.c \
+ gimppivotselector.h \
gimppixbuf.c \
gimppixbuf.h \
gimppluginview.c \
diff --git a/app/widgets/gimppivotselector.c b/app/widgets/gimppivotselector.c
new file mode 100644
index 0000000000..da27120b25
--- /dev/null
+++ b/app/widgets/gimppivotselector.c
@@ -0,0 +1,550 @@
+/* GIMP - The GNU Image Manipulation Program
+ * Copyright (C) 1995 Spencer Kimball and Peter Mattis
+ *
+ * gimppivotselector.c
+ * Copyright (C) 2019 Ell
+ *
+ * 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 <https://www.gnu.org/licenses/>.
+ */
+
+#include "config.h"
+
+#include <gegl.h>
+#include <gtk/gtk.h>
+
+#include "libgimpbase/gimpbase.h"
+#include "libgimpmath/gimpmath.h"
+#include "libgimpwidgets/gimpwidgets.h"
+
+#include "widgets-types.h"
+
+#include "core/gimpmarshal.h"
+
+#include "gimppivotselector.h"
+
+
+#define EPSILON 1e-6
+
+
+enum
+{
+ CHANGED,
+ LAST_SIGNAL
+};
+
+enum
+{
+ PROP_0,
+ PROP_LEFT,
+ PROP_TOP,
+ PROP_RIGHT,
+ PROP_BOTTOM,
+ PROP_X,
+ PROP_Y
+};
+
+
+struct _GimpPivotSelectorPrivate
+{
+ gdouble left;
+ gdouble top;
+ gdouble right;
+ gdouble bottom;
+
+ gdouble x;
+ gdouble y;
+
+ GtkWidget *buttons[9];
+ GtkWidget *active_button;
+};
+
+
+/* local function prototypes */
+
+static void gimp_pivot_selector_set_property (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static void gimp_pivot_selector_get_property (GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec);
+
+static void gimp_pivot_selector_button_toggled (GtkToggleButton *button,
+ GimpPivotSelector *selector);
+
+static GtkWidget * gimp_pivot_selector_position_to_button (GimpPivotSelector *selector,
+ gdouble x,
+ gdouble y);
+static void gimp_pivot_selector_button_to_position (GimpPivotSelector *selector,
+ GtkWidget *button,
+ gdouble *x,
+ gdouble *y);
+
+static void gimp_pivot_selector_update_active_button (GimpPivotSelector *selector);
+
+
+G_DEFINE_TYPE_WITH_PRIVATE (GimpPivotSelector, gimp_pivot_selector, GTK_TYPE_GRID)
+
+#define parent_class gimp_pivot_selector_parent_class
+
+static guint pivot_selector_signals[LAST_SIGNAL];
+
+
+/* private functions */
+
+
+static void
+gimp_pivot_selector_class_init (GimpPivotSelectorClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ pivot_selector_signals[CHANGED] =
+ g_signal_new ("changed",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (GimpPivotSelectorClass, changed),
+ NULL, NULL,
+ gimp_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ object_class->get_property = gimp_pivot_selector_get_property;
+ object_class->set_property = gimp_pivot_selector_set_property;
+
+ g_object_class_install_property (object_class, PROP_LEFT,
+ g_param_spec_double ("left",
+ NULL, NULL,
+ -G_MAXDOUBLE,
+ +G_MAXDOUBLE,
+ 0.0,
+ GIMP_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT));
+
+ g_object_class_install_property (object_class, PROP_TOP,
+ g_param_spec_double ("top",
+ NULL, NULL,
+ -G_MAXDOUBLE,
+ +G_MAXDOUBLE,
+ 0.0,
+ GIMP_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT));
+
+ g_object_class_install_property (object_class, PROP_RIGHT,
+ g_param_spec_double ("right",
+ NULL, NULL,
+ -G_MAXDOUBLE,
+ +G_MAXDOUBLE,
+ 0.0,
+ GIMP_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT));
+
+ g_object_class_install_property (object_class, PROP_BOTTOM,
+ g_param_spec_double ("bottom",
+ NULL, NULL,
+ -G_MAXDOUBLE,
+ +G_MAXDOUBLE,
+ 0.0,
+ GIMP_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT));
+
+ g_object_class_install_property (object_class, PROP_X,
+ g_param_spec_double ("x",
+ NULL, NULL,
+ -G_MAXDOUBLE,
+ +G_MAXDOUBLE,
+ 0.0,
+ GIMP_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT));
+
+ g_object_class_install_property (object_class, PROP_Y,
+ g_param_spec_double ("y",
+ NULL, NULL,
+ -G_MAXDOUBLE,
+ +G_MAXDOUBLE,
+ 0.0,
+ GIMP_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT));
+}
+
+static void
+gimp_pivot_selector_init (GimpPivotSelector *selector)
+{
+ GtkWidget *widget = GTK_WIDGET (selector);
+ GtkGrid *grid = GTK_GRID (selector);
+ gint i;
+
+ selector->priv = gimp_pivot_selector_get_instance_private (selector);
+
+ gtk_widget_set_halign (widget, GTK_ALIGN_CENTER);
+ gtk_widget_set_valign (widget, GTK_ALIGN_CENTER);
+
+ gtk_grid_set_row_homogeneous (grid, TRUE);
+ gtk_grid_set_column_homogeneous (grid, TRUE);
+
+ for (i = 0; i < 9; i++)
+ {
+ static const gchar *icon_names[9] = {
+ GIMP_ICON_PIVOT_NORTH_WEST,
+ GIMP_ICON_PIVOT_NORTH,
+ GIMP_ICON_PIVOT_NORTH_EAST,
+
+ GIMP_ICON_PIVOT_WEST,
+ GIMP_ICON_PIVOT_CENTER,
+ GIMP_ICON_PIVOT_EAST,
+
+ GIMP_ICON_PIVOT_SOUTH_WEST,
+ GIMP_ICON_PIVOT_SOUTH,
+ GIMP_ICON_PIVOT_SOUTH_EAST
+ };
+
+ GtkWidget *button;
+ GtkWidget *image;
+ gint x, y;
+
+ x = i % 3;
+ y = i / 3;
+
+ button = gtk_toggle_button_new ();
+ gtk_widget_set_can_focus (button, FALSE);
+ gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE);
+ gtk_grid_attach (grid, button, x, y, 1, 1);
+ gtk_widget_show (button);
+
+ selector->priv->buttons[i] = button;
+
+ g_signal_connect (button, "toggled",
+ G_CALLBACK (gimp_pivot_selector_button_toggled),
+ selector);
+
+ image = gtk_image_new_from_icon_name (icon_names[i], GTK_ICON_SIZE_MENU);
+ gtk_image_set_pixel_size (GTK_IMAGE (image), 12);
+ gtk_container_add (GTK_CONTAINER (button), image);
+ gtk_widget_show (image);
+ }
+}
+
+static void
+gimp_pivot_selector_set_property (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ GimpPivotSelector *selector = GIMP_PIVOT_SELECTOR (object);
+
+ switch (property_id)
+ {
+ case PROP_LEFT:
+ gimp_pivot_selector_set_bounds (selector,
+ g_value_get_double (value),
+ selector->priv->top,
+ selector->priv->right,
+ selector->priv->bottom);
+ break;
+ case PROP_TOP:
+ gimp_pivot_selector_set_bounds (selector,
+ selector->priv->left,
+ g_value_get_double (value),
+ selector->priv->right,
+ selector->priv->bottom);
+ break;
+ case PROP_RIGHT:
+ gimp_pivot_selector_set_bounds (selector,
+ selector->priv->left,
+ selector->priv->top,
+ g_value_get_double (value),
+ selector->priv->bottom);
+ break;
+ case PROP_BOTTOM:
+ gimp_pivot_selector_set_bounds (selector,
+ selector->priv->left,
+ selector->priv->top,
+ selector->priv->right,
+ g_value_get_double (value));
+ break;
+
+ case PROP_X:
+ gimp_pivot_selector_set_position (selector,
+ g_value_get_double (value),
+ selector->priv->y);
+ break;
+ case PROP_Y:
+ gimp_pivot_selector_set_position (selector,
+ selector->priv->x,
+ g_value_get_double (value));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ break;
+ }
+}
+
+static void
+gimp_pivot_selector_get_property (GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ GimpPivotSelector *selector = GIMP_PIVOT_SELECTOR (object);
+
+ switch (property_id)
+ {
+ case PROP_LEFT:
+ g_value_set_double (value, selector->priv->left);
+ break;
+ case PROP_TOP:
+ g_value_set_double (value, selector->priv->top);
+ break;
+ case PROP_RIGHT:
+ g_value_set_double (value, selector->priv->right);
+ break;
+ case PROP_BOTTOM:
+ g_value_set_double (value, selector->priv->bottom);
+ break;
+
+ case PROP_X:
+ g_value_set_double (value, selector->priv->x);
+ break;
+ case PROP_Y:
+ g_value_set_double (value, selector->priv->y);
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ break;
+ }
+}
+
+static void
+gimp_pivot_selector_button_toggled (GtkToggleButton *button,
+ GimpPivotSelector *selector)
+{
+ if (GTK_WIDGET (button) == selector->priv->active_button)
+ {
+ gtk_toggle_button_set_active (button, TRUE);
+ }
+ else
+ {
+ gdouble x, y;
+
+ gimp_pivot_selector_button_to_position (selector, GTK_WIDGET (button),
+ &x, &y);
+
+ gimp_pivot_selector_set_position (selector, x, y);
+ }
+}
+
+static GtkWidget *
+gimp_pivot_selector_position_to_button (GimpPivotSelector *selector,
+ gdouble x,
+ gdouble y)
+{
+ gint ix;
+ gint iy;
+
+ if (selector->priv->left == selector->priv->right ||
+ selector->priv->top == selector->priv->bottom)
+ {
+ return NULL;
+ }
+
+ x = 2.0 * (x - selector->priv->left) /
+ (selector->priv->right - selector->priv->left);
+ y = 2.0 * (y - selector->priv->top) /
+ (selector->priv->bottom - selector->priv->top);
+
+ ix = RINT (x);
+ iy = RINT (y);
+
+ if (fabs (x - ix) > EPSILON || fabs (y - iy) > EPSILON)
+ return NULL;
+
+ if (ix < 0 || ix > 2 || iy < 0 || iy > 2)
+ return NULL;
+
+ return selector->priv->buttons[3 * iy + ix];
+}
+
+static void
+gimp_pivot_selector_button_to_position (GimpPivotSelector *selector,
+ GtkWidget *button,
+ gdouble *x,
+ gdouble *y)
+{
+ gint i;
+
+ for (i = 0; selector->priv->buttons[i] != button; i++);
+
+ *x = selector->priv->left +
+ (selector->priv->right - selector->priv->left) * (i % 3) / 2.0;
+ *y = selector->priv->top +
+ (selector->priv->bottom - selector->priv->top) * (i / 3) / 2.0;
+}
+
+static void
+gimp_pivot_selector_update_active_button (GimpPivotSelector *selector)
+{
+ GtkWidget *button;
+
+ button = gimp_pivot_selector_position_to_button (selector,
+ selector->priv->x,
+ selector->priv->y);
+
+ if (button != selector->priv->active_button)
+ {
+ if (selector->priv->active_button)
+ {
+ g_signal_handlers_block_by_func (
+ selector->priv->active_button,
+ gimp_pivot_selector_button_toggled,
+ selector);
+
+ gtk_toggle_button_set_active (
+ GTK_TOGGLE_BUTTON (selector->priv->active_button), FALSE);
+
+ g_signal_handlers_unblock_by_func (
+ selector->priv->active_button,
+ gimp_pivot_selector_button_toggled,
+ selector);
+ }
+
+ selector->priv->active_button = button;
+
+ if (selector->priv->active_button)
+ {
+ g_signal_handlers_block_by_func (
+ selector->priv->active_button,
+ gimp_pivot_selector_button_toggled,
+ selector);
+
+ gtk_toggle_button_set_active (
+ GTK_TOGGLE_BUTTON (selector->priv->active_button), TRUE);
+
+ g_signal_handlers_unblock_by_func (
+ selector->priv->active_button,
+ gimp_pivot_selector_button_toggled,
+ selector);
+ }
+ }
+}
+
+
+/* public functions */
+
+
+GtkWidget *
+gimp_pivot_selector_new (gdouble left,
+ gdouble top,
+ gdouble right,
+ gdouble bottom)
+{
+ return g_object_new (GIMP_TYPE_PIVOT_SELECTOR,
+
+ "left", left,
+ "top", top,
+ "right", right,
+ "bottom", bottom,
+
+ "x", (left + right) / 2.0,
+ "y", (top + bottom) / 2.0,
+
+ NULL);
+}
+
+void
+gimp_pivot_selector_set_bounds (GimpPivotSelector *selector,
+ gdouble left,
+ gdouble top,
+ gdouble right,
+ gdouble bottom)
+{
+ g_return_if_fail (GIMP_IS_PIVOT_SELECTOR (selector));
+
+ if (left != selector->priv->left || top != selector->priv->top ||
+ right != selector->priv->right || bottom != selector->priv->bottom)
+ {
+ g_object_freeze_notify (G_OBJECT (selector));
+
+ selector->priv->left = left;
+ selector->priv->top = top;
+ selector->priv->right = right;
+ selector->priv->bottom = bottom;
+
+ gimp_pivot_selector_update_active_button (selector);
+
+ if (left != selector->priv->left)
+ g_object_notify (G_OBJECT (selector), "left");
+ if (top != selector->priv->top)
+ g_object_notify (G_OBJECT (selector), "top");
+ if (right != selector->priv->right)
+ g_object_notify (G_OBJECT (selector), "right");
+ if (left != selector->priv->bottom)
+ g_object_notify (G_OBJECT (selector), "bottom");
+
+ g_object_thaw_notify (G_OBJECT (selector));
+ }
+}
+
+void
+gimp_pivot_selector_get_bounds (GimpPivotSelector *selector,
+ gdouble *left,
+ gdouble *top,
+ gdouble *right,
+ gdouble *bottom)
+{
+ g_return_if_fail (GIMP_IS_PIVOT_SELECTOR (selector));
+
+ if (left) *left = selector->priv->left;
+ if (top) *top = selector->priv->top;
+ if (right) *right = selector->priv->right;
+ if (bottom) *bottom = selector->priv->bottom;
+}
+
+void
+gimp_pivot_selector_set_position (GimpPivotSelector *selector,
+ gdouble x,
+ gdouble y)
+{
+ g_return_if_fail (GIMP_IS_PIVOT_SELECTOR (selector));
+
+ if (x != selector->priv->x || y != selector->priv->y)
+ {
+ g_object_freeze_notify (G_OBJECT (selector));
+
+ selector->priv->x = x;
+ selector->priv->y = y;
+
+ gimp_pivot_selector_update_active_button (selector);
+
+ g_signal_emit (selector, pivot_selector_signals[CHANGED], 0);
+
+ if (x != selector->priv->x)
+ g_object_notify (G_OBJECT (selector), "x");
+ if (y != selector->priv->y)
+ g_object_notify (G_OBJECT (selector), "y");
+
+ g_object_thaw_notify (G_OBJECT (selector));
+ }
+}
+
+void
+gimp_pivot_selector_get_position (GimpPivotSelector *selector,
+ gdouble *x,
+ gdouble *y)
+{
+ g_return_if_fail (GIMP_IS_PIVOT_SELECTOR (selector));
+
+ if (x) *x = selector->priv->x;
+ if (y) *y = selector->priv->y;
+}
diff --git a/app/widgets/gimppivotselector.h b/app/widgets/gimppivotselector.h
new file mode 100644
index 0000000000..0ffa4efaac
--- /dev/null
+++ b/app/widgets/gimppivotselector.h
@@ -0,0 +1,78 @@
+/* GIMP - The GNU Image Manipulation Program
+ * Copyright (C) 1995 Spencer Kimball and Peter Mattis
+ *
+ * gimppivotselector.h
+ * Copyright (C) 2019 Ell
+ *
+ * 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 <https://www.gnu.org/licenses/>.
+ */
+
+#ifndef __GIMP_PIVOT_SELECTOR_H__
+#define __GIMP_PIVOT_SELECTOR_H__
+
+
+#define GIMP_TYPE_PIVOT_SELECTOR (gimp_pivot_selector_get_type ())
+#define GIMP_PIVOT_SELECTOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GIMP_TYPE_PIVOT_SELECTOR,
GimpPivotSelector))
+#define GIMP_PIVOT_SELECTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GIMP_TYPE_PIVOT_SELECTOR,
GimpPivotSelectorClass))
+#define GIMP_IS_PIVOT_SELECTOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE (obj, GIMP_TYPE_PIVOT_SELECTOR))
+#define GIMP_IS_PIVOT_SELECTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_PIVOT_SELECTOR))
+#define GIMP_PIVOT_SELECTOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GIMP_TYPE_PIVOT_SELECTOR,
GimpPivotSelectorClass))
+
+
+typedef struct _GimpPivotSelectorPrivate GimpPivotSelectorPrivate;
+typedef struct _GimpPivotSelectorClass GimpPivotSelectorClass;
+
+struct _GimpPivotSelector
+{
+ GtkGrid parent_instance;
+
+ GimpPivotSelectorPrivate *priv;
+};
+
+struct _GimpPivotSelectorClass
+{
+ GtkGridClass parent_class;
+
+ /* signals */
+ void (* changed) (GimpPivotSelector *selector);
+};
+
+
+GType gimp_pivot_selector_get_type (void) G_GNUC_CONST;
+
+GtkWidget * gimp_pivot_selector_new (gdouble left,
+ gdouble top,
+ gdouble right,
+ gdouble bottom);
+
+void gimp_pivot_selector_set_position (GimpPivotSelector *selector,
+ gdouble x,
+ gdouble y);
+void gimp_pivot_selector_get_position (GimpPivotSelector *selector,
+ gdouble *x,
+ gdouble *y);
+
+void gimp_pivot_selector_set_bounds (GimpPivotSelector *selector,
+ gdouble left,
+ gdouble top,
+ gdouble right,
+ gdouble bottom);
+void gimp_pivot_selector_get_bounds (GimpPivotSelector *selector,
+ gdouble *left,
+ gdouble *top,
+ gdouble *right,
+ gdouble *bottom);
+
+
+#endif /* __GIMP_PIVOT_SELECTOR_H__ */
diff --git a/app/widgets/widgets-types.h b/app/widgets/widgets-types.h
index ee15b6016a..38e19aab26 100644
--- a/app/widgets/widgets-types.h
+++ b/app/widgets/widgets-types.h
@@ -213,6 +213,7 @@ typedef struct _GimpMeter GimpMeter;
typedef struct _GimpOverlayBox GimpOverlayBox;
typedef struct _GimpPickableButton GimpPickableButton;
typedef struct _GimpPickablePopup GimpPickablePopup;
+typedef struct _GimpPivotSelector GimpPivotSelector;
typedef struct _GimpPlugInView GimpPlugInView;
typedef struct _GimpPolar GimpPolar;
typedef struct _GimpPopup GimpPopup;
diff --git a/icons/Color/12/gimp-pivot-center.png b/icons/Color/12/gimp-pivot-center.png
new file mode 100644
index 0000000000..1f2dbf7dac
Binary files /dev/null and b/icons/Color/12/gimp-pivot-center.png differ
diff --git a/icons/Color/12/gimp-pivot-east.png b/icons/Color/12/gimp-pivot-east.png
new file mode 100644
index 0000000000..fd210aeba5
Binary files /dev/null and b/icons/Color/12/gimp-pivot-east.png differ
diff --git a/icons/Color/12/gimp-pivot-north-east.png b/icons/Color/12/gimp-pivot-north-east.png
new file mode 100644
index 0000000000..7c1cfdcb98
Binary files /dev/null and b/icons/Color/12/gimp-pivot-north-east.png differ
diff --git a/icons/Color/12/gimp-pivot-north-west.png b/icons/Color/12/gimp-pivot-north-west.png
new file mode 100644
index 0000000000..d562cf7fd7
Binary files /dev/null and b/icons/Color/12/gimp-pivot-north-west.png differ
diff --git a/icons/Color/12/gimp-pivot-north.png b/icons/Color/12/gimp-pivot-north.png
new file mode 100644
index 0000000000..8fe6381c19
Binary files /dev/null and b/icons/Color/12/gimp-pivot-north.png differ
diff --git a/icons/Color/12/gimp-pivot-south-east.png b/icons/Color/12/gimp-pivot-south-east.png
new file mode 100644
index 0000000000..b627800835
Binary files /dev/null and b/icons/Color/12/gimp-pivot-south-east.png differ
diff --git a/icons/Color/12/gimp-pivot-south-west.png b/icons/Color/12/gimp-pivot-south-west.png
new file mode 100644
index 0000000000..1041c89407
Binary files /dev/null and b/icons/Color/12/gimp-pivot-south-west.png differ
diff --git a/icons/Color/12/gimp-pivot-south.png b/icons/Color/12/gimp-pivot-south.png
new file mode 100644
index 0000000000..8fe6381c19
Binary files /dev/null and b/icons/Color/12/gimp-pivot-south.png differ
diff --git a/icons/Color/12/gimp-pivot-west.png b/icons/Color/12/gimp-pivot-west.png
new file mode 100644
index 0000000000..fd210aeba5
Binary files /dev/null and b/icons/Color/12/gimp-pivot-west.png differ
diff --git a/icons/Color/icon-list.mk b/icons/Color/icon-list.mk
index 548e30a24f..3f4df8b36e 100644
--- a/icons/Color/icon-list.mk
+++ b/icons/Color/icon-list.mk
@@ -188,6 +188,15 @@ scalable_images = \
scalable/gimp-paths.svg \
scalable/gimp-path-stroke.svg \
scalable/gimp-pattern.svg \
+ scalable/gimp-pivot-center.svg \
+ scalable/gimp-pivot-east.svg \
+ scalable/gimp-pivot-north.svg \
+ scalable/gimp-pivot-north-east.svg \
+ scalable/gimp-pivot-north-west.svg \
+ scalable/gimp-pivot-south.svg \
+ scalable/gimp-pivot-south-east.svg \
+ scalable/gimp-pivot-south-west.svg \
+ scalable/gimp-pivot-west.svg \
scalable/gimp-plugin.svg \
scalable/gimp-portrait.svg \
scalable/gimp-prefs-color-management.svg \
@@ -512,6 +521,15 @@ icons12_images = \
12/gimp-linked.png \
12/gimp-menu-left.png \
12/gimp-menu-right.png \
+ 12/gimp-pivot-center.png \
+ 12/gimp-pivot-east.png \
+ 12/gimp-pivot-north.png \
+ 12/gimp-pivot-north-east.png \
+ 12/gimp-pivot-north-west.png \
+ 12/gimp-pivot-south.png \
+ 12/gimp-pivot-south-east.png \
+ 12/gimp-pivot-south-west.png \
+ 12/gimp-pivot-west.png \
12/gimp-quick-mask-off.png \
12/gimp-quick-mask-on.png \
12/gimp-swap-colors.png \
diff --git a/icons/Color/scalable/gimp-pivot-center.svg b/icons/Color/scalable/gimp-pivot-center.svg
new file mode 100644
index 0000000000..51e05fdae3
--- /dev/null
+++ b/icons/Color/scalable/gimp-pivot-center.svg
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="12"
+ height="12"
+ viewBox="0 0 3.1749999 3.1750001"
+ version="1.1"
+ id="svg886"
+ inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
+ sodipodi:docname="gimp-pivot-center.svg"
+ inkscape:export-xdpi="96"
+ inkscape:export-ydpi="96">
+ <defs
+ id="defs880" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="67.083333"
+ inkscape:cx="5.9841365"
+ inkscape:cy="6.0013256"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="1008"
+ inkscape:window-x="0"
+ inkscape:window-y="35"
+ inkscape:window-maximized="1">
+ <inkscape:grid
+ type="xygrid"
+ id="grid1431"
+ empspacing="4" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata883">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-293.82498)">
+ <rect
+
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.26458332;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect1433-3"
+ width="1.3229166"
+ height="1.3229166"
+ x="294.75101"
+ y="-2.2489729"
+ transform="rotate(90)" />
+ <rect
+
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect1433"
+ width="1.0583333"
+ height="1.0583333"
+ x="294.8833"
+ y="-2.1166792"
+ transform="rotate(90)" />
+ </g>
+</svg>
diff --git a/icons/Color/scalable/gimp-pivot-east.svg b/icons/Color/scalable/gimp-pivot-east.svg
new file mode 100644
index 0000000000..28b6c01b84
--- /dev/null
+++ b/icons/Color/scalable/gimp-pivot-east.svg
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="12"
+ height="12"
+ viewBox="0 0 3.1749999 3.1750001"
+ version="1.1"
+ id="svg886"
+ inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
+ sodipodi:docname="gimp-pivot-east.svg"
+ inkscape:export-xdpi="96"
+ inkscape:export-ydpi="96">
+ <defs
+ id="defs880" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="67.083333"
+ inkscape:cx="6"
+ inkscape:cy="6"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="1008"
+ inkscape:window-x="0"
+ inkscape:window-y="35"
+ inkscape:window-maximized="1">
+ <inkscape:grid
+ type="xygrid"
+ id="grid1431"
+ empspacing="4" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata883">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-293.82498)">
+ <g
+ id="g1461">
+ <path
+
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 1.190625,295.94165 v 1.05833"
+ id="path7422"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 1.984375,295.94165 v 1.05833"
+ id="path7422-6"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 1.984375,294.88331 v -1.05833"
+ id="path7439"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 1.190625,294.88331 v -1.05833"
+ id="path7439-7"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path1435"
+ d="m 1.5875,295.67706 v 1.32292"
+
style="fill:none;stroke:#ffffff;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
/>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path1437"
+ d="m 1.5875,295.1479 v -1.32292"
+
style="fill:none;stroke:#ffffff;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
/>
+ <rect
+ y="294.8833"
+ x="1.0583333"
+ height="1.0583333"
+ width="1.0583333"
+ id="rect1433"
+
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
/>
+ <rect
+ y="294.75101"
+ x="0.92604166"
+ height="1.3229166"
+ width="1.3229166"
+ id="rect1433-3"
+
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.26458332;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
/>
+ </g>
+ </g>
+</svg>
diff --git a/icons/Color/scalable/gimp-pivot-north-east.svg b/icons/Color/scalable/gimp-pivot-north-east.svg
new file mode 100644
index 0000000000..88bb0e276a
--- /dev/null
+++ b/icons/Color/scalable/gimp-pivot-north-east.svg
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="12"
+ height="12"
+ viewBox="0 0 3.1749999 3.1750001"
+ version="1.1"
+ id="svg886"
+ inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
+ sodipodi:docname="gimp-pivot-north-east.svg"
+ inkscape:export-xdpi="96"
+ inkscape:export-ydpi="96">
+ <defs
+ id="defs880" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="67.083333"
+ inkscape:cx="6"
+ inkscape:cy="6"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="1008"
+ inkscape:window-x="0"
+ inkscape:window-y="35"
+ inkscape:window-maximized="1">
+ <inkscape:grid
+ type="xygrid"
+ id="grid1431"
+ empspacing="4" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata883">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-293.82498)">
+ <g
+ id="g12895"
+ transform="rotate(90,1.5875,295.41248)">
+ <g
+ id="g1461">
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path7422"
+ d="m 1.190625,295.94165 v 1.05833"
+
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
/>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path7422-6"
+ d="m 1.984375,295.94165 v 1.05833"
+
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
/>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path7439"
+ d="M 2.1166667,295.80936 H 3.175"
+
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
/>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path7439-7"
+ d="M 2.1166667,295.01561 H 3.175"
+
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
/>
+ <path
+
style="fill:none;stroke:#ffffff;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 1.5875,295.67706 v 1.32292"
+ id="path1435"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+
style="fill:none;stroke:#ffffff;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 1.8520833,295.41248 H 3.175"
+ id="path1437"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <rect
+
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect1433"
+ width="1.0583333"
+ height="1.0583333"
+ x="1.0583333"
+ y="294.8833" />
+ <rect
+
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.26458332;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect1433-3"
+ width="1.3229166"
+ height="1.3229166"
+ x="0.92604166"
+ y="294.75101" />
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/icons/Color/scalable/gimp-pivot-north-west.svg b/icons/Color/scalable/gimp-pivot-north-west.svg
new file mode 100644
index 0000000000..6b33662cb0
--- /dev/null
+++ b/icons/Color/scalable/gimp-pivot-north-west.svg
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="12"
+ height="12"
+ viewBox="0 0 3.1749999 3.1750001"
+ version="1.1"
+ id="svg886"
+ inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
+ sodipodi:docname="gimp-pivot-north-west.svg"
+ inkscape:export-xdpi="96"
+ inkscape:export-ydpi="96">
+ <defs
+ id="defs880" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="67.083333"
+ inkscape:cx="2.6673663"
+ inkscape:cy="6.0013256"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="1008"
+ inkscape:window-x="0"
+ inkscape:window-y="35"
+ inkscape:window-maximized="1">
+ <inkscape:grid
+ type="xygrid"
+ id="grid1431"
+ empspacing="4" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata883">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-293.82498)">
+ <g
+ id="g1461">
+ <path
+
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 1.190625,295.94165 v 1.05833"
+ id="path7422"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 1.984375,295.94165 v 1.05833"
+ id="path7422-6"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 2.1166667,295.80936 H 3.175"
+ id="path7439"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 2.1166667,295.01561 H 3.175"
+ id="path7439-7"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path1435"
+ d="m 1.5875,295.67706 0,1.32292"
+
style="fill:none;stroke:#ffffff;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
/>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path1437"
+ d="m 1.8520833,295.41248 1.3229167,0"
+
style="fill:none;stroke:#ffffff;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
/>
+ <rect
+ y="294.8833"
+ x="1.0583333"
+ height="1.0583333"
+ width="1.0583333"
+ id="rect1433"
+
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
/>
+ <rect
+ y="294.75101"
+ x="0.92604166"
+ height="1.3229166"
+ width="1.3229166"
+ id="rect1433-3"
+
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.26458333;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
/>
+ </g>
+ </g>
+</svg>
diff --git a/icons/Color/scalable/gimp-pivot-north.svg b/icons/Color/scalable/gimp-pivot-north.svg
new file mode 100644
index 0000000000..af3b2ddba8
--- /dev/null
+++ b/icons/Color/scalable/gimp-pivot-north.svg
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="12"
+ height="12"
+ viewBox="0 0 3.1749999 3.1750001"
+ version="1.1"
+ id="svg886"
+ inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
+ sodipodi:docname="gimp-pivot-north.svg"
+ inkscape:export-xdpi="96"
+ inkscape:export-ydpi="96">
+ <defs
+ id="defs880" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="67.083333"
+ inkscape:cx="6"
+ inkscape:cy="6"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="1008"
+ inkscape:window-x="0"
+ inkscape:window-y="35"
+ inkscape:window-maximized="1">
+ <inkscape:grid
+ type="xygrid"
+ id="grid1431"
+ empspacing="4" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata883">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-293.82498)">
+ <g
+ id="g1461"
+ transform="rotate(90,1.5875,295.41248)">
+ <path
+
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 1.190625,295.94165 v 1.05833"
+ id="path7422"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 1.984375,295.94165 v 1.05833"
+ id="path7422-6"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 1.984375,294.88331 v -1.05833"
+ id="path7439"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 1.190625,294.88331 v -1.05833"
+ id="path7439-7"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path1435"
+ d="m 1.5875,295.67706 v 1.32292"
+
style="fill:none;stroke:#ffffff;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
/>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path1437"
+ d="m 1.5875,295.1479 v -1.32292"
+
style="fill:none;stroke:#ffffff;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
/>
+ <rect
+ y="294.8833"
+ x="1.0583333"
+ height="1.0583333"
+ width="1.0583333"
+ id="rect1433"
+
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
/>
+ <rect
+ y="294.75101"
+ x="0.92604166"
+ height="1.3229166"
+ width="1.3229166"
+ id="rect1433-3"
+
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.26458332;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
/>
+ </g>
+ </g>
+</svg>
diff --git a/icons/Color/scalable/gimp-pivot-south-east.svg b/icons/Color/scalable/gimp-pivot-south-east.svg
new file mode 100644
index 0000000000..b97cc98552
--- /dev/null
+++ b/icons/Color/scalable/gimp-pivot-south-east.svg
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="12"
+ height="12"
+ viewBox="0 0 3.1749999 3.1750001"
+ version="1.1"
+ id="svg886"
+ inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
+ sodipodi:docname="gimp-pivot-south-east.svg"
+ inkscape:export-xdpi="96"
+ inkscape:export-ydpi="96">
+ <defs
+ id="defs880" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="67.083333"
+ inkscape:cx="6"
+ inkscape:cy="6"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="1008"
+ inkscape:window-x="0"
+ inkscape:window-y="35"
+ inkscape:window-maximized="1">
+ <inkscape:grid
+ type="xygrid"
+ id="grid1431"
+ empspacing="4" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata883">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-293.82498)">
+ <g
+ id="g12895"
+ transform="rotate(180,1.5874992,295.41248)">
+ <g
+ id="g1461">
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path7422"
+ d="m 1.190625,295.94165 v 1.05833"
+
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
/>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path7422-6"
+ d="m 1.984375,295.94165 v 1.05833"
+
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
/>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path7439"
+ d="M 2.1166667,295.80936 H 3.175"
+
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
/>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path7439-7"
+ d="M 2.1166667,295.01561 H 3.175"
+
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
/>
+ <path
+
style="fill:none;stroke:#ffffff;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 1.5875,295.67706 v 1.32292"
+ id="path1435"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+
style="fill:none;stroke:#ffffff;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 1.8520833,295.41248 H 3.175"
+ id="path1437"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <rect
+
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect1433"
+ width="1.0583333"
+ height="1.0583333"
+ x="1.0583333"
+ y="294.8833" />
+ <rect
+
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.26458332;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect1433-3"
+ width="1.3229166"
+ height="1.3229166"
+ x="0.92604166"
+ y="294.75101" />
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/icons/Color/scalable/gimp-pivot-south-west.svg b/icons/Color/scalable/gimp-pivot-south-west.svg
new file mode 100644
index 0000000000..7b0719b145
--- /dev/null
+++ b/icons/Color/scalable/gimp-pivot-south-west.svg
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="12"
+ height="12"
+ viewBox="0 0 3.1749999 3.1750001"
+ version="1.1"
+ id="svg886"
+ inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
+ sodipodi:docname="gimp-pivot-south-west.svg"
+ inkscape:export-xdpi="96"
+ inkscape:export-ydpi="96">
+ <defs
+ id="defs880" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="67.083333"
+ inkscape:cx="6"
+ inkscape:cy="6"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="1008"
+ inkscape:window-x="0"
+ inkscape:window-y="35"
+ inkscape:window-maximized="1">
+ <inkscape:grid
+ type="xygrid"
+ id="grid1431"
+ empspacing="4" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata883">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-293.82498)">
+ <g
+ id="g12895"
+ transform="rotate(-90,1.5874975,295.41248)">
+ <g
+ id="g1461">
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path7422"
+ d="m 1.190625,295.94165 v 1.05833"
+
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
/>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path7422-6"
+ d="m 1.984375,295.94165 v 1.05833"
+
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
/>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path7439"
+ d="M 2.1166667,295.80936 H 3.175"
+
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
/>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path7439-7"
+ d="M 2.1166667,295.01561 H 3.175"
+
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
/>
+ <path
+
style="fill:none;stroke:#ffffff;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 1.5875,295.67706 v 1.32292"
+ id="path1435"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+
style="fill:none;stroke:#ffffff;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 1.8520833,295.41248 H 3.175"
+ id="path1437"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <rect
+
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect1433"
+ width="1.0583333"
+ height="1.0583333"
+ x="1.0583333"
+ y="294.8833" />
+ <rect
+
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.26458332;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect1433-3"
+ width="1.3229166"
+ height="1.3229166"
+ x="0.92604166"
+ y="294.75101" />
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/icons/Color/scalable/gimp-pivot-south.svg b/icons/Color/scalable/gimp-pivot-south.svg
new file mode 100644
index 0000000000..2bba90a32d
--- /dev/null
+++ b/icons/Color/scalable/gimp-pivot-south.svg
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="12"
+ height="12"
+ viewBox="0 0 3.1749999 3.1750001"
+ version="1.1"
+ id="svg886"
+ inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
+ sodipodi:docname="gimp-pivot-south.svg"
+ inkscape:export-xdpi="96"
+ inkscape:export-ydpi="96">
+ <defs
+ id="defs880" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="67.083333"
+ inkscape:cx="6"
+ inkscape:cy="6"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="1008"
+ inkscape:window-x="0"
+ inkscape:window-y="35"
+ inkscape:window-maximized="1">
+ <inkscape:grid
+ type="xygrid"
+ id="grid1431"
+ empspacing="4" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata883">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-293.82498)">
+ <g
+ id="g1461"
+ transform="rotate(90,1.5875,295.41248)">
+ <path
+
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 1.190625,295.94165 v 1.05833"
+ id="path7422"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 1.984375,295.94165 v 1.05833"
+ id="path7422-6"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 1.984375,294.88331 v -1.05833"
+ id="path7439"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 1.190625,294.88331 v -1.05833"
+ id="path7439-7"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path1435"
+ d="m 1.5875,295.67706 v 1.32292"
+
style="fill:none;stroke:#ffffff;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
/>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path1437"
+ d="m 1.5875,295.1479 v -1.32292"
+
style="fill:none;stroke:#ffffff;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
/>
+ <rect
+ y="294.8833"
+ x="1.0583333"
+ height="1.0583333"
+ width="1.0583333"
+ id="rect1433"
+
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
/>
+ <rect
+ y="294.75101"
+ x="0.92604166"
+ height="1.3229166"
+ width="1.3229166"
+ id="rect1433-3"
+
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.26458332;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
/>
+ </g>
+ </g>
+</svg>
diff --git a/icons/Color/scalable/gimp-pivot-west.svg b/icons/Color/scalable/gimp-pivot-west.svg
new file mode 100644
index 0000000000..a199d887ab
--- /dev/null
+++ b/icons/Color/scalable/gimp-pivot-west.svg
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="12"
+ height="12"
+ viewBox="0 0 3.1749999 3.1750001"
+ version="1.1"
+ id="svg886"
+ inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
+ sodipodi:docname="gimp-pivot-west.svg"
+ inkscape:export-xdpi="96"
+ inkscape:export-ydpi="96">
+ <defs
+ id="defs880" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="67.083333"
+ inkscape:cx="6"
+ inkscape:cy="6"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="1008"
+ inkscape:window-x="0"
+ inkscape:window-y="35"
+ inkscape:window-maximized="1">
+ <inkscape:grid
+ type="xygrid"
+ id="grid1431"
+ empspacing="4" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata883">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-293.82498)">
+ <g
+ id="g1461">
+ <path
+
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 1.190625,295.94165 v 1.05833"
+ id="path7422"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 1.984375,295.94165 v 1.05833"
+ id="path7422-6"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 1.984375,294.88331 v -1.05833"
+ id="path7439"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 1.190625,294.88331 v -1.05833"
+ id="path7439-7"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path1435"
+ d="m 1.5875,295.67706 v 1.32292"
+
style="fill:none;stroke:#ffffff;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
/>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path1437"
+ d="m 1.5875,295.1479 v -1.32292"
+
style="fill:none;stroke:#ffffff;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
/>
+ <rect
+ y="294.8833"
+ x="1.0583333"
+ height="1.0583333"
+ width="1.0583333"
+ id="rect1433"
+
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
/>
+ <rect
+ y="294.75101"
+ x="0.92604166"
+ height="1.3229166"
+ width="1.3229166"
+ id="rect1433-3"
+
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.26458332;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
/>
+ </g>
+ </g>
+</svg>
diff --git a/icons/Symbolic/icon-list.mk b/icons/Symbolic/icon-list.mk
index e924f06aa7..36f4fda37a 100644
--- a/icons/Symbolic/icon-list.mk
+++ b/icons/Symbolic/icon-list.mk
@@ -184,6 +184,15 @@ scalable_images = \
scalable/gimp-paths-symbolic.svg \
scalable/gimp-path-stroke-symbolic.svg \
scalable/gimp-pattern-symbolic.svg \
+ scalable/gimp-pivot-center-symbolic.svg \
+ scalable/gimp-pivot-east-symbolic.svg \
+ scalable/gimp-pivot-north-symbolic.svg \
+ scalable/gimp-pivot-north-east-symbolic.svg \
+ scalable/gimp-pivot-north-west-symbolic.svg \
+ scalable/gimp-pivot-south-symbolic.svg \
+ scalable/gimp-pivot-south-east-symbolic.svg \
+ scalable/gimp-pivot-south-west-symbolic.svg \
+ scalable/gimp-pivot-west-symbolic.svg \
scalable/gimp-plugin-symbolic.svg \
scalable/gimp-portrait-symbolic.svg \
scalable/gimp-prefs-color-management-symbolic.svg \
@@ -508,6 +517,15 @@ icons12_images = \
12/gimp-linked-symbolic.symbolic.png \
12/gimp-menu-left-symbolic.symbolic.png \
12/gimp-menu-right-symbolic.symbolic.png \
+ 12/gimp-pivot-center-symbolic.symbolic.png \
+ 12/gimp-pivot-east-symbolic.symbolic.png \
+ 12/gimp-pivot-north-symbolic.symbolic.png \
+ 12/gimp-pivot-north-east-symbolic.symbolic.png \
+ 12/gimp-pivot-north-west-symbolic.symbolic.png \
+ 12/gimp-pivot-south-symbolic.symbolic.png \
+ 12/gimp-pivot-south-east-symbolic.symbolic.png \
+ 12/gimp-pivot-south-west-symbolic.symbolic.png \
+ 12/gimp-pivot-west-symbolic.symbolic.png \
12/gimp-quick-mask-off-symbolic.symbolic.png \
12/gimp-quick-mask-on-symbolic.symbolic.png \
12/gimp-swap-colors-symbolic.symbolic.png \
diff --git a/icons/Symbolic/scalable/gimp-pivot-center-symbolic.svg
b/icons/Symbolic/scalable/gimp-pivot-center-symbolic.svg
new file mode 100644
index 0000000000..75f0ff0397
--- /dev/null
+++ b/icons/Symbolic/scalable/gimp-pivot-center-symbolic.svg
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="12"
+ height="12"
+ viewBox="0 0 3.1749999 3.1750001"
+ version="1.1"
+ id="svg886"
+ sodipodi:docname="gimp-pivot-center.svg"
+ inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
+ <defs
+ id="defs880" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="47.43508"
+ inkscape:cx="7.0161184"
+ inkscape:cy="6.6694754"
+ inkscape:document-units="px"
+ inkscape:current-layer="g1562"
+ showgrid="true"
+ units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="1008"
+ inkscape:window-x="0"
+ inkscape:window-y="35"
+ inkscape:window-maximized="1">
+ <inkscape:grid
+ type="xygrid"
+ id="grid1431"
+ empspacing="4" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata883">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-293.82498)">
+ <g
+ id="g1562"
+ transform="rotate(90,1.5875,295.41248)">
+ <rect
+ y="294.8833"
+ x="1.0583333"
+ height="1.0583333"
+ width="1.0583333"
+ id="rect1433"
+
style="fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
/>
+ </g>
+ </g>
+</svg>
diff --git a/icons/Symbolic/scalable/gimp-pivot-east-symbolic.svg
b/icons/Symbolic/scalable/gimp-pivot-east-symbolic.svg
new file mode 100644
index 0000000000..be32b47b57
--- /dev/null
+++ b/icons/Symbolic/scalable/gimp-pivot-east-symbolic.svg
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="12"
+ height="12"
+ viewBox="0 0 3.1749999 3.1750001"
+ version="1.1"
+ id="svg886"
+ sodipodi:docname="gimp-pivot-vertical.svg"
+ inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
+ <defs
+ id="defs880" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="47.43508"
+ inkscape:cx="7.0161184"
+ inkscape:cy="6.6694754"
+ inkscape:document-units="px"
+ inkscape:current-layer="g1562"
+ showgrid="true"
+ units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="1008"
+ inkscape:window-x="0"
+ inkscape:window-y="35"
+ inkscape:window-maximized="1">
+ <inkscape:grid
+ type="xygrid"
+ id="grid1431"
+ empspacing="4" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata883">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-293.82498)">
+ <g
+ id="g1562"
+ transform="rotate(90,1.5875,295.41248)">
+ <g
+ id="g1534">
+ <rect
+
style="fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect1433"
+ width="1.0583333"
+ height="1.0583333"
+ x="1.0583333"
+ y="294.8833" />
+ <path
+
style="fill:none;stroke:#bebebe;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 0.79375,295.41248 H 0"
+ id="path1435"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+
style="fill:none;stroke:#bebebe;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 2.38125,295.41248 H 3.175"
+ id="path1437"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/icons/Symbolic/scalable/gimp-pivot-north-east-symbolic.svg
b/icons/Symbolic/scalable/gimp-pivot-north-east-symbolic.svg
new file mode 100644
index 0000000000..eda050889e
--- /dev/null
+++ b/icons/Symbolic/scalable/gimp-pivot-north-east-symbolic.svg
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="12"
+ height="12"
+ viewBox="0 0 3.1749999 3.1750001"
+ version="1.1"
+ id="svg886"
+ sodipodi:docname="gimp-pivot-ne.svg"
+ inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
+ <defs
+ id="defs880" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="47.43508"
+ inkscape:cx="7.0161184"
+ inkscape:cy="6.6694754"
+ inkscape:document-units="px"
+ inkscape:current-layer="g1472"
+ showgrid="true"
+ units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="1008"
+ inkscape:window-x="0"
+ inkscape:window-y="35"
+ inkscape:window-maximized="1">
+ <inkscape:grid
+ type="xygrid"
+ id="grid1431"
+ empspacing="4" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata883">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-293.82498)">
+ <g
+ id="g1472"
+ transform="rotate(90,1.5875,295.41248)">
+ <g
+ id="g1461">
+ <rect
+
style="fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect1433"
+ width="1.0583333"
+ height="1.0583333"
+ x="1.0583333"
+ y="294.8833" />
+ <path
+
style="fill:none;stroke:#bebebe;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 1.5875,296.20623 v 0.79375"
+ id="path1435"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+
style="fill:none;stroke:#bebebe;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 2.38125,295.41248 H 3.175"
+ id="path1437"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/icons/Symbolic/scalable/gimp-pivot-north-symbolic.svg
b/icons/Symbolic/scalable/gimp-pivot-north-symbolic.svg
new file mode 100644
index 0000000000..d2797afb91
--- /dev/null
+++ b/icons/Symbolic/scalable/gimp-pivot-north-symbolic.svg
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="12"
+ height="12"
+ viewBox="0 0 3.1749999 3.1750001"
+ version="1.1"
+ id="svg886"
+ sodipodi:docname="gimp-pivot-horizontal.svg"
+ inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
+ <defs
+ id="defs880" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="47.43508"
+ inkscape:cx="7.0161184"
+ inkscape:cy="6.6694754"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="1008"
+ inkscape:window-x="0"
+ inkscape:window-y="35"
+ inkscape:window-maximized="1">
+ <inkscape:grid
+ type="xygrid"
+ id="grid1431"
+ empspacing="4" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata883">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-293.82498)">
+ <g
+ id="g1534">
+ <rect
+ y="294.8833"
+ x="1.0583333"
+ height="1.0583333"
+ width="1.0583333"
+ id="rect1433"
+
style="fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
/>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path1435"
+ d="m 0.79375,295.41248 -0.79375,0"
+
style="fill:none;stroke:#bebebe;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
/>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path1437"
+ d="m 2.38125,295.41248 0.79375,0"
+
style="fill:none;stroke:#bebebe;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
/>
+ </g>
+ </g>
+</svg>
diff --git a/icons/Symbolic/scalable/gimp-pivot-north-west-symbolic.svg
b/icons/Symbolic/scalable/gimp-pivot-north-west-symbolic.svg
new file mode 100644
index 0000000000..61659be22b
--- /dev/null
+++ b/icons/Symbolic/scalable/gimp-pivot-north-west-symbolic.svg
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="12"
+ height="12"
+ viewBox="0 0 3.1749999 3.1750001"
+ version="1.1"
+ id="svg886"
+ inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
+ sodipodi:docname="gimp-pivot-nw.svg">
+ <defs
+ id="defs880" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="67.083333"
+ inkscape:cx="3.1453416"
+ inkscape:cy="5.8062112"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="1008"
+ inkscape:window-x="0"
+ inkscape:window-y="35"
+ inkscape:window-maximized="1">
+ <inkscape:grid
+ type="xygrid"
+ id="grid1431"
+ empspacing="4" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata883">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-293.82498)">
+ <g
+ id="g1461">
+ <rect
+ y="294.8833"
+ x="1.0583333"
+ height="1.0583333"
+ width="1.0583333"
+ id="rect1433"
+
style="fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
/>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path1435"
+ d="m 1.5875,296.20623 0,0.79375"
+
style="fill:none;stroke:#bebebe;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
/>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path1437"
+ d="m 2.38125,295.41248 0.79375,0"
+
style="fill:none;stroke:#bebebe;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
/>
+ </g>
+ </g>
+</svg>
diff --git a/icons/Symbolic/scalable/gimp-pivot-south-east-symbolic.svg
b/icons/Symbolic/scalable/gimp-pivot-south-east-symbolic.svg
new file mode 100644
index 0000000000..1426de86c8
--- /dev/null
+++ b/icons/Symbolic/scalable/gimp-pivot-south-east-symbolic.svg
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="12"
+ height="12"
+ viewBox="0 0 3.1749999 3.1750001"
+ version="1.1"
+ id="svg886"
+ sodipodi:docname="gimp-pivot-se.svg"
+ inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
+ <defs
+ id="defs880" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="47.43508"
+ inkscape:cx="7.0161184"
+ inkscape:cy="6.6694754"
+ inkscape:document-units="px"
+ inkscape:current-layer="g1472"
+ showgrid="true"
+ units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="1008"
+ inkscape:window-x="0"
+ inkscape:window-y="35"
+ inkscape:window-maximized="1">
+ <inkscape:grid
+ type="xygrid"
+ id="grid1431"
+ empspacing="4" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata883">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-293.82498)">
+ <g
+ id="g1472"
+ transform="rotate(180,1.5874992,295.41248)">
+ <g
+ id="g1461">
+ <rect
+
style="fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect1433"
+ width="1.0583333"
+ height="1.0583333"
+ x="1.0583333"
+ y="294.8833" />
+ <path
+
style="fill:none;stroke:#bebebe;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 1.5875,296.20623 v 0.79375"
+ id="path1435"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+
style="fill:none;stroke:#bebebe;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 2.38125,295.41248 H 3.175"
+ id="path1437"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/icons/Symbolic/scalable/gimp-pivot-south-symbolic.svg
b/icons/Symbolic/scalable/gimp-pivot-south-symbolic.svg
new file mode 100644
index 0000000000..d2797afb91
--- /dev/null
+++ b/icons/Symbolic/scalable/gimp-pivot-south-symbolic.svg
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="12"
+ height="12"
+ viewBox="0 0 3.1749999 3.1750001"
+ version="1.1"
+ id="svg886"
+ sodipodi:docname="gimp-pivot-horizontal.svg"
+ inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
+ <defs
+ id="defs880" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="47.43508"
+ inkscape:cx="7.0161184"
+ inkscape:cy="6.6694754"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="1008"
+ inkscape:window-x="0"
+ inkscape:window-y="35"
+ inkscape:window-maximized="1">
+ <inkscape:grid
+ type="xygrid"
+ id="grid1431"
+ empspacing="4" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata883">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-293.82498)">
+ <g
+ id="g1534">
+ <rect
+ y="294.8833"
+ x="1.0583333"
+ height="1.0583333"
+ width="1.0583333"
+ id="rect1433"
+
style="fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
/>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path1435"
+ d="m 0.79375,295.41248 -0.79375,0"
+
style="fill:none;stroke:#bebebe;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
/>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path1437"
+ d="m 2.38125,295.41248 0.79375,0"
+
style="fill:none;stroke:#bebebe;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
/>
+ </g>
+ </g>
+</svg>
diff --git a/icons/Symbolic/scalable/gimp-pivot-south-west-symbolic.svg
b/icons/Symbolic/scalable/gimp-pivot-south-west-symbolic.svg
new file mode 100644
index 0000000000..acc533c2f2
--- /dev/null
+++ b/icons/Symbolic/scalable/gimp-pivot-south-west-symbolic.svg
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="12"
+ height="12"
+ viewBox="0 0 3.1749999 3.1750001"
+ version="1.1"
+ id="svg886"
+ sodipodi:docname="gimp-pivot-sw.svg"
+ inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
+ <defs
+ id="defs880" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="47.43508"
+ inkscape:cx="7.0161184"
+ inkscape:cy="6.6694754"
+ inkscape:document-units="px"
+ inkscape:current-layer="g1472"
+ showgrid="true"
+ units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="1008"
+ inkscape:window-x="0"
+ inkscape:window-y="35"
+ inkscape:window-maximized="1">
+ <inkscape:grid
+ type="xygrid"
+ id="grid1431"
+ empspacing="4" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata883">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-293.82498)">
+ <g
+ id="g1472"
+ transform="rotate(-90,1.5874975,295.41248)">
+ <g
+ id="g1461">
+ <rect
+
style="fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect1433"
+ width="1.0583333"
+ height="1.0583333"
+ x="1.0583333"
+ y="294.8833" />
+ <path
+
style="fill:none;stroke:#bebebe;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 1.5875,296.20623 v 0.79375"
+ id="path1435"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+
style="fill:none;stroke:#bebebe;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 2.38125,295.41248 H 3.175"
+ id="path1437"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/icons/Symbolic/scalable/gimp-pivot-west-symbolic.svg
b/icons/Symbolic/scalable/gimp-pivot-west-symbolic.svg
new file mode 100644
index 0000000000..be32b47b57
--- /dev/null
+++ b/icons/Symbolic/scalable/gimp-pivot-west-symbolic.svg
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="12"
+ height="12"
+ viewBox="0 0 3.1749999 3.1750001"
+ version="1.1"
+ id="svg886"
+ sodipodi:docname="gimp-pivot-vertical.svg"
+ inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
+ <defs
+ id="defs880" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="47.43508"
+ inkscape:cx="7.0161184"
+ inkscape:cy="6.6694754"
+ inkscape:document-units="px"
+ inkscape:current-layer="g1562"
+ showgrid="true"
+ units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="1008"
+ inkscape:window-x="0"
+ inkscape:window-y="35"
+ inkscape:window-maximized="1">
+ <inkscape:grid
+ type="xygrid"
+ id="grid1431"
+ empspacing="4" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata883">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-293.82498)">
+ <g
+ id="g1562"
+ transform="rotate(90,1.5875,295.41248)">
+ <g
+ id="g1534">
+ <rect
+
style="fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect1433"
+ width="1.0583333"
+ height="1.0583333"
+ x="1.0583333"
+ y="294.8833" />
+ <path
+
style="fill:none;stroke:#bebebe;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 0.79375,295.41248 H 0"
+ id="path1435"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+
style="fill:none;stroke:#bebebe;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 2.38125,295.41248 H 3.175"
+ id="path1437"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/libgimpwidgets/gimpicons.h b/libgimpwidgets/gimpicons.h
index 8a3cf1ae0c..546f40151a 100644
--- a/libgimpwidgets/gimpicons.h
+++ b/libgimpwidgets/gimpicons.h
@@ -301,6 +301,16 @@ G_BEGIN_DECLS
#define GIMP_ICON_PATH "gimp-path"
#define GIMP_ICON_PATH_STROKE "gimp-path-stroke"
+#define GIMP_ICON_PIVOT_CENTER "gimp-pivot-center"
+#define GIMP_ICON_PIVOT_EAST "gimp-pivot-east"
+#define GIMP_ICON_PIVOT_NORTH "gimp-pivot-north"
+#define GIMP_ICON_PIVOT_NORTH_EAST "gimp-pivot-north-east"
+#define GIMP_ICON_PIVOT_NORTH_WEST "gimp-pivot-north-west"
+#define GIMP_ICON_PIVOT_SOUTH "gimp-pivot-south"
+#define GIMP_ICON_PIVOT_SOUTH_EAST "gimp-pivot-south-east"
+#define GIMP_ICON_PIVOT_SOUTH_WEST "gimp-pivot-south-west"
+#define GIMP_ICON_PIVOT_WEST "gimp-pivot-west"
+
#define GIMP_ICON_PREFERENCES_SYSTEM "preferences-system"
#define GIMP_ICON_PROCESS_STOP "process-stop"
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]