Blender
V4.3
source
blender
editors
transform
transform_mode_boneenvelope.cc
Go to the documentation of this file.
1
/* SPDX-FileCopyrightText: 2001-2002 NaN Holding BV. All rights reserved.
2
*
3
* SPDX-License-Identifier: GPL-2.0-or-later */
4
9
#include <cstdlib>
10
11
#include "
BLI_math_vector.h
"
12
#include "
BLI_string.h
"
13
14
#include "
BKE_unit.hh
"
15
16
#include "
ED_screen.hh
"
17
18
#include "
UI_interface.hh
"
19
20
#include "
BLT_translation.hh
"
21
22
#include "
transform.hh
"
23
#include "
transform_convert.hh
"
24
#include "
transform_snap.hh
"
25
26
#include "
transform_mode.hh
"
27
28
/* -------------------------------------------------------------------- */
32
static
void
applyBoneEnvelope
(
TransInfo
*t)
33
{
34
float
ratio;
35
int
i;
36
char
str
[
UI_MAX_DRAW_STR
];
37
38
ratio = t->
values
[0] + t->
values_modal_offset
[0];
39
40
transform_snap_increment
(t, &ratio);
41
42
applyNumInput
(&t->
num
, &ratio);
43
44
t->
values_final
[0] = ratio;
45
46
/* Header print for NumInput. */
47
if
(
hasNumInput
(&t->
num
)) {
48
char
c[
NUM_STR_REP_LEN
];
49
50
outputNumInput
(&(t->
num
), c, &t->
scene
->
unit
);
51
SNPRINTF
(
str
,
IFACE_
(
"Envelope: %s"
), c);
52
}
53
else
{
54
SNPRINTF
(
str
,
IFACE_
(
"Envelope: %3f"
), ratio);
55
}
56
57
FOREACH_TRANS_DATA_CONTAINER
(t, tc) {
58
TransData
*td = tc->data;
59
for
(i = 0; i < tc->data_len; i++, td++) {
60
if
(td->flag &
TD_SKIP
) {
61
continue
;
62
}
63
64
if
(td->val) {
65
/* If the old/original value was 0.0f, then just use ratio. */
66
if
(td->ival) {
67
*td->val = td->ival * ratio;
68
}
69
else
{
70
*td->val = ratio;
71
}
72
}
73
}
74
}
75
76
recalc_data
(t);
77
78
ED_area_status_text
(t->
area
,
str
);
79
}
80
81
static
void
initBoneEnvelope
(
TransInfo
*t,
wmOperator
*
/*op*/
)
82
{
83
initMouseInputMode
(t, &t->
mouse
,
INPUT_SPRING
);
84
85
t->
idx_max
= 0;
86
t->
num
.
idx_max
= 0;
87
t->
snap
[0] = 0.1f;
88
t->
snap
[1] = t->
snap
[0] * 0.1f;
89
90
copy_v3_fl
(t->
num
.
val_inc
, t->
snap
[0]);
91
t->
num
.
unit_sys
= t->
scene
->
unit
.
system
;
92
t->
num
.
unit_type
[0] =
B_UNIT_NONE
;
93
}
94
97
TransModeInfo
TransMode_boneenvelope
= {
98
/*flags*/
T_NO_CONSTRAINT
|
T_NO_PROJECT
,
99
/*init_fn*/
initBoneEnvelope
,
100
/*transform_fn*/
applyBoneEnvelope
,
101
/*transform_matrix_fn*/
nullptr
,
102
/*handle_event_fn*/
nullptr
,
103
/*snap_distance_fn*/
nullptr
,
104
/*snap_apply_fn*/
nullptr
,
105
/*draw_fn*/
nullptr
,
106
};
BKE_unit.hh
B_UNIT_NONE
@ B_UNIT_NONE
Definition
BKE_unit.hh:106
BLI_math_vector.h
copy_v3_fl
MINLINE void copy_v3_fl(float r[3], float f)
Definition
math_vector_inline.c:71
BLI_string.h
SNPRINTF
#define SNPRINTF(dst, format,...)
Definition
BLI_string.h:597
BLT_translation.hh
IFACE_
#define IFACE_(msgid)
Definition
BLT_translation.hh:41
NUM_STR_REP_LEN
#define NUM_STR_REP_LEN
Definition
ED_numinput.hh:11
outputNumInput
void outputNumInput(NumInput *n, char *str, const UnitSettings *unit_settings)
Definition
numinput.cc:88
applyNumInput
bool applyNumInput(NumInput *n, float *vec)
Definition
numinput.cc:190
hasNumInput
bool hasNumInput(const NumInput *n)
Definition
numinput.cc:171
ED_screen.hh
ED_area_status_text
void ED_area_status_text(ScrArea *area, const char *str)
Definition
area.cc:803
UI_interface.hh
UI_MAX_DRAW_STR
#define UI_MAX_DRAW_STR
Definition
UI_interface_c.hh:109
str
#define str(s)
Definition
ffmpeg_codecs.cc:103
NumInput::idx_max
short idx_max
Definition
ED_numinput.hh:19
NumInput::unit_sys
int unit_sys
Definition
ED_numinput.hh:20
NumInput::val_inc
float val_inc[NUM_MAX_ELEMENTS]
Definition
ED_numinput.hh:34
NumInput::unit_type
int unit_type[NUM_MAX_ELEMENTS]
Definition
ED_numinput.hh:22
Scene::unit
struct UnitSettings unit
Definition
DNA_scene_types.h:2066
TransData
Definition
transform_data.hh:117
TransInfo
Definition
transform.hh:504
TransInfo::snap
float snap[2]
Definition
transform.hh:561
TransInfo::values
float values[4]
Definition
transform.hh:624
TransInfo::idx_max
short idx_max
Definition
transform.hh:559
TransInfo::values_modal_offset
float values_modal_offset[4]
Definition
transform.hh:627
TransInfo::num
NumInput num
Definition
transform.hh:540
TransInfo::scene
Scene * scene
Definition
transform.hh:654
TransInfo::mouse
MouseInput mouse
Definition
transform.hh:543
TransInfo::values_final
float values_final[4]
Definition
transform.hh:632
TransInfo::area
ScrArea * area
Definition
transform.hh:651
TransModeInfo
Definition
transform_mode.hh:21
UnitSettings::system
char system
Definition
DNA_scene_types.h:1802
wmOperator
Definition
DNA_windowmanager_types.h:623
transform.hh
INPUT_SPRING
@ INPUT_SPRING
Definition
transform.hh:743
T_NO_PROJECT
@ T_NO_PROJECT
Definition
transform.hh:121
T_NO_CONSTRAINT
@ T_NO_CONSTRAINT
Definition
transform.hh:95
initMouseInputMode
void initMouseInputMode(TransInfo *t, MouseInput *mi, MouseInputMode mode)
Definition
transform_input.cc:351
FOREACH_TRANS_DATA_CONTAINER
#define FOREACH_TRANS_DATA_CONTAINER(t, th)
Definition
transform.hh:854
recalc_data
void recalc_data(TransInfo *t)
Definition
transform_convert.cc:1275
transform_convert.hh
conversion and adaptation of different datablocks to a common struct.
TD_SKIP
@ TD_SKIP
Definition
transform_data.hh:157
transform_mode.hh
transform modes used by different operators.
TransMode_boneenvelope
TransModeInfo TransMode_boneenvelope
Definition
transform_mode_boneenvelope.cc:97
applyBoneEnvelope
static void applyBoneEnvelope(TransInfo *t)
Definition
transform_mode_boneenvelope.cc:32
initBoneEnvelope
static void initBoneEnvelope(TransInfo *t, wmOperator *)
Definition
transform_mode_boneenvelope.cc:81
transform_snap_increment
bool transform_snap_increment(const TransInfo *t, float *r_val)
Definition
transform_snap.cc:1923
transform_snap.hh
Generated on Thu Feb 6 2025 07:36:39 for Blender by
doxygen
1.11.0