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:
Diffstat (limited to 'source/blender/editors/gizmo_library/gizmo_types/value2d_gizmo.c')
-rw-r--r--source/blender/editors/gizmo_library/gizmo_types/value2d_gizmo.c188
1 files changed, 93 insertions, 95 deletions
diff --git a/source/blender/editors/gizmo_library/gizmo_types/value2d_gizmo.c b/source/blender/editors/gizmo_library/gizmo_types/value2d_gizmo.c
index 9854b62dade..059d3acbd9c 100644
--- a/source/blender/editors/gizmo_library/gizmo_types/value2d_gizmo.c
+++ b/source/blender/editors/gizmo_library/gizmo_types/value2d_gizmo.c
@@ -55,110 +55,108 @@
* \{ */
typedef struct ValueInteraction {
- struct {
- float mval[2];
- float prop_value;
- } init;
- struct {
- float prop_value;
- eWM_GizmoFlagTweak tweak_flag;
- } prev;
- float range[2];
+ struct {
+ float mval[2];
+ float prop_value;
+ } init;
+ struct {
+ float prop_value;
+ eWM_GizmoFlagTweak tweak_flag;
+ } prev;
+ float range[2];
} ValueInteraction;
static void gizmo_value_draw(const bContext *UNUSED(C), wmGizmo *UNUSED(gz))
{
- /* pass */
+ /* pass */
}
-static int gizmo_value_modal(
- bContext *C, wmGizmo *gz, const wmEvent *event,
- eWM_GizmoFlagTweak tweak_flag)
+static int gizmo_value_modal(bContext *C,
+ wmGizmo *gz,
+ const wmEvent *event,
+ eWM_GizmoFlagTweak tweak_flag)
{
- ValueInteraction *inter = gz->interaction_data;
- if ((event->type != MOUSEMOVE) && (inter->prev.tweak_flag == tweak_flag)) {
- return OPERATOR_RUNNING_MODAL;
- }
- ARegion *ar = CTX_wm_region(C);
- const float value_scale = 4.0f; /* Could be option. */
- const float value_range = inter->range[1] - inter->range[0];
- float value_delta = (
- inter->init.prop_value +
- (((event->mval[0] - inter->init.mval[0]) / ar->winx) * value_range)) * value_scale;
-
-
- if (tweak_flag & WM_GIZMO_TWEAK_SNAP) {
- const double snap = 0.1;
- value_delta = (float)roundf((double)value_delta / snap) * snap;
-
- }
- if (tweak_flag & WM_GIZMO_TWEAK_PRECISE) {
- value_delta *= 0.1f;
- }
- const float value_final = inter->init.prop_value + value_delta;
-
- if (value_final != inter->prev.prop_value) {
- /* set the property for the operator and call its modal function */
- wmGizmoProperty *gz_prop = WM_gizmo_target_property_find(gz, "offset");
- if (WM_gizmo_target_property_is_valid(gz_prop)) {
- WM_gizmo_target_property_float_set(C, gz, gz_prop, value_final);
- }
-
- {
- ScrArea *sa = CTX_wm_area(C);
- char str[64];
- SNPRINTF(str, "%.4f", value_final);
- ED_area_status_text(sa, str);
- }
- }
-
- inter->prev.prop_value = value_final;
- inter->prev.tweak_flag = tweak_flag;
-
- return OPERATOR_RUNNING_MODAL;
+ ValueInteraction *inter = gz->interaction_data;
+ if ((event->type != MOUSEMOVE) && (inter->prev.tweak_flag == tweak_flag)) {
+ return OPERATOR_RUNNING_MODAL;
+ }
+ ARegion *ar = CTX_wm_region(C);
+ const float value_scale = 4.0f; /* Could be option. */
+ const float value_range = inter->range[1] - inter->range[0];
+ float value_delta = (inter->init.prop_value +
+ (((event->mval[0] - inter->init.mval[0]) / ar->winx) * value_range)) *
+ value_scale;
+
+ if (tweak_flag & WM_GIZMO_TWEAK_SNAP) {
+ const double snap = 0.1;
+ value_delta = (float)roundf((double)value_delta / snap) * snap;
+ }
+ if (tweak_flag & WM_GIZMO_TWEAK_PRECISE) {
+ value_delta *= 0.1f;
+ }
+ const float value_final = inter->init.prop_value + value_delta;
+
+ if (value_final != inter->prev.prop_value) {
+ /* set the property for the operator and call its modal function */
+ wmGizmoProperty *gz_prop = WM_gizmo_target_property_find(gz, "offset");
+ if (WM_gizmo_target_property_is_valid(gz_prop)) {
+ WM_gizmo_target_property_float_set(C, gz, gz_prop, value_final);
+ }
+
+ {
+ ScrArea *sa = CTX_wm_area(C);
+ char str[64];
+ SNPRINTF(str, "%.4f", value_final);
+ ED_area_status_text(sa, str);
+ }
+ }
+
+ inter->prev.prop_value = value_final;
+ inter->prev.tweak_flag = tweak_flag;
+
+ return OPERATOR_RUNNING_MODAL;
}
-
-static int gizmo_value_invoke(
- bContext *UNUSED(C), wmGizmo *gz, const wmEvent *event)
+static int gizmo_value_invoke(bContext *UNUSED(C), wmGizmo *gz, const wmEvent *event)
{
- ValueInteraction *inter = MEM_callocN(sizeof(ValueInteraction), __func__);
+ ValueInteraction *inter = MEM_callocN(sizeof(ValueInteraction), __func__);
- inter->init.mval[0] = event->mval[0];
- inter->init.mval[1] = event->mval[1];
- inter->prev.prop_value = -FLT_MAX;
+ inter->init.mval[0] = event->mval[0];
+ inter->init.mval[1] = event->mval[1];
+ inter->prev.prop_value = -FLT_MAX;
- wmGizmoProperty *gz_prop = WM_gizmo_target_property_find(gz, "offset");
- if (WM_gizmo_target_property_is_valid(gz_prop)) {
- inter->init.prop_value = WM_gizmo_target_property_float_get(gz, gz_prop);
- if (!WM_gizmo_target_property_float_range_get(gz, gz_prop, inter->range)) {
- inter->range[0] = 0.0f;
- inter->range[1] = 1.0f;
- }
- }
+ wmGizmoProperty *gz_prop = WM_gizmo_target_property_find(gz, "offset");
+ if (WM_gizmo_target_property_is_valid(gz_prop)) {
+ inter->init.prop_value = WM_gizmo_target_property_float_get(gz, gz_prop);
+ if (!WM_gizmo_target_property_float_range_get(gz, gz_prop, inter->range)) {
+ inter->range[0] = 0.0f;
+ inter->range[1] = 1.0f;
+ }
+ }
- gz->interaction_data = inter;
+ gz->interaction_data = inter;
- return OPERATOR_RUNNING_MODAL;
+ return OPERATOR_RUNNING_MODAL;
}
static void gizmo_value_exit(bContext *C, wmGizmo *gz, const bool cancel)
{
- ScrArea *sa = CTX_wm_area(C);
- ED_area_status_text(sa, NULL);
- if (cancel) {
- ValueInteraction *inter = gz->interaction_data;
- wmGizmoProperty *gz_prop = WM_gizmo_target_property_find(gz, "offset");
- if (WM_gizmo_target_property_is_valid(gz_prop)) {
- WM_gizmo_target_property_float_set(C, gz, gz_prop, inter->init.prop_value);
- }
- }
+ ScrArea *sa = CTX_wm_area(C);
+ ED_area_status_text(sa, NULL);
+ if (cancel) {
+ ValueInteraction *inter = gz->interaction_data;
+ wmGizmoProperty *gz_prop = WM_gizmo_target_property_find(gz, "offset");
+ if (WM_gizmo_target_property_is_valid(gz_prop)) {
+ WM_gizmo_target_property_float_set(C, gz, gz_prop, inter->init.prop_value);
+ }
+ }
}
-static int gizmo_value_test_select(
- bContext *UNUSED(C), wmGizmo *UNUSED(gz), const int UNUSED(mval[2]))
+static int gizmo_value_test_select(bContext *UNUSED(C),
+ wmGizmo *UNUSED(gz),
+ const int UNUSED(mval[2]))
{
- return 0;
+ return 0;
}
/** \} */
@@ -170,25 +168,25 @@ static int gizmo_value_test_select(
static void GIZMO_GT_value_2d(wmGizmoType *gzt)
{
- /* identifiers */
- gzt->idname = "GIZMO_GT_value_2d";
+ /* identifiers */
+ gzt->idname = "GIZMO_GT_value_2d";
- /* api callbacks */
- gzt->draw = gizmo_value_draw;
- gzt->invoke = gizmo_value_invoke;
- gzt->exit = gizmo_value_exit;
- gzt->modal = gizmo_value_modal;
- gzt->test_select = gizmo_value_test_select;
+ /* api callbacks */
+ gzt->draw = gizmo_value_draw;
+ gzt->invoke = gizmo_value_invoke;
+ gzt->exit = gizmo_value_exit;
+ gzt->modal = gizmo_value_modal;
+ gzt->test_select = gizmo_value_test_select;
- gzt->struct_size = sizeof(wmGizmo);
+ gzt->struct_size = sizeof(wmGizmo);
- WM_gizmotype_target_property_def(gzt, "offset", PROP_FLOAT, 1);
- /* Options: relative / absolute */
+ WM_gizmotype_target_property_def(gzt, "offset", PROP_FLOAT, 1);
+ /* Options: relative / absolute */
}
void ED_gizmotypes_value_2d(void)
{
- WM_gizmotype_append(GIZMO_GT_value_2d);
+ WM_gizmotype_append(GIZMO_GT_value_2d);
}
/** \} */