Blender
V5.0
source
blender
depsgraph
intern
eval
deg_eval_runtime_backup_sequence.cc
Go to the documentation of this file.
1
/* SPDX-FileCopyrightText: 2019 Blender Authors
2
*
3
* SPDX-License-Identifier: GPL-2.0-or-later */
4
8
9
#include "
intern/eval/deg_eval_runtime_backup_sequence.h
"
10
11
#include "
DNA_sequence_types.h
"
12
13
#include "
BLI_listbase.h
"
14
15
namespace
blender::deg
{
16
17
StripModifierDataBackup::StripModifierDataBackup
()
18
{
19
reset
();
20
}
21
22
void
StripModifierDataBackup::reset
()
23
{
24
sound_in
=
nullptr
;
25
sound_out
=
nullptr
;
26
last_buf
=
nullptr
;
27
}
28
29
void
StripModifierDataBackup::init_from_modifier
(
StripModifierData
*smd)
30
{
31
if
(smd->
type
==
eSeqModifierType_SoundEqualizer
) {
32
sound_in
= smd->
runtime
.
last_sound_in
;
33
sound_out
= smd->
runtime
.
last_sound_out
;
34
last_buf
= smd->
runtime
.
last_buf
;
35
36
smd->
runtime
.
last_sound_in
=
nullptr
;
37
smd->
runtime
.
last_sound_out
=
nullptr
;
38
smd->
runtime
.
last_buf
=
nullptr
;
39
}
40
}
41
42
void
StripModifierDataBackup::restore_to_modifier
(
StripModifierData
*smd)
43
{
44
if
(smd->
type
==
eSeqModifierType_SoundEqualizer
) {
45
smd->
runtime
.
last_sound_in
=
sound_in
;
46
smd->
runtime
.
last_sound_out
=
sound_out
;
47
smd->
runtime
.
last_buf
=
last_buf
;
48
}
49
reset
();
50
}
51
52
bool
StripModifierDataBackup::isEmpty
()
const
53
{
54
return
sound_in
==
nullptr
&&
sound_out
==
nullptr
&&
last_buf
==
nullptr
;
55
}
56
57
StripBackup::StripBackup
(
const
Depsgraph
*
/*depsgraph*/
)
58
{
59
reset
();
60
}
61
62
void
StripBackup::reset
()
63
{
64
scene_sound
=
nullptr
;
65
BLI_listbase_clear
(&
anims
);
66
modifiers
.clear();
67
}
68
69
void
StripBackup::init_from_strip
(
Strip
*strip)
70
{
71
scene_sound
= strip->
scene_sound
;
72
anims
= strip->
anims
;
73
74
LISTBASE_FOREACH
(
StripModifierData
*, smd, &strip->
modifiers
) {
75
StripModifierDataBackup
mod_backup;
76
mod_backup.
init_from_modifier
(smd);
77
if
(!mod_backup.
isEmpty
()) {
78
modifiers
.add(smd->persistent_uid, mod_backup);
79
}
80
}
81
82
strip->
scene_sound
=
nullptr
;
83
BLI_listbase_clear
(&strip->
anims
);
84
}
85
86
void
StripBackup::restore_to_strip
(
Strip
*strip)
87
{
88
strip->
scene_sound
=
scene_sound
;
89
strip->
anims
=
anims
;
90
91
LISTBASE_FOREACH
(
StripModifierData
*, smd, &strip->
modifiers
) {
92
std::optional<StripModifierDataBackup> backup =
modifiers
.pop_try(smd->persistent_uid);
93
if
(backup.has_value()) {
94
backup->restore_to_modifier(smd);
95
}
96
}
97
98
reset
();
99
}
100
101
bool
StripBackup::isEmpty
()
const
102
{
103
return
(
scene_sound
==
nullptr
) &&
BLI_listbase_is_empty
(&
anims
) &&
modifiers
.is_empty();
104
}
105
106
}
// namespace blender::deg
BLI_listbase.h
LISTBASE_FOREACH
#define LISTBASE_FOREACH(type, var, list)
Definition
BLI_listbase.h:363
BLI_listbase_clear
BLI_INLINE void BLI_listbase_clear(ListBase *lb)
Definition
BLI_listbase.h:293
BLI_listbase_is_empty
BLI_INLINE bool BLI_listbase_is_empty(const ListBase *lb)
Definition
BLI_listbase.h:289
DNA_sequence_types.h
eSeqModifierType_SoundEqualizer
@ eSeqModifierType_SoundEqualizer
Definition
DNA_sequence_types.h:897
blender::deg::StripBackup::StripBackup
StripBackup(const Depsgraph *depsgraph)
Definition
deg_eval_runtime_backup_sequence.cc:57
blender::deg::StripBackup::isEmpty
bool isEmpty() const
Definition
deg_eval_runtime_backup_sequence.cc:101
blender::deg::StripBackup::init_from_strip
void init_from_strip(Strip *strip)
Definition
deg_eval_runtime_backup_sequence.cc:69
blender::deg::StripBackup::modifiers
Map< int, StripModifierDataBackup > modifiers
Definition
deg_eval_runtime_backup_sequence.h:52
blender::deg::StripBackup::anims
ListBase anims
Definition
deg_eval_runtime_backup_sequence.h:51
blender::deg::StripBackup::reset
void reset()
Definition
deg_eval_runtime_backup_sequence.cc:62
blender::deg::StripBackup::scene_sound
void * scene_sound
Definition
deg_eval_runtime_backup_sequence.h:50
blender::deg::StripBackup::restore_to_strip
void restore_to_strip(Strip *strip)
Definition
deg_eval_runtime_backup_sequence.cc:86
blender::deg::StripModifierDataBackup
Definition
deg_eval_runtime_backup_sequence.h:22
blender::deg::StripModifierDataBackup::isEmpty
bool isEmpty() const
Definition
deg_eval_runtime_backup_sequence.cc:52
blender::deg::StripModifierDataBackup::sound_out
void * sound_out
Definition
deg_eval_runtime_backup_sequence.h:34
blender::deg::StripModifierDataBackup::StripModifierDataBackup
StripModifierDataBackup()
Definition
deg_eval_runtime_backup_sequence.cc:17
blender::deg::StripModifierDataBackup::sound_in
void * sound_in
Definition
deg_eval_runtime_backup_sequence.h:33
blender::deg::StripModifierDataBackup::last_buf
float * last_buf
Definition
deg_eval_runtime_backup_sequence.h:35
blender::deg::StripModifierDataBackup::init_from_modifier
void init_from_modifier(StripModifierData *smd)
Definition
deg_eval_runtime_backup_sequence.cc:29
blender::deg::StripModifierDataBackup::reset
void reset()
Definition
deg_eval_runtime_backup_sequence.cc:22
blender::deg::StripModifierDataBackup::restore_to_modifier
void restore_to_modifier(StripModifierData *smd)
Definition
deg_eval_runtime_backup_sequence.cc:42
deg_eval_runtime_backup_sequence.h
blender::deg
Definition
DEG_depsgraph_light_linking.hh:14
StripModifierDataRuntime::last_buf
float * last_buf
Definition
DNA_sequence_types.h:544
StripModifierDataRuntime::last_sound_in
void * last_sound_in
Definition
DNA_sequence_types.h:547
StripModifierDataRuntime::last_sound_out
void * last_sound_out
Definition
DNA_sequence_types.h:548
StripModifierData
Definition
DNA_sequence_types.h:551
StripModifierData::runtime
StripModifierDataRuntime runtime
Definition
DNA_sequence_types.h:571
StripModifierData::type
int type
Definition
DNA_sequence_types.h:553
Strip
Definition
DNA_sequence_types.h:172
Strip::scene_sound
void * scene_sound
Definition
DNA_sequence_types.h:249
Strip::modifiers
ListBase modifiers
Definition
DNA_sequence_types.h:289
Strip::anims
ListBase anims
Definition
DNA_sequence_types.h:223
blender::deg::Depsgraph
Definition
depsgraph.hh:48
Generated on
for Blender by
doxygen
1.16.1