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. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to