Changeset View
Changeset View
Standalone View
Standalone View
source/blender/makesrna/intern/rna_sequencer.c
| Show First 20 Lines • Show All 277 Lines • ▼ Show 20 Lines | static void do_sequence_frame_change_update(Scene *scene, Sequence *seq) | ||||
| ListBase *seqbase = SEQ_get_seqbase_by_seq(&ed->seqbase, seq); | ListBase *seqbase = SEQ_get_seqbase_by_seq(&ed->seqbase, seq); | ||||
| Sequence *tseq; | Sequence *tseq; | ||||
| SEQ_time_update_sequence_bounds(scene, seq); | SEQ_time_update_sequence_bounds(scene, seq); | ||||
| /* ensure effects are always fit in length to their input */ | /* ensure effects are always fit in length to their input */ | ||||
| /* TODO(sergey): probably could be optimized. | /* TODO(sergey): probably could be optimized. | ||||
| * in terms skipping update of non-changing strips | * in terms skipping update of non-changing strips | ||||
| */ | */ | ||||
| for (tseq = seqbase->first; tseq; tseq = tseq->next) { | for (tseq = seqbase->first; tseq; tseq = tseq->next) { | ||||
| if (tseq->seq1 || tseq->seq2 || tseq->seq3) { | if (tseq->seq1 || tseq->seq2 || tseq->seq3) { | ||||
| SEQ_time_update_sequence(scene, tseq); | SEQ_time_update_sequence(scene, tseq); | ||||
| } | } | ||||
| } | } | ||||
| if (SEQ_transform_test_overlap(seqbase, seq)) { | if (SEQ_transform_test_overlap(seqbase, seq)) { | ||||
| SEQ_transform_seqbase_shuffle(seqbase, seq, scene); /* XXX - BROKEN!, uses context seqbasep */ | SEQ_transform_seqbase_shuffle(seqbase, seq, scene); /* XXX - BROKEN!, uses context seqbasep */ | ||||
| } | } | ||||
| SEQ_sort(scene); | SEQ_sort(scene); | ||||
| } | } | ||||
| /* A simple wrapper around above func, directly usable as prop update func. | /* A simple wrapper around above func, directly usable as prop update func. | ||||
| * Also invalidate cache if needed. | * Also invalidate cache if needed. | ||||
| */ | */ | ||||
| static void rna_Sequence_frame_change_update(Main *UNUSED(bmain), | static void rna_Sequence_frame_change_update(Main *UNUSED(bmain), | ||||
| Scene *UNUSED(scene), | Scene *UNUSED(scene), | ||||
| PointerRNA *ptr) | PointerRNA *ptr) | ||||
| { | { | ||||
| Scene *scene = (Scene *)ptr->owner_id; | Scene *scene = (Scene *)ptr->owner_id; | ||||
| do_sequence_frame_change_update(scene, (Sequence *)ptr->data); | do_sequence_frame_change_update(scene, (Sequence *)ptr->data); | ||||
| } | } | ||||
| static void rna_Sequence_override_playback_rate_rate_update(Main *UNUSED(bmain), | |||||
| Scene *scene, | |||||
| PointerRNA *ptr) | |||||
| { | |||||
| Sequence *seq = ptr->data; | |||||
| SEQ_relations_framechange_update(scene, seq); | |||||
| } | |||||
| static void rna_Sequence_start_frame_set(PointerRNA *ptr, int value) | static void rna_Sequence_start_frame_set(PointerRNA *ptr, int value) | ||||
| { | { | ||||
| Sequence *seq = (Sequence *)ptr->data; | Sequence *seq = (Sequence *)ptr->data; | ||||
| Scene *scene = (Scene *)ptr->owner_id; | Scene *scene = (Scene *)ptr->owner_id; | ||||
| SEQ_relations_invalidate_cache_composite(scene, seq); | SEQ_relations_invalidate_cache_composite(scene, seq); | ||||
| SEQ_transform_translate_sequence(scene, seq, value - seq->start); | SEQ_transform_translate_sequence(scene, seq, value - seq->start); | ||||
| do_sequence_frame_change_update(scene, seq); | do_sequence_frame_change_update(scene, seq); | ||||
| SEQ_relations_invalidate_cache_composite(scene, seq); | SEQ_relations_invalidate_cache_composite(scene, seq); | ||||
| } | } | ||||
| static void rna_Sequence_start_frame_final_set(PointerRNA *ptr, int value) | static void rna_Sequence_start_frame_final_set(PointerRNA *ptr, int value) | ||||
| { | { | ||||
| Sequence *seq = (Sequence *)ptr->data; | Sequence *seq = (Sequence *)ptr->data; | ||||
| Scene *scene = (Scene *)ptr->owner_id; | Scene *scene = (Scene *)ptr->owner_id; | ||||
| SEQ_relations_invalidate_cache_composite(scene, seq); | SEQ_relations_invalidate_cache_composite(scene, seq); | ||||
| SEQ_transform_set_left_handle_frame(seq, value); | SEQ_transform_set_left_handle_frame(scene, seq, value); | ||||
| SEQ_transform_fix_single_image_seq_offsets(seq); | SEQ_transform_fix_single_image_seq_offsets(scene, seq); | ||||
| do_sequence_frame_change_update(scene, seq); | do_sequence_frame_change_update(scene, seq); | ||||
| SEQ_relations_invalidate_cache_composite(scene, seq); | SEQ_relations_invalidate_cache_composite(scene, seq); | ||||
| } | } | ||||
| static void rna_Sequence_end_frame_final_set(PointerRNA *ptr, int value) | static void rna_Sequence_end_frame_final_set(PointerRNA *ptr, int value) | ||||
| { | { | ||||
| Sequence *seq = (Sequence *)ptr->data; | Sequence *seq = (Sequence *)ptr->data; | ||||
| Scene *scene = (Scene *)ptr->owner_id; | Scene *scene = (Scene *)ptr->owner_id; | ||||
| SEQ_relations_invalidate_cache_composite(scene, seq); | SEQ_relations_invalidate_cache_composite(scene, seq); | ||||
| SEQ_transform_set_right_handle_frame(seq, value); | SEQ_transform_set_right_handle_frame(scene, seq, value); | ||||
| SEQ_transform_fix_single_image_seq_offsets(seq); | SEQ_transform_fix_single_image_seq_offsets(scene, seq); | ||||
| do_sequence_frame_change_update(scene, seq); | do_sequence_frame_change_update(scene, seq); | ||||
| SEQ_relations_invalidate_cache_composite(scene, seq); | 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, int value) | ||||
| { | { | ||||
| Sequence *seq = (Sequence *)ptr->data; | Sequence *seq = (Sequence *)ptr->data; | ||||
| Scene *scene = (Scene *)ptr->owner_id; | Scene *scene = (Scene *)ptr->owner_id; | ||||
| ▲ Show 20 Lines • Show All 86 Lines • ▼ Show 20 Lines | |||||
| } | } | ||||
| static void rna_Sequence_frame_length_set(PointerRNA *ptr, int value) | static void rna_Sequence_frame_length_set(PointerRNA *ptr, int value) | ||||
| { | { | ||||
| Sequence *seq = (Sequence *)ptr->data; | Sequence *seq = (Sequence *)ptr->data; | ||||
| Scene *scene = (Scene *)ptr->owner_id; | Scene *scene = (Scene *)ptr->owner_id; | ||||
| SEQ_relations_invalidate_cache_composite(scene, seq); | SEQ_relations_invalidate_cache_composite(scene, seq); | ||||
| SEQ_transform_set_right_handle_frame(seq, | SEQ_transform_set_right_handle_frame( | ||||
| SEQ_transform_get_left_handle_frame(seq, false) + value); | scene, seq, SEQ_transform_get_left_handle_frame(scene, seq, false) + value); | ||||
| do_sequence_frame_change_update(scene, seq); | do_sequence_frame_change_update(scene, seq); | ||||
| SEQ_relations_invalidate_cache_composite(scene, seq); | SEQ_relations_invalidate_cache_composite(scene, seq); | ||||
| } | } | ||||
| static int rna_Sequence_frame_length_get(PointerRNA *ptr) | static int rna_Sequence_frame_length_get(PointerRNA *ptr) | ||||
| { | { | ||||
| Sequence *seq = (Sequence *)ptr->data; | Sequence *seq = (Sequence *)ptr->data; | ||||
| return SEQ_transform_get_right_handle_frame(seq, false) - | Scene *scene = (Scene *)ptr->owner_id; | ||||
| SEQ_transform_get_left_handle_frame(seq, false); | return SEQ_transform_get_right_handle_frame(scene, seq, false) - | ||||
| SEQ_transform_get_left_handle_frame(scene, seq, false); | |||||
| } | } | ||||
| static int rna_Sequence_frame_editable(PointerRNA *ptr, const char **UNUSED(r_info)) | static int rna_Sequence_frame_editable(PointerRNA *ptr, const char **UNUSED(r_info)) | ||||
| { | { | ||||
| Sequence *seq = (Sequence *)ptr->data; | Sequence *seq = (Sequence *)ptr->data; | ||||
| /* Effect sequences' start frame and length must be readonly! */ | /* Effect sequences' start frame and length must be readonly! */ | ||||
| return (SEQ_effect_get_num_inputs(seq->type)) ? 0 : PROP_EDITABLE; | return (SEQ_effect_get_num_inputs(seq->type)) ? 0 : PROP_EDITABLE; | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 1,405 Lines • ▼ Show 20 Lines | static void rna_def_sequence(BlenderRNA *brna) | ||||
| RNA_def_property_int_sdna(prop, NULL, "machine"); | RNA_def_property_int_sdna(prop, NULL, "machine"); | ||||
| RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); | RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); | ||||
| RNA_def_property_range(prop, 1, MAXSEQ); | RNA_def_property_range(prop, 1, MAXSEQ); | ||||
| RNA_def_property_ui_text(prop, "Channel", "Y position of the sequence strip"); | RNA_def_property_ui_text(prop, "Channel", "Y position of the sequence strip"); | ||||
| RNA_def_property_int_funcs(prop, NULL, "rna_Sequence_channel_set", NULL); /* overlap test */ | RNA_def_property_int_funcs(prop, NULL, "rna_Sequence_channel_set", NULL); /* overlap test */ | ||||
| RNA_def_property_update( | RNA_def_property_update( | ||||
| prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_invalidate_preprocessed_update"); | prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_invalidate_preprocessed_update"); | ||||
| prop = RNA_def_property(srna, "playback_rate", PROP_FLOAT, PROP_NONE); | |||||
| RNA_def_property_float_sdna(prop, NULL, "playback_rate"); | |||||
| 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, 1.0, 3); | |||||
| RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); | |||||
| RNA_def_property_ui_text(prop, "Playback Rate", "FPS rate of original media"); | |||||
| RNA_def_property_update( | |||||
| prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_override_playback_rate_rate_update"); | |||||
| prop = RNA_def_property(srna, "use_linear_modifiers", PROP_BOOLEAN, PROP_NONE); | prop = RNA_def_property(srna, "use_linear_modifiers", PROP_BOOLEAN, PROP_NONE); | ||||
| RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_USE_LINEAR_MODIFIERS); | RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_USE_LINEAR_MODIFIERS); | ||||
| RNA_def_property_ui_text(prop, | RNA_def_property_ui_text(prop, | ||||
| "Use Linear Modifiers", | "Use Linear Modifiers", | ||||
| "Calculate modifiers in linear space instead of sequencer's space"); | "Calculate modifiers in linear space instead of sequencer's space"); | ||||
| RNA_def_property_update( | RNA_def_property_update( | ||||
| prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_invalidate_preprocessed_update"); | prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_invalidate_preprocessed_update"); | ||||
| ▲ Show 20 Lines • Show All 1,460 Lines • Show Last 20 Lines | |||||