Blender
V4.3
source
blender
editors
transform
transform_mode_boneroll.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_rotation.h
"
12
#include "
BLI_math_vector.h
"
13
#include "
BLI_string.h
"
14
15
#include "
BKE_unit.hh
"
16
17
#include "
ED_screen.hh
"
18
19
#include "
UI_interface.hh
"
20
21
#include "
BLT_translation.hh
"
22
23
#include "
transform.hh
"
24
#include "
transform_convert.hh
"
25
#include "
transform_snap.hh
"
26
27
#include "
transform_mode.hh
"
28
29
/* -------------------------------------------------------------------- */
33
static
void
applyBoneRoll
(
TransInfo
*t)
34
{
35
int
i;
36
char
str
[
UI_MAX_DRAW_STR
];
37
38
float
final
;
39
40
final
= t->
values
[0] + t->
values_modal_offset
[0];
41
42
transform_snap_increment
(t, &
final
);
43
44
applyNumInput
(&t->
num
, &
final
);
45
46
t->
values_final
[0] =
final
;
47
48
if
(
hasNumInput
(&t->
num
)) {
49
char
c[
NUM_STR_REP_LEN
];
50
51
outputNumInput
(&(t->
num
), c, &t->
scene
->
unit
);
52
53
SNPRINTF
(
str
,
IFACE_
(
"Roll: %s"
), &c[0]);
54
}
55
else
{
56
SNPRINTF
(
str
,
IFACE_
(
"Roll: %.2f"
),
RAD2DEGF
(
final
));
57
}
58
59
/* Set roll values. */
60
FOREACH_TRANS_DATA_CONTAINER
(t, tc) {
61
TransData
*td = tc->data;
62
for
(i = 0; i < tc->data_len; i++, td++) {
63
if
(td->flag &
TD_SKIP
) {
64
continue
;
65
}
66
67
*(td->val) = td->ival -
final
;
68
}
69
}
70
71
recalc_data
(t);
72
73
ED_area_status_text
(t->
area
,
str
);
74
}
75
76
static
void
initBoneRoll
(
TransInfo
*t,
wmOperator
*
/*op*/
)
77
{
78
t->
mode
=
TFM_BONE_ROLL
;
79
80
initMouseInputMode
(t, &t->
mouse
,
INPUT_ANGLE
);
81
82
t->
idx_max
= 0;
83
t->
num
.
idx_max
= 0;
84
initSnapAngleIncrements
(t);
85
86
copy_v3_fl
(t->
num
.
val_inc
, t->
snap
[0]);
87
t->
num
.
unit_sys
= t->
scene
->
unit
.
system
;
88
t->
num
.
unit_use_radians
= (t->
scene
->
unit
.
system_rotation
==
USER_UNIT_ROT_RADIANS
);
89
t->
num
.
unit_type
[0] =
B_UNIT_ROTATION
;
90
}
91
94
TransModeInfo
TransMode_boneroll
= {
95
/*flags*/
T_NO_CONSTRAINT
|
T_NO_PROJECT
,
96
/*init_fn*/
initBoneRoll
,
97
/*transform_fn*/
applyBoneRoll
,
98
/*transform_matrix_fn*/
nullptr
,
99
/*handle_event_fn*/
nullptr
,
100
/*snap_distance_fn*/
nullptr
,
101
/*snap_apply_fn*/
nullptr
,
102
/*draw_fn*/
nullptr
,
103
};
BKE_unit.hh
B_UNIT_ROTATION
@ B_UNIT_ROTATION
Definition
BKE_unit.hh:111
BLI_math_rotation.h
RAD2DEGF
#define RAD2DEGF(_rad)
Definition
BLI_math_rotation.h:26
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
USER_UNIT_ROT_RADIANS
@ USER_UNIT_ROT_RADIANS
Definition
DNA_scene_types.h:2864
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
TFM_BONE_ROLL
@ TFM_BONE_ROLL
Definition
ED_transform.hh:56
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
NumInput::unit_use_radians
bool unit_use_radians
Definition
ED_numinput.hh:23
Scene::unit
struct UnitSettings unit
Definition
DNA_scene_types.h:2066
TransData
Definition
transform_data.hh:117
TransInfo
Definition
transform.hh:504
TransInfo::mode
eTfmMode mode
Definition
transform.hh:517
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
UnitSettings::system_rotation
char system_rotation
Definition
DNA_scene_types.h:1804
wmOperator
Definition
DNA_windowmanager_types.h:623
transform.hh
INPUT_ANGLE
@ INPUT_ANGLE
Definition
transform.hh:746
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_boneroll
TransModeInfo TransMode_boneroll
Definition
transform_mode_boneroll.cc:94
applyBoneRoll
static void applyBoneRoll(TransInfo *t)
Definition
transform_mode_boneroll.cc:33
initBoneRoll
static void initBoneRoll(TransInfo *t, wmOperator *)
Definition
transform_mode_boneroll.cc:76
transform_snap_increment
bool transform_snap_increment(const TransInfo *t, float *r_val)
Definition
transform_snap.cc:1923
initSnapAngleIncrements
void initSnapAngleIncrements(TransInfo *t)
Definition
transform_snap.cc:1033
transform_snap.hh
Generated on Thu Feb 6 2025 07:36:39 for Blender by
doxygen
1.11.0