[Bf-blender-cvs] [f1824507e2b] blender2.8: Manipulator: target property definitions
Campbell Barton
noreply at git.blender.org
Thu Jun 22 10:34:50 CEST 2017
Commit: f1824507e2b73859ede1c2e850d05795f10da6bb
Author: Campbell Barton
Date: Thu Jun 22 18:29:45 2017 +1000
Branches: blender2.8
https://developer.blender.org/rBf1824507e2b73859ede1c2e850d05795f10da6bb
Manipulator: target property definitions
Changes from custom-manipulator branch.
- use property type definitions.
- add property free callback.
- move properties into the wmManipulator struct (over alloc).
- use array length from property types instead of arg passing.
===================================================================
M source/blender/editors/manipulator_library/manipulator_types/arrow3d_manipulator.c
M source/blender/editors/manipulator_library/manipulator_types/cage2d_manipulator.c
M source/blender/editors/manipulator_library/manipulator_types/dial3d_manipulator.c
M source/blender/editors/manipulator_library/manipulator_types/grab3d_manipulator.c
M source/blender/editors/mesh/editmesh_bisect.c
M source/blender/editors/mesh/editmesh_extrude.c
M source/blender/windowmanager/intern/wm_init_exit.c
M source/blender/windowmanager/manipulators/WM_manipulator_api.h
M source/blender/windowmanager/manipulators/WM_manipulator_types.h
M source/blender/windowmanager/manipulators/intern/wm_manipulator.c
M source/blender/windowmanager/manipulators/intern/wm_manipulator_group_type.c
M source/blender/windowmanager/manipulators/intern/wm_manipulator_target_props.c
M source/blender/windowmanager/manipulators/intern/wm_manipulator_type.c
M source/blender/windowmanager/manipulators/wm_manipulator_fn.h
===================================================================
diff --git a/source/blender/editors/manipulator_library/manipulator_types/arrow3d_manipulator.c b/source/blender/editors/manipulator_library/manipulator_types/arrow3d_manipulator.c
index e13815f3997..c2e549e0be8 100644
--- a/source/blender/editors/manipulator_library/manipulator_types/arrow3d_manipulator.c
+++ b/source/blender/editors/manipulator_library/manipulator_types/arrow3d_manipulator.c
@@ -369,7 +369,7 @@ static void manipulator_arrow_invoke(
wmManipulatorProperty *mpr_prop = WM_manipulator_target_property_find(mpr, "offset");
/* Some manipulators don't use properties. */
- if (mpr_prop && WM_manipulator_target_property_is_valid(mpr_prop)) {
+ if (WM_manipulator_target_property_is_valid(mpr_prop)) {
inter->init_value = WM_manipulator_target_property_value_get(mpr, mpr_prop);
}
@@ -424,8 +424,8 @@ void ED_manipulator_arrow3d_set_ui_range(wmManipulator *mpr, const float min, co
ArrowManipulator3D *arrow = (ArrowManipulator3D *)mpr;
BLI_assert(min < max);
- BLI_assert(!(WM_manipulator_target_property_find(mpr, "offset") && "Make sure this function "
- "is called before WM_manipulator_target_property_def_rna"));
+ BLI_assert(!(WM_manipulator_target_property_is_valid(WM_manipulator_target_property_find(mpr, "offset")) &&
+ "Make sure this function is called before WM_manipulator_target_property_def_rna"));
arrow->data.range = max - min;
arrow->data.min = min;
@@ -440,8 +440,8 @@ void ED_manipulator_arrow3d_set_ui_range(wmManipulator *mpr, const float min, co
void ED_manipulator_arrow3d_set_range_fac(wmManipulator *mpr, const float range_fac)
{
ArrowManipulator3D *arrow = (ArrowManipulator3D *)mpr;
- BLI_assert(!(WM_manipulator_target_property_find(mpr, "offset") && "Make sure this function "
- "is called before WM_manipulator_target_property_def_rna"));
+ BLI_assert(!(WM_manipulator_target_property_is_valid(WM_manipulator_target_property_find(mpr, "offset")) &&
+ "Make sure this function is called before WM_manipulator_target_property_def_rna"));
arrow->data.range_fac = range_fac;
}
@@ -484,6 +484,8 @@ static void MANIPULATOR_WT_arrow_3d(wmManipulatorType *wt)
RNA_def_float(wt->srna, "length", 1.0f, 0.0f, FLT_MAX, "Arrow Line Length", "", 0.0f, FLT_MAX);
RNA_def_float_vector(wt->srna, "aspect", 2, NULL, 0, FLT_MAX, "Aspect", "Cone/box style only", 0.0f, FLT_MAX);
+
+ WM_manipulatortype_target_property_def(wt, "offset", PROP_FLOAT, 1);
}
void ED_manipulatortypes_arrow_3d(void)
diff --git a/source/blender/editors/manipulator_library/manipulator_types/cage2d_manipulator.c b/source/blender/editors/manipulator_library/manipulator_types/cage2d_manipulator.c
index f35e3b481a6..72db4a89f08 100644
--- a/source/blender/editors/manipulator_library/manipulator_types/cage2d_manipulator.c
+++ b/source/blender/editors/manipulator_library/manipulator_types/cage2d_manipulator.c
@@ -228,7 +228,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 / scale[0]);
- h = min_ff(aspy * h / MANIPULATOR_RESIZER_WIDTH, MANIPULATOR_RESIZER_WIDTH /
+ h = min_ff(aspy * h / MANIPULATOR_RESIZER_WIDTH, MANIPULATOR_RESIZER_WIDTH /
((transform_flag & ED_MANIPULATOR_RECT_TRANSFORM_FLAG_SCALE_UNIFORM) ? scale[0] : scale[1]));
/* corner manipulators */
@@ -303,7 +303,7 @@ static int manipulator_rect_transform_test_select(
aspy = w / h;
}
w = min_ff(aspx * w / MANIPULATOR_RESIZER_WIDTH, MANIPULATOR_RESIZER_WIDTH / scale[0]);
- h = min_ff(aspy * h / MANIPULATOR_RESIZER_WIDTH, MANIPULATOR_RESIZER_WIDTH /
+ h = min_ff(aspy * h / MANIPULATOR_RESIZER_WIDTH, MANIPULATOR_RESIZER_WIDTH /
((transform_flag & ED_MANIPULATOR_RECT_TRANSFORM_FLAG_SCALE_UNIFORM) ? scale[0] : scale[1]));
@@ -383,14 +383,14 @@ static bool manipulator_rect_transform_get_prop_value(
return false;
}
else {
- if (STREQ(mpr_prop->idname, "offset")) {
+ if (STREQ(mpr_prop->type->idname, "offset")) {
if (RNA_property_array_length(&mpr_prop->ptr, mpr_prop->prop) != 2) {
fprintf(stderr, "Rect Transform manipulator offset not only be bound to array float property");
return false;
}
RNA_property_float_get_array(&mpr_prop->ptr, mpr_prop->prop, value);
}
- else if (STREQ(mpr_prop->idname, "scale")) {
+ else if (STREQ(mpr_prop->type->idname, "scale")) {
const int transform_flag = RNA_enum_get(mpr->ptr, "transform");
if (transform_flag & ED_MANIPULATOR_RECT_TRANSFORM_FLAG_SCALE_UNIFORM) {
*value = RNA_property_float_get(&mpr_prop->ptr, mpr_prop->prop);
@@ -533,10 +533,10 @@ static void manipulator_rect_transform_modal(
static void manipulator_rect_transform_property_update(wmManipulator *mpr, wmManipulatorProperty *mpr_prop)
{
- if (STREQ(mpr_prop->idname, "offset")) {
+ if (STREQ(mpr_prop->type->idname, "offset")) {
manipulator_rect_transform_get_prop_value(mpr, mpr_prop, mpr->matrix_offset[3]);
}
- else if (STREQ(mpr_prop->idname, "scale")) {
+ else if (STREQ(mpr_prop->type->idname, "scale")) {
float scale[2];
RNA_float_get_array(mpr->ptr, "scale", scale);
manipulator_rect_transform_get_prop_value(mpr, mpr_prop, scale);
@@ -610,6 +610,10 @@ static void MANIPULATOR_WT_cage_2d(wmManipulatorType *wt)
RNA_def_float_vector(wt->srna, "scale", 2, scale_default, 0, FLT_MAX, "Scale", "", 0.0f, FLT_MAX);
RNA_def_float_vector(wt->srna, "dimensions", 2, NULL, 0, FLT_MAX, "Dimensions", "", 0.0f, FLT_MAX);
RNA_def_enum_flag(wt->srna, "transform", rna_enum_transform, 0, "Transform Options", "");
+
+ WM_manipulatortype_target_property_def(wt, "offset", PROP_FLOAT, 1);
+ WM_manipulatortype_target_property_def(wt, "scale", PROP_FLOAT, 2);
+ WM_manipulatortype_target_property_def(wt, "scale_uniform", PROP_FLOAT, 1);
}
void ED_manipulatortypes_cage_2d(void)
diff --git a/source/blender/editors/manipulator_library/manipulator_types/dial3d_manipulator.c b/source/blender/editors/manipulator_library/manipulator_types/dial3d_manipulator.c
index 40cf67e1133..0260fc44010 100644
--- a/source/blender/editors/manipulator_library/manipulator_types/dial3d_manipulator.c
+++ b/source/blender/editors/manipulator_library/manipulator_types/dial3d_manipulator.c
@@ -293,7 +293,7 @@ static void dial_draw_intern(
DialInteraction *inter = mpr->interaction_data;
/* XXX, View3D rotation manipulator doesn't call modal. */
- if (mpr->target_properties.first == NULL) {
+ if (!WM_manipulator_target_property_is_valid_any(mpr)) {
wmWindow *win = CTX_wm_window(C);
manipulator_dial_modal((bContext *)C, mpr, win->eventstate, 0);
}
@@ -397,7 +397,7 @@ static void manipulator_dial_modal(bContext *C, wmManipulator *mpr, const wmEven
/* set the property for the operator and call its modal function */
wmManipulatorProperty *mpr_prop = WM_manipulator_target_property_find(mpr, "offset");
- if (mpr_prop && WM_manipulator_target_property_is_valid(mpr_prop)) {
+ if (WM_manipulator_target_property_is_valid(mpr_prop)) {
WM_manipulator_target_property_value_set(C, mpr, mpr_prop, inter->init_prop_angle + angle_delta);
}
}
@@ -420,7 +420,7 @@ static void manipulator_dial_invoke(
inter->init_mval[1] = event->mval[1];
wmManipulatorProperty *mpr_prop = WM_manipulator_target_property_find(mpr, "offset");
- if (mpr_prop && WM_manipulator_target_property_is_valid(mpr_prop)) {
+ if (WM_manipulator_target_property_is_valid(mpr_prop)) {
inter->init_prop_angle = WM_manipulator_target_property_value_get(mpr, mpr_prop);
}
@@ -457,6 +457,8 @@ static void MANIPULATOR_WT_dial_3d(wmManipulatorType *wt)
{0, NULL, 0, NULL, NULL}
};
RNA_def_enum_flag(wt->srna, "draw_options", rna_enum_draw_options, 0, "Draw Options", "");
+
+ WM_manipulatortype_target_property_def(wt, "offset", PROP_FLOAT, 1);
}
void ED_manipulatortypes_dial_3d(void)
diff --git a/source/blender/editors/manipulator_library/manipulator_types/grab3d_manipulator.c b/source/blender/editors/manipulator_library/manipulator_types/grab3d_manipulator.c
index 527e29c79e8..1b2065d30a2 100644
--- a/source/blender/editors/manipulator_library/manipulator_types/grab3d_manipulator.c
+++ b/source/blender/editors/manipulator_library/manipulator_types/grab3d_manipulator.c
@@ -197,8 +197,8 @@ static void manipulator_grab_modal(bContext *C, wmManipulator *mpr, const wmEven
/* set the property for the operator and call its modal function */
wmManipulatorProperty *mpr_prop = WM_manipulator_target_property_find(mpr, "offset");
- if (mpr_prop && WM_manipulator_target_property_is_valid(mpr_prop)) {
- WM_manipulator_target_property_value_set_array(C, mpr, mpr_prop, inter->output.co_final, 3);
+ if (WM_manipulator_target_property_is_valid(mpr_prop)) {
+ WM_manipulator_target_property_value_set_array(C, mpr, mpr_prop, inter->output.co_final);
}
}
@@ -211,8 +211,8 @@ static void manipulator_grab_invoke(
inter->init_mval[1] = event->mval[1];
wmManipulatorProperty *mpr_prop = WM_manipulator_target_property_find(mpr, "offset");
- if (mpr_prop && WM_manipulator_target_property_is_valid(mpr_prop)) {
- WM_manipulator_target_property_value_get_array(mpr, mpr_prop, inter->init_prop_co, 3);
+ if (WM_manipulator_target_property_is_valid(mpr_prop)) {
+ WM_manipulator_target_property_value_get_array(mpr, mpr_prop, inter->init_prop_co);
}
mpr->interaction_data = inter;
@@ -250,6 +250,8 @@ static void MANIPULATOR_WT_grab_3d(wmManipulatorType *wt)
RNA_def_enum(wt->srna, "draw_style", rna_enum_draw_style, ED_MANIPULATOR_GRAB_STYLE_RING, "Draw Style", "");
RNA_def_enum_flag(wt->srna, "draw_options", rna_enum_draw_options, 0, "Draw Options", "");
+
+ WM_manipulatortype_target_property_def(wt, "offset", PROP_FLOAT, 3);
}
void ED_manipulatortypes_grab_3d(void)
diff --git a/source/blender/editors/mesh/editmesh_bisect.c b/source/blender/editors/mesh/editmesh_bisect.c
index 4d301c009ee..8f1ba716b83 100644
--- a/source/blender/editors/mesh/editmesh_bisect.c
+++ b/source/blender/editors/mesh/editmesh_bisect.c
@@ -456,14 +456,14 @@ static void manipulator_mesh_bisect_update_from_op(ManipulatorGroup *man)
/* depth callbacks */
static void manipulator_bisect_prop_depth_get
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list