Changeset View
Changeset View
Standalone View
Standalone View
source/blender/makesrna/intern/rna_sequencer.c
| Show First 20 Lines • Show All 285 Lines • ▼ Show 20 Lines | |||||
| /* 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 *bmain, Scene *UNUSED(scene), PointerRNA *ptr) | static void rna_Sequence_frame_change_update(Main *bmain, Scene *UNUSED(scene), 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); | ||||
| rna_Sequence_invalidate_preprocessed_update(bmain, scene, ptr); | |||||
| } | } | ||||
| 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; | ||||
| BKE_sequence_invalidate_cache_composite(scene, seq); | |||||
| BKE_sequence_translate(scene, seq, value - seq->start); | BKE_sequence_translate(scene, seq, value - seq->start); | ||||
| do_sequence_frame_change_update(scene, seq); | do_sequence_frame_change_update(scene, seq); | ||||
| BKE_sequence_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; | ||||
| BKE_sequence_invalidate_cache_composite(scene, seq); | |||||
| BKE_sequence_tx_set_final_left(seq, value); | BKE_sequence_tx_set_final_left(seq, value); | ||||
| BKE_sequence_single_fix(seq); | BKE_sequence_single_fix(seq); | ||||
| do_sequence_frame_change_update(scene, seq); | do_sequence_frame_change_update(scene, seq); | ||||
| BKE_sequence_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; | ||||
| BKE_sequence_invalidate_cache_composite(scene, seq); | |||||
| BKE_sequence_tx_set_final_right(seq, value); | BKE_sequence_tx_set_final_right(seq, value); | ||||
| BKE_sequence_single_fix(seq); | BKE_sequence_single_fix(seq); | ||||
| do_sequence_frame_change_update(scene, seq); | do_sequence_frame_change_update(scene, seq); | ||||
| BKE_sequence_invalidate_cache_composite(scene, seq); | |||||
| } | |||||
| static void rna_Sequence_frame_offset_start_set(PointerRNA *ptr, int value) | |||||
| { | |||||
| Sequence *seq = (Sequence *)ptr->data; | |||||
| Scene *scene = (Scene *)ptr->owner_id; | |||||
| BKE_sequence_invalidate_cache_composite(scene, seq); | |||||
| seq->startofs = value; | |||||
| } | |||||
| static void rna_Sequence_frame_offset_end_set(PointerRNA *ptr, int value) | |||||
| { | |||||
| Sequence *seq = (Sequence *)ptr->data; | |||||
| Scene *scene = (Scene *)ptr->owner_id; | |||||
| BKE_sequence_invalidate_cache_composite(scene, seq); | |||||
| seq->endofs = value; | |||||
| } | |||||
| static void rna_Sequence_frame_still_start_set(PointerRNA *ptr, int value) | |||||
| { | |||||
| Sequence *seq = (Sequence *)ptr->data; | |||||
| Scene *scene = (Scene *)ptr->owner_id; | |||||
| BKE_sequence_invalidate_cache_composite(scene, seq); | |||||
| seq->startstill = value; | |||||
| } | |||||
| static void rna_Sequence_frame_still_end_set(PointerRNA *ptr, int value) | |||||
| { | |||||
| Sequence *seq = (Sequence *)ptr->data; | |||||
| Scene *scene = (Scene *)ptr->owner_id; | |||||
| BKE_sequence_invalidate_cache_composite(scene, seq); | |||||
| seq->endstill = value; | |||||
| } | } | ||||
| static void rna_Sequence_anim_startofs_final_set(PointerRNA *ptr, int value) | static void rna_Sequence_anim_startofs_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->anim_startofs = MIN2(value, seq->len + seq->anim_startofs); | seq->anim_startofs = MIN2(value, seq->len + seq->anim_startofs); | ||||
| Show All 13 Lines | static void rna_Sequence_anim_endofs_final_set(PointerRNA *ptr, int value) | ||||
| do_sequence_frame_change_update(scene, seq); | do_sequence_frame_change_update(scene, seq); | ||||
| } | } | ||||
| 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; | ||||
| BKE_sequence_invalidate_cache_composite(scene, seq); | |||||
| BKE_sequence_tx_set_final_right(seq, BKE_sequence_tx_get_final_left(seq, false) + value); | BKE_sequence_tx_set_final_right(seq, BKE_sequence_tx_get_final_left(seq, false) + value); | ||||
| do_sequence_frame_change_update(scene, seq); | do_sequence_frame_change_update(scene, seq); | ||||
| BKE_sequence_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 BKE_sequence_tx_get_final_right(seq, false) - BKE_sequence_tx_get_final_left(seq, false); | return BKE_sequence_tx_get_final_right(seq, false) - BKE_sequence_tx_get_final_left(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 (BKE_sequence_effect_get_num_inputs(seq->type)) ? 0 : PROP_EDITABLE; | return (BKE_sequence_effect_get_num_inputs(seq->type)) ? 0 : PROP_EDITABLE; | ||||
| } | } | ||||
| static void rna_Sequence_channel_set(PointerRNA *ptr, int value) | static void rna_Sequence_channel_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; | ||||
| Editing *ed = BKE_sequencer_editing_get(scene, false); | Editing *ed = BKE_sequencer_editing_get(scene, false); | ||||
| ListBase *seqbase = BKE_sequence_seqbase(&ed->seqbase, seq); | ListBase *seqbase = BKE_sequence_seqbase(&ed->seqbase, seq); | ||||
| BKE_sequence_invalidate_cache_composite(scene, seq); | |||||
| /* check channel increment or decrement */ | /* check channel increment or decrement */ | ||||
| const int channel_delta = (value >= seq->machine) ? 1 : -1; | const int channel_delta = (value >= seq->machine) ? 1 : -1; | ||||
| seq->machine = value; | seq->machine = value; | ||||
| if (BKE_sequence_test_overlap(seqbase, seq)) { | if (BKE_sequence_test_overlap(seqbase, seq)) { | ||||
| /* XXX - BROKEN!, uses context seqbasep */ | /* XXX - BROKEN!, uses context seqbasep */ | ||||
| BKE_sequence_base_shuffle_ex(seqbase, seq, scene, channel_delta); | BKE_sequence_base_shuffle_ex(seqbase, seq, scene, channel_delta); | ||||
| } | } | ||||
| BKE_sequencer_sort(scene); | BKE_sequencer_sort(scene); | ||||
| BKE_sequence_invalidate_cache_composite(scene, seq); | |||||
| } | } | ||||
| static void rna_Sequence_frame_offset_range( | static void rna_Sequence_frame_offset_range( | ||||
| PointerRNA *ptr, int *min, int *max, int *UNUSED(softmin), int *UNUSED(softmax)) | PointerRNA *ptr, int *min, int *max, int *UNUSED(softmin), int *UNUSED(softmax)) | ||||
| { | { | ||||
| Sequence *seq = (Sequence *)ptr->data; | Sequence *seq = (Sequence *)ptr->data; | ||||
| *min = ELEM(seq->type, SEQ_TYPE_SOUND_RAM, SEQ_TYPE_SOUND_HD) ? 0 : INT_MIN; | *min = ELEM(seq->type, SEQ_TYPE_SOUND_RAM, SEQ_TYPE_SOUND_HD) ? 0 : INT_MIN; | ||||
| *max = INT_MAX; | *max = INT_MAX; | ||||
| ▲ Show 20 Lines • Show All 1,228 Lines • ▼ Show 20 Lines | static void rna_def_sequence(BlenderRNA *brna) | ||||
| prop = RNA_def_property(srna, "lock", PROP_BOOLEAN, PROP_NONE); | prop = RNA_def_property(srna, "lock", PROP_BOOLEAN, PROP_NONE); | ||||
| RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_LOCK); | RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_LOCK); | ||||
| RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); | RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); | ||||
| RNA_def_property_ui_icon(prop, ICON_UNLOCKED, true); | RNA_def_property_ui_icon(prop, ICON_UNLOCKED, true); | ||||
| RNA_def_property_ui_text(prop, "Lock", "Lock strip so that it cannot be transformed"); | RNA_def_property_ui_text(prop, "Lock", "Lock strip so that it cannot be transformed"); | ||||
| RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, NULL); | RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, NULL); | ||||
| /* strip positioning */ | /* strip positioning */ | ||||
| /* Cache has to be invalidated before and after transformation. */ | |||||
| prop = RNA_def_property(srna, "frame_final_duration", PROP_INT, PROP_TIME); | prop = RNA_def_property(srna, "frame_final_duration", PROP_INT, PROP_TIME); | ||||
| RNA_def_property_range(prop, 1, MAXFRAME); | RNA_def_property_range(prop, 1, MAXFRAME); | ||||
| RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); | RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); | ||||
| RNA_def_property_ui_text( | RNA_def_property_ui_text( | ||||
| prop, "Length", "The length of the contents of this strip after the handles are applied"); | prop, "Length", "The length of the contents of this strip after the handles are applied"); | ||||
| RNA_def_property_int_funcs( | RNA_def_property_int_funcs( | ||||
| prop, "rna_Sequence_frame_length_get", "rna_Sequence_frame_length_set", NULL); | prop, "rna_Sequence_frame_length_get", "rna_Sequence_frame_length_set", NULL); | ||||
| RNA_def_property_editable_func(prop, "rna_Sequence_frame_editable"); | RNA_def_property_editable_func(prop, "rna_Sequence_frame_editable"); | ||||
| ▲ Show 20 Lines • Show All 41 Lines • ▼ Show 20 Lines | static void rna_def_sequence(BlenderRNA *brna) | ||||
| RNA_def_property_editable_func(prop, "rna_Sequence_frame_editable"); | RNA_def_property_editable_func(prop, "rna_Sequence_frame_editable"); | ||||
| 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, "frame_offset_start", PROP_INT, PROP_TIME); | prop = RNA_def_property(srna, "frame_offset_start", PROP_INT, PROP_TIME); | ||||
| RNA_def_property_int_sdna(prop, NULL, "startofs"); | RNA_def_property_int_sdna(prop, NULL, "startofs"); | ||||
| // RNA_def_property_clear_flag(prop, PROP_EDITABLE); /* overlap tests */ | // RNA_def_property_clear_flag(prop, PROP_EDITABLE); /* overlap tests */ | ||||
| RNA_def_property_ui_text(prop, "Start Offset", ""); | RNA_def_property_ui_text(prop, "Start Offset", ""); | ||||
| RNA_def_property_int_funcs(prop, NULL, NULL, "rna_Sequence_frame_offset_range"); | RNA_def_property_int_funcs( | ||||
| prop, NULL, "rna_Sequence_frame_offset_start_set", "rna_Sequence_frame_offset_range"); | |||||
| RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_frame_change_update"); | 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); | prop = RNA_def_property(srna, "frame_offset_end", PROP_INT, PROP_TIME); | ||||
| RNA_def_property_int_sdna(prop, NULL, "endofs"); | RNA_def_property_int_sdna(prop, NULL, "endofs"); | ||||
| // RNA_def_property_clear_flag(prop, PROP_EDITABLE); /* overlap tests */ | // RNA_def_property_clear_flag(prop, PROP_EDITABLE); /* overlap tests */ | ||||
| RNA_def_property_ui_text(prop, "End Offset", ""); | RNA_def_property_ui_text(prop, "End Offset", ""); | ||||
| RNA_def_property_int_funcs(prop, NULL, NULL, "rna_Sequence_frame_offset_range"); | RNA_def_property_int_funcs( | ||||
| prop, NULL, "rna_Sequence_frame_offset_end_set", "rna_Sequence_frame_offset_range"); | |||||
| RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_frame_change_update"); | RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_frame_change_update"); | ||||
| prop = RNA_def_property(srna, "frame_still_start", PROP_INT, PROP_TIME); | prop = RNA_def_property(srna, "frame_still_start", PROP_INT, PROP_TIME); | ||||
| RNA_def_property_int_sdna(prop, NULL, "startstill"); | RNA_def_property_int_sdna(prop, NULL, "startstill"); | ||||
| // RNA_def_property_clear_flag(prop, PROP_EDITABLE); /* overlap tests */ | // RNA_def_property_clear_flag(prop, PROP_EDITABLE); /* overlap tests */ | ||||
| RNA_def_property_range(prop, 0, MAXFRAME); | RNA_def_property_range(prop, 0, MAXFRAME); | ||||
| RNA_def_property_ui_text(prop, "Start Still", ""); | RNA_def_property_ui_text(prop, "Start Still", ""); | ||||
| RNA_def_property_int_funcs(prop, NULL, "rna_Sequence_frame_still_start_set", NULL); | |||||
| RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_frame_change_update"); | RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_frame_change_update"); | ||||
| prop = RNA_def_property(srna, "frame_still_end", PROP_INT, PROP_TIME); | prop = RNA_def_property(srna, "frame_still_end", PROP_INT, PROP_TIME); | ||||
| RNA_def_property_int_sdna(prop, NULL, "endstill"); | RNA_def_property_int_sdna(prop, NULL, "endstill"); | ||||
| // RNA_def_property_clear_flag(prop, PROP_EDITABLE); /* overlap tests */ | // RNA_def_property_clear_flag(prop, PROP_EDITABLE); /* overlap tests */ | ||||
| RNA_def_property_range(prop, 0, MAXFRAME); | RNA_def_property_range(prop, 0, MAXFRAME); | ||||
| RNA_def_property_ui_text(prop, "End Still", ""); | RNA_def_property_ui_text(prop, "End Still", ""); | ||||
| RNA_def_property_int_funcs(prop, NULL, "rna_Sequence_frame_still_end_set", NULL); | |||||
| RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_frame_change_update"); | RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_frame_change_update"); | ||||
| prop = RNA_def_property(srna, "channel", PROP_INT, PROP_UNSIGNED); | prop = RNA_def_property(srna, "channel", PROP_INT, PROP_UNSIGNED); | ||||
| 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 */ | ||||
| ▲ Show 20 Lines • Show All 1,472 Lines • Show Last 20 Lines | |||||