Changeset View
Changeset View
Standalone View
Standalone View
source/blender/makesrna/intern/rna_sequencer_api.c
| Show First 20 Lines • Show All 71 Lines • ▼ Show 20 Lines | static void rna_Sequence_swap_internal(Sequence *seq_self, | ||||
| const char *error_msg; | const char *error_msg; | ||||
| if (BKE_sequence_swap(seq_self, seq_other, &error_msg) == 0) { | if (BKE_sequence_swap(seq_self, seq_other, &error_msg) == 0) { | ||||
| BKE_report(reports, RPT_ERROR, error_msg); | BKE_report(reports, RPT_ERROR, error_msg); | ||||
| } | } | ||||
| } | } | ||||
| static Sequence *alloc_generic_sequence( | static Sequence *alloc_generic_sequence( | ||||
| Editing *ed, const char *name, int frame_start, int channel, int type, const char *file) | ListBase *seqbase, const char *name, int frame_start, int channel, int type, const char *file) | ||||
| { | { | ||||
| Sequence *seq; | Sequence *seq; | ||||
| StripElem *se; | StripElem *se; | ||||
| seq = BKE_sequence_alloc(ed->seqbasep, frame_start, channel, type); | seq = BKE_sequence_alloc(seqbase, frame_start, channel, type); | ||||
| BLI_strncpy(seq->name + 2, name, sizeof(seq->name) - 2); | BLI_strncpy(seq->name + 2, name, sizeof(seq->name) - 2); | ||||
| BKE_sequence_base_unique_name_recursive(&ed->seqbase, seq); | BKE_sequence_base_unique_name_recursive(seqbase, seq); | ||||
| Strip *strip = seq->strip; | Strip *strip = seq->strip; | ||||
| if (file) { | if (file) { | ||||
| strip->stripdata = se = MEM_callocN(sizeof(StripElem), "stripelem"); | strip->stripdata = se = MEM_callocN(sizeof(StripElem), "stripelem"); | ||||
| BLI_split_dirfile(file, strip->dir, se->name, sizeof(strip->dir), sizeof(se->name)); | BLI_split_dirfile(file, strip->dir, se->name, sizeof(strip->dir), sizeof(se->name)); | ||||
| SEQ_render_init_colorspace(seq); | SEQ_render_init_colorspace(seq); | ||||
| } | } | ||||
| else { | else { | ||||
| strip->stripdata = NULL; | strip->stripdata = NULL; | ||||
| } | } | ||||
| return seq; | return seq; | ||||
| } | } | ||||
| static Sequence *rna_Sequences_new_clip(ID *id, | static Sequence *rna_Sequences_new_clip(ID *id, | ||||
| Editing *ed, | ListBase *seqbase, | ||||
| Main *bmain, | Main *bmain, | ||||
| const char *name, | const char *name, | ||||
| MovieClip *clip, | MovieClip *clip, | ||||
| int channel, | int channel, | ||||
| int frame_start) | int frame_start) | ||||
| { | { | ||||
| Scene *scene = (Scene *)id; | Scene *scene = (Scene *)id; | ||||
| Sequence *seq; | Sequence *seq; | ||||
| seq = alloc_generic_sequence(ed, name, frame_start, channel, SEQ_TYPE_MOVIECLIP, clip->filepath); | seq = alloc_generic_sequence( | ||||
| seqbase, name, frame_start, channel, SEQ_TYPE_MOVIECLIP, clip->filepath); | |||||
| seq->clip = clip; | seq->clip = clip; | ||||
| seq->len = BKE_movieclip_get_duration(clip); | seq->len = BKE_movieclip_get_duration(clip); | ||||
| id_us_plus((ID *)clip); | id_us_plus((ID *)clip); | ||||
| BKE_sequence_calc_disp(scene, seq); | BKE_sequence_calc_disp(scene, seq); | ||||
| DEG_relations_tag_update(bmain); | DEG_relations_tag_update(bmain); | ||||
| DEG_id_tag_update(&scene->id, ID_RECALC_SEQUENCER_STRIPS); | DEG_id_tag_update(&scene->id, ID_RECALC_SEQUENCER_STRIPS); | ||||
| WM_main_add_notifier(NC_SCENE | ND_SEQUENCER, scene); | WM_main_add_notifier(NC_SCENE | ND_SEQUENCER, scene); | ||||
| return seq; | return seq; | ||||
| } | } | ||||
| static Sequence *rna_Sequences_new_mask( | static Sequence *rna_Sequences_editing_new_clip(ID *id, | ||||
| ID *id, Editing *ed, Main *bmain, const char *name, Mask *mask, int channel, int frame_start) | Editing *ed, | ||||
| Main *bmain, | |||||
| const char *name, | |||||
| MovieClip *clip, | |||||
| int channel, | |||||
| int frame_start) | |||||
| { | |||||
| return rna_Sequences_new_clip(id, &ed->seqbase, bmain, name, clip, channel, frame_start); | |||||
| } | |||||
| static Sequence *rna_Sequences_meta_new_clip(ID *id, | |||||
| Sequence *seq, | |||||
| Main *bmain, | |||||
| const char *name, | |||||
| MovieClip *clip, | |||||
| int channel, | |||||
| int frame_start) | |||||
| { | |||||
| return rna_Sequences_new_clip(id, &seq->seqbase, bmain, name, clip, channel, frame_start); | |||||
| } | |||||
| static Sequence *rna_Sequences_new_mask(ID *id, | |||||
| ListBase *seqbase, | |||||
| Main *bmain, | |||||
| const char *name, | |||||
| Mask *mask, | |||||
| int channel, | |||||
| int frame_start) | |||||
| { | { | ||||
| Scene *scene = (Scene *)id; | Scene *scene = (Scene *)id; | ||||
| Sequence *seq; | Sequence *seq; | ||||
| seq = alloc_generic_sequence(ed, name, frame_start, channel, SEQ_TYPE_MASK, mask->id.name); | seq = alloc_generic_sequence(seqbase, name, frame_start, channel, SEQ_TYPE_MASK, mask->id.name); | ||||
| seq->mask = mask; | seq->mask = mask; | ||||
| seq->len = BKE_mask_get_duration(mask); | seq->len = BKE_mask_get_duration(mask); | ||||
| id_us_plus((ID *)mask); | id_us_plus((ID *)mask); | ||||
| BKE_sequence_calc_disp(scene, seq); | BKE_sequence_calc_disp(scene, seq); | ||||
| BKE_sequence_invalidate_cache_composite(scene, seq); | BKE_sequence_invalidate_cache_composite(scene, seq); | ||||
| DEG_relations_tag_update(bmain); | DEG_relations_tag_update(bmain); | ||||
| DEG_id_tag_update(&scene->id, ID_RECALC_SEQUENCER_STRIPS); | DEG_id_tag_update(&scene->id, ID_RECALC_SEQUENCER_STRIPS); | ||||
| WM_main_add_notifier(NC_SCENE | ND_SEQUENCER, scene); | WM_main_add_notifier(NC_SCENE | ND_SEQUENCER, scene); | ||||
| return seq; | return seq; | ||||
| } | } | ||||
| static Sequence *rna_Sequences_editing_new_mask( | |||||
| ID *id, Editing *ed, Main *bmain, const char *name, Mask *mask, int channel, int frame_start) | |||||
| { | |||||
| return rna_Sequences_new_mask(id, &ed->seqbase, bmain, name, mask, channel, frame_start); | |||||
| } | |||||
| static Sequence *rna_Sequences_meta_new_mask( | |||||
| ID *id, Sequence *seq, Main *bmain, const char *name, Mask *mask, int channel, int frame_start) | |||||
| { | |||||
| return rna_Sequences_new_mask(id, &seq->seqbase, bmain, name, mask, channel, frame_start); | |||||
| } | |||||
| static Sequence *rna_Sequences_new_scene(ID *id, | static Sequence *rna_Sequences_new_scene(ID *id, | ||||
| Editing *ed, | ListBase *seqbase, | ||||
| Main *bmain, | Main *bmain, | ||||
| const char *name, | const char *name, | ||||
| Scene *sce_seq, | Scene *sce_seq, | ||||
| int channel, | int channel, | ||||
| int frame_start) | int frame_start) | ||||
| { | { | ||||
| Scene *scene = (Scene *)id; | Scene *scene = (Scene *)id; | ||||
| Sequence *seq; | Sequence *seq; | ||||
| seq = alloc_generic_sequence(ed, name, frame_start, channel, SEQ_TYPE_SCENE, NULL); | seq = alloc_generic_sequence(seqbase, name, frame_start, channel, SEQ_TYPE_SCENE, NULL); | ||||
| seq->scene = sce_seq; | seq->scene = sce_seq; | ||||
| seq->len = sce_seq->r.efra - sce_seq->r.sfra + 1; | seq->len = sce_seq->r.efra - sce_seq->r.sfra + 1; | ||||
| id_us_plus((ID *)sce_seq); | id_us_plus((ID *)sce_seq); | ||||
| BKE_sequence_calc_disp(scene, seq); | BKE_sequence_calc_disp(scene, seq); | ||||
| BKE_sequence_invalidate_cache_composite(scene, seq); | BKE_sequence_invalidate_cache_composite(scene, seq); | ||||
| DEG_relations_tag_update(bmain); | DEG_relations_tag_update(bmain); | ||||
| DEG_id_tag_update(&scene->id, ID_RECALC_SEQUENCER_STRIPS); | DEG_id_tag_update(&scene->id, ID_RECALC_SEQUENCER_STRIPS); | ||||
| WM_main_add_notifier(NC_SCENE | ND_SEQUENCER, scene); | WM_main_add_notifier(NC_SCENE | ND_SEQUENCER, scene); | ||||
| return seq; | return seq; | ||||
| } | } | ||||
| static Sequence *rna_Sequences_new_image(ID *id, | static Sequence *rna_Sequences_editing_new_scene(ID *id, | ||||
| Editing *ed, | Editing *ed, | ||||
| Main *bmain, | Main *bmain, | ||||
| const char *name, | |||||
| Scene *sce_seq, | |||||
| int channel, | |||||
| int frame_start) | |||||
| { | |||||
| return rna_Sequences_new_scene(id, &ed->seqbase, bmain, name, sce_seq, channel, frame_start); | |||||
| } | |||||
| static Sequence *rna_Sequences_meta_new_scene(ID *id, | |||||
| Sequence *seq, | |||||
| Main *bmain, | |||||
| const char *name, | |||||
| Scene *sce_seq, | |||||
| int channel, | |||||
| int frame_start) | |||||
| { | |||||
| return rna_Sequences_new_scene(id, &seq->seqbase, bmain, name, sce_seq, channel, frame_start); | |||||
| } | |||||
| static Sequence *rna_Sequences_new_image(ID *id, | |||||
| ListBase *seqbase, | |||||
| Main *bmain, | |||||
| ReportList *reports, | ReportList *reports, | ||||
| const char *name, | const char *name, | ||||
| const char *file, | const char *file, | ||||
| int channel, | int channel, | ||||
| int frame_start) | int frame_start) | ||||
| { | { | ||||
| Scene *scene = (Scene *)id; | Scene *scene = (Scene *)id; | ||||
| Sequence *seq; | Sequence *seq; | ||||
| seq = alloc_generic_sequence(ed, name, frame_start, channel, SEQ_TYPE_IMAGE, file); | seq = alloc_generic_sequence(seqbase, name, frame_start, channel, SEQ_TYPE_IMAGE, file); | ||||
| seq->len = 1; | seq->len = 1; | ||||
| if (seq->strip->stripdata->name[0] == '\0') { | if (seq->strip->stripdata->name[0] == '\0') { | ||||
| BKE_report(reports, RPT_ERROR, "Sequences.new_image: unable to open image file"); | BKE_report(reports, RPT_ERROR, "Sequences.new_image: unable to open image file"); | ||||
| BLI_remlink(&ed->seqbase, seq); | BLI_remlink(seqbase, seq); | ||||
| BKE_sequence_free(scene, seq, true); | BKE_sequence_free(scene, seq, true); | ||||
| return NULL; | return NULL; | ||||
| } | } | ||||
| BKE_sequence_calc_disp(scene, seq); | BKE_sequence_calc_disp(scene, seq); | ||||
| BKE_sequence_invalidate_cache_composite(scene, seq); | BKE_sequence_invalidate_cache_composite(scene, seq); | ||||
| DEG_relations_tag_update(bmain); | DEG_relations_tag_update(bmain); | ||||
| DEG_id_tag_update(&scene->id, ID_RECALC_SEQUENCER_STRIPS); | DEG_id_tag_update(&scene->id, ID_RECALC_SEQUENCER_STRIPS); | ||||
| WM_main_add_notifier(NC_SCENE | ND_SEQUENCER, scene); | WM_main_add_notifier(NC_SCENE | ND_SEQUENCER, scene); | ||||
| return seq; | return seq; | ||||
| } | } | ||||
| static Sequence *rna_Sequences_editing_new_image(ID *id, | |||||
| Editing *ed, | |||||
| Main *bmain, | |||||
| ReportList *reports, | |||||
| const char *name, | |||||
| const char *file, | |||||
| int channel, | |||||
| int frame_start) | |||||
| { | |||||
| return rna_Sequences_new_image( | |||||
| id, &ed->seqbase, bmain, reports, name, file, channel, frame_start); | |||||
| } | |||||
| static Sequence *rna_Sequences_meta_new_image(ID *id, | |||||
| Sequence *seq, | |||||
| Main *bmain, | |||||
| ReportList *reports, | |||||
| const char *name, | |||||
| const char *file, | |||||
| int channel, | |||||
| int frame_start) | |||||
| { | |||||
| return rna_Sequences_new_image( | |||||
| id, &seq->seqbase, bmain, reports, name, file, channel, frame_start); | |||||
| } | |||||
| static Sequence *rna_Sequences_new_movie( | static Sequence *rna_Sequences_new_movie( | ||||
| ID *id, Editing *ed, const char *name, const char *file, int channel, int frame_start) | ID *id, ListBase *seqbase, const char *name, const char *file, int channel, int frame_start) | ||||
| { | { | ||||
| Scene *scene = (Scene *)id; | Scene *scene = (Scene *)id; | ||||
| Sequence *seq; | Sequence *seq; | ||||
| StripAnim *sanim; | StripAnim *sanim; | ||||
| seq = alloc_generic_sequence(ed, name, frame_start, channel, SEQ_TYPE_MOVIE, file); | seq = alloc_generic_sequence(seqbase, name, frame_start, channel, SEQ_TYPE_MOVIE, file); | ||||
| struct anim *an = openanim(file, IB_rect, 0, NULL); | struct anim *an = openanim(file, IB_rect, 0, NULL); | ||||
| if (an == NULL) { | if (an == NULL) { | ||||
| /* Without anim, the strip gets duration 0, which makes it impossible to select in the UI. */ | /* Without anim, the strip gets duration 0, which makes it impossible to select in the UI. */ | ||||
| seq->len = 1; | seq->len = 1; | ||||
| } | } | ||||
| else { | else { | ||||
| sanim = MEM_mallocN(sizeof(StripAnim), "Strip Anim"); | sanim = MEM_mallocN(sizeof(StripAnim), "Strip Anim"); | ||||
| BLI_addtail(&seq->anims, sanim); | BLI_addtail(&seq->anims, sanim); | ||||
| sanim->anim = an; | sanim->anim = an; | ||||
| seq->anim_preseek = IMB_anim_get_preseek(an); | seq->anim_preseek = IMB_anim_get_preseek(an); | ||||
| seq->len = IMB_anim_get_duration(an, IMB_TC_RECORD_RUN); | seq->len = IMB_anim_get_duration(an, IMB_TC_RECORD_RUN); | ||||
| } | } | ||||
| BKE_sequence_calc_disp(scene, seq); | BKE_sequence_calc_disp(scene, seq); | ||||
| BKE_sequence_invalidate_cache_composite(scene, seq); | BKE_sequence_invalidate_cache_composite(scene, seq); | ||||
| DEG_id_tag_update(&scene->id, ID_RECALC_SEQUENCER_STRIPS); | DEG_id_tag_update(&scene->id, ID_RECALC_SEQUENCER_STRIPS); | ||||
| WM_main_add_notifier(NC_SCENE | ND_SEQUENCER, scene); | WM_main_add_notifier(NC_SCENE | ND_SEQUENCER, scene); | ||||
| return seq; | return seq; | ||||
| } | } | ||||
| static Sequence *rna_Sequences_editing_new_movie( | |||||
| ID *id, Editing *ed, const char *name, const char *file, int channel, int frame_start) | |||||
| { | |||||
| return rna_Sequences_new_movie(id, &ed->seqbase, name, file, channel, frame_start); | |||||
| } | |||||
| static Sequence *rna_Sequences_meta_new_movie( | |||||
| ID *id, Sequence *seq, const char *name, const char *file, int channel, int frame_start) | |||||
| { | |||||
| return rna_Sequences_new_movie(id, &seq->seqbase, name, file, channel, frame_start); | |||||
| } | |||||
| # ifdef WITH_AUDASPACE | # ifdef WITH_AUDASPACE | ||||
| static Sequence *rna_Sequences_new_sound(ID *id, | static Sequence *rna_Sequences_new_sound(ID *id, | ||||
| Editing *ed, | ListBase *seqbase, | ||||
| Main *bmain, | Main *bmain, | ||||
| ReportList *reports, | ReportList *reports, | ||||
| const char *name, | const char *name, | ||||
| const char *file, | const char *file, | ||||
| int channel, | int channel, | ||||
| int frame_start) | int frame_start) | ||||
| { | { | ||||
| Scene *scene = (Scene *)id; | Scene *scene = (Scene *)id; | ||||
| Sequence *seq; | Sequence *seq; | ||||
| bSound *sound = BKE_sound_new_file(bmain, file); | bSound *sound = BKE_sound_new_file(bmain, file); | ||||
| SoundInfo info; | SoundInfo info; | ||||
| if (!BKE_sound_info_get(bmain, sound, &info)) { | if (!BKE_sound_info_get(bmain, sound, &info)) { | ||||
| BKE_id_free(bmain, sound); | BKE_id_free(bmain, sound); | ||||
| BKE_report(reports, RPT_ERROR, "Sequences.new_sound: unable to open sound file"); | BKE_report(reports, RPT_ERROR, "Sequences.new_sound: unable to open sound file"); | ||||
| return NULL; | return NULL; | ||||
| } | } | ||||
| seq = alloc_generic_sequence( | seq = alloc_generic_sequence( | ||||
| ed, name, frame_start, channel, SEQ_TYPE_SOUND_RAM, sound->filepath); | seqbase, name, frame_start, channel, SEQ_TYPE_SOUND_RAM, sound->filepath); | ||||
| seq->sound = sound; | seq->sound = sound; | ||||
| seq->len = ceil((double)info.length * FPS); | seq->len = ceil((double)info.length * FPS); | ||||
| BKE_sequence_calc_disp(scene, seq); | BKE_sequence_calc_disp(scene, seq); | ||||
| DEG_relations_tag_update(bmain); | DEG_relations_tag_update(bmain); | ||||
| DEG_id_tag_update(&scene->id, ID_RECALC_SEQUENCER_STRIPS); | DEG_id_tag_update(&scene->id, ID_RECALC_SEQUENCER_STRIPS); | ||||
| WM_main_add_notifier(NC_SCENE | ND_SEQUENCER, scene); | WM_main_add_notifier(NC_SCENE | ND_SEQUENCER, scene); | ||||
| return seq; | return seq; | ||||
| } | } | ||||
| # else /* WITH_AUDASPACE */ | # else /* WITH_AUDASPACE */ | ||||
| static Sequence *rna_Sequences_new_sound(ID *UNUSED(id), | static Sequence *rna_Sequences_new_sound(ID *UNUSED(id), | ||||
| Editing *UNUSED(ed), | Editing *UNUSED(seqbase), | ||||
| Main *UNUSED(bmain), | Main *UNUSED(bmain), | ||||
| ReportList *reports, | ReportList *reports, | ||||
| const char *UNUSED(name), | const char *UNUSED(name), | ||||
| const char *UNUSED(file), | const char *UNUSED(file), | ||||
| int UNUSED(channel), | int UNUSED(channel), | ||||
| int UNUSED(frame_start)) | int UNUSED(frame_start)) | ||||
| { | { | ||||
| BKE_report(reports, RPT_ERROR, "Blender compiled without Audaspace support"); | BKE_report(reports, RPT_ERROR, "Blender compiled without Audaspace support"); | ||||
| return NULL; | return NULL; | ||||
| } | } | ||||
| # endif /* WITH_AUDASPACE */ | # endif /* WITH_AUDASPACE */ | ||||
| static Sequence *rna_Sequences_new_effect(ID *id, | static Sequence *rna_Sequences_editing_new_sound(ID *id, | ||||
| Editing *ed, | Editing *ed, | ||||
| Main *bmain, | |||||
| ReportList *reports, | |||||
| const char *name, | |||||
| const char *file, | |||||
| int channel, | |||||
| int frame_start) | |||||
| { | |||||
| return rna_Sequences_new_sound( | |||||
| id, &ed->seqbase, bmain, reports, name, file, channel, frame_start); | |||||
| } | |||||
| static Sequence *rna_Sequences_meta_new_sound(ID *id, | |||||
| Sequence *seq, | |||||
| Main *bmain, | |||||
| ReportList *reports, | |||||
| const char *name, | |||||
| const char *file, | |||||
| int channel, | |||||
| int frame_start) | |||||
| { | |||||
| return rna_Sequences_new_sound( | |||||
| id, &seq->seqbase, bmain, reports, name, file, channel, frame_start); | |||||
| } | |||||
| static Sequence *rna_Sequences_new_effect(ID *id, | |||||
| ListBase *seqbase, | |||||
| ReportList *reports, | ReportList *reports, | ||||
| const char *name, | const char *name, | ||||
| int type, | int type, | ||||
| int channel, | int channel, | ||||
| int frame_start, | int frame_start, | ||||
| int frame_end, | int frame_end, | ||||
| Sequence *seq1, | Sequence *seq1, | ||||
| Sequence *seq2, | Sequence *seq2, | ||||
| Show All 33 Lines | default: | ||||
| BKE_reportf( | BKE_reportf( | ||||
| reports, | reports, | ||||
| RPT_ERROR, | RPT_ERROR, | ||||
| "Sequences.new_effect: effect expects more than 3 inputs (%d, should never happen!)", | "Sequences.new_effect: effect expects more than 3 inputs (%d, should never happen!)", | ||||
| num_inputs); | num_inputs); | ||||
| return NULL; | return NULL; | ||||
| } | } | ||||
| seq = alloc_generic_sequence(ed, name, frame_start, channel, type, NULL); | seq = alloc_generic_sequence(seqbase, name, frame_start, channel, type, NULL); | ||||
| sh = BKE_sequence_get_effect(seq); | sh = BKE_sequence_get_effect(seq); | ||||
| seq->seq1 = seq1; | seq->seq1 = seq1; | ||||
| seq->seq2 = seq2; | seq->seq2 = seq2; | ||||
| seq->seq3 = seq3; | seq->seq3 = seq3; | ||||
| sh.init(seq); | sh.init(seq); | ||||
| Show All 10 Lines | static Sequence *rna_Sequences_new_effect(ID *id, | ||||
| BKE_sequence_invalidate_cache_composite(scene, seq); | BKE_sequence_invalidate_cache_composite(scene, seq); | ||||
| DEG_id_tag_update(&scene->id, ID_RECALC_SEQUENCER_STRIPS); | DEG_id_tag_update(&scene->id, ID_RECALC_SEQUENCER_STRIPS); | ||||
| WM_main_add_notifier(NC_SCENE | ND_SEQUENCER, scene); | WM_main_add_notifier(NC_SCENE | ND_SEQUENCER, scene); | ||||
| return seq; | return seq; | ||||
| } | } | ||||
| static Sequence *rna_Sequences_editing_new_effect(ID *id, | |||||
| Editing *ed, | |||||
| ReportList *reports, | |||||
| const char *name, | |||||
| int type, | |||||
| int channel, | |||||
| int frame_start, | |||||
| int frame_end, | |||||
| Sequence *seq1, | |||||
| Sequence *seq2, | |||||
| Sequence *seq3) | |||||
| { | |||||
| return rna_Sequences_new_effect( | |||||
| id, &ed->seqbase, reports, name, type, channel, frame_start, frame_end, seq1, seq2, seq3); | |||||
| } | |||||
| static Sequence *rna_Sequences_meta_new_effect(ID *id, | |||||
| Sequence *seq, | |||||
| ReportList *reports, | |||||
| const char *name, | |||||
| int type, | |||||
| int channel, | |||||
| int frame_start, | |||||
| int frame_end, | |||||
| Sequence *seq1, | |||||
| Sequence *seq2, | |||||
| Sequence *seq3) | |||||
| { | |||||
| return rna_Sequences_new_effect( | |||||
| id, &seq->seqbase, reports, name, type, channel, frame_start, frame_end, seq1, seq2, seq3); | |||||
| } | |||||
| static void rna_Sequences_remove( | static void rna_Sequences_remove( | ||||
| ID *id, Editing *ed, Main *bmain, ReportList *reports, PointerRNA *seq_ptr) | ID *id, ListBase *seqbase, Main *bmain, ReportList *reports, PointerRNA *seq_ptr) | ||||
| { | { | ||||
| Sequence *seq = seq_ptr->data; | Sequence *seq = seq_ptr->data; | ||||
| Scene *scene = (Scene *)id; | Scene *scene = (Scene *)id; | ||||
| if (BLI_findindex(&ed->seqbase, seq) == -1) { | if (BLI_findindex(seqbase, seq) == -1) { | ||||
| BKE_reportf( | BKE_reportf( | ||||
| reports, RPT_ERROR, "Sequence '%s' not in scene '%s'", seq->name + 2, scene->id.name + 2); | reports, RPT_ERROR, "Sequence '%s' not in scene '%s'", seq->name + 2, scene->id.name + 2); | ||||
| return; | return; | ||||
| } | } | ||||
| BKE_sequencer_flag_for_removal(scene, &ed->seqbase, seq); | BKE_sequencer_flag_for_removal(scene, seqbase, seq); | ||||
| BKE_sequencer_remove_flagged_sequences(scene, &ed->seqbase); | BKE_sequencer_remove_flagged_sequences(scene, seqbase); | ||||
| RNA_POINTER_INVALIDATE(seq_ptr); | RNA_POINTER_INVALIDATE(seq_ptr); | ||||
| DEG_relations_tag_update(bmain); | DEG_relations_tag_update(bmain); | ||||
| DEG_id_tag_update(&scene->id, ID_RECALC_SEQUENCER_STRIPS); | DEG_id_tag_update(&scene->id, ID_RECALC_SEQUENCER_STRIPS); | ||||
| WM_main_add_notifier(NC_SCENE | ND_SEQUENCER, scene); | WM_main_add_notifier(NC_SCENE | ND_SEQUENCER, scene); | ||||
| } | } | ||||
| static void rna_Sequences_editing_remove( | |||||
| ID *id, Editing *ed, Main *bmain, ReportList *reports, PointerRNA *seq_ptr) | |||||
| { | |||||
| rna_Sequences_remove(id, &ed->seqbase, bmain, reports, seq_ptr); | |||||
| } | |||||
| static void rna_Sequences_meta_remove( | |||||
| ID *id, Sequence *seq, Main *bmain, ReportList *reports, PointerRNA *seq_ptr) | |||||
| { | |||||
| rna_Sequences_remove(id, &seq->seqbase, bmain, reports, seq_ptr); | |||||
| } | |||||
| static StripElem *rna_SequenceElements_append(ID *id, Sequence *seq, const char *filename) | static StripElem *rna_SequenceElements_append(ID *id, Sequence *seq, const char *filename) | ||||
| { | { | ||||
| Scene *scene = (Scene *)id; | Scene *scene = (Scene *)id; | ||||
| StripElem *se; | StripElem *se; | ||||
| seq->strip->stripdata = se = MEM_reallocN(seq->strip->stripdata, | seq->strip->stripdata = se = MEM_reallocN(seq->strip->stripdata, | ||||
| sizeof(StripElem) * (seq->len + 1)); | sizeof(StripElem) * (seq->len + 1)); | ||||
| se += seq->len; | se += seq->len; | ||||
| ▲ Show 20 Lines • Show All 132 Lines • ▼ Show 20 Lines | void RNA_api_sequence_elements(BlenderRNA *brna, PropertyRNA *cprop) | ||||
| func = RNA_def_function(srna, "pop", "rna_SequenceElements_pop"); | func = RNA_def_function(srna, "pop", "rna_SequenceElements_pop"); | ||||
| RNA_def_function_flag(func, FUNC_USE_REPORTS | FUNC_USE_SELF_ID); | RNA_def_function_flag(func, FUNC_USE_REPORTS | FUNC_USE_SELF_ID); | ||||
| RNA_def_function_ui_description(func, "Pop an image off the collection"); | RNA_def_function_ui_description(func, "Pop an image off the collection"); | ||||
| parm = RNA_def_int( | parm = RNA_def_int( | ||||
| func, "index", -1, INT_MIN, INT_MAX, "", "Index of image to remove", INT_MIN, INT_MAX); | func, "index", -1, INT_MIN, INT_MAX, "", "Index of image to remove", INT_MIN, INT_MAX); | ||||
| RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | ||||
| } | } | ||||
| void RNA_api_sequences(BlenderRNA *brna, PropertyRNA *cprop) | void RNA_api_sequences(BlenderRNA *brna, PropertyRNA *cprop, const bool metastrip) | ||||
| { | { | ||||
| StructRNA *srna; | StructRNA *srna; | ||||
| PropertyRNA *parm; | PropertyRNA *parm; | ||||
| FunctionRNA *func; | FunctionRNA *func; | ||||
| static const EnumPropertyItem seq_effect_items[] = { | static const EnumPropertyItem seq_effect_items[] = { | ||||
| {SEQ_TYPE_CROSS, "CROSS", 0, "Cross", ""}, | {SEQ_TYPE_CROSS, "CROSS", 0, "Cross", ""}, | ||||
| {SEQ_TYPE_ADD, "ADD", 0, "Add", ""}, | {SEQ_TYPE_ADD, "ADD", 0, "Add", ""}, | ||||
| Show All 11 Lines | static const EnumPropertyItem seq_effect_items[] = { | ||||
| {SEQ_TYPE_MULTICAM, "MULTICAM", 0, "Multicam Selector", ""}, | {SEQ_TYPE_MULTICAM, "MULTICAM", 0, "Multicam Selector", ""}, | ||||
| {SEQ_TYPE_ADJUSTMENT, "ADJUSTMENT", 0, "Adjustment Layer", ""}, | {SEQ_TYPE_ADJUSTMENT, "ADJUSTMENT", 0, "Adjustment Layer", ""}, | ||||
| {SEQ_TYPE_GAUSSIAN_BLUR, "GAUSSIAN_BLUR", 0, "Gaussian Blur", ""}, | {SEQ_TYPE_GAUSSIAN_BLUR, "GAUSSIAN_BLUR", 0, "Gaussian Blur", ""}, | ||||
| {SEQ_TYPE_TEXT, "TEXT", 0, "Text", ""}, | {SEQ_TYPE_TEXT, "TEXT", 0, "Text", ""}, | ||||
| {SEQ_TYPE_COLORMIX, "COLORMIX", 0, "Color Mix", ""}, | {SEQ_TYPE_COLORMIX, "COLORMIX", 0, "Color Mix", ""}, | ||||
| {0, NULL, 0, NULL, NULL}, | {0, NULL, 0, NULL, NULL}, | ||||
| }; | }; | ||||
| RNA_def_property_srna(cprop, "Sequences"); | const char *new_clip_func_name = "rna_Sequences_editing_new_clip"; | ||||
| srna = RNA_def_struct(brna, "Sequences", NULL); | const char *new_mask_func_name = "rna_Sequences_editing_new_mask"; | ||||
| const char *new_scene_func_name = "rna_Sequences_editing_new_scene"; | |||||
| const char *new_image_func_name = "rna_Sequences_editing_new_image"; | |||||
| const char *new_movie_func_name = "rna_Sequences_editing_new_movie"; | |||||
| const char *new_sound_func_name = "rna_Sequences_editing_new_sound"; | |||||
| const char *new_effect_func_name = "rna_Sequences_editing_new_effect"; | |||||
| const char *remove_func_name = "rna_Sequences_editing_remove"; | |||||
| if (metastrip) { | |||||
| RNA_def_property_srna(cprop, "SequencesMeta"); | |||||
| srna = RNA_def_struct(brna, "SequencesMeta", NULL); | |||||
| RNA_def_struct_sdna(srna, "Sequence"); | |||||
| new_clip_func_name = "rna_Sequences_meta_new_clip"; | |||||
| new_mask_func_name = "rna_Sequences_meta_new_mask"; | |||||
| new_scene_func_name = "rna_Sequences_meta_new_scene"; | |||||
| new_image_func_name = "rna_Sequences_meta_new_image"; | |||||
| new_movie_func_name = "rna_Sequences_meta_new_movie"; | |||||
| new_sound_func_name = "rna_Sequences_meta_new_sound"; | |||||
| new_effect_func_name = "rna_Sequences_meta_new_effect"; | |||||
| remove_func_name = "rna_Sequences_meta_remove"; | |||||
| } | |||||
| else { | |||||
| RNA_def_property_srna(cprop, "SequencesEditing"); | |||||
| srna = RNA_def_struct(brna, "SequencesEditing", NULL); | |||||
| RNA_def_struct_sdna(srna, "Editing"); | RNA_def_struct_sdna(srna, "Editing"); | ||||
| } | |||||
| RNA_def_struct_ui_text(srna, "Sequences", "Collection of Sequences"); | RNA_def_struct_ui_text(srna, "Sequences", "Collection of Sequences"); | ||||
| func = RNA_def_function(srna, "new_clip", "rna_Sequences_new_clip"); | func = RNA_def_function(srna, "new_clip", new_clip_func_name); | ||||
| RNA_def_function_flag(func, FUNC_USE_SELF_ID | FUNC_USE_MAIN); | RNA_def_function_flag(func, FUNC_USE_SELF_ID | FUNC_USE_MAIN); | ||||
| RNA_def_function_ui_description(func, "Add a new movie clip sequence"); | RNA_def_function_ui_description(func, "Add a new movie clip sequence"); | ||||
| parm = RNA_def_string(func, "name", "Name", 0, "", "Name for the new sequence"); | parm = RNA_def_string(func, "name", "Name", 0, "", "Name for the new sequence"); | ||||
| RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | ||||
| parm = RNA_def_pointer(func, "clip", "MovieClip", "", "Movie clip to add"); | parm = RNA_def_pointer(func, "clip", "MovieClip", "", "Movie clip to add"); | ||||
| RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED); | RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED); | ||||
| parm = RNA_def_int( | parm = RNA_def_int( | ||||
| func, "channel", 0, 1, MAXSEQ, "Channel", "The channel for the new sequence", 1, MAXSEQ); | func, "channel", 0, 1, MAXSEQ, "Channel", "The channel for the new sequence", 1, MAXSEQ); | ||||
| RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | ||||
| parm = RNA_def_int(func, | parm = RNA_def_int(func, | ||||
| "frame_start", | "frame_start", | ||||
| 0, | 0, | ||||
| -MAXFRAME, | -MAXFRAME, | ||||
| MAXFRAME, | MAXFRAME, | ||||
| "", | "", | ||||
| "The start frame for the new sequence", | "The start frame for the new sequence", | ||||
| -MAXFRAME, | -MAXFRAME, | ||||
| MAXFRAME); | MAXFRAME); | ||||
| RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | ||||
| /* return type */ | /* return type */ | ||||
| parm = RNA_def_pointer(func, "sequence", "Sequence", "", "New Sequence"); | parm = RNA_def_pointer(func, "sequence", "Sequence", "", "New Sequence"); | ||||
| RNA_def_function_return(func, parm); | RNA_def_function_return(func, parm); | ||||
| func = RNA_def_function(srna, "new_mask", "rna_Sequences_new_mask"); | func = RNA_def_function(srna, "new_mask", new_mask_func_name); | ||||
| RNA_def_function_flag(func, FUNC_USE_SELF_ID | FUNC_USE_MAIN); | RNA_def_function_flag(func, FUNC_USE_SELF_ID | FUNC_USE_MAIN); | ||||
| RNA_def_function_ui_description(func, "Add a new mask sequence"); | RNA_def_function_ui_description(func, "Add a new mask sequence"); | ||||
| parm = RNA_def_string(func, "name", "Name", 0, "", "Name for the new sequence"); | parm = RNA_def_string(func, "name", "Name", 0, "", "Name for the new sequence"); | ||||
| RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | ||||
| parm = RNA_def_pointer(func, "mask", "Mask", "", "Mask to add"); | parm = RNA_def_pointer(func, "mask", "Mask", "", "Mask to add"); | ||||
| RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED); | RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED); | ||||
| parm = RNA_def_int( | parm = RNA_def_int( | ||||
| func, "channel", 0, 1, MAXSEQ, "Channel", "The channel for the new sequence", 1, MAXSEQ); | func, "channel", 0, 1, MAXSEQ, "Channel", "The channel for the new sequence", 1, MAXSEQ); | ||||
| RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | ||||
| parm = RNA_def_int(func, | parm = RNA_def_int(func, | ||||
| "frame_start", | "frame_start", | ||||
| 0, | 0, | ||||
| -MAXFRAME, | -MAXFRAME, | ||||
| MAXFRAME, | MAXFRAME, | ||||
| "", | "", | ||||
| "The start frame for the new sequence", | "The start frame for the new sequence", | ||||
| -MAXFRAME, | -MAXFRAME, | ||||
| MAXFRAME); | MAXFRAME); | ||||
| RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | ||||
| /* return type */ | /* return type */ | ||||
| parm = RNA_def_pointer(func, "sequence", "Sequence", "", "New Sequence"); | parm = RNA_def_pointer(func, "sequence", "Sequence", "", "New Sequence"); | ||||
| RNA_def_function_return(func, parm); | RNA_def_function_return(func, parm); | ||||
| func = RNA_def_function(srna, "new_scene", "rna_Sequences_new_scene"); | func = RNA_def_function(srna, "new_scene", new_scene_func_name); | ||||
| RNA_def_function_flag(func, FUNC_USE_SELF_ID | FUNC_USE_MAIN); | RNA_def_function_flag(func, FUNC_USE_SELF_ID | FUNC_USE_MAIN); | ||||
| RNA_def_function_ui_description(func, "Add a new scene sequence"); | RNA_def_function_ui_description(func, "Add a new scene sequence"); | ||||
| parm = RNA_def_string(func, "name", "Name", 0, "", "Name for the new sequence"); | parm = RNA_def_string(func, "name", "Name", 0, "", "Name for the new sequence"); | ||||
| RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | ||||
| parm = RNA_def_pointer(func, "scene", "Scene", "", "Scene to add"); | parm = RNA_def_pointer(func, "scene", "Scene", "", "Scene to add"); | ||||
| RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED); | RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED); | ||||
| parm = RNA_def_int( | parm = RNA_def_int( | ||||
| func, "channel", 0, 1, MAXSEQ, "Channel", "The channel for the new sequence", 1, MAXSEQ); | func, "channel", 0, 1, MAXSEQ, "Channel", "The channel for the new sequence", 1, MAXSEQ); | ||||
| RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | ||||
| parm = RNA_def_int(func, | parm = RNA_def_int(func, | ||||
| "frame_start", | "frame_start", | ||||
| 0, | 0, | ||||
| -MAXFRAME, | -MAXFRAME, | ||||
| MAXFRAME, | MAXFRAME, | ||||
| "", | "", | ||||
| "The start frame for the new sequence", | "The start frame for the new sequence", | ||||
| -MAXFRAME, | -MAXFRAME, | ||||
| MAXFRAME); | MAXFRAME); | ||||
| RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | ||||
| /* return type */ | /* return type */ | ||||
| parm = RNA_def_pointer(func, "sequence", "Sequence", "", "New Sequence"); | parm = RNA_def_pointer(func, "sequence", "Sequence", "", "New Sequence"); | ||||
| RNA_def_function_return(func, parm); | RNA_def_function_return(func, parm); | ||||
| func = RNA_def_function(srna, "new_image", "rna_Sequences_new_image"); | func = RNA_def_function(srna, "new_image", new_image_func_name); | ||||
| RNA_def_function_flag(func, FUNC_USE_REPORTS | FUNC_USE_SELF_ID | FUNC_USE_MAIN); | RNA_def_function_flag(func, FUNC_USE_REPORTS | FUNC_USE_SELF_ID | FUNC_USE_MAIN); | ||||
| RNA_def_function_ui_description(func, "Add a new image sequence"); | RNA_def_function_ui_description(func, "Add a new image sequence"); | ||||
| parm = RNA_def_string(func, "name", "Name", 0, "", "Name for the new sequence"); | parm = RNA_def_string(func, "name", "Name", 0, "", "Name for the new sequence"); | ||||
| RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | ||||
| parm = RNA_def_string(func, "filepath", "File", 0, "", "Filepath to image"); | parm = RNA_def_string(func, "filepath", "File", 0, "", "Filepath to image"); | ||||
| RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | ||||
| parm = RNA_def_int( | parm = RNA_def_int( | ||||
| func, "channel", 0, 1, MAXSEQ, "Channel", "The channel for the new sequence", 1, MAXSEQ); | func, "channel", 0, 1, MAXSEQ, "Channel", "The channel for the new sequence", 1, MAXSEQ); | ||||
| RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | ||||
| parm = RNA_def_int(func, | parm = RNA_def_int(func, | ||||
| "frame_start", | "frame_start", | ||||
| 0, | 0, | ||||
| -MAXFRAME, | -MAXFRAME, | ||||
| MAXFRAME, | MAXFRAME, | ||||
| "", | "", | ||||
| "The start frame for the new sequence", | "The start frame for the new sequence", | ||||
| -MAXFRAME, | -MAXFRAME, | ||||
| MAXFRAME); | MAXFRAME); | ||||
| RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | ||||
| /* return type */ | /* return type */ | ||||
| parm = RNA_def_pointer(func, "sequence", "Sequence", "", "New Sequence"); | parm = RNA_def_pointer(func, "sequence", "Sequence", "", "New Sequence"); | ||||
| RNA_def_function_return(func, parm); | RNA_def_function_return(func, parm); | ||||
| func = RNA_def_function(srna, "new_movie", "rna_Sequences_new_movie"); | func = RNA_def_function(srna, "new_movie", new_movie_func_name); | ||||
| RNA_def_function_flag(func, FUNC_USE_SELF_ID); | RNA_def_function_flag(func, FUNC_USE_SELF_ID); | ||||
| RNA_def_function_ui_description(func, "Add a new movie sequence"); | RNA_def_function_ui_description(func, "Add a new movie sequence"); | ||||
| parm = RNA_def_string(func, "name", "Name", 0, "", "Name for the new sequence"); | parm = RNA_def_string(func, "name", "Name", 0, "", "Name for the new sequence"); | ||||
| RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | ||||
| parm = RNA_def_string(func, "filepath", "File", 0, "", "Filepath to movie"); | parm = RNA_def_string(func, "filepath", "File", 0, "", "Filepath to movie"); | ||||
| RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | ||||
| parm = RNA_def_int( | parm = RNA_def_int( | ||||
| func, "channel", 0, 1, MAXSEQ, "Channel", "The channel for the new sequence", 1, MAXSEQ); | func, "channel", 0, 1, MAXSEQ, "Channel", "The channel for the new sequence", 1, MAXSEQ); | ||||
| RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | ||||
| parm = RNA_def_int(func, | parm = RNA_def_int(func, | ||||
| "frame_start", | "frame_start", | ||||
| 0, | 0, | ||||
| -MAXFRAME, | -MAXFRAME, | ||||
| MAXFRAME, | MAXFRAME, | ||||
| "", | "", | ||||
| "The start frame for the new sequence", | "The start frame for the new sequence", | ||||
| -MAXFRAME, | -MAXFRAME, | ||||
| MAXFRAME); | MAXFRAME); | ||||
| RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | ||||
| /* return type */ | /* return type */ | ||||
| parm = RNA_def_pointer(func, "sequence", "Sequence", "", "New Sequence"); | parm = RNA_def_pointer(func, "sequence", "Sequence", "", "New Sequence"); | ||||
| RNA_def_function_return(func, parm); | RNA_def_function_return(func, parm); | ||||
| func = RNA_def_function(srna, "new_sound", "rna_Sequences_new_sound"); | func = RNA_def_function(srna, "new_sound", new_sound_func_name); | ||||
| RNA_def_function_flag(func, FUNC_USE_REPORTS | FUNC_USE_SELF_ID | FUNC_USE_MAIN); | RNA_def_function_flag(func, FUNC_USE_REPORTS | FUNC_USE_SELF_ID | FUNC_USE_MAIN); | ||||
| RNA_def_function_ui_description(func, "Add a new sound sequence"); | RNA_def_function_ui_description(func, "Add a new sound sequence"); | ||||
| parm = RNA_def_string(func, "name", "Name", 0, "", "Name for the new sequence"); | parm = RNA_def_string(func, "name", "Name", 0, "", "Name for the new sequence"); | ||||
| RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | ||||
| parm = RNA_def_string(func, "filepath", "File", 0, "", "Filepath to movie"); | parm = RNA_def_string(func, "filepath", "File", 0, "", "Filepath to movie"); | ||||
| RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | ||||
| parm = RNA_def_int( | parm = RNA_def_int( | ||||
| func, "channel", 0, 1, MAXSEQ, "Channel", "The channel for the new sequence", 1, MAXSEQ); | func, "channel", 0, 1, MAXSEQ, "Channel", "The channel for the new sequence", 1, MAXSEQ); | ||||
| RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | ||||
| parm = RNA_def_int(func, | parm = RNA_def_int(func, | ||||
| "frame_start", | "frame_start", | ||||
| 0, | 0, | ||||
| -MAXFRAME, | -MAXFRAME, | ||||
| MAXFRAME, | MAXFRAME, | ||||
| "", | "", | ||||
| "The start frame for the new sequence", | "The start frame for the new sequence", | ||||
| -MAXFRAME, | -MAXFRAME, | ||||
| MAXFRAME); | MAXFRAME); | ||||
| RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | ||||
| /* return type */ | /* return type */ | ||||
| parm = RNA_def_pointer(func, "sequence", "Sequence", "", "New Sequence"); | parm = RNA_def_pointer(func, "sequence", "Sequence", "", "New Sequence"); | ||||
| RNA_def_function_return(func, parm); | RNA_def_function_return(func, parm); | ||||
| func = RNA_def_function(srna, "new_effect", "rna_Sequences_new_effect"); | func = RNA_def_function(srna, "new_effect", new_effect_func_name); | ||||
| RNA_def_function_flag(func, FUNC_USE_REPORTS | FUNC_USE_SELF_ID); | RNA_def_function_flag(func, FUNC_USE_REPORTS | FUNC_USE_SELF_ID); | ||||
| RNA_def_function_ui_description(func, "Add a new effect sequence"); | RNA_def_function_ui_description(func, "Add a new effect sequence"); | ||||
| parm = RNA_def_string(func, "name", "Name", 0, "", "Name for the new sequence"); | parm = RNA_def_string(func, "name", "Name", 0, "", "Name for the new sequence"); | ||||
| RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | ||||
| parm = RNA_def_enum(func, "type", seq_effect_items, 0, "Type", "type for the new sequence"); | parm = RNA_def_enum(func, "type", seq_effect_items, 0, "Type", "type for the new sequence"); | ||||
| RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); | ||||
| parm = RNA_def_int( | parm = RNA_def_int( | ||||
| func, "channel", 0, 1, MAXSEQ, "Channel", "The channel for the new sequence", 1, MAXSEQ); | func, "channel", 0, 1, MAXSEQ, "Channel", "The channel for the new sequence", 1, MAXSEQ); | ||||
| Show All 20 Lines | RNA_def_int(func, | ||||
| INT_MAX); | INT_MAX); | ||||
| RNA_def_pointer(func, "seq1", "Sequence", "", "Sequence 1 for effect"); | RNA_def_pointer(func, "seq1", "Sequence", "", "Sequence 1 for effect"); | ||||
| RNA_def_pointer(func, "seq2", "Sequence", "", "Sequence 2 for effect"); | RNA_def_pointer(func, "seq2", "Sequence", "", "Sequence 2 for effect"); | ||||
| RNA_def_pointer(func, "seq3", "Sequence", "", "Sequence 3 for effect"); | RNA_def_pointer(func, "seq3", "Sequence", "", "Sequence 3 for effect"); | ||||
| /* return type */ | /* return type */ | ||||
| parm = RNA_def_pointer(func, "sequence", "Sequence", "", "New Sequence"); | parm = RNA_def_pointer(func, "sequence", "Sequence", "", "New Sequence"); | ||||
| RNA_def_function_return(func, parm); | RNA_def_function_return(func, parm); | ||||
| func = RNA_def_function(srna, "remove", "rna_Sequences_remove"); | func = RNA_def_function(srna, "remove", remove_func_name); | ||||
| RNA_def_function_flag(func, FUNC_USE_SELF_ID | FUNC_USE_REPORTS | FUNC_USE_MAIN); | RNA_def_function_flag(func, FUNC_USE_SELF_ID | FUNC_USE_REPORTS | FUNC_USE_MAIN); | ||||
| RNA_def_function_ui_description(func, "Remove a Sequence"); | RNA_def_function_ui_description(func, "Remove a Sequence"); | ||||
| parm = RNA_def_pointer(func, "sequence", "Sequence", "", "Sequence to remove"); | parm = RNA_def_pointer(func, "sequence", "Sequence", "", "Sequence to remove"); | ||||
| RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR); | RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR); | ||||
| RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0); | RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0); | ||||
| } | } | ||||
| #endif | #endif | ||||