diff options
Diffstat (limited to 'source/blender/makesrna/intern/rna_sequencer.c')
-rw-r--r-- | source/blender/makesrna/intern/rna_sequencer.c | 89 |
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) |