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
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2017-06-22 11:29:45 +0300
committerCampbell Barton <ideasman42@gmail.com>2017-06-22 11:39:28 +0300
commitf1824507e2b73859ede1c2e850d05795f10da6bb (patch)
tree343d8c02b161506775d2825c83955737436b38b0 /source/blender/editors/manipulator_library/manipulator_types/cage2d_manipulator.c
parent87adeb8dd91db5bfada04f6df749c28cc4b79251 (diff)
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.
Diffstat (limited to 'source/blender/editors/manipulator_library/manipulator_types/cage2d_manipulator.c')
-rw-r--r--source/blender/editors/manipulator_library/manipulator_types/cage2d_manipulator.c16
1 files changed, 10 insertions, 6 deletions
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)