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/makesrna/intern/rna_sequencer.c')
-rw-r--r--source/blender/makesrna/intern/rna_sequencer.c89
1 files changed, 61 insertions, 28 deletions
diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c
index d14763d2609..f9dfb8544ca 100644
--- a/source/blender/makesrna/intern/rna_sequencer.c
+++ b/source/blender/makesrna/intern/rna_sequencer.c
@@ -292,7 +292,7 @@ static void do_sequence_frame_change_update(Scene *scene, Sequence *seq)
{
ListBase *seqbase = SEQ_get_seqbase_by_seq(scene, seq);
- if (SEQ_transform_test_overlap(seqbase, seq)) {
+ if (SEQ_transform_test_overlap(scene, seqbase, seq)) {
SEQ_transform_seqbase_shuffle(seqbase, seq, scene);
}
@@ -314,15 +314,17 @@ static void rna_Sequence_frame_change_update(Main *UNUSED(bmain),
static int rna_Sequence_frame_final_start_get(PointerRNA *ptr)
{
- return SEQ_time_left_handle_frame_get((Sequence *)ptr->data);
+ Scene *scene = (Scene *)ptr->owner_id;
+ return SEQ_time_left_handle_frame_get(scene, (Sequence *)ptr->data);
}
static int rna_Sequence_frame_final_end_get(PointerRNA *ptr)
{
- return SEQ_time_right_handle_frame_get((Sequence *)ptr->data);
+ Scene *scene = (Scene *)ptr->owner_id;
+ return SEQ_time_right_handle_frame_get(scene, (Sequence *)ptr->data);
}
-static void rna_Sequence_start_frame_final_set(PointerRNA *ptr, int value)
+static void rna_Sequence_start_frame_final_set(PointerRNA *ptr, float value)
{
Sequence *seq = (Sequence *)ptr->data;
Scene *scene = (Scene *)ptr->owner_id;
@@ -354,7 +356,7 @@ static void rna_Sequence_start_frame_set(PointerRNA *ptr, int value)
SEQ_relations_invalidate_cache_composite(scene, seq);
}
-static void rna_Sequence_frame_offset_start_set(PointerRNA *ptr, int value)
+static void rna_Sequence_frame_offset_start_set(PointerRNA *ptr, float value)
{
Sequence *seq = (Sequence *)ptr->data;
Scene *scene = (Scene *)ptr->owner_id;
@@ -363,7 +365,7 @@ static void rna_Sequence_frame_offset_start_set(PointerRNA *ptr, int value)
seq->startofs = value;
}
-static void rna_Sequence_frame_offset_end_set(PointerRNA *ptr, int value)
+static void rna_Sequence_frame_offset_end_set(PointerRNA *ptr, float value)
{
Sequence *seq = (Sequence *)ptr->data;
Scene *scene = (Scene *)ptr->owner_id;
@@ -413,7 +415,7 @@ static void rna_Sequence_anim_startofs_final_range(
}
static void rna_Sequence_frame_offset_start_range(
- PointerRNA *ptr, int *min, int *max, int *UNUSED(softmin), int *UNUSED(softmax))
+ PointerRNA *ptr, float *min, float *max, float *UNUSED(softmin), float *UNUSED(softmax))
{
Sequence *seq = (Sequence *)ptr->data;
*min = ELEM(seq->type, SEQ_TYPE_SOUND_RAM, SEQ_TYPE_SOUND_HD) ? 0 : INT_MIN;
@@ -421,7 +423,7 @@ static void rna_Sequence_frame_offset_start_range(
}
static void rna_Sequence_frame_offset_end_range(
- PointerRNA *ptr, int *min, int *max, int *UNUSED(softmin), int *UNUSED(softmax))
+ PointerRNA *ptr, float *min, float *max, float *UNUSED(softmin), float *UNUSED(softmax))
{
Sequence *seq = (Sequence *)ptr->data;
*min = ELEM(seq->type, SEQ_TYPE_SOUND_RAM, SEQ_TYPE_SOUND_HD) ? 0 : INT_MIN;
@@ -433,7 +435,7 @@ static void rna_Sequence_frame_length_set(PointerRNA *ptr, int value)
Sequence *seq = (Sequence *)ptr->data;
Scene *scene = (Scene *)ptr->owner_id;
- SEQ_time_right_handle_frame_set(scene, seq, SEQ_time_left_handle_frame_get(seq) + value);
+ SEQ_time_right_handle_frame_set(scene, seq, SEQ_time_left_handle_frame_get(scene, seq) + value);
do_sequence_frame_change_update(scene, seq);
SEQ_relations_invalidate_cache_composite(scene, seq);
}
@@ -441,7 +443,8 @@ static void rna_Sequence_frame_length_set(PointerRNA *ptr, int value)
static int rna_Sequence_frame_length_get(PointerRNA *ptr)
{
Sequence *seq = (Sequence *)ptr->data;
- return SEQ_time_right_handle_frame_get(seq) - SEQ_time_left_handle_frame_get(seq);
+ Scene *scene = (Scene *)ptr->owner_id;
+ return SEQ_time_right_handle_frame_get(scene, seq) - SEQ_time_left_handle_frame_get(scene, seq);
}
static int rna_Sequence_frame_editable(PointerRNA *ptr, const char **UNUSED(r_info))
@@ -461,7 +464,7 @@ static void rna_Sequence_channel_set(PointerRNA *ptr, int value)
const int channel_delta = (value >= seq->machine) ? 1 : -1;
seq->machine = value;
- if (SEQ_transform_test_overlap(seqbase, seq)) {
+ if (SEQ_transform_test_overlap(scene, seqbase, seq)) {
SEQ_transform_seqbase_shuffle_ex(seqbase, seq, scene, channel_delta);
}
SEQ_relations_invalidate_cache_composite(scene, seq);
@@ -815,7 +818,20 @@ static int rna_Sequence_proxy_filepath_length(PointerRNA *ptr)
static void rna_Sequence_audio_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
{
- DEG_id_tag_update(ptr->owner_id, ID_RECALC_SEQUENCER_STRIPS);
+ DEG_id_tag_update(ptr->owner_id, ID_RECALC_SEQUENCER_STRIPS | ID_RECALC_AUDIO);
+}
+
+static void rna_Sequence_speed_factor_update(Main *bmain, Scene *scene, PointerRNA *ptr)
+{
+ SEQ_cache_cleanup(scene);
+ rna_Sequence_audio_update(bmain, scene, ptr);
+}
+
+static void rna_Sequence_speed_factor_set(PointerRNA *ptr, float value)
+{
+ Sequence *seq = (Sequence *)ptr->data;
+ Scene *scene = (Scene *)ptr->owner_id;
+ SEQ_time_speed_factor_set(scene, seq, value);
}
static void rna_Sequence_pan_range(
@@ -1969,11 +1985,12 @@ static void rna_def_sequence(BlenderRNA *brna)
RNA_def_property_ui_text(
prop, "Length", "The length of the contents of this strip before the handles are applied");
- prop = RNA_def_property(srna, "frame_start", PROP_INT, PROP_TIME);
- RNA_def_property_int_sdna(prop, NULL, "start");
+ prop = RNA_def_property(srna, "frame_start", PROP_FLOAT, PROP_TIME);
+ RNA_def_property_float_sdna(prop, NULL, "start");
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
RNA_def_property_ui_text(prop, "Start Frame", "X position where the strip begins");
- RNA_def_property_int_funcs(
+ RNA_def_property_ui_range(prop, MINFRAME, MAXFRAME, 3, 0);
+ RNA_def_property_float_funcs(
prop, NULL, "rna_Sequence_start_frame_set", NULL); /* overlap tests and calc_seq_disp */
RNA_def_property_editable_func(prop, "rna_Sequence_frame_editable");
RNA_def_property_update(
@@ -2006,19 +2023,21 @@ static void rna_def_sequence(BlenderRNA *brna)
RNA_def_property_update(
prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_invalidate_preprocessed_update");
- prop = RNA_def_property(srna, "frame_offset_start", PROP_INT, PROP_TIME);
- RNA_def_property_int_sdna(prop, NULL, "startofs");
+ prop = RNA_def_property(srna, "frame_offset_start", PROP_FLOAT, PROP_TIME);
+ RNA_def_property_float_sdna(prop, NULL, "startofs");
// RNA_def_property_clear_flag(prop, PROP_EDITABLE); /* overlap tests */
RNA_def_property_ui_text(prop, "Start Offset", "");
- RNA_def_property_int_funcs(
+ RNA_def_property_ui_range(prop, MINFRAME, MAXFRAME, 3, 0);
+ RNA_def_property_float_funcs(
prop, NULL, "rna_Sequence_frame_offset_start_set", "rna_Sequence_frame_offset_start_range");
RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_frame_change_update");
- prop = RNA_def_property(srna, "frame_offset_end", PROP_INT, PROP_TIME);
- RNA_def_property_int_sdna(prop, NULL, "endofs");
+ prop = RNA_def_property(srna, "frame_offset_end", PROP_FLOAT, PROP_TIME);
+ RNA_def_property_float_sdna(prop, NULL, "endofs");
// RNA_def_property_clear_flag(prop, PROP_EDITABLE); /* overlap tests */
RNA_def_property_ui_text(prop, "End Offset", "");
- RNA_def_property_int_funcs(
+ RNA_def_property_ui_range(prop, MINFRAME, MAXFRAME, 3, 0);
+ RNA_def_property_float_funcs(
prop, NULL, "rna_Sequence_frame_offset_end_set", "rna_Sequence_frame_offset_end_range");
RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_frame_change_update");
@@ -2305,6 +2324,20 @@ static void rna_def_editor(BlenderRNA *brna)
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
}
+static void rna_def_speed_factor(StructRNA *srna)
+{
+ PropertyRNA *prop = RNA_def_property(srna, "speed_factor", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "speed_factor");
+ RNA_def_property_float_default(prop, 1.0f);
+ RNA_def_property_range(prop, 0.1f, FLT_MAX);
+ RNA_def_property_ui_range(prop, 1.0f, 100.0f, 10.0, 3);
+ RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
+ RNA_def_property_ui_text(prop, "Speed Factor", "Multiply playback speed");
+ RNA_def_property_float_funcs(
+ prop, NULL, "rna_Sequence_speed_factor_set", NULL); /* overlap test */
+ RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_speed_factor_update");
+}
+
static void rna_def_filter_video(StructRNA *srna)
{
PropertyRNA *prop;
@@ -2537,6 +2570,7 @@ static void rna_def_image(BlenderRNA *brna)
rna_def_proxy(srna);
rna_def_input(srna);
rna_def_color_management(srna);
+ rna_def_speed_factor(srna);
}
static void rna_def_meta(BlenderRNA *brna)
@@ -2568,6 +2602,7 @@ static void rna_def_meta(BlenderRNA *brna)
rna_def_filter_video(srna);
rna_def_proxy(srna);
rna_def_input(srna);
+ rna_def_speed_factor(srna);
}
static void rna_def_scene(BlenderRNA *brna)
@@ -2616,6 +2651,7 @@ static void rna_def_scene(BlenderRNA *brna)
rna_def_proxy(srna);
rna_def_input(srna);
rna_def_movie_types(srna);
+ rna_def_speed_factor(srna);
}
static void rna_def_movie(BlenderRNA *brna)
@@ -2699,6 +2735,7 @@ static void rna_def_movie(BlenderRNA *brna)
rna_def_input(srna);
rna_def_color_management(srna);
rna_def_movie_types(srna);
+ rna_def_speed_factor(srna);
}
static void rna_def_movieclip(BlenderRNA *brna)
@@ -2726,6 +2763,7 @@ static void rna_def_movieclip(BlenderRNA *brna)
rna_def_filter_video(srna);
rna_def_input(srna);
rna_def_movie_types(srna);
+ rna_def_speed_factor(srna);
}
static void rna_def_mask(BlenderRNA *brna)
@@ -2744,6 +2782,7 @@ static void rna_def_mask(BlenderRNA *brna)
rna_def_filter_video(srna);
rna_def_input(srna);
+ rna_def_speed_factor(srna);
}
static void rna_def_sound(BlenderRNA *brna)
@@ -2770,13 +2809,6 @@ static void rna_def_sound(BlenderRNA *brna)
RNA_def_property_translation_context(prop, BLT_I18NCONTEXT_ID_SOUND);
RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_audio_update");
- prop = RNA_def_property(srna, "pitch", PROP_FLOAT, PROP_NONE);
- RNA_def_property_float_sdna(prop, NULL, "pitch");
- RNA_def_property_range(prop, 0.1f, 10.0f);
- RNA_def_property_ui_text(prop, "Pitch", "Playback pitch of the sound");
- RNA_def_property_translation_context(prop, BLT_I18NCONTEXT_ID_SOUND);
- RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_audio_update");
-
prop = RNA_def_property(srna, "pan", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "pan");
RNA_def_property_range(prop, -FLT_MAX, FLT_MAX);
@@ -2792,6 +2824,7 @@ static void rna_def_sound(BlenderRNA *brna)
RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, NULL);
rna_def_input(srna);
+ rna_def_speed_factor(srna);
}
static void rna_def_effect(BlenderRNA *brna)