Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2017-06-08 00:16:47 +0300
committerCampbell Barton <ideasman42@gmail.com>2017-06-08 00:42:17 +0300
commit7f480352caaa14a20c0438ae0ed1c2607b6c2c00 (patch)
tree6e938c6173a15d54c681458e361fd61b32fb8cf7 /source
parentbfa5efeebecb24d52bd63d79d6fc08518568f5e6 (diff)
WM: move manipulator library into editors
As with operators, the window-manager has the API for defining, the editor can implement and register its own manipulators. This exposes wmManipulator, keeping it opaque isn't practical if editors and Python are to implement their own.
Diffstat (limited to 'source')
-rw-r--r--source/blender/editors/CMakeLists.txt1
-rw-r--r--source/blender/editors/include/ED_manipulator_library.h139
-rw-r--r--source/blender/editors/manipulator_library/CMakeLists.txt56
-rw-r--r--source/blender/editors/manipulator_library/arrow2d_manipulator.c (renamed from source/blender/windowmanager/manipulators/intern/manipulator_library/arrow2d_manipulator.c)26
-rw-r--r--source/blender/editors/manipulator_library/arrow3d_manipulator.c (renamed from source/blender/windowmanager/manipulators/intern/manipulator_library/arrow_manipulator.c)55
-rw-r--r--source/blender/editors/manipulator_library/cage2d_manipulator.c (renamed from source/blender/windowmanager/manipulators/intern/manipulator_library/cage_manipulator.c)127
-rw-r--r--source/blender/editors/manipulator_library/dial3d_manipulator.c (renamed from source/blender/windowmanager/manipulators/intern/manipulator_library/dial_manipulator.c)36
-rw-r--r--source/blender/editors/manipulator_library/geom_arrow_manipulator.c (renamed from source/blender/windowmanager/manipulators/intern/manipulator_library/geom_arrow_manipulator.c)2
-rw-r--r--source/blender/editors/manipulator_library/geom_cube_manipulator.c (renamed from source/blender/windowmanager/manipulators/intern/manipulator_library/geom_cube_manipulator.c)2
-rw-r--r--source/blender/editors/manipulator_library/geom_dial_manipulator.c (renamed from source/blender/windowmanager/manipulators/intern/manipulator_library/geom_dial_manipulator.c)2
-rw-r--r--source/blender/editors/manipulator_library/manipulator_draw_utils.c127
-rw-r--r--source/blender/editors/manipulator_library/manipulator_geometry.h (renamed from source/blender/windowmanager/manipulators/intern/manipulator_library/manipulator_geometry.h)2
-rw-r--r--source/blender/editors/manipulator_library/manipulator_library_intern.h (renamed from source/blender/windowmanager/manipulators/intern/manipulator_library/manipulator_library_intern.h)15
-rw-r--r--source/blender/editors/manipulator_library/manipulator_library_utils.c (renamed from source/blender/windowmanager/manipulators/intern/manipulator_library/manipulator_library_utils.c)6
-rw-r--r--source/blender/editors/manipulator_library/primitive3d_manipulator.c (renamed from source/blender/windowmanager/manipulators/intern/manipulator_library/primitive_manipulator.c)36
-rw-r--r--source/blender/editors/space_api/spacetypes.c16
-rw-r--r--source/blender/editors/space_node/node_widgets.c11
-rw-r--r--source/blender/editors/space_view3d/view3d_manipulators.c47
-rw-r--r--source/blender/editors/transform/transform_manipulator.c55
-rw-r--r--source/blender/editors/util/CMakeLists.txt1
-rw-r--r--source/blender/windowmanager/CMakeLists.txt12
-rw-r--r--source/blender/windowmanager/WM_api.h1
-rw-r--r--source/blender/windowmanager/manipulators/WM_manipulator_library.h135
-rw-r--r--source/blender/windowmanager/manipulators/WM_manipulator_types.h67
-rw-r--r--source/blender/windowmanager/manipulators/intern/wm_manipulator.c101
-rw-r--r--source/blender/windowmanager/manipulators/intern/wm_manipulator_intern.h86
-rw-r--r--source/blender/windowmanager/manipulators/intern/wm_manipulatorgroup.c2
-rw-r--r--source/blender/windowmanager/manipulators/intern/wm_manipulatormap.c26
28 files changed, 615 insertions, 577 deletions
diff --git a/source/blender/editors/CMakeLists.txt b/source/blender/editors/CMakeLists.txt
index f62db3c1ddb..757fca0a1b2 100644
--- a/source/blender/editors/CMakeLists.txt
+++ b/source/blender/editors/CMakeLists.txt
@@ -29,6 +29,7 @@ if(WITH_BLENDER)
add_subdirectory(gpencil)
add_subdirectory(interface)
add_subdirectory(io)
+ add_subdirectory(manipulator_library)
add_subdirectory(mask)
add_subdirectory(mesh)
add_subdirectory(metaball)
diff --git a/source/blender/editors/include/ED_manipulator_library.h b/source/blender/editors/include/ED_manipulator_library.h
new file mode 100644
index 00000000000..a9c04c8e004
--- /dev/null
+++ b/source/blender/editors/include/ED_manipulator_library.h
@@ -0,0 +1,139 @@
+/*
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * 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 2
+ * 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, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+/** \file ED_manipulator_library.h
+ * \ingroup wm
+ *
+ * \name Generic Manipulators.
+ *
+ * This is exposes pre-defined manipulators for re-use.
+ */
+
+
+#ifndef __ED_MANIPULATOR_LIBRARY_H__
+#define __ED_MANIPULATOR_LIBRARY_H__
+
+/* initialize manipulators */
+void ED_manipulatortypes_arrow_2d(void);
+void ED_manipulatortypes_arrow_3d(void);
+void ED_manipulatortypes_cage_2d(void);
+void ED_manipulatortypes_dial_3d(void);
+void ED_manipulatortypes_facemap_3d(void);
+void ED_manipulatortypes_primitive_3d(void);
+
+struct wmManipulatorGroup;
+
+/* -------------------------------------------------------------------- */
+/* 3D Arrow Manipulator */
+
+enum {
+ ED_MANIPULATOR_ARROW_STYLE_NORMAL = 1,
+ ED_MANIPULATOR_ARROW_STYLE_NO_AXIS = (1 << 1),
+ ED_MANIPULATOR_ARROW_STYLE_CROSS = (1 << 2),
+ /* inverted offset during interaction - if set it also sets constrained below */
+ ED_MANIPULATOR_ARROW_STYLE_INVERTED = (1 << 3),
+ /* clamp arrow interaction to property width */
+ ED_MANIPULATOR_ARROW_STYLE_CONSTRAINED = (1 << 4),
+ /* use a box for the arrowhead */
+ ED_MANIPULATOR_ARROW_STYLE_BOX = (1 << 5),
+ ED_MANIPULATOR_ARROW_STYLE_CONE = (1 << 6),
+};
+
+/* slots for properties */
+enum {
+ ED_MANIPULATOR_ARROW_SLOT_OFS_WORLD_SPACE = 0
+};
+
+struct wmManipulator *ED_manipulator_arrow3d_new(
+ struct wmManipulatorGroup *mgroup, const char *name, const int style);
+void ED_manipulator_arrow3d_set_direction(struct wmManipulator *manipulator, const float direction[3]);
+void ED_manipulator_arrow3d_set_up_vector(struct wmManipulator *manipulator, const float direction[3]);
+void ED_manipulator_arrow3d_set_line_len(struct wmManipulator *manipulator, const float len);
+void ED_manipulator_arrow3d_set_ui_range(struct wmManipulator *manipulator, const float min, const float max);
+void ED_manipulator_arrow3d_set_range_fac(struct wmManipulator *manipulator, const float range_fac);
+void ED_manipulator_arrow3d_cone_set_aspect(struct wmManipulator *manipulator, const float aspect[2]);
+
+
+/* -------------------------------------------------------------------- */
+/* 2D Arrow Manipulator */
+
+struct wmManipulator *ED_manipulator_arrow2d_new(struct wmManipulatorGroup *mgroup, const char *name);
+void ED_manipulator_arrow2d_set_angle(struct wmManipulator *manipulator, const float rot_fac);
+void ED_manipulator_arrow2d_set_line_len(struct wmManipulator *manipulator, const float len);
+
+
+/* -------------------------------------------------------------------- */
+/* Cage Manipulator */
+
+enum {
+ ED_MANIPULATOR_RECT_TRANSFORM_STYLE_TRANSLATE = 1, /* Manipulator translates */
+ ED_MANIPULATOR_RECT_TRANSFORM_STYLE_ROTATE = (1 << 1), /* Manipulator rotates */
+ ED_MANIPULATOR_RECT_TRANSFORM_STYLE_SCALE = (1 << 2), /* Manipulator scales */
+ ED_MANIPULATOR_RECT_TRANSFORM_STYLE_SCALE_UNIFORM = (1 << 3), /* Manipulator scales uniformly */
+};
+
+enum {
+ ED_MANIPULATOR_RECT_TX_SLOT_OFFSET = 0,
+ ED_MANIPULATOR_RECT_TX_SLOT_SCALE = 1
+};
+
+struct wmManipulator *ED_manipulator_rect_transform_new(
+ struct wmManipulatorGroup *mgroup, const char *name, const int style);
+void ED_manipulator_rect_transform_set_dimensions(
+ struct wmManipulator *manipulator, const float width, const float height);
+
+
+/* -------------------------------------------------------------------- */
+/* Dial Manipulator */
+
+enum {
+ ED_MANIPULATOR_DIAL_STYLE_RING = 0,
+ ED_MANIPULATOR_DIAL_STYLE_RING_CLIPPED = 1,
+ ED_MANIPULATOR_DIAL_STYLE_RING_FILLED = 2,
+};
+
+struct wmManipulator *ED_manipulator_dial3d_new(
+ struct wmManipulatorGroup *mgroup, const char *name, const int style);
+void ED_manipulator_dial3d_set_up_vector(
+ struct wmManipulator *manipulator, const float direction[3]);
+
+
+/* -------------------------------------------------------------------- */
+/* Facemap Manipulator */
+
+struct wmManipulator *ED_manipulator_facemap_new(
+ struct wmManipulatorGroup *mgroup, const char *name, const int style,
+ struct Object *ob, const int facemap);
+struct bFaceMap *ED_manipulator_facemap_get_fmap(struct wmManipulator *manipulator);
+
+
+/* -------------------------------------------------------------------- */
+/* Primitive Manipulator */
+
+enum {
+ ED_MANIPULATOR_PRIMITIVE_STYLE_PLANE = 0,
+};
+
+struct wmManipulator *ED_manipulator_primitive3d_new(
+ struct wmManipulatorGroup *mgroup, const char *name, const int style);
+void ED_manipulator_primitive3d_set_direction(struct wmManipulator *manipulator, const float direction[3]);
+void ED_manipulator_primitive3d_set_up_vector(struct wmManipulator *manipulator, const float direction[3]);
+
+#endif /* __ED_MANIPULATOR_LIBRARY_H__ */
diff --git a/source/blender/editors/manipulator_library/CMakeLists.txt b/source/blender/editors/manipulator_library/CMakeLists.txt
new file mode 100644
index 00000000000..bcb814e963f
--- /dev/null
+++ b/source/blender/editors/manipulator_library/CMakeLists.txt
@@ -0,0 +1,56 @@
+# ***** BEGIN GPL LICENSE BLOCK *****
+#
+# 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 2
+# 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, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# ***** END GPL LICENSE BLOCK *****
+
+set(INC
+ ../include
+ ../../blenkernel
+ ../../blenlib
+ ../../blentranslation
+ ../../bmesh
+ ../../depsgraph
+ ../../gpu
+ ../../makesdna
+ ../../makesrna
+ ../../windowmanager
+ ../../../../intern/guardedalloc
+ ../../../../intern/eigen
+ ../../../../intern/glew-mx
+)
+
+set(INC_SYS
+ ${GLEW_INCLUDE_PATH}
+)
+
+set(SRC
+ arrow2d_manipulator.c
+ arrow3d_manipulator.c
+ cage2d_manipulator.c
+ dial3d_manipulator.c
+ geom_arrow_manipulator.c
+ geom_cube_manipulator.c
+ manipulator_draw_utils.c
+ manipulator_library_utils.c
+ primitive3d_manipulator.c
+
+ manipulator_geometry.h
+ manipulator_library_intern.h
+)
+
+add_definitions(${GL_DEFINITIONS})
+
+blender_add_lib(bf_editor_manipulator_library "${SRC}" "${INC}" "${INC_SYS}")
diff --git a/source/blender/windowmanager/manipulators/intern/manipulator_library/arrow2d_manipulator.c b/source/blender/editors/manipulator_library/arrow2d_manipulator.c
index 0cec342dd06..61827723752 100644
--- a/source/blender/windowmanager/manipulators/intern/manipulator_library/arrow2d_manipulator.c
+++ b/source/blender/editors/manipulator_library/arrow2d_manipulator.c
@@ -23,7 +23,7 @@
* ***** END GPL LICENSE BLOCK *****
*/
-/** \file blender/windowmanager/manipulators/intern/manipulator_library/arrow2d_manipulator.c
+/** \file arrow2d_manipulator.c
* \ingroup wm
*
* \name 2D Arrow Manipulator
@@ -43,6 +43,7 @@
#include "DNA_windowmanager_types.h"
#include "ED_screen.h"
+#include "ED_manipulator_library.h"
#include "GPU_draw.h"
#include "GPU_immediate.h"
@@ -55,11 +56,8 @@
#include "WM_types.h"
/* own includes */
-#include "WM_manipulator_api.h"
-#include "WM_manipulator_types.h"
-#include "wm_manipulator_wmapi.h"
-#include "WM_manipulator_library.h"
-#include "wm_manipulator_intern.h"
+#include "WM_api.h"
+
#include "manipulator_library_intern.h"
@@ -112,7 +110,7 @@ static void manipulator_arrow2d_draw(const bContext *UNUSED(C), struct wmManipul
ArrowManipulator2D *arrow = (ArrowManipulator2D *)manipulator;
float col[4];
- manipulator_color_get(manipulator, manipulator->state & WM_MANIPULATOR_HIGHLIGHT, col);
+ manipulator_color_get(manipulator, manipulator->state & WM_MANIPULATOR_STATE_HIGHLIGHT, col);
glLineWidth(manipulator->line_width);
glEnable(GL_BLEND);
@@ -190,7 +188,7 @@ static int manipulator_arrow2d_intersect(
*
* \{ */
-struct wmManipulator *MANIPULATOR_arrow2d_new(wmManipulatorGroup *mgroup, const char *name)
+struct wmManipulator *ED_manipulator_arrow2d_new(wmManipulatorGroup *mgroup, const char *name)
{
const wmManipulatorType *mpt = WM_manipulatortype_find("MANIPULATOR_WT_arrow_2d", false);
ArrowManipulator2D *arrow = (ArrowManipulator2D *)WM_manipulator_new(mpt, mgroup, name);
@@ -202,13 +200,13 @@ struct wmManipulator *MANIPULATOR_arrow2d_new(wmManipulatorGroup *mgroup, const
return &arrow->manipulator;
}
-void MANIPULATOR_arrow2d_set_angle(struct wmManipulator *manipulator, const float angle)
+void ED_manipulator_arrow2d_set_angle(struct wmManipulator *manipulator, const float angle)
{
ArrowManipulator2D *arrow = (ArrowManipulator2D *)manipulator;
arrow->angle = angle;
}
-void MANIPULATOR_arrow2d_set_line_len(struct wmManipulator *manipulator, const float len)
+void ED_manipulator_arrow2d_set_line_len(struct wmManipulator *manipulator, const float len)
{
ArrowManipulator2D *arrow = (ArrowManipulator2D *)manipulator;
arrow->line_len = len;
@@ -233,11 +231,3 @@ void ED_manipulatortypes_arrow_2d(void)
}
/** \} */ /* Arrow Manipulator API */
-
-
-/* -------------------------------------------------------------------- */
-
-void fix_linking_manipulator_arrow2d(void)
-{
- (void)0;
-}
diff --git a/source/blender/windowmanager/manipulators/intern/manipulator_library/arrow_manipulator.c b/source/blender/editors/manipulator_library/arrow3d_manipulator.c
index 95bd0bd1a45..87e26aeba66 100644
--- a/source/blender/windowmanager/manipulators/intern/manipulator_library/arrow_manipulator.c
+++ b/source/blender/editors/manipulator_library/arrow3d_manipulator.c
@@ -23,7 +23,7 @@
* ***** END GPL LICENSE BLOCK *****
*/
-/** \file blender/windowmanager/manipulators/intern/manipulator_library/arrow_manipulator.c
+/** \file arrow3d_manipulator.c
* \ingroup wm
*
* \name Arrow Manipulator
@@ -45,6 +45,7 @@
#include "ED_view3d.h"
#include "ED_screen.h"
+#include "ED_manipulator_library.h"
#include "GPU_draw.h"
#include "GPU_immediate.h"
@@ -60,8 +61,6 @@
#include "WM_api.h"
/* own includes */
-#include "wm_manipulator_wmapi.h"
-#include "wm_manipulator_intern.h"
#include "manipulator_geometry.h"
#include "manipulator_library_intern.h"
@@ -106,7 +105,7 @@ static void arrow_draw_geom(const ArrowManipulator3D *arrow, const bool select,
immBindBuiltinProgram(GPU_SHADER_3D_UNIFORM_COLOR);
- if (arrow->style & MANIPULATOR_ARROW_STYLE_CROSS) {
+ if (arrow->style & ED_MANIPULATOR_ARROW_STYLE_CROSS) {
immUniformColor4fv(color);
immBegin(PRIM_LINES, 4);
@@ -116,7 +115,7 @@ static void arrow_draw_geom(const ArrowManipulator3D *arrow, const bool select,
immVertex3f(pos, 0.0f, 1.0f, 0.0f);
immEnd();
}
- else if (arrow->style & MANIPULATOR_ARROW_STYLE_CONE) {
+ else if (arrow->style & ED_MANIPULATOR_ARROW_STYLE_CONE) {
const float unitx = arrow->aspect[0];
const float unity = arrow->aspect[1];
const float vec[4][3] = {
@@ -147,7 +146,7 @@ static void arrow_draw_geom(const ArrowManipulator3D *arrow, const bool select,
gpuPushMatrix();
- if (arrow->style & MANIPULATOR_ARROW_STYLE_BOX) {
+ if (arrow->style & ED_MANIPULATOR_ARROW_STYLE_BOX) {
const float size = 0.05f;
/* translate to line end with some extra offset so box starts exactly where line ends */
@@ -249,7 +248,7 @@ static void manipulator_arrow_render_3d_intersect(
static void manipulator_arrow_draw(const bContext *UNUSED(C), wmManipulator *manipulator)
{
- arrow_draw_intern((ArrowManipulator3D *)manipulator, false, (manipulator->state & WM_MANIPULATOR_HIGHLIGHT) != 0);
+ arrow_draw_intern((ArrowManipulator3D *)manipulator, false, (manipulator->state & WM_MANIPULATOR_STATE_HIGHLIGHT) != 0);
}
/**
@@ -344,12 +343,12 @@ static void manipulator_arrow_handler(bContext *C, wmManipulator *manipulator, c
ManipulatorCommonData *data = &arrow->data;
const float ofs_new = facdir * len_v3(offset);
- const int slot = ARROW_SLOT_OFFSET_WORLD_SPACE;
+ const int slot = ED_MANIPULATOR_ARROW_SLOT_OFS_WORLD_SPACE;
/* set the property for the operator and call its modal function */
if (manipulator->props[slot]) {
- const bool constrained = arrow->style & MANIPULATOR_ARROW_STYLE_CONSTRAINED;
- const bool inverted = arrow->style & MANIPULATOR_ARROW_STYLE_INVERTED;
+ const bool constrained = arrow->style & ED_MANIPULATOR_ARROW_STYLE_CONSTRAINED;
+ const bool inverted = arrow->style & ED_MANIPULATOR_ARROW_STYLE_INVERTED;
const bool use_precision = flag & WM_MANIPULATOR_TWEAK_PRECISE;
float value = manipulator_value_from_offset(data, inter, ofs_new, constrained, inverted, use_precision);
@@ -374,8 +373,8 @@ static void manipulator_arrow_invoke(
{
ArrowManipulator3D *arrow = (ArrowManipulator3D *)manipulator;
ManipulatorInteraction *inter = MEM_callocN(sizeof(ManipulatorInteraction), __func__);
- PointerRNA ptr = manipulator->ptr[ARROW_SLOT_OFFSET_WORLD_SPACE];
- PropertyRNA *prop = manipulator->props[ARROW_SLOT_OFFSET_WORLD_SPACE];
+ PointerRNA ptr = manipulator->ptr[ED_MANIPULATOR_ARROW_SLOT_OFS_WORLD_SPACE];
+ PropertyRNA *prop = manipulator->props[ED_MANIPULATOR_ARROW_SLOT_OFS_WORLD_SPACE];
if (prop) {
inter->init_value = RNA_property_float_get(&ptr, prop);
@@ -398,8 +397,8 @@ static void manipulator_arrow_prop_data_update(wmManipulator *manipulator, const
ArrowManipulator3D *arrow = (ArrowManipulator3D *)manipulator;
manipulator_property_data_update(
manipulator, &arrow->data, slot,
- (arrow->style & MANIPULATOR_ARROW_STYLE_CONSTRAINED) != 0,
- (arrow->style & MANIPULATOR_ARROW_STYLE_INVERTED) != 0);
+ (arrow->style & ED_MANIPULATOR_ARROW_STYLE_CONSTRAINED) != 0,
+ (arrow->style & ED_MANIPULATOR_ARROW_STYLE_INVERTED) != 0);
}
static void manipulator_arrow_exit(bContext *C, wmManipulator *manipulator, const bool cancel)
@@ -411,7 +410,7 @@ static void manipulator_arrow_exit(bContext *C, wmManipulator *manipulator, cons
ManipulatorCommonData *data = &arrow->data;
ManipulatorInteraction *inter = manipulator->interaction_data;
- manipulator_property_value_reset(C, manipulator, inter, ARROW_SLOT_OFFSET_WORLD_SPACE);
+ manipulator_property_value_reset(C, manipulator, inter, ED_MANIPULATOR_ARROW_SLOT_OFS_WORLD_SPACE);
data->offset = inter->init_offset;
}
@@ -421,7 +420,7 @@ static void manipulator_arrow_exit(bContext *C, wmManipulator *manipulator, cons
*
* \{ */
-wmManipulator *MANIPULATOR_arrow_new(wmManipulatorGroup *mgroup, const char *name, const int style)
+wmManipulator *ED_manipulator_arrow3d_new(wmManipulatorGroup *mgroup, const char *name, const int style)
{
const wmManipulatorType *mpt = WM_manipulatortype_find("MANIPULATOR_WT_arrow_3d", false);
ArrowManipulator3D *arrow = (ArrowManipulator3D *)WM_manipulator_new(mpt, mgroup, name);
@@ -429,8 +428,8 @@ wmManipulator *MANIPULATOR_arrow_new(wmManipulatorGroup *mgroup, const char *nam
int real_style = style;
/* inverted only makes sense in a constrained arrow */
- if (real_style & MANIPULATOR_ARROW_STYLE_INVERTED) {
- real_style |= MANIPULATOR_ARROW_STYLE_CONSTRAINED;
+ if (real_style & ED_MANIPULATOR_ARROW_STYLE_INVERTED) {
+ real_style |= ED_MANIPULATOR_ARROW_STYLE_CONSTRAINED;
}
const float dir_default[3] = {0.0f, 0.0f, 1.0f};
@@ -448,7 +447,7 @@ wmManipulator *MANIPULATOR_arrow_new(wmManipulatorGroup *mgroup, const char *nam
/**
* Define direction the arrow will point towards
*/
-void MANIPULATOR_arrow_set_direction(wmManipulator *manipulator, const float direction[3])
+void ED_manipulator_arrow3d_set_direction(wmManipulator *manipulator, const float direction[3])
{
ArrowManipulator3D *arrow = (ArrowManipulator3D *)manipulator;
@@ -459,7 +458,7 @@ void MANIPULATOR_arrow_set_direction(wmManipulator *manipulator, const float dir
/**
* Define up-direction of the arrow manipulator
*/
-void MANIPULATOR_arrow_set_up_vector(wmManipulator *manipulator, const float direction[3])
+void ED_manipulator_arrow3d_set_up_vector(wmManipulator *manipulator, const float direction[3])
{
ArrowManipulator3D *arrow = (ArrowManipulator3D *)manipulator;
@@ -476,7 +475,7 @@ void MANIPULATOR_arrow_set_up_vector(wmManipulator *manipulator, const float dir
/**
* Define a custom arrow line length
*/
-void MANIPULATOR_arrow_set_line_len(wmManipulator *manipulator, const float len)
+void ED_manipulator_arrow3d_set_line_len(wmManipulator *manipulator, const float len)
{
ArrowManipulator3D *arrow = (ArrowManipulator3D *)manipulator;
arrow->len = len;
@@ -487,7 +486,7 @@ void MANIPULATOR_arrow_set_line_len(wmManipulator *manipulator, const float len)
*
* \note Needs to be called before WM_manipulator_set_property!
*/
-void MANIPULATOR_arrow_set_ui_range(wmManipulator *manipulator, const float min, const float max)
+void ED_manipulator_arrow3d_set_ui_range(wmManipulator *manipulator, const float min, const float max)
{
ArrowManipulator3D *arrow = (ArrowManipulator3D *)manipulator;
@@ -505,7 +504,7 @@ void MANIPULATOR_arrow_set_ui_range(wmManipulator *manipulator, const float min,
*
* \note Needs to be called before WM_manipulator_set_property!
*/
-void MANIPULATOR_arrow_set_range_fac(wmManipulator *manipulator, const float range_fac)
+void ED_manipulator_arrow3d_set_range_fac(wmManipulator *manipulator, const float range_fac)
{
ArrowManipulator3D *arrow = (ArrowManipulator3D *)manipulator;
@@ -518,7 +517,7 @@ void MANIPULATOR_arrow_set_range_fac(wmManipulator *manipulator, const float ran
/**
* Define xy-aspect for arrow cone
*/
-void MANIPULATOR_arrow_cone_set_aspect(wmManipulator *manipulator, const float aspect[2])
+void ED_manipulator_arrow3d_cone_set_aspect(wmManipulator *manipulator, const float aspect[2])
{
ArrowManipulator3D *arrow = (ArrowManipulator3D *)manipulator;
@@ -549,11 +548,3 @@ void ED_manipulatortypes_arrow_3d(void)
}
/** \} */ /* Arrow Manipulator API */
-
-
-/* -------------------------------------------------------------------- */
-
-void fix_linking_manipulator_arrow(void)
-{
- (void)0;
-}
diff --git a/source/blender/windowmanager/manipulators/intern/manipulator_library/cage_manipulator.c b/source/blender/editors/manipulator_library/cage2d_manipulator.c
index 30c24b1c788..97b4e451bc7 100644
--- a/source/blender/windowmanager/manipulators/intern/manipulator_library/cage_manipulator.c
+++ b/source/blender/editors/manipulator_library/cage2d_manipulator.c
@@ -23,7 +23,7 @@
* ***** END GPL LICENSE BLOCK *****
*/
-/** \file blender/windowmanager/manipulators/intern/manipulator_library/cage_manipulator.c
+/** \file cage2d_manipulator.c
* \ingroup wm
*
* \name Cage Manipulator
@@ -44,6 +44,7 @@
#include "DNA_manipulator_types.h"
#include "ED_screen.h"
+#include "ED_manipulator_library.h"
#include "GPU_matrix.h"
#include "GPU_shader.h"
@@ -57,17 +58,17 @@
#include "WM_types.h"
/* own includes */
-#include "wm_manipulator_wmapi.h"
-#include "wm_manipulator_intern.h"
+//#include "wm_manipulator_wmapi.h"
+//#include "wm_manipulator_intern.h"
/* wmManipulator->highlighted_part */
enum {
- MANIPULATOR_RECT_TRANSFORM_INTERSECT_TRANSLATE = 1,
- MANIPULATOR_RECT_TRANSFORM_INTERSECT_SCALEX_LEFT = 2,
- MANIPULATOR_RECT_TRANSFORM_INTERSECT_SCALEX_RIGHT = 3,
- MANIPULATOR_RECT_TRANSFORM_INTERSECT_SCALEY_UP = 4,
- MANIPULATOR_RECT_TRANSFORM_INTERSECT_SCALEY_DOWN = 5
+ ED_MANIPULATOR_RECT_TRANSFORM_INTERSECT_TRANSLATE = 1,
+ ED_MANIPULATOR_RECT_TRANSFORM_INTERSECT_SCALEX_LEFT = 2,
+ ED_MANIPULATOR_RECT_TRANSFORM_INTERSECT_SCALEX_RIGHT = 3,
+ ED_MANIPULATOR_RECT_TRANSFORM_INTERSECT_SCALEY_UP = 4,
+ ED_MANIPULATOR_RECT_TRANSFORM_INTERSECT_SCALEY_DOWN = 5
};
#define MANIPULATOR_RECT_MIN_WIDTH 15.0f
@@ -128,7 +129,7 @@ static void rect_transform_draw_interaction(
float verts[4][2];
switch (highlighted) {
- case MANIPULATOR_RECT_TRANSFORM_INTERSECT_SCALEX_LEFT:
+ case ED_MANIPULATOR_RECT_TRANSFORM_INTERSECT_SCALEX_LEFT:
verts[0][0] = -half_w + w;
verts[0][1] = -half_h;
verts[1][0] = -half_w;
@@ -139,7 +140,7 @@ static void rect_transform_draw_interaction(
verts[3][1] = half_h;
break;
- case MANIPULATOR_RECT_TRANSFORM_INTERSECT_SCALEX_RIGHT:
+ case ED_MANIPULATOR_RECT_TRANSFORM_INTERSECT_SCALEX_RIGHT:
verts[0][0] = half_w - w;
verts[0][1] = -half_h;
verts[1][0] = half_w;
@@ -150,7 +151,7 @@ static void rect_transform_draw_interaction(
verts[3][1] = half_h;
break;
- case MANIPULATOR_RECT_TRANSFORM_INTERSECT_SCALEY_DOWN:
+ case ED_MANIPULATOR_RECT_TRANSFORM_INTERSECT_SCALEY_DOWN:
verts[0][0] = -half_w;
verts[0][1] = -half_h + h;
verts[1][0] = -half_w;
@@ -161,7 +162,7 @@ static void rect_transform_draw_interaction(
verts[3][1] = -half_h + h;
break;
- case MANIPULATOR_RECT_TRANSFORM_INTERSECT_SCALEY_UP:
+ case ED_MANIPULATOR_RECT_TRANSFORM_INTERSECT_SCALEY_UP:
verts[0][0] = -half_w;
verts[0][1] = half_h - h;
verts[1][0] = -half_w;
@@ -220,7 +221,7 @@ static void manipulator_rect_transform_draw(const bContext *UNUSED(C), wmManipul
gpuPushMatrix();
gpuTranslate2f(manipulator->origin[0] + manipulator->offset[0],
manipulator->origin[1] + manipulator->offset[1]);
- if (cage->style & MANIPULATOR_RECT_TRANSFORM_STYLE_SCALE_UNIFORM)
+ if (cage->style & ED_MANIPULATOR_RECT_TRANSFORM_STYLE_SCALE_UNIFORM)
gpuScaleUniform(cage->scale[0]);
else
gpuScale2fv(cage->scale);
@@ -231,7 +232,7 @@ static void manipulator_rect_transform_draw(const bContext *UNUSED(C), wmManipul
aspy = w / h;
w = min_ff(aspx * w / MANIPULATOR_RESIZER_WIDTH, MANIPULATOR_RESIZER_WIDTH / cage->scale[0]);
h = min_ff(aspy * h / MANIPULATOR_RESIZER_WIDTH, MANIPULATOR_RESIZER_WIDTH /
- ((cage->style & MANIPULATOR_RECT_TRANSFORM_STYLE_SCALE_UNIFORM) ? cage->scale[0] : cage->scale[1]));
+ ((cage->style & ED_MANIPULATOR_RECT_TRANSFORM_STYLE_SCALE_UNIFORM) ? cage->scale[0] : cage->scale[1]));
/* corner manipulators */
glLineWidth(cage->manipulator.line_width + 3.0f);
@@ -252,13 +253,13 @@ static void manipulator_rect_transform_draw(const bContext *UNUSED(C), wmManipul
static int manipulator_rect_transform_get_cursor(wmManipulator *manipulator)
{
switch (manipulator->highlighted_part) {
- case MANIPULATOR_RECT_TRANSFORM_INTERSECT_TRANSLATE:
+ case ED_MANIPULATOR_RECT_TRANSFORM_INTERSECT_TRANSLATE:
return BC_HANDCURSOR;
- case MANIPULATOR_RECT_TRANSFORM_INTERSECT_SCALEX_LEFT:
- case MANIPULATOR_RECT_TRANSFORM_INTERSECT_SCALEX_RIGHT:
+ case ED_MANIPULATOR_RECT_TRANSFORM_INTERSECT_SCALEX_LEFT:
+ case ED_MANIPULATOR_RECT_TRANSFORM_INTERSECT_SCALEX_RIGHT:
return CURSOR_X_MOVE;
- case MANIPULATOR_RECT_TRANSFORM_INTERSECT_SCALEY_DOWN:
- case MANIPULATOR_RECT_TRANSFORM_INTERSECT_SCALEY_UP:
+ case ED_MANIPULATOR_RECT_TRANSFORM_INTERSECT_SCALEY_DOWN:
+ case ED_MANIPULATOR_RECT_TRANSFORM_INTERSECT_SCALEY_UP:
return CURSOR_Y_MOVE;
default:
return CURSOR_STD;
@@ -284,7 +285,7 @@ static int manipulator_rect_transform_intersect(
point_local[1] -= manipulator->offset[1];
//rotate_m2(matrot, -cage->transform.rotation);
- if (cage->style & MANIPULATOR_RECT_TRANSFORM_STYLE_SCALE_UNIFORM)
+ if (cage->style & ED_MANIPULATOR_RECT_TRANSFORM_STYLE_SCALE_UNIFORM)
mul_v2_fl(point_local, 1.0f / cage->scale[0]);
else {
point_local[0] /= cage->scale[0];
@@ -297,7 +298,7 @@ static int manipulator_rect_transform_intersect(
aspy = w / h;
w = min_ff(aspx * w / MANIPULATOR_RESIZER_WIDTH, MANIPULATOR_RESIZER_WIDTH / cage->scale[0]);
h = min_ff(aspy * h / MANIPULATOR_RESIZER_WIDTH, MANIPULATOR_RESIZER_WIDTH /
- ((cage->style & MANIPULATOR_RECT_TRANSFORM_STYLE_SCALE_UNIFORM) ? cage->scale[0] : cage->scale[1]));
+ ((cage->style & ED_MANIPULATOR_RECT_TRANSFORM_STYLE_SCALE_UNIFORM) ? cage->scale[0] : cage->scale[1]));
rctf r;
@@ -310,10 +311,10 @@ static int manipulator_rect_transform_intersect(
bool isect = BLI_rctf_isect_pt_v(&r, point_local);
if (isect)
- return MANIPULATOR_RECT_TRANSFORM_INTERSECT_TRANSLATE;
+ return ED_MANIPULATOR_RECT_TRANSFORM_INTERSECT_TRANSLATE;
/* if manipulator does not have a scale intersection, don't do it */
- if (cage->style & (MANIPULATOR_RECT_TRANSFORM_STYLE_SCALE | MANIPULATOR_RECT_TRANSFORM_STYLE_SCALE_UNIFORM)) {
+ if (cage->style & (ED_MANIPULATOR_RECT_TRANSFORM_STYLE_SCALE | ED_MANIPULATOR_RECT_TRANSFORM_STYLE_SCALE_UNIFORM)) {
r.xmin = -half_w;
r.ymin = -half_h;
r.xmax = -half_w + w;
@@ -322,7 +323,7 @@ static int manipulator_rect_transform_intersect(
isect = BLI_rctf_isect_pt_v(&r, point_local);
if (isect)
- return MANIPULATOR_RECT_TRANSFORM_INTERSECT_SCALEX_LEFT;
+ return ED_MANIPULATOR_RECT_TRANSFORM_INTERSECT_SCALEX_LEFT;
r.xmin = half_w - w;
r.ymin = -half_h;
@@ -332,7 +333,7 @@ static int manipulator_rect_transform_intersect(
isect = BLI_rctf_isect_pt_v(&r, point_local);
if (isect)
- return MANIPULATOR_RECT_TRANSFORM_INTERSECT_SCALEX_RIGHT;
+ return ED_MANIPULATOR_RECT_TRANSFORM_INTERSECT_SCALEX_RIGHT;
r.xmin = -half_w;
r.ymin = -half_h;
@@ -342,7 +343,7 @@ static int manipulator_rect_transform_intersect(
isect = BLI_rctf_isect_pt_v(&r, point_local);
if (isect)
- return MANIPULATOR_RECT_TRANSFORM_INTERSECT_SCALEY_DOWN;
+ return ED_MANIPULATOR_RECT_TRANSFORM_INTERSECT_SCALEY_DOWN;
r.xmin = -half_w;
r.ymin = half_h - h;
@@ -352,7 +353,7 @@ static int manipulator_rect_transform_intersect(
isect = BLI_rctf_isect_pt_v(&r, point_local);
if (isect)
- return MANIPULATOR_RECT_TRANSFORM_INTERSECT_SCALEY_UP;
+ return ED_MANIPULATOR_RECT_TRANSFORM_INTERSECT_SCALEY_UP;
}
return 0;
@@ -373,16 +374,16 @@ static bool manipulator_rect_transform_get_prop_value(wmManipulator *manipulator
return false;
}
else {
- if (slot == RECT_TRANSFORM_SLOT_OFFSET) {
+ if (slot == ED_MANIPULATOR_RECT_TX_SLOT_OFFSET) {
if (RNA_property_array_length(&manipulator->ptr[slot], manipulator->props[slot]) != 2) {
fprintf(stderr, "Rect Transform manipulator offset not only be bound to array float property");
return false;
}
RNA_property_float_get_array(&manipulator->ptr[slot], manipulator->props[slot], value);
}
- else if (slot == RECT_TRANSFORM_SLOT_SCALE) {
+ else if (slot == ED_MANIPULATOR_RECT_TX_SLOT_SCALE) {
RectTransformManipulator *cage = (RectTransformManipulator *)manipulator;
- if (cage->style & MANIPULATOR_RECT_TRANSFORM_STYLE_SCALE_UNIFORM) {
+ if (cage->style & ED_MANIPULATOR_RECT_TRANSFORM_STYLE_SCALE_UNIFORM) {
*value = RNA_property_float_get(&manipulator->ptr[slot], manipulator->props[slot]);
}
else {
@@ -426,32 +427,32 @@ static void manipulator_rect_transform_handler(
const float valuey = (event->mval[1] - data->orig_mouse[1]);
- if (manipulator->highlighted_part == MANIPULATOR_RECT_TRANSFORM_INTERSECT_TRANSLATE) {
+ if (manipulator->highlighted_part == ED_MANIPULATOR_RECT_TRANSFORM_INTERSECT_TRANSLATE) {
manipulator->offset[0] = data->orig_offset[0] + valuex;
manipulator->offset[1] = data->orig_offset[1] + valuey;
}
- else if (manipulator->highlighted_part == MANIPULATOR_RECT_TRANSFORM_INTERSECT_SCALEX_LEFT) {
+ else if (manipulator->highlighted_part == ED_MANIPULATOR_RECT_TRANSFORM_INTERSECT_SCALEX_LEFT) {
manipulator->offset[0] = data->orig_offset[0] + valuex / 2.0;
cage->scale[0] = (cage->w * data->orig_scale[0] - valuex) / cage->w;
}
- else if (manipulator->highlighted_part == MANIPULATOR_RECT_TRANSFORM_INTERSECT_SCALEX_RIGHT) {
+ else if (manipulator->highlighted_part == ED_MANIPULATOR_RECT_TRANSFORM_INTERSECT_SCALEX_RIGHT) {
manipulator->offset[0] = data->orig_offset[0] + valuex / 2.0;
cage->scale[0] = (cage->w * data->orig_scale[0] + valuex) / cage->w;
}
- else if (manipulator->highlighted_part == MANIPULATOR_RECT_TRANSFORM_INTERSECT_SCALEY_DOWN) {
+ else if (manipulator->highlighted_part == ED_MANIPULATOR_RECT_TRANSFORM_INTERSECT_SCALEY_DOWN) {
manipulator->offset[1] = data->orig_offset[1] + valuey / 2.0;
- if (cage->style & MANIPULATOR_RECT_TRANSFORM_STYLE_SCALE_UNIFORM) {
+ if (cage->style & ED_MANIPULATOR_RECT_TRANSFORM_STYLE_SCALE_UNIFORM) {
cage->scale[0] = (cage->h * data->orig_scale[0] - valuey) / cage->h;
}
else {
cage->scale[1] = (cage->h * data->orig_scale[1] - valuey) / cage->h;
}
}
- else if (manipulator->highlighted_part == MANIPULATOR_RECT_TRANSFORM_INTERSECT_SCALEY_UP) {
+ else if (manipulator->highlighted_part == ED_MANIPULATOR_RECT_TRANSFORM_INTERSECT_SCALEY_UP) {
manipulator->offset[1] = data->orig_offset[1] + valuey / 2.0;
- if (cage->style & MANIPULATOR_RECT_TRANSFORM_STYLE_SCALE_UNIFORM) {
+ if (cage->style & ED_MANIPULATOR_RECT_TRANSFORM_STYLE_SCALE_UNIFORM) {
cage->scale[0] = (cage->h * data->orig_scale[0] + valuey) / cage->h;
}
else {
@@ -460,7 +461,7 @@ static void manipulator_rect_transform_handler(
}
/* clamping - make sure manipulator is at least 5 pixels wide */
- if (cage->style & MANIPULATOR_RECT_TRANSFORM_STYLE_SCALE_UNIFORM) {
+ if (cage->style & ED_MANIPULATOR_RECT_TRANSFORM_STYLE_SCALE_UNIFORM) {
if (cage->scale[0] < MANIPULATOR_RECT_MIN_WIDTH / cage->h ||
cage->scale[0] < MANIPULATOR_RECT_MIN_WIDTH / cage->w)
{
@@ -480,19 +481,19 @@ static void manipulator_rect_transform_handler(
}
}
- if (manipulator->props[RECT_TRANSFORM_SLOT_OFFSET]) {
- PointerRNA ptr = manipulator->ptr[RECT_TRANSFORM_SLOT_OFFSET];
- PropertyRNA *prop = manipulator->props[RECT_TRANSFORM_SLOT_OFFSET];
+ if (manipulator->props[ED_MANIPULATOR_RECT_TX_SLOT_OFFSET]) {
+ PointerRNA ptr = manipulator->ptr[ED_MANIPULATOR_RECT_TX_SLOT_OFFSET];
+ PropertyRNA *prop = manipulator->props[ED_MANIPULATOR_RECT_TX_SLOT_OFFSET];
RNA_property_float_set_array(&ptr, prop, manipulator->offset);
RNA_property_update(C, &ptr, prop);
}
- if (manipulator->props[RECT_TRANSFORM_SLOT_SCALE]) {
- PointerRNA ptr = manipulator->ptr[RECT_TRANSFORM_SLOT_SCALE];
- PropertyRNA *prop = manipulator->props[RECT_TRANSFORM_SLOT_SCALE];
+ if (manipulator->props[ED_MANIPULATOR_RECT_TX_SLOT_SCALE]) {
+ PointerRNA ptr = manipulator->ptr[ED_MANIPULATOR_RECT_TX_SLOT_SCALE];
+ PropertyRNA *prop = manipulator->props[ED_MANIPULATOR_RECT_TX_SLOT_SCALE];
- if (cage->style & MANIPULATOR_RECT_TRANSFORM_STYLE_SCALE_UNIFORM) {
+ if (cage->style & ED_MANIPULATOR_RECT_TRANSFORM_STYLE_SCALE_UNIFORM) {
RNA_property_float_set(&ptr, prop, cage->scale[0]);
}
else {
@@ -509,10 +510,10 @@ static void manipulator_rect_transform_prop_data_update(wmManipulator *manipulat
{
RectTransformManipulator *cage = (RectTransformManipulator *)manipulator;
- if (slot == RECT_TRANSFORM_SLOT_OFFSET)
- manipulator_rect_transform_get_prop_value(manipulator, RECT_TRANSFORM_SLOT_OFFSET, manipulator->offset);
- if (slot == RECT_TRANSFORM_SLOT_SCALE)
- manipulator_rect_transform_get_prop_value(manipulator, RECT_TRANSFORM_SLOT_SCALE, cage->scale);
+ if (slot == ED_MANIPULATOR_RECT_TX_SLOT_OFFSET)
+ manipulator_rect_transform_get_prop_value(manipulator, ED_MANIPULATOR_RECT_TX_SLOT_OFFSET, manipulator->offset);
+ if (slot == ED_MANIPULATOR_RECT_TX_SLOT_SCALE)
+ manipulator_rect_transform_get_prop_value(manipulator, ED_MANIPULATOR_RECT_TX_SLOT_SCALE, cage->scale);
}
static void manipulator_rect_transform_exit(bContext *C, wmManipulator *manipulator, const bool cancel)
@@ -524,18 +525,18 @@ static void manipulator_rect_transform_exit(bContext *C, wmManipulator *manipula
return;
/* reset properties */
- if (manipulator->props[RECT_TRANSFORM_SLOT_OFFSET]) {
- PointerRNA ptr = manipulator->ptr[RECT_TRANSFORM_SLOT_OFFSET];
- PropertyRNA *prop = manipulator->props[RECT_TRANSFORM_SLOT_OFFSET];
+ if (manipulator->props[ED_MANIPULATOR_RECT_TX_SLOT_OFFSET]) {
+ PointerRNA ptr = manipulator->ptr[ED_MANIPULATOR_RECT_TX_SLOT_OFFSET];
+ PropertyRNA *prop = manipulator->props[ED_MANIPULATOR_RECT_TX_SLOT_OFFSET];
RNA_property_float_set_array(&ptr, prop, data->orig_offset);
RNA_property_update(C, &ptr, prop);
}
- if (manipulator->props[RECT_TRANSFORM_SLOT_SCALE]) {
- PointerRNA ptr = manipulator->ptr[RECT_TRANSFORM_SLOT_SCALE];
- PropertyRNA *prop = manipulator->props[RECT_TRANSFORM_SLOT_SCALE];
+ if (manipulator->props[ED_MANIPULATOR_RECT_TX_SLOT_SCALE]) {
+ PointerRNA ptr = manipulator->ptr[ED_MANIPULATOR_RECT_TX_SLOT_SCALE];
+ PropertyRNA *prop = manipulator->props[ED_MANIPULATOR_RECT_TX_SLOT_SCALE];
- if (cage->style & MANIPULATOR_RECT_TRANSFORM_STYLE_SCALE_UNIFORM) {
+ if (cage->style & ED_MANIPULATOR_RECT_TRANSFORM_STYLE_SCALE_UNIFORM) {
RNA_property_float_set(&ptr, prop, data->orig_scale[0]);
}
else {
@@ -551,7 +552,7 @@ static void manipulator_rect_transform_exit(bContext *C, wmManipulator *manipula
*
* \{ */
-wmManipulator *MANIPULATOR_rect_transform_new(wmManipulatorGroup *mgroup, const char *name, const int style)
+wmManipulator *ED_manipulator_rect_transform_new(wmManipulatorGroup *mgroup, const char *name, const int style)
{
const wmManipulatorType *mpt = WM_manipulatortype_find("MANIPULATOR_WT_cage", false);
RectTransformManipulator *cage = (RectTransformManipulator *)WM_manipulator_new(mpt, mgroup, name);
@@ -563,7 +564,7 @@ wmManipulator *MANIPULATOR_rect_transform_new(wmManipulatorGroup *mgroup, const
return &cage->manipulator;
}
-void MANIPULATOR_rect_transform_set_dimensions(wmManipulator *manipulator, const float width, const float height)
+void ED_manipulator_rect_transform_set_dimensions(wmManipulator *manipulator, const float width, const float height)
{
RectTransformManipulator *cage = (RectTransformManipulator *)manipulator;
cage->w = width;
@@ -589,17 +590,9 @@ static void MANIPULATOR_WT_cage(wmManipulatorType *wt)
wt->size = sizeof(RectTransformManipulator);
}
-void ED_manipulatortypes_cage(void)
+void ED_manipulatortypes_cage_2d(void)
{
WM_manipulatortype_append(MANIPULATOR_WT_cage);
}
/** \} */ // Cage Manipulator API
-
-
-/* -------------------------------------------------------------------- */
-
-void fix_linking_manipulator_cage(void)
-{
- (void)0;
-}
diff --git a/source/blender/windowmanager/manipulators/intern/manipulator_library/dial_manipulator.c b/source/blender/editors/manipulator_library/dial3d_manipulator.c
index aeb1fa76abd..5097c8cab6f 100644
--- a/source/blender/windowmanager/manipulators/intern/manipulator_library/dial_manipulator.c
+++ b/source/blender/editors/manipulator_library/dial3d_manipulator.c
@@ -23,7 +23,7 @@
* ***** END GPL LICENSE BLOCK *****
*/
-/** \file blender/windowmanager/manipulators/intern/manipulator_library/dial_manipulator.c
+/** \file dial3d_manipulator.c
* \ingroup wm
*
* \name Dial Manipulator
@@ -45,6 +45,7 @@
#include "ED_screen.h"
#include "ED_view3d.h"
+#include "ED_manipulator_library.h"
#include "GPU_select.h"
@@ -59,10 +60,6 @@
#include "WM_types.h"
/* own includes */
-#include "WM_manipulator_types.h"
-#include "WM_manipulator_library.h"
-#include "wm_manipulator_wmapi.h"
-#include "wm_manipulator_intern.h"
#include "manipulator_geometry.h"
#include "manipulator_library_intern.h"
@@ -97,7 +94,7 @@ static void dial_geom_draw(
UNUSED_VARS(dial, col, axis_modal_mat, clip_plane);
wm_manipulator_geometryinfo_draw(&wm_manipulator_geom_data_dial, select);
#else
- const bool filled = (dial->style == MANIPULATOR_DIAL_STYLE_RING_FILLED);
+ const bool filled = (dial->style == ED_MANIPULATOR_DIAL_STYLE_RING_FILLED);
glLineWidth(dial->manipulator.line_width);
@@ -243,7 +240,7 @@ static void dial_draw_intern(
gpuTranslate3fv(dial->manipulator.offset);
/* draw rotation indicator arc first */
- if ((dial->manipulator.flag & WM_MANIPULATOR_DRAW_VALUE) && (dial->manipulator.state & WM_MANIPULATOR_ACTIVE)) {
+ if ((dial->manipulator.flag & WM_MANIPULATOR_DRAW_VALUE) && (dial->manipulator.state & WM_MANIPULATOR_STATE_ACTIVE)) {
wmWindow *win = CTX_wm_window(C);
const float co_outer[4] = {0.0f, DIAL_WIDTH, 0.0f}; /* coordinate at which the arc drawing will be started */
float angle_ofs, angle_delta;
@@ -266,7 +263,7 @@ static void manipulator_dial_render_3d_intersect(const bContext *C, wmManipulato
{
DialManipulator *dial = (DialManipulator *)manipulator;
float clip_plane_buf[4];
- float *clip_plane = (dial->style == MANIPULATOR_DIAL_STYLE_RING_CLIPPED) ? clip_plane_buf : NULL;
+ float *clip_plane = (dial->style == ED_MANIPULATOR_DIAL_STYLE_RING_CLIPPED) ? clip_plane_buf : NULL;
/* enable clipping if needed */
if (clip_plane) {
@@ -289,10 +286,10 @@ static void manipulator_dial_render_3d_intersect(const bContext *C, wmManipulato
static void manipulator_dial_draw(const bContext *C, wmManipulator *manipulator)
{
DialManipulator *dial = (DialManipulator *)manipulator;
- const bool active = manipulator->state & WM_MANIPULATOR_ACTIVE;
- const bool highlight = (manipulator->state & WM_MANIPULATOR_HIGHLIGHT) != 0;
+ const bool active = manipulator->state & WM_MANIPULATOR_STATE_ACTIVE;
+ const bool highlight = (manipulator->state & WM_MANIPULATOR_STATE_HIGHLIGHT) != 0;
float clip_plane_buf[4];
- float *clip_plane = (!active && dial->style == MANIPULATOR_DIAL_STYLE_RING_CLIPPED) ? clip_plane_buf : NULL;
+ float *clip_plane = (!active && dial->style == ED_MANIPULATOR_DIAL_STYLE_RING_CLIPPED) ? clip_plane_buf : NULL;
/* enable clipping if needed */
if (clip_plane) {
@@ -332,7 +329,7 @@ static void manipulator_dial_invoke(
*
* \{ */
-wmManipulator *MANIPULATOR_dial_new(wmManipulatorGroup *mgroup, const char *name, const int style)
+wmManipulator *ED_manipulator_dial3d_new(wmManipulatorGroup *mgroup, const char *name, const int style)
{
const wmManipulatorType *mpt = WM_manipulatortype_find("MANIPULATOR_WT_dial", false);
DialManipulator *dial = (DialManipulator *)WM_manipulator_new(mpt, mgroup, name);
@@ -350,7 +347,7 @@ wmManipulator *MANIPULATOR_dial_new(wmManipulatorGroup *mgroup, const char *name
/**
* Define up-direction of the dial manipulator
*/
-void MANIPULATOR_dial_set_up_vector(wmManipulator *manipulator, const float direction[3])
+void ED_manipulator_dial3d_set_up_vector(wmManipulator *manipulator, const float direction[3])
{
DialManipulator *dial = (DialManipulator *)manipulator;
@@ -358,7 +355,7 @@ void MANIPULATOR_dial_set_up_vector(wmManipulator *manipulator, const float dire
normalize_v3(dial->direction);
}
-static void MANIPULATOR_WT_dial(wmManipulatorType *wt)
+static void MANIPULATOR_WT_dial_3d(wmManipulatorType *wt)
{
/* identifiers */
wt->idname = "MANIPULATOR_WT_dial";
@@ -371,16 +368,9 @@ static void MANIPULATOR_WT_dial(wmManipulatorType *wt)
wt->size = sizeof(DialManipulator);
}
-void ED_manipulatortypes_dial(void)
+void ED_manipulatortypes_dial_3d(void)
{
- WM_manipulatortype_append(MANIPULATOR_WT_dial);
+ WM_manipulatortype_append(MANIPULATOR_WT_dial_3d);
}
/** \} */ // Dial Manipulator API
-
-/* -------------------------------------------------------------------- */
-
-void fix_linking_manipulator_dial(void)
-{
- (void)0;
-}
diff --git a/source/blender/windowmanager/manipulators/intern/manipulator_library/geom_arrow_manipulator.c b/source/blender/editors/manipulator_library/geom_arrow_manipulator.c
index 0f874e588bc..73518e5ac38 100644
--- a/source/blender/windowmanager/manipulators/intern/manipulator_library/geom_arrow_manipulator.c
+++ b/source/blender/editors/manipulator_library/geom_arrow_manipulator.c
@@ -21,7 +21,7 @@
* ***** END GPL LICENSE BLOCK *****
*/
-/** \file blender/windowmanager/manipulators/intern/manipulator_library/geom_arrow_manipulator.c
+/** \file geom_arrow_manipulator.c
* \ingroup wm
*/
diff --git a/source/blender/windowmanager/manipulators/intern/manipulator_library/geom_cube_manipulator.c b/source/blender/editors/manipulator_library/geom_cube_manipulator.c
index d0600705258..a79d9161e96 100644
--- a/source/blender/windowmanager/manipulators/intern/manipulator_library/geom_cube_manipulator.c
+++ b/source/blender/editors/manipulator_library/geom_cube_manipulator.c
@@ -23,7 +23,7 @@
* ***** END GPL LICENSE BLOCK *****
*/
-/** \file blender/windowmanager/manipulators/intern/manipulator_library/geom_cube_manipulator.c
+/** \file geom_cube_manipulator.c
* \ingroup wm
*/
diff --git a/source/blender/windowmanager/manipulators/intern/manipulator_library/geom_dial_manipulator.c b/source/blender/editors/manipulator_library/geom_dial_manipulator.c
index 7f2edbcf60e..dbabe7ad136 100644
--- a/source/blender/windowmanager/manipulators/intern/manipulator_library/geom_dial_manipulator.c
+++ b/source/blender/editors/manipulator_library/geom_dial_manipulator.c
@@ -21,7 +21,7 @@
* ***** END GPL LICENSE BLOCK *****
*/
-/** \file blender/windowmanager/manipulators/intern/manipulator_library/geom_dial_manipulator.c
+/** \file geom_dial_manipulator.c
* \ingroup wm
*/
diff --git a/source/blender/editors/manipulator_library/manipulator_draw_utils.c b/source/blender/editors/manipulator_library/manipulator_draw_utils.c
new file mode 100644
index 00000000000..fc7b22ac0f0
--- /dev/null
+++ b/source/blender/editors/manipulator_library/manipulator_draw_utils.c
@@ -0,0 +1,127 @@
+/*
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * 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 2
+ * 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, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * The Original Code is Copyright (C) 2014 Blender Foundation.
+ * All rights reserved.
+ *
+ * Contributor(s): Blender Foundation
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+/** \file manipulator_draw_utils.c
+ * \ingroup wm
+ */
+
+#include "BKE_context.h"
+
+#include "BLI_listbase.h"
+#include "BLI_ghash.h"
+#include "BLI_math.h"
+#include "BLI_string.h"
+#include "BLI_string_utils.h"
+
+#include "DNA_manipulator_types.h"
+
+#include "ED_screen.h"
+#include "ED_view3d.h"
+
+#include "GPU_batch.h"
+#include "GPU_glew.h"
+#include "GPU_immediate.h"
+
+#include "MEM_guardedalloc.h"
+
+#include "RNA_access.h"
+
+#include "WM_api.h"
+#include "WM_types.h"
+
+/* only for own init/exit calls (wm_manipulatortype_init/wm_manipulatortype_free) */
+#include "wm.h"
+
+/* own includes */
+#include "manipulator_library_intern.h"
+
+/**
+ * Main draw call for ManipulatorGeomInfo data
+ */
+void wm_manipulator_geometryinfo_draw(const ManipulatorGeomInfo *info, const bool select, const float color[4])
+{
+ /* TODO store the Batches inside the ManipulatorGeomInfo and updated it when geom changes
+ * So we don't need to re-created and discard it every time */
+
+ const bool use_lighting = true || (!select && ((U.manipulator_flag & V3D_SHADED_MANIPULATORS) != 0));
+ VertexBuffer *vbo;
+ ElementList *el;
+ Batch *batch;
+ ElementListBuilder elb = {0};
+
+ VertexFormat format = {0};
+ unsigned int pos_id = VertexFormat_add_attrib(&format, "pos", COMP_F32, 3, KEEP_FLOAT);
+ unsigned int nor_id;
+
+ if (use_lighting) {
+ nor_id = VertexFormat_add_attrib(&format, "nor", COMP_I16, 3, NORMALIZE_INT_TO_FLOAT);
+ }
+
+ /* Elements */
+ ElementListBuilder_init(&elb, PRIM_TRIANGLES, info->ntris, info->nverts);
+ for (int i = 0; i < info->ntris; ++i) {
+ const unsigned short *idx = &info->indices[i * 3];
+ add_triangle_vertices(&elb, idx[0], idx[1], idx[2]);
+ }
+ el = ElementList_build(&elb);
+
+ vbo = VertexBuffer_create_with_format(&format);
+ VertexBuffer_allocate_data(vbo, info->nverts);
+
+ VertexBuffer_fill_attrib(vbo, pos_id, info->verts);
+
+ if (use_lighting) {
+ /* Normals are expected to be smooth. */
+ VertexBuffer_fill_attrib(vbo, nor_id, info->normals);
+ }
+
+ batch = Batch_create(PRIM_TRIANGLES, vbo, el);
+ Batch_set_builtin_program(batch, GPU_SHADER_3D_UNIFORM_COLOR);
+
+ Batch_Uniform4fv(batch, "color", color);
+
+ glEnable(GL_CULL_FACE);
+ // glEnable(GL_DEPTH_TEST);
+
+ Batch_draw(batch);
+
+ glDisable(GL_DEPTH_TEST);
+ // glDisable(GL_CULL_FACE);
+
+
+ Batch_discard_all(batch);
+}
+
+void wm_manipulator_vec_draw(
+ const float color[4], const float (*verts)[3], unsigned int vert_count,
+ unsigned int pos, unsigned int primitive_type)
+{
+ immUniformColor4fv(color);
+ immBegin(primitive_type, vert_count);
+ for (int i = 0; i < vert_count; i++) {
+ immVertex3fv(pos, verts[i]);
+ }
+ immEnd();
+}
diff --git a/source/blender/windowmanager/manipulators/intern/manipulator_library/manipulator_geometry.h b/source/blender/editors/manipulator_library/manipulator_geometry.h
index b3df79834a3..0eff1ca89d8 100644
--- a/source/blender/windowmanager/manipulators/intern/manipulator_library/manipulator_geometry.h
+++ b/source/blender/editors/manipulator_library/manipulator_geometry.h
@@ -21,7 +21,7 @@
* ***** END GPL LICENSE BLOCK *****
*/
-/** \file blender/windowmanager/manipulators/intern/manipulator_library/manipulator_geometry.h
+/** \file manipulator_geometry.h
* \ingroup wm
*
* \name Manipulator Geometry
diff --git a/source/blender/windowmanager/manipulators/intern/manipulator_library/manipulator_library_intern.h b/source/blender/editors/manipulator_library/manipulator_library_intern.h
index e432fa1523a..c2d750deee0 100644
--- a/source/blender/windowmanager/manipulators/intern/manipulator_library/manipulator_library_intern.h
+++ b/source/blender/editors/manipulator_library/manipulator_library_intern.h
@@ -23,11 +23,10 @@
* ***** END GPL LICENSE BLOCK *****
*/
-/** \file blender/windowmanager/manipulators/intern/manipulator_library/manipulator_library_intern.h
+/** \file manipulator_library_intern.h
* \ingroup wm
*/
-
#ifndef __MANIPULATOR_LIBRARY_INTERN_H__
#define __MANIPULATOR_LIBRARY_INTERN_H__
@@ -96,5 +95,17 @@ void manipulator_color_get(
const struct wmManipulator *manipulator, const bool highlight,
float r_col[]);
+
+/* -------------------------------------------------------------------- */
+/* Manipulator drawing */
+
+#include "manipulator_geometry.h"
+
+void wm_manipulator_geometryinfo_draw(const struct ManipulatorGeomInfo *info, const bool select, const float color[4]);
+void wm_manipulator_vec_draw(
+ const float color[4], const float (*verts)[3], unsigned int vert_count,
+ unsigned int pos, unsigned int primitive_type);
+
+
#endif /* __MANIPULATOR_LIBRARY_INTERN_H__ */
diff --git a/source/blender/windowmanager/manipulators/intern/manipulator_library/manipulator_library_utils.c b/source/blender/editors/manipulator_library/manipulator_library_utils.c
index 0617e9e873b..0950f27213d 100644
--- a/source/blender/windowmanager/manipulators/intern/manipulator_library/manipulator_library_utils.c
+++ b/source/blender/editors/manipulator_library/manipulator_library_utils.c
@@ -23,7 +23,7 @@
* ***** END GPL LICENSE BLOCK *****
*/
-/** \file blender/windowmanager/manipulators/intern/manipulator_library/manipulator_library_utils.c
+/** \file manipulator_library_utils.c
* \ingroup wm
*
* \name Manipulator Library Utilities
@@ -38,11 +38,9 @@
#include "RNA_access.h"
#include "WM_api.h"
+#include "WM_types.h"
/* own includes */
-#include "WM_manipulator_types.h"
-#include "wm_manipulator_wmapi.h"
-#include "wm_manipulator_intern.h"
#include "manipulator_library_intern.h"
/* factor for precision tweaking */
diff --git a/source/blender/windowmanager/manipulators/intern/manipulator_library/primitive_manipulator.c b/source/blender/editors/manipulator_library/primitive3d_manipulator.c
index c67aeace8d9..cc8fbeb17d2 100644
--- a/source/blender/windowmanager/manipulators/intern/manipulator_library/primitive_manipulator.c
+++ b/source/blender/editors/manipulator_library/primitive3d_manipulator.c
@@ -18,7 +18,7 @@
* ***** END GPL LICENSE BLOCK *****
*/
-/** \file blender/windowmanager/manipulators/intern/manipulator_library/primitive_manipulator.c
+/** \file primitive_manipulator.c
* \ingroup wm
*
* \name Primitive Manipulator
@@ -47,11 +47,9 @@
#include "WM_api.h"
#include "WM_types.h"
+#include "ED_manipulator_library.h"
+
/* own includes */
-#include "WM_manipulator_types.h"
-#include "WM_manipulator_library.h"
-#include "wm_manipulator_wmapi.h"
-#include "wm_manipulator_intern.h"
#include "manipulator_library_intern.h"
@@ -86,7 +84,7 @@ static void manipulator_primitive_draw_geom(
float (*verts)[3];
unsigned int vert_count = 0;
- if (style == MANIPULATOR_PRIMITIVE_STYLE_PLANE) {
+ if (style == ED_MANIPULATOR_PRIMITIVE_STYLE_PLANE) {
verts = verts_plane;
vert_count = ARRAY_SIZE(verts_plane);
}
@@ -171,7 +169,7 @@ static void manipulator_primitive_draw(const bContext *UNUSED(C), wmManipulator
{
manipulator_primitive_draw_intern(
(PrimitiveManipulator *)manipulator, false,
- (manipulator->state & WM_MANIPULATOR_HIGHLIGHT));
+ (manipulator->state & WM_MANIPULATOR_STATE_HIGHLIGHT));
}
static void manipulator_primitive_invoke(
@@ -191,9 +189,9 @@ static void manipulator_primitive_invoke(
*
* \{ */
-wmManipulator *MANIPULATOR_primitive_new(wmManipulatorGroup *mgroup, const char *name, const int style)
+wmManipulator *ED_manipulator_primitive3d_new(wmManipulatorGroup *mgroup, const char *name, const int style)
{
- const wmManipulatorType *mpt = WM_manipulatortype_find("MANIPULATOR_WT_primitive", false);
+ const wmManipulatorType *mpt = WM_manipulatortype_find("MANIPULATOR_WT_primitive3d", false);
PrimitiveManipulator *prim = (PrimitiveManipulator *)WM_manipulator_new(mpt, mgroup, name);
const float dir_default[3] = {0.0f, 0.0f, 1.0f};
@@ -210,7 +208,7 @@ wmManipulator *MANIPULATOR_primitive_new(wmManipulatorGroup *mgroup, const char
/**
* Define direction the primitive will point towards
*/
-void MANIPULATOR_primitive_set_direction(wmManipulator *manipulator, const float direction[3])
+void ED_manipulator_primitive3d_set_direction(wmManipulator *manipulator, const float direction[3])
{
PrimitiveManipulator *prim = (PrimitiveManipulator *)manipulator;
@@ -220,7 +218,7 @@ void MANIPULATOR_primitive_set_direction(wmManipulator *manipulator, const float
/**
* Define up-direction of the primitive manipulator
*/
-void MANIPULATOR_primitive_set_up_vector(wmManipulator *manipulator, const float direction[3])
+void ED_manipulator_primitive3d_set_up_vector(wmManipulator *manipulator, const float direction[3])
{
PrimitiveManipulator *prim = (PrimitiveManipulator *)manipulator;
@@ -233,10 +231,10 @@ void MANIPULATOR_primitive_set_up_vector(wmManipulator *manipulator, const float
}
}
-static void MANIPULATOR_WT_primitive(wmManipulatorType *wt)
+static void MANIPULATOR_WT_primitive3d(wmManipulatorType *wt)
{
/* identifiers */
- wt->idname = "MANIPULATOR_WT_primitive";
+ wt->idname = "MANIPULATOR_WT_primitive3d";
/* api callbacks */
wt->draw = manipulator_primitive_draw;
@@ -246,17 +244,9 @@ static void MANIPULATOR_WT_primitive(wmManipulatorType *wt)
wt->size = sizeof(PrimitiveManipulator);
}
-void ED_manipulatortypes_primitive(void)
+void ED_manipulatortypes_primitive_3d(void)
{
- WM_manipulatortype_append(MANIPULATOR_WT_primitive);
+ WM_manipulatortype_append(MANIPULATOR_WT_primitive3d);
}
/** \} */ // Primitive Manipulator API
-
-
-/* -------------------------------------------------------------------- */
-
-void fix_linking_manipulator_primitive(void)
-{
- (void)0;
-}
diff --git a/source/blender/editors/space_api/spacetypes.c b/source/blender/editors/space_api/spacetypes.c
index acc197bcc5b..16ccf1da916 100644
--- a/source/blender/editors/space_api/spacetypes.c
+++ b/source/blender/editors/space_api/spacetypes.c
@@ -66,6 +66,7 @@
#include "ED_clip.h"
#include "ED_mask.h"
#include "ED_sequencer.h"
+#include "ED_manipulator_library.h"
#include "io_ops.h"
@@ -126,20 +127,11 @@ void ED_spacetypes_init(void)
ED_operatortypes_ui();
/* manipulator types */
-
- /* FIXME */
- extern void ED_manipulatortypes_dial(void);
- extern void ED_manipulatortypes_arrow_2d(void);
- extern void ED_manipulatortypes_arrow_3d(void);
- extern void ED_manipulatortypes_facemap(void);
- extern void ED_manipulatortypes_primitive(void);
- extern void ED_manipulatortypes_cage(void);
-
- ED_manipulatortypes_dial();
+ ED_manipulatortypes_dial_3d();
ED_manipulatortypes_arrow_2d();
ED_manipulatortypes_arrow_3d();
- ED_manipulatortypes_primitive();
- ED_manipulatortypes_cage();
+ ED_manipulatortypes_primitive_3d();
+ ED_manipulatortypes_cage_2d();
/* register types for operators and manipulators */
spacetypes = BKE_spacetypes_list();
diff --git a/source/blender/editors/space_node/node_widgets.c b/source/blender/editors/space_node/node_widgets.c
index 9e7445b8566..2ff6472f8d0 100644
--- a/source/blender/editors/space_node/node_widgets.c
+++ b/source/blender/editors/space_node/node_widgets.c
@@ -28,6 +28,7 @@
#include "DNA_manipulator_types.h"
#include "ED_screen.h"
+#include "ED_manipulator_library.h"
#include "IMB_imbuf_types.h"
@@ -64,9 +65,9 @@ static void WIDGETGROUP_node_transform_init(const bContext *UNUSED(C), wmManipul
{
wmManipulatorWrapper *wwrapper = MEM_mallocN(sizeof(wmManipulatorWrapper), __func__);
- wwrapper->manipulator = MANIPULATOR_rect_transform_new(
+ wwrapper->manipulator = ED_manipulator_rect_transform_new(
wgroup, "backdrop_cage",
- MANIPULATOR_RECT_TRANSFORM_STYLE_TRANSLATE | MANIPULATOR_RECT_TRANSFORM_STYLE_SCALE_UNIFORM);
+ ED_MANIPULATOR_RECT_TRANSFORM_STYLE_TRANSLATE | ED_MANIPULATOR_RECT_TRANSFORM_STYLE_SCALE_UNIFORM);
wgroup->customdata = wwrapper;
}
@@ -86,7 +87,7 @@ static void WIDGETGROUP_node_transform_refresh(const bContext *C, wmManipulatorG
const float w = (ibuf->x > 0) ? ibuf->x : 64.0f;
const float h = (ibuf->y > 0) ? ibuf->y : 64.0f;
- MANIPULATOR_rect_transform_set_dimensions(cage, w, h);
+ ED_manipulator_rect_transform_set_dimensions(cage, w, h);
WM_manipulator_set_origin(cage, origin);
WM_manipulator_set_flag(cage, WM_MANIPULATOR_HIDDEN, false);
@@ -94,8 +95,8 @@ static void WIDGETGROUP_node_transform_refresh(const bContext *C, wmManipulatorG
SpaceNode *snode = CTX_wm_space_node(C);
PointerRNA nodeptr;
RNA_pointer_create(snode->id, &RNA_SpaceNodeEditor, snode, &nodeptr);
- WM_manipulator_set_property(cage, RECT_TRANSFORM_SLOT_OFFSET, &nodeptr, "backdrop_offset");
- WM_manipulator_set_property(cage, RECT_TRANSFORM_SLOT_SCALE, &nodeptr, "backdrop_zoom");
+ WM_manipulator_set_property(cage, ED_MANIPULATOR_RECT_TX_SLOT_OFFSET, &nodeptr, "backdrop_offset");
+ WM_manipulator_set_property(cage, ED_MANIPULATOR_RECT_TX_SLOT_SCALE, &nodeptr, "backdrop_zoom");
}
else {
WM_manipulator_set_flag(cage, WM_MANIPULATOR_HIDDEN, true);
diff --git a/source/blender/editors/space_view3d/view3d_manipulators.c b/source/blender/editors/space_view3d/view3d_manipulators.c
index 8d853498740..87513a6294b 100644
--- a/source/blender/editors/space_view3d/view3d_manipulators.c
+++ b/source/blender/editors/space_view3d/view3d_manipulators.c
@@ -43,6 +43,7 @@
#include "ED_armature.h"
#include "ED_screen.h"
+#include "ED_manipulator_library.h"
#include "MEM_guardedalloc.h"
@@ -78,10 +79,10 @@ static void WIDGETGROUP_lamp_init(const bContext *UNUSED(C), wmManipulatorGroup
wmManipulatorWrapper *wwrapper = MEM_mallocN(sizeof(wmManipulatorWrapper), __func__);
- wwrapper->manipulator = MANIPULATOR_arrow_new(wgroup, propname, MANIPULATOR_ARROW_STYLE_INVERTED);
+ wwrapper->manipulator = ED_manipulator_arrow3d_new(wgroup, propname, ED_MANIPULATOR_ARROW_STYLE_INVERTED);
wgroup->customdata = wwrapper;
- MANIPULATOR_arrow_set_range_fac(wwrapper->manipulator, 4.0f);
+ ED_manipulator_arrow3d_set_range_fac(wwrapper->manipulator, 4.0f);
WM_manipulator_set_color(wwrapper->manipulator, color);
WM_manipulator_set_color_highlight(wwrapper->manipulator, color_hi);
}
@@ -95,14 +96,14 @@ static void WIDGETGROUP_lamp_refresh(const bContext *C, wmManipulatorGroup *wgro
negate_v3_v3(dir, ob->obmat[2]);
- MANIPULATOR_arrow_set_direction(wwrapper->manipulator, dir);
+ ED_manipulator_arrow3d_set_direction(wwrapper->manipulator, dir);
WM_manipulator_set_origin(wwrapper->manipulator, ob->obmat[3]);
/* need to set property here for undo. TODO would prefer to do this in _init */
PointerRNA lamp_ptr;
const char *propname = "spot_size";
RNA_pointer_create(&la->id, &RNA_Lamp, la, &lamp_ptr);
- WM_manipulator_set_property(wwrapper->manipulator, ARROW_SLOT_OFFSET_WORLD_SPACE, &lamp_ptr, propname);
+ WM_manipulator_set_property(wwrapper->manipulator, ED_MANIPULATOR_ARROW_SLOT_OFS_WORLD_SPACE, &lamp_ptr, propname);
}
void VIEW3D_WGT_lamp(wmManipulatorGroupType *wgt)
@@ -158,7 +159,7 @@ static void cameragroup_property_setup(wmManipulator *widget, Object *ob, Camera
RNA_property_float_ui_range(&camera_ptr, prop, &min, &max, &step, &precision);
range = max - min;
- MANIPULATOR_arrow_set_range_fac(widget, is_ortho ? (scale_fac * range) : (drawsize * range / half_sensor));
+ ED_manipulator_arrow3d_set_range_fac(widget, is_ortho ? (scale_fac * range) : (drawsize * range / half_sensor));
}
static void WIDGETGROUP_camera_init(const bContext *C, wmManipulatorGroup *wgroup)
@@ -177,7 +178,7 @@ static void WIDGETGROUP_camera_init(const bContext *C, wmManipulatorGroup *wgrou
const float color[4] = {1.0f, 0.3f, 0.0f, 1.0f};
const float color_hi[4] = {1.0f, 0.3f, 0.0f, 1.0f};
- camgroup->dop_dist = MANIPULATOR_arrow_new(wgroup, "dof_distance", MANIPULATOR_ARROW_STYLE_CROSS);
+ camgroup->dop_dist = ED_manipulator_arrow3d_new(wgroup, "dof_distance", ED_MANIPULATOR_ARROW_STYLE_CROSS);
WM_manipulator_set_flag(camgroup->dop_dist, WM_MANIPULATOR_DRAW_HOVER, true);
WM_manipulator_set_color(camgroup->dop_dist, color);
WM_manipulator_set_color_highlight(camgroup->dop_dist, color_hi);
@@ -189,16 +190,16 @@ static void WIDGETGROUP_camera_init(const bContext *C, wmManipulatorGroup *wgrou
const float color[4] = {1.0f, 1.0, 0.27f, 0.5f};
const float color_hi[4] = {1.0f, 1.0, 0.27f, 1.0f};
- camgroup->focal_len = MANIPULATOR_arrow_new(
+ camgroup->focal_len = ED_manipulator_arrow3d_new(
wgroup, "focal_len",
- (MANIPULATOR_ARROW_STYLE_CONE | MANIPULATOR_ARROW_STYLE_CONSTRAINED));
+ (ED_MANIPULATOR_ARROW_STYLE_CONE | ED_MANIPULATOR_ARROW_STYLE_CONSTRAINED));
WM_manipulator_set_color(camgroup->focal_len, color);
WM_manipulator_set_color_highlight(camgroup->focal_len, color_hi);
cameragroup_property_setup(camgroup->focal_len, ob, ca, false);
- camgroup->ortho_scale = MANIPULATOR_arrow_new(
+ camgroup->ortho_scale = ED_manipulator_arrow3d_new(
wgroup, "ortho_scale",
- (MANIPULATOR_ARROW_STYLE_CONE | MANIPULATOR_ARROW_STYLE_CONSTRAINED));
+ (ED_MANIPULATOR_ARROW_STYLE_CONE | ED_MANIPULATOR_ARROW_STYLE_CONSTRAINED));
WM_manipulator_set_color(camgroup->ortho_scale, color);
WM_manipulator_set_color_highlight(camgroup->ortho_scale, color_hi);
cameragroup_property_setup(camgroup->ortho_scale, ob, ca, true);
@@ -221,14 +222,14 @@ static void WIDGETGROUP_camera_refresh(const bContext *C, wmManipulatorGroup *wg
negate_v3_v3(dir, ob->obmat[2]);
if (ca->flag & CAM_SHOWLIMITS) {
- MANIPULATOR_arrow_set_direction(camgroup->dop_dist, dir);
- MANIPULATOR_arrow_set_up_vector(camgroup->dop_dist, ob->obmat[1]);
+ ED_manipulator_arrow3d_set_direction(camgroup->dop_dist, dir);
+ ED_manipulator_arrow3d_set_up_vector(camgroup->dop_dist, ob->obmat[1]);
WM_manipulator_set_origin(camgroup->dop_dist, ob->obmat[3]);
WM_manipulator_set_scale(camgroup->dop_dist, ca->drawsize);
WM_manipulator_set_flag(camgroup->dop_dist, WM_MANIPULATOR_HIDDEN, false);
/* need to set property here for undo. TODO would prefer to do this in _init */
- WM_manipulator_set_property(camgroup->dop_dist, ARROW_SLOT_OFFSET_WORLD_SPACE, &camera_ptr, "dof_distance");
+ WM_manipulator_set_property(camgroup->dop_dist, ED_MANIPULATOR_ARROW_SLOT_OFS_WORLD_SPACE, &camera_ptr, "dof_distance");
}
else {
WM_manipulator_set_flag(camgroup->dop_dist, WM_MANIPULATOR_HIDDEN, true);
@@ -263,16 +264,16 @@ static void WIDGETGROUP_camera_refresh(const bContext *C, wmManipulatorGroup *wg
asp[0] = (sensor_fit == CAMERA_SENSOR_FIT_HOR) ? 1.0 : aspx / aspy;
asp[1] = (sensor_fit == CAMERA_SENSOR_FIT_HOR) ? aspy / aspx : 1.0f;
- MANIPULATOR_arrow_set_up_vector(widget, ob->obmat[1]);
- MANIPULATOR_arrow_set_direction(widget, dir);
- MANIPULATOR_arrow_cone_set_aspect(widget, asp);
+ ED_manipulator_arrow3d_set_up_vector(widget, ob->obmat[1]);
+ ED_manipulator_arrow3d_set_direction(widget, dir);
+ ED_manipulator_arrow3d_cone_set_aspect(widget, asp);
WM_manipulator_set_origin(widget, ob->obmat[3]);
WM_manipulator_set_offset(widget, offset);
WM_manipulator_set_scale(widget, drawsize);
/* need to set property here for undo. TODO would prefer to do this in _init */
- WM_manipulator_set_property(camgroup->focal_len, ARROW_SLOT_OFFSET_WORLD_SPACE, &camera_ptr, "lens");
- WM_manipulator_set_property(camgroup->ortho_scale, ARROW_SLOT_OFFSET_WORLD_SPACE, &camera_ptr, "ortho_scale");
+ WM_manipulator_set_property(camgroup->focal_len, ED_MANIPULATOR_ARROW_SLOT_OFS_WORLD_SPACE, &camera_ptr, "lens");
+ WM_manipulator_set_property(camgroup->ortho_scale, ED_MANIPULATOR_ARROW_SLOT_OFS_WORLD_SPACE, &camera_ptr, "ortho_scale");
}
}
@@ -311,10 +312,10 @@ static void WIDGETGROUP_forcefield_init(const bContext *UNUSED(C), wmManipulator
wmManipulatorWrapper *wwrapper = MEM_mallocN(sizeof(wmManipulatorWrapper), __func__);
wgroup->customdata = wwrapper;
- wwrapper->manipulator = MANIPULATOR_arrow_new(wgroup, "field_strength", MANIPULATOR_ARROW_STYLE_CONSTRAINED);
+ wwrapper->manipulator = ED_manipulator_arrow3d_new(wgroup, "field_strength", ED_MANIPULATOR_ARROW_STYLE_CONSTRAINED);
- MANIPULATOR_arrow_set_ui_range(wwrapper->manipulator, -200.0f, 200.0f);
- MANIPULATOR_arrow_set_range_fac(wwrapper->manipulator, 6.0f);
+ ED_manipulator_arrow3d_set_ui_range(wwrapper->manipulator, -200.0f, 200.0f);
+ ED_manipulator_arrow3d_set_range_fac(wwrapper->manipulator, 6.0f);
WM_manipulator_set_color(wwrapper->manipulator, col);
WM_manipulator_set_color_highlight(wwrapper->manipulator, col_hi);
}
@@ -332,11 +333,11 @@ static void WIDGETGROUP_forcefield_refresh(const bContext *C, wmManipulatorGroup
RNA_pointer_create(&ob->id, &RNA_FieldSettings, pd, &field_ptr);
- MANIPULATOR_arrow_set_direction(wwrapper->manipulator, ob->obmat[2]);
+ ED_manipulator_arrow3d_set_direction(wwrapper->manipulator, ob->obmat[2]);
WM_manipulator_set_origin(wwrapper->manipulator, ob->obmat[3]);
WM_manipulator_set_offset(wwrapper->manipulator, ofs);
WM_manipulator_set_flag(wwrapper->manipulator, WM_MANIPULATOR_HIDDEN, false);
- WM_manipulator_set_property(wwrapper->manipulator, ARROW_SLOT_OFFSET_WORLD_SPACE, &field_ptr, "strength");
+ WM_manipulator_set_property(wwrapper->manipulator, ED_MANIPULATOR_ARROW_SLOT_OFS_WORLD_SPACE, &field_ptr, "strength");
}
else {
WM_manipulator_set_flag(wwrapper->manipulator, WM_MANIPULATOR_HIDDEN, true);
diff --git a/source/blender/editors/transform/transform_manipulator.c b/source/blender/editors/transform/transform_manipulator.c
index 6d38037ab30..2b06eb34bcb 100644
--- a/source/blender/editors/transform/transform_manipulator.c
+++ b/source/blender/editors/transform/transform_manipulator.c
@@ -74,6 +74,7 @@
#include "ED_view3d.h"
#include "ED_gpencil.h"
#include "ED_screen.h"
+#include "ED_manipulator_library.h"
#include "UI_resources.h"
@@ -1087,29 +1088,29 @@ static ManipulatorGroup *manipulatorgroup_init(wmManipulatorGroup *wgroup)
man = MEM_callocN(sizeof(ManipulatorGroup), "manipulator_data");
/* add/init widgets - order matters! */
- man->rotate_t = MANIPULATOR_dial_new(wgroup, "rotate_t", MANIPULATOR_DIAL_STYLE_RING_FILLED);
-
- man->scale_c = MANIPULATOR_dial_new(wgroup, "scale_c", MANIPULATOR_DIAL_STYLE_RING);
- man->scale_x = MANIPULATOR_arrow_new(wgroup, "scale_x", MANIPULATOR_ARROW_STYLE_BOX);
- man->scale_y = MANIPULATOR_arrow_new(wgroup, "scale_y", MANIPULATOR_ARROW_STYLE_BOX);
- man->scale_z = MANIPULATOR_arrow_new(wgroup, "scale_z", MANIPULATOR_ARROW_STYLE_BOX);
- man->scale_xy = MANIPULATOR_primitive_new(wgroup, "scale_xy", MANIPULATOR_PRIMITIVE_STYLE_PLANE);
- man->scale_yz = MANIPULATOR_primitive_new(wgroup, "scale_yz", MANIPULATOR_PRIMITIVE_STYLE_PLANE);
- man->scale_zx = MANIPULATOR_primitive_new(wgroup, "scale_zx", MANIPULATOR_PRIMITIVE_STYLE_PLANE);
-
- man->rotate_x = MANIPULATOR_dial_new(wgroup, "rotate_x", MANIPULATOR_DIAL_STYLE_RING_CLIPPED);
- man->rotate_y = MANIPULATOR_dial_new(wgroup, "rotate_y", MANIPULATOR_DIAL_STYLE_RING_CLIPPED);
- man->rotate_z = MANIPULATOR_dial_new(wgroup, "rotate_z", MANIPULATOR_DIAL_STYLE_RING_CLIPPED);
+ man->rotate_t = ED_manipulator_dial3d_new(wgroup, "rotate_t", ED_MANIPULATOR_DIAL_STYLE_RING_FILLED);
+
+ man->scale_c = ED_manipulator_dial3d_new(wgroup, "scale_c", ED_MANIPULATOR_DIAL_STYLE_RING);
+ man->scale_x = ED_manipulator_arrow3d_new(wgroup, "scale_x", ED_MANIPULATOR_ARROW_STYLE_BOX);
+ man->scale_y = ED_manipulator_arrow3d_new(wgroup, "scale_y", ED_MANIPULATOR_ARROW_STYLE_BOX);
+ man->scale_z = ED_manipulator_arrow3d_new(wgroup, "scale_z", ED_MANIPULATOR_ARROW_STYLE_BOX);
+ man->scale_xy = ED_manipulator_primitive3d_new(wgroup, "scale_xy", ED_MANIPULATOR_PRIMITIVE_STYLE_PLANE);
+ man->scale_yz = ED_manipulator_primitive3d_new(wgroup, "scale_yz", ED_MANIPULATOR_PRIMITIVE_STYLE_PLANE);
+ man->scale_zx = ED_manipulator_primitive3d_new(wgroup, "scale_zx", ED_MANIPULATOR_PRIMITIVE_STYLE_PLANE);
+
+ man->rotate_x = ED_manipulator_dial3d_new(wgroup, "rotate_x", ED_MANIPULATOR_DIAL_STYLE_RING_CLIPPED);
+ man->rotate_y = ED_manipulator_dial3d_new(wgroup, "rotate_y", ED_MANIPULATOR_DIAL_STYLE_RING_CLIPPED);
+ man->rotate_z = ED_manipulator_dial3d_new(wgroup, "rotate_z", ED_MANIPULATOR_DIAL_STYLE_RING_CLIPPED);
/* init screen aligned widget last here, looks better, behaves better */
- man->rotate_c = MANIPULATOR_dial_new(wgroup, "rotate_c", MANIPULATOR_DIAL_STYLE_RING);
+ man->rotate_c = ED_manipulator_dial3d_new(wgroup, "rotate_c", ED_MANIPULATOR_DIAL_STYLE_RING);
- man->translate_c = MANIPULATOR_dial_new(wgroup, "translate_c", MANIPULATOR_DIAL_STYLE_RING);
- man->translate_x = MANIPULATOR_arrow_new(wgroup, "translate_x", MANIPULATOR_ARROW_STYLE_NORMAL);
- man->translate_y = MANIPULATOR_arrow_new(wgroup, "translate_y", MANIPULATOR_ARROW_STYLE_NORMAL);
- man->translate_z = MANIPULATOR_arrow_new(wgroup, "translate_z", MANIPULATOR_ARROW_STYLE_NORMAL);
- man->translate_xy = MANIPULATOR_primitive_new(wgroup, "translate_xy", MANIPULATOR_PRIMITIVE_STYLE_PLANE);
- man->translate_yz = MANIPULATOR_primitive_new(wgroup, "translate_yz", MANIPULATOR_PRIMITIVE_STYLE_PLANE);
- man->translate_zx = MANIPULATOR_primitive_new(wgroup, "translate_zx", MANIPULATOR_PRIMITIVE_STYLE_PLANE);
+ man->translate_c = ED_manipulator_dial3d_new(wgroup, "translate_c", ED_MANIPULATOR_DIAL_STYLE_RING);
+ man->translate_x = ED_manipulator_arrow3d_new(wgroup, "translate_x", ED_MANIPULATOR_ARROW_STYLE_NORMAL);
+ man->translate_y = ED_manipulator_arrow3d_new(wgroup, "translate_y", ED_MANIPULATOR_ARROW_STYLE_NORMAL);
+ man->translate_z = ED_manipulator_arrow3d_new(wgroup, "translate_z", ED_MANIPULATOR_ARROW_STYLE_NORMAL);
+ man->translate_xy = ED_manipulator_primitive3d_new(wgroup, "translate_xy", ED_MANIPULATOR_PRIMITIVE_STYLE_PLANE);
+ man->translate_yz = ED_manipulator_primitive3d_new(wgroup, "translate_yz", ED_MANIPULATOR_PRIMITIVE_STYLE_PLANE);
+ man->translate_zx = ED_manipulator_primitive3d_new(wgroup, "translate_zx", ED_MANIPULATOR_PRIMITIVE_STYLE_PLANE);
return man;
}
@@ -1253,15 +1254,15 @@ static void WIDGETGROUP_manipulator_refresh(const bContext *C, wmManipulatorGrou
manipulator_line_range(v3d, axis_type, &start_co[2], &len);
- MANIPULATOR_arrow_set_direction(axis, rv3d->twmat[aidx_norm]);
- MANIPULATOR_arrow_set_line_len(axis, len);
+ ED_manipulator_arrow3d_set_direction(axis, rv3d->twmat[aidx_norm]);
+ ED_manipulator_arrow3d_set_line_len(axis, len);
WM_manipulator_set_offset(axis, start_co);
break;
}
case MAN_AXIS_ROT_X:
case MAN_AXIS_ROT_Y:
case MAN_AXIS_ROT_Z:
- MANIPULATOR_dial_set_up_vector(axis, rv3d->twmat[aidx_norm]);
+ ED_manipulator_dial3d_set_up_vector(axis, rv3d->twmat[aidx_norm]);
break;
case MAN_AXIS_TRANS_XY:
case MAN_AXIS_TRANS_YZ:
@@ -1269,8 +1270,8 @@ static void WIDGETGROUP_manipulator_refresh(const bContext *C, wmManipulatorGrou
case MAN_AXIS_SCALE_XY:
case MAN_AXIS_SCALE_YZ:
case MAN_AXIS_SCALE_ZX:
- MANIPULATOR_primitive_set_direction(axis, rv3d->twmat[aidx_norm - 1 < 0 ? 2 : aidx_norm - 1]);
- MANIPULATOR_primitive_set_up_vector(axis, rv3d->twmat[aidx_norm + 1 > 2 ? 0 : aidx_norm + 1]);
+ ED_manipulator_primitive3d_set_direction(axis, rv3d->twmat[aidx_norm - 1 < 0 ? 2 : aidx_norm - 1]);
+ ED_manipulator_primitive3d_set_up_vector(axis, rv3d->twmat[aidx_norm + 1 > 2 ? 0 : aidx_norm + 1]);
break;
}
}
@@ -1322,7 +1323,7 @@ static void WIDGETGROUP_manipulator_draw_prepare(const bContext *C, wmManipulato
case MAN_AXIS_ROT_C:
case MAN_AXIS_SCALE_C:
case MAN_AXIS_ROT_T:
- MANIPULATOR_dial_set_up_vector(axis, rv3d->viewinv[2]);
+ ED_manipulator_dial3d_set_up_vector(axis, rv3d->viewinv[2]);
break;
}
}
diff --git a/source/blender/editors/util/CMakeLists.txt b/source/blender/editors/util/CMakeLists.txt
index 766f70d025c..3612aab468f 100644
--- a/source/blender/editors/util/CMakeLists.txt
+++ b/source/blender/editors/util/CMakeLists.txt
@@ -64,6 +64,7 @@ set(SRC
../include/ED_lattice.h
../include/ED_logic.h
../include/ED_markers.h
+ ../include/ED_manipulator_library.h
../include/ED_mask.h
../include/ED_mball.h
../include/ED_mesh.h
diff --git a/source/blender/windowmanager/CMakeLists.txt b/source/blender/windowmanager/CMakeLists.txt
index b61b4472c4a..a7f8a783078 100644
--- a/source/blender/windowmanager/CMakeLists.txt
+++ b/source/blender/windowmanager/CMakeLists.txt
@@ -74,14 +74,7 @@ set(SRC
manipulators/intern/wm_manipulator.c
manipulators/intern/wm_manipulatorgroup.c
manipulators/intern/wm_manipulatormap.c
- manipulators/intern/manipulator_library/arrow_manipulator.c
- manipulators/intern/manipulator_library/arrow2d_manipulator.c
- manipulators/intern/manipulator_library/cage_manipulator.c
- manipulators/intern/manipulator_library/dial_manipulator.c
- manipulators/intern/manipulator_library/primitive_manipulator.c
- manipulators/intern/manipulator_library/geom_arrow_manipulator.c
- manipulators/intern/manipulator_library/geom_cube_manipulator.c
- manipulators/intern/manipulator_library/manipulator_library_utils.c
+
WM_api.h
WM_keymap.h
@@ -96,12 +89,9 @@ set(SRC
wm_window.h
manipulators/WM_manipulator_api.h
manipulators/WM_manipulator_types.h
- manipulators/WM_manipulator_library.h
manipulators/wm_manipulator_fn.h
manipulators/wm_manipulator_wmapi.h
manipulators/intern/wm_manipulator_intern.h
- manipulators/intern/manipulator_library/manipulator_geometry.h
- manipulators/intern/manipulator_library/manipulator_library_intern.h
)
if(WITH_AUDASPACE)
diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h
index 6fa9429d04f..3501105d404 100644
--- a/source/blender/windowmanager/WM_api.h
+++ b/source/blender/windowmanager/WM_api.h
@@ -44,7 +44,6 @@
/* Include external manipulator API's */
#include "manipulators/WM_manipulator_api.h"
-#include "manipulators/WM_manipulator_library.h"
#ifdef __cplusplus
extern "C" {
diff --git a/source/blender/windowmanager/manipulators/WM_manipulator_library.h b/source/blender/windowmanager/manipulators/WM_manipulator_library.h
deleted file mode 100644
index 4e0c5b004c8..00000000000
--- a/source/blender/windowmanager/manipulators/WM_manipulator_library.h
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * ***** BEGIN GPL LICENSE BLOCK *****
- *
- * 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 2
- * 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, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * Contributor(s): none yet.
- *
- * ***** END GPL LICENSE BLOCK *****
- */
-
-/** \file blender/windowmanager/manipulators/WM_manipulator_library.h
- * \ingroup wm
- *
- * \name Generic Manipulator Library
- *
- * Only included in WM_api.h and lower level files.
- */
-
-
-#ifndef __WM_MANIPULATOR_LIBRARY_H__
-#define __WM_MANIPULATOR_LIBRARY_H__
-
-struct wmManipulatorGroup;
-
-
-/* -------------------------------------------------------------------- */
-/* 3D Arrow Manipulator */
-
-enum {
- MANIPULATOR_ARROW_STYLE_NORMAL = 1,
- MANIPULATOR_ARROW_STYLE_NO_AXIS = (1 << 1),
- MANIPULATOR_ARROW_STYLE_CROSS = (1 << 2),
- MANIPULATOR_ARROW_STYLE_INVERTED = (1 << 3), /* inverted offset during interaction - if set it also sets constrained below */
- MANIPULATOR_ARROW_STYLE_CONSTRAINED = (1 << 4), /* clamp arrow interaction to property width */
- MANIPULATOR_ARROW_STYLE_BOX = (1 << 5), /* use a box for the arrowhead */
- MANIPULATOR_ARROW_STYLE_CONE = (1 << 6),
-};
-
-/* slots for properties */
-enum {
- ARROW_SLOT_OFFSET_WORLD_SPACE = 0
-};
-
-struct wmManipulator *MANIPULATOR_arrow_new(struct wmManipulatorGroup *mgroup, const char *name, const int style);
-void MANIPULATOR_arrow_set_direction(struct wmManipulator *manipulator, const float direction[3]);
-void MANIPULATOR_arrow_set_up_vector(struct wmManipulator *manipulator, const float direction[3]);
-void MANIPULATOR_arrow_set_line_len(struct wmManipulator *manipulator, const float len);
-void MANIPULATOR_arrow_set_ui_range(struct wmManipulator *manipulator, const float min, const float max);
-void MANIPULATOR_arrow_set_range_fac(struct wmManipulator *manipulator, const float range_fac);
-void MANIPULATOR_arrow_cone_set_aspect(struct wmManipulator *manipulator, const float aspect[2]);
-
-
-/* -------------------------------------------------------------------- */
-/* 2D Arrow Manipulator */
-
-struct wmManipulator *MANIPULATOR_arrow2d_new(struct wmManipulatorGroup *mgroup, const char *name);
-void MANIPULATOR_arrow2d_set_angle(struct wmManipulator *manipulator, const float rot_fac);
-void MANIPULATOR_arrow2d_set_line_len(struct wmManipulator *manipulator, const float len);
-
-
-/* -------------------------------------------------------------------- */
-/* Cage Manipulator */
-
-enum {
- MANIPULATOR_RECT_TRANSFORM_STYLE_TRANSLATE = 1, /* Manipulator translates */
- MANIPULATOR_RECT_TRANSFORM_STYLE_ROTATE = (1 << 1), /* Manipulator rotates */
- MANIPULATOR_RECT_TRANSFORM_STYLE_SCALE = (1 << 2), /* Manipulator scales */
- MANIPULATOR_RECT_TRANSFORM_STYLE_SCALE_UNIFORM = (1 << 3), /* Manipulator scales uniformly */
-};
-
-enum {
- RECT_TRANSFORM_SLOT_OFFSET = 0,
- RECT_TRANSFORM_SLOT_SCALE = 1
-};
-
-struct wmManipulator *MANIPULATOR_rect_transform_new(
- struct wmManipulatorGroup *mgroup, const char *name, const int style);
-void MANIPULATOR_rect_transform_set_dimensions(
- struct wmManipulator *manipulator, const float width, const float height);
-
-
-/* -------------------------------------------------------------------- */
-/* Dial Manipulator */
-
-enum {
- MANIPULATOR_DIAL_STYLE_RING = 0,
- MANIPULATOR_DIAL_STYLE_RING_CLIPPED = 1,
- MANIPULATOR_DIAL_STYLE_RING_FILLED = 2,
-};
-
-struct wmManipulator *MANIPULATOR_dial_new(struct wmManipulatorGroup *mgroup, const char *name, const int style);
-void MANIPULATOR_dial_set_up_vector(struct wmManipulator *manipulator, const float direction[3]);
-
-
-/* -------------------------------------------------------------------- */
-/* Facemap Manipulator */
-
-struct wmManipulator *MANIPULATOR_facemap_new(
- struct wmManipulatorGroup *mgroup, const char *name, const int style,
- struct Object *ob, const int facemap);
-struct bFaceMap *MANIPULATOR_facemap_get_fmap(struct wmManipulator *manipulator);
-
-
-/* -------------------------------------------------------------------- */
-/* Primitive Manipulator */
-
-enum {
- MANIPULATOR_PRIMITIVE_STYLE_PLANE = 0,
-};
-
-struct wmManipulator *MANIPULATOR_primitive_new(struct wmManipulatorGroup *mgroup, const char *name, const int style);
-void MANIPULATOR_primitive_set_direction(struct wmManipulator *manipulator, const float direction[3]);
-void MANIPULATOR_primitive_set_up_vector(struct wmManipulator *manipulator, const float direction[3]);
-
-extern void ED_manipulatortypes_dial(void);
-extern void ED_manipulatortypes_arrow_2d(void);
-extern void ED_manipulatortypes_arrow_3d(void);
-extern void ED_manipulatortypes_facemap(void);
-extern void ED_manipulatortypes_primitive(void);
-extern void ED_manipulatortypes_cage(void);
-
-#endif /* __WM_MANIPULATOR_LIBRARY_H__ */
-
diff --git a/source/blender/windowmanager/manipulators/WM_manipulator_types.h b/source/blender/windowmanager/manipulators/WM_manipulator_types.h
index 01f5d1c0199..fbbbffd18b0 100644
--- a/source/blender/windowmanager/manipulators/WM_manipulator_types.h
+++ b/source/blender/windowmanager/manipulators/WM_manipulator_types.h
@@ -48,6 +48,56 @@ struct wmKeyConfig;
/* -------------------------------------------------------------------- */
/* wmManipulator */
+/* manipulators are set per region by registering them on manipulator-maps */
+struct wmManipulator {
+ struct wmManipulator *next, *prev;
+
+ char idname[64 + 4]; /* MAX_NAME + 4 for unique '.001', '.002', etc suffix */
+
+ /* While we don't have a real type, use this to put type-like vars. */
+ const struct wmManipulatorType *type;
+
+ /* Overrides 'type->handler' when set. */
+ wmManipulatorFnHandler custom_handler;
+
+ void *custom_data;
+
+ /* pointer back to group this manipulator is in (just for quick access) */
+ struct wmManipulatorGroup *parent_mgroup;
+
+ int flag; /* flags that influence the behavior or how the manipulators are drawn */
+ short state; /* state flags (active, highlighted, selected) */
+
+ unsigned char highlighted_part;
+
+ /* center of manipulator in space, 2d or 3d */
+ float origin[3];
+ /* custom offset from origin */
+ float offset[3];
+ /* runtime property, set the scale while drawing on the viewport */
+ float scale;
+ /* user defined scale, in addition to the original one */
+ float user_scale;
+ /* user defined width for line drawing */
+ float line_width;
+ /* manipulator colors (uses default fallbacks if not defined) */
+ float col[4], col_hi[4];
+
+ /* data used during interaction */
+ void *interaction_data;
+
+ /* name of operator to spawn when activating the manipulator */
+ const char *opname;
+ /* operator properties if manipulator spawns and controls an operator,
+ * or owner pointer if manipulator spawns and controls a property */
+ PointerRNA opptr;
+
+ /* arrays of properties attached to various manipulator parameters. As
+ * the manipulator is interacted with, those properties get updated */
+ PointerRNA *ptr;
+ PropertyRNA **props;
+};
+
/**
* Simple utility wrapper for storing a single manipulator as wmManipulatorGroup.customdata (which gets freed).
*/
@@ -64,6 +114,23 @@ enum {
WM_MANIPULATOR_HIDDEN = (1 << 3),
};
+/* wmManipulator.state */
+enum {
+ WM_MANIPULATOR_STATE_HIGHLIGHT = (1 << 0), /* while hovered */
+ WM_MANIPULATOR_STATE_ACTIVE = (1 << 1), /* while dragging */
+ WM_MANIPULATOR_STATE_SELECT = (1 << 2),
+};
+
+/**
+ * \brief Manipulator tweak flag.
+ * Bitflag passed to manipulator while tweaking.
+ */
+enum {
+ /* drag with extra precision (shift)
+ * NOTE: Manipulators are responsible for handling this (manipulator->handler callback)! */
+ WM_MANIPULATOR_TWEAK_PRECISE = (1 << 0),
+};
+
typedef struct wmManipulatorType {
struct wmManipulatorGroupType *next, *prev;
diff --git a/source/blender/windowmanager/manipulators/intern/wm_manipulator.c b/source/blender/windowmanager/manipulators/intern/wm_manipulator.c
index a2d88b35b54..d70822e8c56 100644
--- a/source/blender/windowmanager/manipulators/intern/wm_manipulator.c
+++ b/source/blender/windowmanager/manipulators/intern/wm_manipulator.c
@@ -58,8 +58,6 @@
#include "wm_manipulator_wmapi.h"
#include "wm_manipulator_intern.h"
-#include "manipulator_library/manipulator_geometry.h"
-
static void wm_manipulator_register(
wmManipulatorGroup *mgroup, wmManipulator *manipulator, const char *name);
@@ -163,91 +161,12 @@ static wmManipulator *wm_manipulator_create(
return mpr;
}
-
-/**
- * Main draw call for ManipulatorGeomInfo data
- */
-void wm_manipulator_geometryinfo_draw(const ManipulatorGeomInfo *info, const bool select, const float color[4])
-{
- /* TODO store the Batches inside the ManipulatorGeomInfo and updated it when geom changes
- * So we don't need to re-created and discard it every time */
-
- const bool use_lighting = true || (!select && ((U.manipulator_flag & V3D_SHADED_MANIPULATORS) != 0));
- VertexBuffer *vbo;
- ElementList *el;
- Batch *batch;
- ElementListBuilder elb = {0};
-
- VertexFormat format = {0};
- unsigned int pos_id = VertexFormat_add_attrib(&format, "pos", COMP_F32, 3, KEEP_FLOAT);
- unsigned int nor_id;
-
- if (use_lighting) {
- nor_id = VertexFormat_add_attrib(&format, "nor", COMP_I16, 3, NORMALIZE_INT_TO_FLOAT);
- }
-
- /* Elements */
- ElementListBuilder_init(&elb, PRIM_TRIANGLES, info->ntris, info->nverts);
- for (int i = 0; i < info->ntris; ++i) {
- const unsigned short *idx = &info->indices[i * 3];
- add_triangle_vertices(&elb, idx[0], idx[1], idx[2]);
- }
- el = ElementList_build(&elb);
-
- vbo = VertexBuffer_create_with_format(&format);
- VertexBuffer_allocate_data(vbo, info->nverts);
-
- VertexBuffer_fill_attrib(vbo, pos_id, info->verts);
-
- if (use_lighting) {
- /* Normals are expected to be smooth. */
- VertexBuffer_fill_attrib(vbo, nor_id, info->normals);
- }
-
- batch = Batch_create(PRIM_TRIANGLES, vbo, el);
- Batch_set_builtin_program(batch, GPU_SHADER_3D_UNIFORM_COLOR);
-
- Batch_Uniform4fv(batch, "color", color);
-
- glEnable(GL_CULL_FACE);
- // glEnable(GL_DEPTH_TEST);
-
- Batch_draw(batch);
-
- glDisable(GL_DEPTH_TEST);
- // glDisable(GL_CULL_FACE);
-
-
- Batch_discard_all(batch);
-}
-
-void wm_manipulator_vec_draw(
- const float color[4], const float (*verts)[3], unsigned int vert_count,
- unsigned int pos, unsigned int primitive_type)
-{
- immUniformColor4fv(color);
- immBegin(primitive_type, vert_count);
- for (int i = 0; i < vert_count; i++) {
- immVertex3fv(pos, verts[i]);
- }
- immEnd();
-}
-
wmManipulator *WM_manipulator_new(const wmManipulatorType *mpt, wmManipulatorGroup *mgroup, const char *name)
{
wmManipulator *mpr = wm_manipulator_create(mpt);
wm_manipulator_register(mgroup, mpr, name);
- /* XXX: never happens */
- if (name[0] == '\n') {
- fix_linking_manipulator_arrow();
- fix_linking_manipulator_arrow2d();
- fix_linking_manipulator_cage();
- fix_linking_manipulator_dial();
- fix_linking_manipulator_primitive();
- }
-
return mpr;
}
@@ -311,13 +230,13 @@ static void wm_manipulator_register(wmManipulatorGroup *mgroup, wmManipulator *m
*/
void WM_manipulator_delete(ListBase *manipulatorlist, wmManipulatorMap *mmap, wmManipulator *manipulator, bContext *C)
{
- if (manipulator->state & WM_MANIPULATOR_HIGHLIGHT) {
+ if (manipulator->state & WM_MANIPULATOR_STATE_HIGHLIGHT) {
wm_manipulatormap_set_highlighted_manipulator(mmap, C, NULL, 0);
}
- if (manipulator->state & WM_MANIPULATOR_ACTIVE) {
+ if (manipulator->state & WM_MANIPULATOR_STATE_ACTIVE) {
wm_manipulatormap_set_active_manipulator(mmap, C, NULL, NULL);
}
- if (manipulator->state & WM_MANIPULATOR_SELECTED) {
+ if (manipulator->state & WM_MANIPULATOR_STATE_SELECT) {
wm_manipulator_deselect(mmap, manipulator);
}
@@ -513,7 +432,7 @@ bool wm_manipulator_deselect(wmManipulatorMap *mmap, wmManipulator *manipulator)
bool changed = false;
/* caller should check! */
- BLI_assert(manipulator->state & WM_MANIPULATOR_SELECTED);
+ BLI_assert(manipulator->state & WM_MANIPULATOR_STATE_SELECT);
/* remove manipulator from selected_manipulators array */
for (int i = 0; i < (*tot_selected); i++) {
@@ -535,7 +454,7 @@ bool wm_manipulator_deselect(wmManipulatorMap *mmap, wmManipulator *manipulator)
(*tot_selected)--;
}
- manipulator->state &= ~WM_MANIPULATOR_SELECTED;
+ manipulator->state &= ~WM_MANIPULATOR_STATE_SELECT;
return changed;
}
@@ -550,7 +469,7 @@ bool wm_manipulator_select(bContext *C, wmManipulatorMap *mmap, wmManipulator *m
wmManipulator ***sel = &mmap->mmap_context.selected_manipulator;
int *tot_selected = &mmap->mmap_context.tot_selected;
- if (!manipulator || (manipulator->state & WM_MANIPULATOR_SELECTED))
+ if (!manipulator || (manipulator->state & WM_MANIPULATOR_STATE_SELECT))
return false;
(*tot_selected)++;
@@ -558,7 +477,7 @@ bool wm_manipulator_select(bContext *C, wmManipulatorMap *mmap, wmManipulator *m
*sel = MEM_reallocN(*sel, sizeof(wmManipulator *) * (*tot_selected));
(*sel)[(*tot_selected) - 1] = manipulator;
- manipulator->state |= WM_MANIPULATOR_SELECTED;
+ manipulator->state |= WM_MANIPULATOR_STATE_SELECT;
if (manipulator->type->select) {
manipulator->type->select(C, manipulator, SEL_SELECT);
}
@@ -617,15 +536,15 @@ bool wm_manipulator_is_visible(wmManipulator *manipulator)
if (manipulator->flag & WM_MANIPULATOR_HIDDEN) {
return false;
}
- if ((manipulator->state & WM_MANIPULATOR_ACTIVE) &&
+ if ((manipulator->state & WM_MANIPULATOR_STATE_ACTIVE) &&
!(manipulator->flag & (WM_MANIPULATOR_DRAW_ACTIVE | WM_MANIPULATOR_DRAW_VALUE)))
{
/* don't draw while active (while dragging) */
return false;
}
if ((manipulator->flag & WM_MANIPULATOR_DRAW_HOVER) &&
- !(manipulator->state & WM_MANIPULATOR_HIGHLIGHT) &&
- !(manipulator->state & WM_MANIPULATOR_SELECTED)) /* still draw selected manipulators */
+ !(manipulator->state & WM_MANIPULATOR_STATE_HIGHLIGHT) &&
+ !(manipulator->state & WM_MANIPULATOR_STATE_SELECT)) /* still draw selected manipulators */
{
/* only draw on mouse hover */
return false;
diff --git a/source/blender/windowmanager/manipulators/intern/wm_manipulator_intern.h b/source/blender/windowmanager/manipulators/intern/wm_manipulator_intern.h
index ca48b05e786..bf2240e7219 100644
--- a/source/blender/windowmanager/manipulators/intern/wm_manipulator_intern.h
+++ b/source/blender/windowmanager/manipulators/intern/wm_manipulator_intern.h
@@ -38,73 +38,6 @@ struct GHashIterator;
/* -------------------------------------------------------------------- */
/* wmManipulator */
-/* manipulators are set per region by registering them on manipulator-maps */
-struct wmManipulator {
- struct wmManipulator *next, *prev;
-
- char idname[MAX_NAME + 4]; /* + 4 for unique '.001', '.002', etc suffix */
-
- /* While we don't have a real type, use this to put type-like vars. */
- const struct wmManipulatorType *type;
-
- /* Overrides 'type->handler' when set. */
- wmManipulatorFnHandler custom_handler;
-
- void *custom_data;
-
- /* pointer back to group this manipulator is in (just for quick access) */
- struct wmManipulatorGroup *parent_mgroup;
-
- int flag; /* flags that influence the behavior or how the manipulators are drawn */
- short state; /* state flags (active, highlighted, selected) */
-
- unsigned char highlighted_part;
-
- /* center of manipulator in space, 2d or 3d */
- float origin[3];
- /* custom offset from origin */
- float offset[3];
- /* runtime property, set the scale while drawing on the viewport */
- float scale;
- /* user defined scale, in addition to the original one */
- float user_scale;
- /* user defined width for line drawing */
- float line_width;
- /* manipulator colors (uses default fallbacks if not defined) */
- float col[4], col_hi[4];
-
- /* data used during interaction */
- void *interaction_data;
-
- /* name of operator to spawn when activating the manipulator */
- const char *opname;
- /* operator properties if manipulator spawns and controls an operator,
- * or owner pointer if manipulator spawns and controls a property */
- PointerRNA opptr;
-
- /* arrays of properties attached to various manipulator parameters. As
- * the manipulator is interacted with, those properties get updated */
- PointerRNA *ptr;
- PropertyRNA **props;
-};
-
-/* wmManipulator.state */
-enum {
- WM_MANIPULATOR_HIGHLIGHT = (1 << 0), /* while hovered */
- WM_MANIPULATOR_ACTIVE = (1 << 1), /* while dragging */
- WM_MANIPULATOR_SELECTED = (1 << 2),
-};
-
-/**
- * \brief Manipulator tweak flag.
- * Bitflag passed to manipulator while tweaking.
- */
-enum {
- /* drag with extra precision (shift)
- * NOTE: Manipulators are responsible for handling this (manipulator->handler callback)! */
- WM_MANIPULATOR_TWEAK_PRECISE = (1 << 0),
-};
-
bool wm_manipulator_deselect(struct wmManipulatorMap *mmap, struct wmManipulator *manipulator);
bool wm_manipulator_select(bContext *C, struct wmManipulatorMap *mmap, struct wmManipulator *manipulator);
@@ -112,13 +45,6 @@ void wm_manipulator_calculate_scale(struct wmManipulator *manipulator, const bCo
void wm_manipulator_update(struct wmManipulator *manipulator, const bContext *C, const bool refresh_map);
bool wm_manipulator_is_visible(struct wmManipulator *manipulator);
-void fix_linking_manipulator_arrow(void);
-void fix_linking_manipulator_arrow2d(void);
-void fix_linking_manipulator_cage(void);
-void fix_linking_manipulator_dial(void);
-void fix_linking_manipulator_facemap(void);
-void fix_linking_manipulator_primitive(void);
-
/* -------------------------------------------------------------------- */
/* wmManipulatorGroup */
@@ -191,14 +117,4 @@ struct wmManipulatorMapType {
void wm_manipulatormap_selected_delete(struct wmManipulatorMap *mmap);
bool wm_manipulatormap_deselect_all(struct wmManipulatorMap *mmap, struct wmManipulator ***sel);
-
-/* -------------------------------------------------------------------- */
-/* Manipulator drawing */
-
-void wm_manipulator_geometryinfo_draw(const struct ManipulatorGeomInfo *info, const bool select, const float color[4]);
-void wm_manipulator_vec_draw(
- const float color[4], const float (*verts)[3], unsigned int vert_count,
- unsigned int pos, unsigned int primitive_type);
-
-#endif /* __WM_MANIPULATOR_INTERN_H__ */
-
+#endif \ No newline at end of file
diff --git a/source/blender/windowmanager/manipulators/intern/wm_manipulatorgroup.c b/source/blender/windowmanager/manipulators/intern/wm_manipulatorgroup.c
index 18bee2e4457..94e12b88dcd 100644
--- a/source/blender/windowmanager/manipulators/intern/wm_manipulatorgroup.c
+++ b/source/blender/windowmanager/manipulators/intern/wm_manipulatorgroup.c
@@ -240,7 +240,7 @@ static int manipulator_select_invoke(bContext *C, wmOperator *op, const wmEvent
}
if (highlighted) {
- const bool is_selected = (highlighted->state & WM_MANIPULATOR_SELECTED);
+ const bool is_selected = (highlighted->state & WM_MANIPULATOR_STATE_SELECT);
bool redraw = false;
if (toggle) {
diff --git a/source/blender/windowmanager/manipulators/intern/wm_manipulatormap.c b/source/blender/windowmanager/manipulators/intern/wm_manipulatormap.c
index 00bc9f2ea56..13900ed8545 100644
--- a/source/blender/windowmanager/manipulators/intern/wm_manipulatormap.c
+++ b/source/blender/windowmanager/manipulators/intern/wm_manipulatormap.c
@@ -288,7 +288,7 @@ static void manipulator_find_active_3D_loop(const bContext *C, ListBase *visible
}
}
-static int manipulator_find_intersected_3D_intern(
+static int manipulator_find_intersected_3d_intern(
ListBase *visible_manipulators, const bContext *C, const int co[2],
const float hotspot)
{
@@ -330,7 +330,7 @@ static int manipulator_find_intersected_3D_intern(
/**
* Try to find a 3D manipulator at screen-space coordinate \a co. Uses OpenGL picking.
*/
-static wmManipulator *manipulator_find_intersected_3D(
+static wmManipulator *manipulator_find_intersected_3d(
bContext *C, const int co[2], ListBase *visible_manipulators,
unsigned char *part)
{
@@ -342,12 +342,12 @@ static wmManipulator *manipulator_find_intersected_3D(
/* set up view matrices */
view3d_operator_needs_opengl(C);
- ret = manipulator_find_intersected_3D_intern(visible_manipulators, C, co, 0.5f * hotspot);
+ ret = manipulator_find_intersected_3d_intern(visible_manipulators, C, co, 0.5f * hotspot);
if (ret != -1) {
LinkData *link;
int retsec;
- retsec = manipulator_find_intersected_3D_intern(visible_manipulators, C, co, 0.2f * hotspot);
+ retsec = manipulator_find_intersected_3d_intern(visible_manipulators, C, co, 0.2f * hotspot);
if (retsec != -1)
ret = retsec;
@@ -383,7 +383,7 @@ wmManipulator *wm_manipulatormap_find_highlighted_manipulator(
}
if (!BLI_listbase_is_empty(&visible_3d_manipulators)) {
- manipulator = manipulator_find_intersected_3D(C, event->mval, &visible_3d_manipulators, part);
+ manipulator = manipulator_find_intersected_3d(C, event->mval, &visible_3d_manipulators, part);
BLI_freelistN(&visible_3d_manipulators);
}
@@ -455,7 +455,7 @@ bool wm_manipulatormap_deselect_all(wmManipulatorMap *mmap, wmManipulator ***sel
return false;
for (int i = 0; i < mmap->mmap_context.tot_selected; i++) {
- (*sel)[i]->state &= ~WM_MANIPULATOR_SELECTED;
+ (*sel)[i]->state &= ~WM_MANIPULATOR_STATE_SELECT;
(*sel)[i] = NULL;
}
wm_manipulatormap_selected_delete(mmap);
@@ -493,10 +493,10 @@ static bool wm_manipulatormap_select_all_intern(
GHASH_ITER_INDEX (gh_iter, hash, i) {
wmManipulator *manipulator_iter = BLI_ghashIterator_getValue(&gh_iter);
- if ((manipulator_iter->state & WM_MANIPULATOR_SELECTED) == 0) {
+ if ((manipulator_iter->state & WM_MANIPULATOR_STATE_SELECT) == 0) {
changed = true;
}
- manipulator_iter->state |= WM_MANIPULATOR_SELECTED;
+ manipulator_iter->state |= WM_MANIPULATOR_STATE_SELECT;
if (manipulator_iter->type->select) {
manipulator_iter->type->select(C, manipulator_iter, action);
}
@@ -598,14 +598,14 @@ void wm_manipulatormap_set_highlighted_manipulator(
(manipulator && part != manipulator->highlighted_part))
{
if (mmap->mmap_context.highlighted_manipulator) {
- mmap->mmap_context.highlighted_manipulator->state &= ~WM_MANIPULATOR_HIGHLIGHT;
+ mmap->mmap_context.highlighted_manipulator->state &= ~WM_MANIPULATOR_STATE_HIGHLIGHT;
mmap->mmap_context.highlighted_manipulator->highlighted_part = 0;
}
mmap->mmap_context.highlighted_manipulator = manipulator;
if (manipulator) {
- manipulator->state |= WM_MANIPULATOR_HIGHLIGHT;
+ manipulator->state |= WM_MANIPULATOR_STATE_HIGHLIGHT;
manipulator->highlighted_part = part;
if (C && manipulator->type->cursor_get) {
@@ -637,7 +637,7 @@ void wm_manipulatormap_set_active_manipulator(
wmManipulatorMap *mmap, bContext *C, const wmEvent *event, wmManipulator *manipulator)
{
if (manipulator && C) {
- manipulator->state |= WM_MANIPULATOR_ACTIVE;
+ manipulator->state |= WM_MANIPULATOR_STATE_ACTIVE;
mmap->mmap_context.active_manipulator = manipulator;
if (manipulator->opname) {
@@ -655,7 +655,7 @@ void wm_manipulatormap_set_active_manipulator(
/* we failed to hook the manipulator to the operator handler or operator was cancelled, return */
if (!mmap->mmap_context.active_manipulator) {
- manipulator->state &= ~WM_MANIPULATOR_ACTIVE;
+ manipulator->state &= ~WM_MANIPULATOR_STATE_ACTIVE;
/* first activate the manipulator itself */
if (manipulator->interaction_data) {
MEM_freeN(manipulator->interaction_data);
@@ -685,7 +685,7 @@ void wm_manipulatormap_set_active_manipulator(
/* deactivate, manipulator but first take care of some stuff */
if (manipulator) {
- manipulator->state &= ~WM_MANIPULATOR_ACTIVE;
+ manipulator->state &= ~WM_MANIPULATOR_STATE_ACTIVE;
/* first activate the manipulator itself */
if (manipulator->interaction_data) {
MEM_freeN(manipulator->interaction_data);