diff options
Diffstat (limited to 'source/blender/makesrna/intern/rna_sequence.c')
-rw-r--r-- | source/blender/makesrna/intern/rna_sequence.c | 258 |
1 files changed, 198 insertions, 60 deletions
diff --git a/source/blender/makesrna/intern/rna_sequence.c b/source/blender/makesrna/intern/rna_sequence.c index 357e3bf8bc8..8ca023dc57c 100644 --- a/source/blender/makesrna/intern/rna_sequence.c +++ b/source/blender/makesrna/intern/rna_sequence.c @@ -36,6 +36,10 @@ #include "BKE_sequence.h" +#include "MEM_guardedalloc.h" + +#include "WM_types.h" + #ifdef RNA_RUNTIME static int rna_SequenceEditor_name_length(PointerRNA *ptr) @@ -48,6 +52,115 @@ static void rna_SequenceEditor_name_get(PointerRNA *ptr, char *str) strcpy(str, "Sequence Editor"); } +static void rna_SequenceEditor_start_frame_set(PointerRNA *ptr, int value) +{ + Sequence *seq= (Sequence*)ptr->data; + Scene *sce= (Scene*)ptr->id.data; + Editing *ed= seq_give_editing(sce, FALSE); + + seq->start= value; + calc_sequence_disp(seq); + + if( seq_test_overlap(ed->seqbasep, seq) ) { + shuffle_seq(ed->seqbasep, seq); + } + sort_seq(sce); +} + +static void rna_SequenceEditor_length_set(PointerRNA *ptr, int value) +{ + Sequence *seq= (Sequence*)ptr->data; + Scene *sce= (Scene*)ptr->id.data; + Editing *ed= seq_give_editing(sce, FALSE); + + seq_tx_set_final_right(seq, seq->start+value); + calc_sequence_disp(seq); + + if( seq_test_overlap(ed->seqbasep, seq) ) { + shuffle_seq(ed->seqbasep, seq); + } + sort_seq(sce); +} + +static int rna_SequenceEditor_length_get(PointerRNA *ptr) +{ + Sequence *seq= (Sequence*)ptr->data; + return seq_tx_get_final_right(seq, 1)-seq_tx_get_final_left(seq, 1); +} + +static void rna_SequenceEditor_channel_set(PointerRNA *ptr, int value) +{ + Sequence *seq= (Sequence*)ptr->data; + Scene *sce= (Scene*)ptr->id.data; + Editing *ed= seq_give_editing(sce, FALSE); + + seq->machine= value; + + if( seq_test_overlap(ed->seqbasep, seq) ) { + shuffle_seq(ed->seqbasep, seq); + } + sort_seq(sce); +} + +/* properties that need to allocate structs */ +static void rna_SequenceEditor_use_color_balance_set(PointerRNA *ptr, int value) +{ + Sequence *seq= (Sequence*)ptr->data; + int c; + + if(value) { + seq->flag |= SEQ_USE_COLOR_BALANCE; + if(seq->strip->color_balance == NULL) { + seq->strip->color_balance = MEM_callocN(sizeof(struct StripColorBalance), "StripColorBalance"); + for (c=0; c<3; c++) { + seq->strip->color_balance->lift[c] = 1.0f; + seq->strip->color_balance->gamma[c] = 1.0f; + seq->strip->color_balance->gain[c] = 1.0f; + } + } + } else { + seq->flag ^= SEQ_USE_COLOR_BALANCE; + } +} + +static void rna_SequenceEditor_use_proxy_set(PointerRNA *ptr, int value) +{ + Sequence *seq= (Sequence*)ptr->data; + if(value) { + seq->flag |= SEQ_USE_PROXY; + if(seq->strip->proxy == NULL) { + seq->strip->proxy = MEM_callocN(sizeof(struct StripProxy), "StripProxy"); + } + } else { + seq->flag ^= SEQ_USE_PROXY; + } +} + +static void rna_SequenceEditor_use_translation_set(PointerRNA *ptr, int value) +{ + Sequence *seq= (Sequence*)ptr->data; + if(value) { + seq->flag |= SEQ_USE_TRANSFORM; + if(seq->strip->transform == NULL) { + seq->strip->transform = MEM_callocN(sizeof(struct StripTransform), "StripTransform"); + } + } else { + seq->flag ^= SEQ_USE_TRANSFORM; + } +} + +static void rna_SequenceEditor_use_crop_set(PointerRNA *ptr, int value) +{ + Sequence *seq= (Sequence*)ptr->data; + if(value) { + seq->flag |= SEQ_USE_CROP; + if(seq->strip->crop == NULL) { + seq->strip->crop = MEM_callocN(sizeof(struct StripCrop), "StripCrop"); + } + } else { + seq->flag ^= SEQ_USE_CROP; + } +} /* name functions that ignore the first two characters */ static void rna_Sequence_name_get(PointerRNA *ptr, char *value) { @@ -245,41 +358,41 @@ static void rna_def_sequence(BlenderRNA *brna) FunctionRNA *func; static const EnumPropertyItem seq_type_items[]= { - {SEQ_IMAGE, "IMAGE", "Image", ""}, - {SEQ_META, "META", "Meta", ""}, - {SEQ_SCENE, "SCENE", "Scene", ""}, - {SEQ_MOVIE, "MOVIE", "Movie", ""}, - {SEQ_RAM_SOUND, "RAM_SOUND", "Ram Sound", ""}, - {SEQ_HD_SOUND, "HD_SOUND", "HD Sound", ""}, - {SEQ_MOVIE_AND_HD_SOUND, "MOVIE_AND_HD_SOUND", "Movie and HD Sound", ""}, - {SEQ_EFFECT, "REPLACE", "Replace", ""}, - {SEQ_CROSS, "CROSS", "Cross", ""}, - {SEQ_ADD, "ADD", "Add", ""}, - {SEQ_SUB, "SUBTRACT", "Subtract", ""}, - {SEQ_ALPHAOVER, "ALPHA_OVER", "Alpha Over", ""}, - {SEQ_ALPHAUNDER, "ALPHA_UNDER", "Alpha Under", ""}, - {SEQ_GAMCROSS, "GAMMA_CROSS", "Gamma Cross", ""}, - {SEQ_MUL, "MULTIPLY", "Multiply", ""}, - {SEQ_OVERDROP, "OVER_DROP", "Over Drop", ""}, - {SEQ_PLUGIN, "PLUGIN", "plugin", ""}, - {SEQ_WIPE, "WIPE", "Wipe", ""}, - {SEQ_GLOW, "GLOW", "Glow", ""}, - {SEQ_TRANSFORM, "TRANSFORM", "Transform", ""}, - {SEQ_COLOR, "COLOR", "Color", ""}, - {SEQ_SPEED, "SPEED", "Speed", ""}, - {0, NULL, NULL, NULL}}; + {SEQ_IMAGE, "IMAGE", 0, "Image", ""}, + {SEQ_META, "META", 0, "Meta", ""}, + {SEQ_SCENE, "SCENE", 0, "Scene", ""}, + {SEQ_MOVIE, "MOVIE", 0, "Movie", ""}, + {SEQ_RAM_SOUND, "RAM_SOUND", 0, "Ram Sound", ""}, + {SEQ_HD_SOUND, "HD_SOUND", 0, "HD Sound", ""}, + {SEQ_MOVIE_AND_HD_SOUND, "MOVIE_AND_HD_SOUND", 0, "Movie and HD Sound", ""}, + {SEQ_EFFECT, "REPLACE", 0, "Replace", ""}, + {SEQ_CROSS, "CROSS", 0, "Cross", ""}, + {SEQ_ADD, "ADD", 0, "Add", ""}, + {SEQ_SUB, "SUBTRACT", 0, "Subtract", ""}, + {SEQ_ALPHAOVER, "ALPHA_OVER", 0, "Alpha Over", ""}, + {SEQ_ALPHAUNDER, "ALPHA_UNDER", 0, "Alpha Under", ""}, + {SEQ_GAMCROSS, "GAMMA_CROSS", 0, "Gamma Cross", ""}, + {SEQ_MUL, "MULTIPLY", 0, "Multiply", ""}, + {SEQ_OVERDROP, "OVER_DROP", 0, "Over Drop", ""}, + {SEQ_PLUGIN, "PLUGIN", 0, "plugin", ""}, + {SEQ_WIPE, "WIPE", 0, "Wipe", ""}, + {SEQ_GLOW, "GLOW", 0, "Glow", ""}, + {SEQ_TRANSFORM, "TRANSFORM", 0, "Transform", ""}, + {SEQ_COLOR, "COLOR", 0, "Color", ""}, + {SEQ_SPEED, "SPEED", 0, "Speed", ""}, + {0, NULL, 0, NULL, NULL}}; static const EnumPropertyItem blend_mode_items[]= { - {SEQ_BLEND_REPLACE, "REPLACE", "Replace", ""}, - {SEQ_CROSS, "CROSS", "Cross", ""}, - {SEQ_ADD, "ADD", "Add", ""}, - {SEQ_SUB, "SUBTRACT", "Subtract", ""}, - {SEQ_ALPHAOVER, "ALPHA_OVER", "Alpha Over", ""}, - {SEQ_ALPHAUNDER, "ALPHA_UNDER", "Alpha Under", ""}, - {SEQ_GAMCROSS, "GAMMA_CROSS", "Gamma Cross", ""}, - {SEQ_MUL, "MULTIPLY", "Multiply", ""}, - {SEQ_OVERDROP, "OVER_DROP", "Over Drop", ""}, - {0, NULL, NULL, NULL}}; + {SEQ_BLEND_REPLACE, "REPLACE", 0, "Replace", ""}, + {SEQ_CROSS, "CROSS", 0, "Cross", ""}, + {SEQ_ADD, "ADD", 0, "Add", ""}, + {SEQ_SUB, "SUBTRACT", 0, "Subtract", ""}, + {SEQ_ALPHAOVER, "ALPHA_OVER", 0, "Alpha Over", ""}, + {SEQ_ALPHAUNDER, "ALPHA_UNDER", 0, "Alpha Under", ""}, + {SEQ_GAMCROSS, "GAMMA_CROSS", 0, "Gamma Cross", ""}, + {SEQ_MUL, "MULTIPLY", 0, "Multiply", ""}, + {SEQ_OVERDROP, "OVER_DROP", 0, "Over Drop", ""}, + {0, NULL, 0, NULL, NULL}}; srna = RNA_def_struct(brna, "Sequence", NULL); RNA_def_struct_ui_text(srna, "Sequence", "Sequence strip in the sequence editor."); @@ -316,10 +429,12 @@ static void rna_def_sequence(BlenderRNA *brna) prop= RNA_def_property(srna, "mute", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_MUTE); RNA_def_property_ui_text(prop, "Mute", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); prop= RNA_def_property(srna, "frame_locked", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_IPO_FRAME_LOCKED); RNA_def_property_ui_text(prop, "Frame Locked", "Lock the animation curve to the global frame counter."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); prop= RNA_def_property(srna, "lock", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_LOCK); @@ -329,52 +444,61 @@ static void rna_def_sequence(BlenderRNA *brna) prop= RNA_def_property(srna, "length", PROP_INT, PROP_UNSIGNED); RNA_def_property_int_sdna(prop, NULL, "len"); - RNA_def_property_clear_flag(prop, PROP_EDITABLE); // computed from other values + RNA_def_property_range(prop, 1, MAXFRAME); RNA_def_property_ui_text(prop, "Length", "The length of the contents of this strip before the handles are applied"); - + RNA_def_property_int_funcs(prop, "rna_SequenceEditor_length_get", "rna_SequenceEditor_length_set",NULL); + prop= RNA_def_property(srna, "start_frame", PROP_INT, PROP_UNSIGNED); RNA_def_property_int_sdna(prop, NULL, "start"); - RNA_def_property_clear_flag(prop, PROP_EDITABLE); // overlap tests RNA_def_property_ui_text(prop, "Start Frame", ""); + RNA_def_property_int_funcs(prop, NULL, "rna_SequenceEditor_start_frame_set",NULL); // overlap tests and calc_seq_disp + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); prop= RNA_def_property(srna, "start_offset", PROP_INT, PROP_UNSIGNED); RNA_def_property_int_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_update(prop, NC_SCENE|ND_SEQUENCER, NULL); prop= RNA_def_property(srna, "end_offset", PROP_INT, PROP_UNSIGNED); RNA_def_property_int_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_update(prop, NC_SCENE|ND_SEQUENCER, NULL); prop= RNA_def_property(srna, "start_still", PROP_INT, PROP_UNSIGNED); RNA_def_property_int_sdna(prop, NULL, "startstill"); RNA_def_property_clear_flag(prop, PROP_EDITABLE); // overlap tests RNA_def_property_range(prop, 0, MAXFRAME); RNA_def_property_ui_text(prop, "Start Still", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); prop= RNA_def_property(srna, "end_still", PROP_INT, PROP_UNSIGNED); RNA_def_property_int_sdna(prop, NULL, "endstill"); RNA_def_property_clear_flag(prop, PROP_EDITABLE); // overlap tests RNA_def_property_range(prop, 0, MAXFRAME); RNA_def_property_ui_text(prop, "End Still", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); prop= RNA_def_property(srna, "channel", PROP_INT, PROP_UNSIGNED); RNA_def_property_int_sdna(prop, NULL, "machine"); - RNA_def_property_clear_flag(prop, PROP_EDITABLE); // overlap test RNA_def_property_ui_text(prop, "Channel", "Y position of the sequence strip."); + RNA_def_property_int_funcs(prop, NULL, "rna_SequenceEditor_channel_set",NULL); // overlap test + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); /* blending */ prop= RNA_def_property(srna, "blend_mode", PROP_ENUM, PROP_NONE); RNA_def_property_enum_items(prop, blend_mode_items); RNA_def_property_ui_text(prop, "Blend Mode", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); prop= RNA_def_property(srna, "blend_opacity", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.0f, 100.0f); RNA_def_property_ui_text(prop, "Blend Opacity", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); - /* funcsions */ + /* functions */ func= RNA_def_function(srna, "getStripElem", "give_stripelem"); RNA_def_function_ui_description(func, "Return the strip element from a given frame or None."); prop= RNA_def_int(func, "frame", 0, INT_MIN, INT_MAX, "Frame", "The frame to get the strip element from", INT_MIN, INT_MAX); @@ -407,7 +531,7 @@ void rna_def_editor(BlenderRNA *brna) RNA_def_property_collection_sdna(prop, NULL, "metastack", NULL); RNA_def_property_struct_type(prop, "Sequence"); RNA_def_property_ui_text(prop, "Meta Stack", "Meta strip stack, last is currently edited meta strip."); - RNA_def_property_collection_funcs(prop, 0, 0, 0, "rna_SequenceEdtior_meta_stack_get", 0, 0, 0); + RNA_def_property_collection_funcs(prop, 0, 0, 0, "rna_SequenceEdtior_meta_stack_get", 0, 0, 0, 0, 0); prop= RNA_def_property(srna, "active_strip", PROP_POINTER, PROP_NONE); RNA_def_property_pointer_sdna(prop, NULL, "act_seq"); @@ -425,58 +549,71 @@ static void rna_def_filter_video(StructRNA *srna) prop= RNA_def_property(srna, "premultiply", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_MAKE_PREMUL); RNA_def_property_ui_text(prop, "Premultiply", "Convert RGB from key alpha to premultiplied alpha."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); prop= RNA_def_property(srna, "flip_x", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_FLIPX); RNA_def_property_ui_text(prop, "Flip X", "Flip on the X axis."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); prop= RNA_def_property(srna, "flip_y", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_FLIPY); RNA_def_property_ui_text(prop, "Flip Y", "Flip on the Y axis."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); prop= RNA_def_property(srna, "convert_float", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_MAKE_FLOAT); RNA_def_property_ui_text(prop, "Convert Float", "Convert input to float data."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); prop= RNA_def_property(srna, "reverse_frames", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_REVERSE_FRAMES); RNA_def_property_ui_text(prop, "Flip Time", "Reverse frame order."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); prop= RNA_def_property(srna, "multiply_colors", PROP_FLOAT, PROP_UNSIGNED); RNA_def_property_float_sdna(prop, NULL, "mul"); RNA_def_property_range(prop, 0.0f, 20.0f); RNA_def_property_ui_text(prop, "Multiply Colors", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); prop= RNA_def_property(srna, "strobe", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 1.0f, 30.0f); RNA_def_property_ui_text(prop, "Strobe", "Only display every nth frame."); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); prop= RNA_def_property(srna, "use_color_balance", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_USE_COLOR_BALANCE); - RNA_def_property_clear_flag(prop, PROP_EDITABLE); // allocate color balance RNA_def_property_ui_text(prop, "Use Color Balance", "(3-Way color correction) on input."); + RNA_def_property_boolean_funcs(prop, NULL, "rna_SequenceEditor_use_color_balance_set"); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); prop= RNA_def_property(srna, "color_balance", PROP_POINTER, PROP_NONE); RNA_def_property_pointer_sdna(prop, NULL, "strip->color_balance"); RNA_def_property_ui_text(prop, "Color Balance", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); prop= RNA_def_property(srna, "use_translation", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_USE_TRANSFORM); - RNA_def_property_clear_flag(prop, PROP_EDITABLE); // allocate transform RNA_def_property_ui_text(prop, "Use Translation", "Translate image before processing."); + RNA_def_property_boolean_funcs(prop, NULL, "rna_SequenceEditor_use_translation_set"); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); prop= RNA_def_property(srna, "transform", PROP_POINTER, PROP_NONE); RNA_def_property_pointer_sdna(prop, NULL, "strip->transform"); RNA_def_property_ui_text(prop, "Transform", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); prop= RNA_def_property(srna, "use_crop", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_USE_CROP); - RNA_def_property_clear_flag(prop, PROP_EDITABLE); // allocate crop RNA_def_property_ui_text(prop, "Use Crop", "Crop image before processing."); + RNA_def_property_boolean_funcs(prop, NULL, "rna_SequenceEditor_use_crop_set"); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); prop= RNA_def_property(srna, "crop", PROP_POINTER, PROP_NONE); RNA_def_property_pointer_sdna(prop, NULL, "strip->crop"); RNA_def_property_ui_text(prop, "Crop", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); } static void rna_def_filter_sound(StructRNA *srna) @@ -500,8 +637,8 @@ static void rna_def_proxy(StructRNA *srna) prop= RNA_def_property(srna, "use_proxy", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_USE_PROXY); - RNA_def_property_clear_flag(prop, PROP_EDITABLE); // allocate proxy RNA_def_property_ui_text(prop, "Use Proxy", "Use a preview proxy for this strip."); + RNA_def_property_boolean_funcs(prop, NULL, "rna_SequenceEditor_use_proxy_set"); prop= RNA_def_property(srna, "proxy", PROP_POINTER, PROP_NONE); RNA_def_property_pointer_sdna(prop, NULL, "strip->proxy"); @@ -673,19 +810,19 @@ static void rna_def_wipe(BlenderRNA *brna) PropertyRNA *prop; static const EnumPropertyItem wipe_type_items[]= { - {0, "SINGLE", "Single", ""}, - {1, "DOUBLE", "Double", ""}, - /* not used yet {2, "BOX", "Box", ""}, */ - /* not used yet {3, "CROSS", "Cross", ""}, */ - {4, "IRIS", "Iris", ""}, - {5, "CLOCK", "Clock", ""}, - {0, NULL, NULL, NULL} + {0, "SINGLE", 0, "Single", ""}, + {1, "DOUBLE", 0, "Double", ""}, + /* not used yet {2, "BOX", 0, "Box", ""}, */ + /* not used yet {3, "CROSS", 0, "Cross", ""}, */ + {4, "IRIS", 0, "Iris", ""}, + {5, "CLOCK", 0, "Clock", ""}, + {0, NULL, 0, NULL, NULL} }; static const EnumPropertyItem wipe_direction_items[]= { - {0, "OUT", "Out", ""}, - {1, "IN", "In", ""}, - {0, NULL, NULL, NULL} + {0, "OUT", 0, "Out", ""}, + {1, "IN", 0, "In", ""}, + {0, NULL, 0, NULL, NULL} }; srna = RNA_def_struct(brna, "WipeSequence", "EffectSequence"); @@ -758,16 +895,16 @@ static void rna_def_transform(BlenderRNA *brna) PropertyRNA *prop; static const EnumPropertyItem interpolation_items[]= { - {0, "NONE", "None", "No interpolation."}, - {1, "BILINEAR", "Bilinear", "Bilinear interpolation."}, - {2, "BICUBIC", "Bicubic", "Bicubic interpolation."}, - {0, NULL, NULL, NULL} + {0, "NONE", 0, "None", "No interpolation."}, + {1, "BILINEAR", 0, "Bilinear", "Bilinear interpolation."}, + {2, "BICUBIC", 0, "Bicubic", "Bicubic interpolation."}, + {0, NULL, 0, NULL, NULL} }; static const EnumPropertyItem translation_unit_items[]= { - {0, "PIXELS", "Pixels", ""}, - {1, "PERCENT", "Percent", ""}, - {0, NULL, NULL, NULL} + {0, "PIXELS", 0, "Pixels", ""}, + {1, "PERCENT", 0, "Percent", ""}, + {0, NULL, 0, NULL, NULL} }; srna = RNA_def_struct(brna, "TransformSequence", "EffectSequence"); @@ -846,6 +983,7 @@ static void rna_def_solid_color(BlenderRNA *brna) prop= RNA_def_property(srna, "color", PROP_FLOAT, PROP_COLOR); RNA_def_property_float_sdna(prop, NULL, "col"); RNA_def_property_ui_text(prop, "Color", ""); + RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL); } static void rna_def_speed_control(BlenderRNA *brna) |