Blender
V4.5
source
blender
editors
transform
transform_mode_baketime.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
namespace
blender::ed::transform
{
29
30
/* -------------------------------------------------------------------- */
34
static
void
applyBakeTime
(
TransInfo
*t)
35
{
36
float
time
;
37
int
i;
38
char
str
[
UI_MAX_DRAW_STR
];
39
40
float
fac = 0.1f;
41
42
/* XXX, disable precision for now,
43
* this isn't even accessible by the user. */
44
#if 0
45
if
(t->
mouse
.
precision
) {
46
/* Calculate ratio for shift-key position, and for total, and blend these for precision. */
47
time
= float(t->
center2d
[0] - t->
mouse
.precision_mval[0]) * fac;
48
time
+= 0.1f * (float(t->
center2d
[0] * fac - mval[0]) -
time
);
49
}
50
else
51
#endif
52
{
53
time
= (t->
center2d
[0] - t->
mval
[0]) * fac;
54
}
55
56
transform_snap_increment
(t, &
time
);
57
58
applyNumInput
(&t->
num
, &
time
);
59
60
/* Header print for NumInput. */
61
if
(
hasNumInput
(&t->
num
)) {
62
char
c[
NUM_STR_REP_LEN
];
63
64
outputNumInput
(&(t->
num
), c, t->
scene
->
unit
);
65
66
if
(
time
>= 0.0f) {
67
SNPRINTF
(
str
,
IFACE_
(
"Time: +%s %s"
), c, t->
proptext
);
68
}
69
else
{
70
SNPRINTF
(
str
,
IFACE_
(
"Time: %s %s"
), c, t->
proptext
);
71
}
72
}
73
else
{
74
/* Default header print. */
75
if
(
time
>= 0.0f) {
76
SNPRINTF
(
str
,
IFACE_
(
"Time: +%.3f %s"
),
time
, t->
proptext
);
77
}
78
else
{
79
SNPRINTF
(
str
,
IFACE_
(
"Time: %.3f %s"
),
time
, t->
proptext
);
80
}
81
}
82
83
FOREACH_TRANS_DATA_CONTAINER
(t, tc) {
84
TransData
*td = tc->data;
85
for
(i = 0; i < tc->data_len; i++, td++) {
86
if
(td->
flag
&
TD_SKIP
) {
87
continue
;
88
}
89
90
float
*dst, ival;
91
if
(td->
val
) {
92
dst = td->
val
;
93
ival = td->
ival
;
94
}
95
else
{
96
dst = &td->
loc
[0];
97
ival = td->
iloc
[0];
98
}
99
100
*dst = ival +
time
* td->
factor
;
101
if
(td->
ext
->
scale
&& *dst < *td->ext->scale) {
102
*dst = *td->
ext
->
scale
;
103
}
104
if
(td->
ext
->
quat
&& *dst > *td->
ext
->
quat
) {
105
*dst = *td->
ext
->
quat
;
106
}
107
}
108
}
109
110
recalc_data
(t);
111
112
ED_area_status_text
(t->
area
,
str
);
113
}
114
115
static
void
initBakeTime
(
TransInfo
*t,
wmOperator
*
/*op*/
)
116
{
117
initMouseInputMode
(t, &t->
mouse
,
INPUT_NONE
);
118
119
t->
idx_max
= 0;
120
t->
num
.
idx_max
= 0;
121
t->
snap
[0] = 1.0f;
122
t->
snap
[1] = t->
snap
[0] * 0.1f;
123
124
copy_v3_fl
(t->
num
.
val_inc
, t->
snap
[0]);
125
t->
num
.
unit_sys
= t->
scene
->
unit
.
system
;
126
t->
num
.
unit_type
[0] =
B_UNIT_NONE
;
/* Don't think this uses units? */
127
}
128
131
TransModeInfo
TransMode_baketime
= {
132
/*flags*/
0,
133
/*init_fn*/
initBakeTime
,
134
/*transform_fn*/
applyBakeTime
,
135
/*transform_matrix_fn*/
nullptr
,
136
/*handle_event_fn*/
nullptr
,
137
/*snap_distance_fn*/
nullptr
,
138
/*snap_apply_fn*/
nullptr
,
139
/*draw_fn*/
nullptr
,
140
};
141
142
}
// namespace blender::ed::transform
BKE_unit.hh
B_UNIT_NONE
@ B_UNIT_NONE
Definition
BKE_unit.hh:123
BLI_math_vector.h
copy_v3_fl
MINLINE void copy_v3_fl(float r[3], float f)
Definition
math_vector_inline.cc:65
BLI_string.h
SNPRINTF
#define SNPRINTF(dst, format,...)
Definition
BLI_string.h:599
BLT_translation.hh
IFACE_
#define IFACE_(msgid)
Definition
BLT_translation.hh:48
NUM_STR_REP_LEN
#define NUM_STR_REP_LEN
Definition
ED_numinput.hh:11
applyNumInput
bool applyNumInput(NumInput *n, float *vec)
Definition
numinput.cc:189
outputNumInput
void outputNumInput(NumInput *n, char *str, const UnitSettings &unit_settings)
Definition
numinput.cc:87
hasNumInput
bool hasNumInput(const NumInput *n)
Definition
numinput.cc:170
ED_screen.hh
ED_area_status_text
void ED_area_status_text(ScrArea *area, const char *str)
Definition
area.cc:872
UI_interface.hh
UI_MAX_DRAW_STR
#define UI_MAX_DRAW_STR
Definition
UI_interface_types.hh:15
time
double time
Definition
deg_debug_stats_gnuplot.cc:38
str
#define str(s)
Definition
ffmpeg_codecs.cc:103
blender::ed::transform
Definition
ED_gizmo_library.hh:19
blender::ed::transform::initBakeTime
static void initBakeTime(TransInfo *t, wmOperator *)
Definition
transform_mode_baketime.cc:115
blender::ed::transform::initMouseInputMode
void initMouseInputMode(TransInfo *t, MouseInput *mi, MouseInputMode mode)
Definition
transform_input.cc:351
blender::ed::transform::recalc_data
void recalc_data(TransInfo *t)
Definition
transform_convert.cc:1279
blender::ed::transform::transform_snap_increment
bool transform_snap_increment(const TransInfo *t, float *r_val)
Definition
transform_snap.cc:1764
blender::ed::transform::TransMode_baketime
TransModeInfo TransMode_baketime
Definition
transform_mode_baketime.cc:131
blender::ed::transform::applyBakeTime
static void applyBakeTime(TransInfo *t)
Definition
transform_mode_baketime.cc:34
blender::ed::transform::INPUT_NONE
@ INPUT_NONE
Definition
transform.hh:1037
blender::ed::transform::TD_SKIP
@ TD_SKIP
Definition
transform.hh:356
NumInput::idx_max
short idx_max
Definition
ED_numinput.hh:20
NumInput::unit_sys
int unit_sys
Definition
ED_numinput.hh:21
NumInput::val_inc
float val_inc[NUM_MAX_ELEMENTS]
Definition
ED_numinput.hh:35
NumInput::unit_type
int unit_type[NUM_MAX_ELEMENTS]
Definition
ED_numinput.hh:23
Scene::unit
struct UnitSettings unit
Definition
DNA_scene_types.h:2184
UnitSettings::system
char system
Definition
DNA_scene_types.h:1918
blender::ed::transform::MouseInput::precision
bool precision
Definition
transform.hh:606
blender::ed::transform::TransDataBasic::val
float * val
Definition
transform.hh:405
blender::ed::transform::TransDataBasic::iloc
float iloc[3]
Definition
transform.hh:401
blender::ed::transform::TransDataBasic::ival
float ival
Definition
transform.hh:407
blender::ed::transform::TransDataBasic::loc
float * loc
Definition
transform.hh:399
blender::ed::transform::TransDataBasic::flag
int flag
Definition
transform.hh:409
blender::ed::transform::TransDataExtension::scale
float * scale
Definition
transform.hh:450
blender::ed::transform::TransDataExtension::quat
float * quat
Definition
transform.hh:435
blender::ed::transform::TransData
Definition
transform.hh:496
blender::ed::transform::TransData::factor
float factor
Definition
transform.hh:502
blender::ed::transform::TransData::ext
TransDataExtension * ext
Definition
transform.hh:512
blender::ed::transform::TransInfo
Definition
transform.hh:796
blender::ed::transform::TransInfo::mouse
MouseInput mouse
Definition
transform.hh:835
blender::ed::transform::TransInfo::center2d
float center2d[2]
Definition
transform.hh:849
blender::ed::transform::TransInfo::mval
float2 mval
Definition
transform.hh:955
blender::ed::transform::TransInfo::area
ScrArea * area
Definition
transform.hh:943
blender::ed::transform::TransInfo::proptext
char proptext[20]
Definition
transform.hh:840
blender::ed::transform::TransInfo::idx_max
short idx_max
Definition
transform.hh:851
blender::ed::transform::TransInfo::num
NumInput num
Definition
transform.hh:832
blender::ed::transform::TransInfo::snap
float snap[2]
Definition
transform.hh:853
blender::ed::transform::TransInfo::scene
Scene * scene
Definition
transform.hh:946
blender::ed::transform::TransModeInfo
Definition
transform_mode.hh:27
wmOperator
Definition
DNA_windowmanager_types.h:636
transform.hh
FOREACH_TRANS_DATA_CONTAINER
#define FOREACH_TRANS_DATA_CONTAINER(t, th)
Definition
transform.hh:42
transform_convert.hh
conversion and adaptation of different datablocks to a common struct.
transform_mode.hh
transform modes used by different operators.
transform_snap.hh
Generated on Fri Apr 3 2026 06:33:18 for Blender by
doxygen
1.11.0