diff options
author | Peter Schlaile <peter@schlaile.de> | 2007-12-26 19:07:16 +0300 |
---|---|---|
committer | Peter Schlaile <peter@schlaile.de> | 2007-12-26 19:07:16 +0300 |
commit | 237ba0291a31ce50f2a888cad03169022a39ad87 (patch) | |
tree | db73f77460aa248321f8eb9086545ac3d9d34fd4 /source | |
parent | debf29022a1a720cc1ea324ca3d345f8663a84fc (diff) |
== Sequencer ==
Moved N-keys dialog into panel (sub panel of "Scene")
_much_ better :)
Since UI-code isn't directly my main field of coding, please check
thoroughly...
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/include/BIF_butspace.h | 3 | ||||
-rw-r--r-- | source/blender/include/BIF_editseq.h | 2 | ||||
-rw-r--r-- | source/blender/include/butspace.h | 11 | ||||
-rw-r--r-- | source/blender/src/butspace.c | 5 | ||||
-rw-r--r-- | source/blender/src/buttons_scene.c | 505 | ||||
-rw-r--r-- | source/blender/src/drawseq.c | 529 | ||||
-rw-r--r-- | source/blender/src/editseq.c | 1 | ||||
-rw-r--r-- | source/blender/src/header_buttonswin.c | 9 | ||||
-rw-r--r-- | source/blender/src/header_seq.c | 5 | ||||
-rw-r--r-- | source/blender/src/space.c | 18 |
10 files changed, 540 insertions, 548 deletions
diff --git a/source/blender/include/BIF_butspace.h b/source/blender/include/BIF_butspace.h index df60a0c9a08..9d5e1961178 100644 --- a/source/blender/include/BIF_butspace.h +++ b/source/blender/include/BIF_butspace.h @@ -86,9 +86,10 @@ extern void validate_editbonebutton_cb(void *bonev, void *namev); #define TAB_OBJECT_PARTICLE 2 #define TAB_SCENE_RENDER 0 -#define TAB_SCENE_WORLD 1 +#define TAB_SCENE_WORLD 1 #define TAB_SCENE_ANIM 2 #define TAB_SCENE_SOUND 3 +#define TAB_SCENE_SEQUENCER 4 /* buts->scaflag */ diff --git a/source/blender/include/BIF_editseq.h b/source/blender/include/BIF_editseq.h index 13cb059d885..92046f74009 100644 --- a/source/blender/include/BIF_editseq.h +++ b/source/blender/include/BIF_editseq.h @@ -128,8 +128,6 @@ start and end are from the start and fixed length of the sequence. (seq)->endstill = 0; \ } */ -/* drawseq.c */ -void do_seqbuttons(short); #endif diff --git a/source/blender/include/butspace.h b/source/blender/include/butspace.h index 7b6213be38f..7eabc367782 100644 --- a/source/blender/include/butspace.h +++ b/source/blender/include/butspace.h @@ -64,6 +64,8 @@ extern void do_render_panels(unsigned short event); extern void anim_panels(void); extern void sound_panels(void); extern void do_soundbuts(unsigned short event); +extern void sequencer_panels(void); +extern void do_sequencer_panels(unsigned short event); /* object */ extern void object_panels(void); @@ -298,7 +300,8 @@ void curvemap_buttons(struct uiBlock *block, struct CurveMapping *cumap, char la #define B_AO_FALLOFF 1506 /* *********************** */ -#define B_RENDERBUTS 1700 +#define B_RENDERBUTS 1690 +#define B_SEQUENCERBUTS 1699 #define B_FS_PIC 1601 #define B_FS_BACKBUF 1602 @@ -347,6 +350,12 @@ void curvemap_buttons(struct uiBlock *block, struct CurveMapping *cumap, char la #define B_ADD_RENDERLAYER 1645 #define B_SET_PASS 1646 +#define B_SEQ_BUT_PLUGIN 1691 +#define B_SEQ_BUT_RELOAD 1692 +#define B_SEQ_BUT_EFFECT 1693 +#define B_SEQ_BUT_RELOAD_ALL 1694 +#define B_SEQ_BUT_TRANSFORM 1695 + /* *********************** */ #define B_ARMATUREBUTS 1800 #define B_POSE 1701 diff --git a/source/blender/src/butspace.c b/source/blender/src/butspace.c index 2eddd362b62..e8062422e2a 100644 --- a/source/blender/src/butspace.c +++ b/source/blender/src/butspace.c @@ -572,6 +572,9 @@ void do_butspace(unsigned short event) else if(event<=B_RENDERBUTS) { do_render_panels(event); // buttons_scene.c } + else if(event<=B_SEQUENCERBUTS) { + do_sequencer_panels(event); + } else if(event<=B_COMMONEDITBUTS) { do_common_editbuts(event); } @@ -725,6 +728,8 @@ void drawbutspace(ScrArea *sa, void *spacedata) if(tab== TAB_SCENE_RENDER) render_panels(); + else if(tab == TAB_SCENE_SEQUENCER) + sequencer_panels(); else if(tab == TAB_SCENE_ANIM) anim_panels(); else if(tab == TAB_SCENE_SOUND) diff --git a/source/blender/src/buttons_scene.c b/source/blender/src/buttons_scene.c index 8fd74ddc08e..b6b8805ba5c 100644 --- a/source/blender/src/buttons_scene.c +++ b/source/blender/src/buttons_scene.c @@ -41,6 +41,7 @@ #include "DNA_space_types.h" #include "DNA_scene_types.h" #include "DNA_sound_types.h" +#include "DNA_sequence_types.h" #include "DNA_userdef_types.h" #include "DNA_packedFile_types.h" @@ -71,6 +72,7 @@ #include "BIF_screen.h" #include "BIF_space.h" #include "BIF_toolbox.h" +#include "BIF_editseq.h" #include "BIF_butspace.h" @@ -84,6 +86,7 @@ #include "BKE_writeavi.h" #include "BKE_writeffmpeg.h" #include "BKE_image.h" +#include "BKE_plugin_types.h" #include "BLI_threads.h" @@ -91,8 +94,11 @@ #include "BIF_writeimage.h" #include "BIF_writeavicodec.h" -#include "BSE_seqaudio.h" #include "BSE_headerbuttons.h" +#include "BSE_sequence.h" +#include "BSE_seqeffects.h" +#include "BSE_seqscopes.h" +#include "BSE_seqaudio.h" #include "RE_pipeline.h" @@ -466,6 +472,503 @@ static void sound_panel_sound(bSound *sound) } } +/* ************************* Sequencer *********************** */ + +#define SEQ_PANEL_EDITING 1 +#define SEQ_PANEL_INPUT 2 +#define SEQ_PANEL_FILTER 4 +#define SEQ_PANEL_EFFECT 8 +#define SEQ_PANEL_PROXY 16 + +static char* seq_panel_blend_modes() +{ + static char string[2048]; + char formatstring[2048]; + + strcpy(formatstring, "Blend mode: %%t|%s %%x%d|%s %%x%d"); + sprintf(string, formatstring, + "REPLACE", SEQ_BLEND_REPLACE, + "TODO: ALPHA OVER", SEQ_BLEND_ALPHA_OVER); + return string; + +} + +static void seq_panel_editing() +{ + Sequence *last_seq = get_last_seq(); + char * seq_names[] = { "Image", "Meta", "Scene", "Movie", + "Snd RAM", "Snd HD", + "", "Effect" }; + uiBlock *block; + + block = uiNewBlock(&curarea->uiblocks, "seq_panel_editing", + UI_EMBOSS, UI_HELV, curarea->win); + + if(uiNewPanel(curarea, block, "Edit", "Sequencer", + 10, 230, 318, 204) == 0) return; + + uiDefBut(block, LABEL, + 0, (last_seq->type >= SEQ_EFFECT) ? + "Effect" : seq_names[last_seq->type], + 10,140,60,19, 0, + 0, 0, 0, 0, ""); + + uiDefBut(block, TEX, + B_NOP, "Name: ", + 70,140,180,19, last_seq->name+2, + 0.0, 21.0, 100, 0, ""); + + uiDefButI(block, MENU, B_SEQ_BUT_RELOAD, seq_panel_blend_modes(), + 10, 120, 120, 19, &last_seq->blend_mode, + 0,0,0,0, "Strip Blend Mode"); + + if (last_seq->blend_mode > 0) { + uiDefButF(block, NUM, B_SEQ_BUT_RELOAD, "Blend:", + 130, 120, 120, 19, &last_seq->blend_opacity, + 0.0, 100.0, 100.0, 0, + "Blend opacity"); + } + + uiDefButBitI(block, TOG, SEQ_MUTE, + B_SEQ_BUT_RELOAD_ALL, "Mute", + 10,100,60,19, &last_seq->flag, + 0.0, 1.0, 0, 0, + "Mute the current strip."); + + uiDefButBitI(block, TOG, SEQ_LOCK, + B_NOP, "Lock", + 70,100,60,19, &last_seq->flag, + 0.0, 1.0, 0, 0, + "Lock strip, so that it can't be transformed."); + + uiDefButBitI(block, TOG, SEQ_IPO_FRAME_LOCKED, + B_SEQ_BUT_RELOAD_ALL, "IPO Frame locked", + 130,100,120,19, &last_seq->flag, + 0.0, 1.0, 0, 0, + "Lock the IPO coordinates to the " + "global frame counter."); + + if (!(last_seq->flag & SEQ_LOCK)) { + uiDefButI(block, NUM, + B_SEQ_BUT_TRANSFORM, "Start", + 10, 80, 120, 20, &last_seq->start, + 0.0, MAXFRAMEF, 0.0, 0.0, "Start of strip"); + uiDefButI(block, NUM, + B_SEQ_BUT_TRANSFORM, "Chan", + 130, 80, 120, 20, &last_seq->machine, + 0.0, MAXSEQ, 0.0, 0.0, "Channel used (Y position)"); + + if (last_seq->type == SEQ_IMAGE) { + uiDefButI(block, NUM, + B_SEQ_BUT_TRANSFORM, "Start-Still", + 10, 60, 120, 20, &last_seq->startstill, + 0.0, MAXFRAMEF, 0.0, 0.0, "Start still"); + uiDefButI(block, NUM, + B_SEQ_BUT_TRANSFORM, "End-Still", + 130, 60, 120, 19, &last_seq->endstill, + 0.0, MAXFRAMEF, 0.0, 0.0, "End still"); + } else { + uiDefButI(block, NUM, + B_SEQ_BUT_TRANSFORM, "Start-Ofs", + 10, 60, 120, 20, &last_seq->startofs, + 0.0, last_seq->len, 0.0, 0.0, "Start offset"); + uiDefButI(block, NUM, + B_SEQ_BUT_TRANSFORM, "End-Ofs", + 130, 60, 120, 19, &last_seq->endofs, + 0.0, last_seq->len, 0.0, 0.0, "End offset"); + } + } +} + +static void seq_panel_input() +{ + Sequence *last_seq = get_last_seq(); + uiBlock *block; + block = uiNewBlock(&curarea->uiblocks, "seq_panel_input", + UI_EMBOSS, UI_HELV, curarea->win); + + if(uiNewPanel(curarea, block, "Input", "Sequencer", + 10, 230, 318, 204) == 0) return; + + + uiDefButBitI(block, TOG, SEQ_USE_CROP, + B_SEQ_BUT_RELOAD, "Use Crop", + 10,100,240,19, &last_seq->flag, + 0.0, 1.0, 0, 0, + "Crop image before processing."); + + if (last_seq->flag & SEQ_USE_CROP) { + if (!last_seq->strip->crop) { + last_seq->strip->crop = + MEM_callocN(sizeof(struct StripCrop), + "StripCrop"); + } + uiDefButI(block, NUM, + B_SEQ_BUT_RELOAD, "Top", + 10, 80, 120, 20, &last_seq->strip->crop->top, + 0.0, 4096, 0.0, 0.0, "Top of source image"); + uiDefButI(block, NUM, + B_SEQ_BUT_RELOAD, "Bottom", + 130, 80, 120, 20, &last_seq->strip->crop->bottom, + 0.0, 4096, 0.0, 0.0, "Bottom of source image"); + + uiDefButI(block, NUM, + B_SEQ_BUT_RELOAD, "Left", + 10, 60, 120, 20, &last_seq->strip->crop->left, + 0.0, 4096, 0.0, 0.0, "Left"); + uiDefButI(block, NUM, + B_SEQ_BUT_RELOAD, "Right", + 130, 60, 120, 19, &last_seq->strip->crop->right, + 0.0, 4096, 0.0, 0.0, "Right"); + } + + uiDefButBitI(block, TOG, SEQ_USE_TRANSFORM, + B_SEQ_BUT_RELOAD, "Use Translate", + 10,40,240,19, &last_seq->flag, + 0.0, 1.0, 0, 0, + "Translate image before processing."); + + if (last_seq->flag & SEQ_USE_TRANSFORM) { + if (!last_seq->strip->transform) { + last_seq->strip->transform = + MEM_callocN(sizeof(struct StripTransform), + "StripTransform"); + } + uiDefButI(block, NUM, + B_SEQ_BUT_RELOAD, "X-Ofs", + 10, 20, 120, 20, &last_seq->strip->transform->xofs, + 0.0, 4096, 0.0, 0.0, "X Offset"); + uiDefButI(block, NUM, + B_SEQ_BUT_RELOAD, "Y-Ofs", + 130, 20, 120, 20, &last_seq->strip->transform->yofs, + 0.0, 4096, 0.0, 0.0, "Y Offset"); + } + + + uiDefButI(block, NUM, B_SEQ_BUT_RELOAD, "Preseek:", + 10,0,150,19, &last_seq->anim_preseek, + 0.0, 50.0, 100,0,"On MPEG-seeking preseek this many frames"); + +} + +static void seq_panel_filter_video() +{ + Sequence *last_seq = get_last_seq(); + uiBlock *block; + block = uiNewBlock(&curarea->uiblocks, "seq_panel_filter", + UI_EMBOSS, UI_HELV, curarea->win); + + if(uiNewPanel(curarea, block, "Filter", "Sequencer", + 10, 230, 318, 204) == 0) return; + + + uiBlockBeginAlign(block); + + + uiDefButBitI(block, TOG, SEQ_MAKE_PREMUL, + B_SEQ_BUT_RELOAD, "Convert to Premul", + 10,110,150,19, &last_seq->flag, + 0.0, 21.0, 100, 0, + "Converts RGB values to become premultiplied with Alpha"); + + uiDefButBitI(block, TOG, SEQ_FILTERY, + B_SEQ_BUT_RELOAD, "FilterY", + 10,90,75,19, &last_seq->flag, + 0.0, 21.0, 100, 0, + "For video movies to remove fields"); + + uiDefButBitI(block, TOG, SEQ_MAKE_FLOAT, + B_SEQ_BUT_RELOAD, "Make Float", + 85,90,75,19, &last_seq->flag, + 0.0, 21.0, 100, 0, + "Convert input to float data"); + + uiDefButBitI(block, TOG, SEQ_FLIPX, + B_SEQ_BUT_RELOAD, "FlipX", + 10,70,75,19, &last_seq->flag, + 0.0, 21.0, 100, 0, + "Flip on the X axis"); + uiDefButBitI(block, TOG, SEQ_FLIPY, + B_SEQ_BUT_RELOAD, "FlipY", + 85,70,75,19, &last_seq->flag, + 0.0, 21.0, 100, 0, + "Flip on the Y axis"); + + uiDefButF(block, NUM, B_SEQ_BUT_RELOAD, "Mul:", + 10,50,150,19, &last_seq->mul, + 0.001, 5.0, 100, 0, + "Multiply colors"); + + uiDefButBitI(block, TOG, SEQ_REVERSE_FRAMES, + B_SEQ_BUT_RELOAD, "Reverse Frames", + 10,30,150,19, &last_seq->flag, + 0.0, 21.0, 100, 0, + "Reverse frame order"); + + uiDefButF(block, NUM, B_SEQ_BUT_RELOAD, "Strobe:", + 10,10,150,19, &last_seq->strobe, + 1.0, 30.0, 100, 0, + "Only display every nth frame"); + + uiBlockEndAlign(block); + +} + + +static void seq_panel_filter_audio() +{ + Sequence *last_seq = get_last_seq(); + uiBlock *block; + block = uiNewBlock(&curarea->uiblocks, "seq_panel_filter", + UI_EMBOSS, UI_HELV, curarea->win); + + if(uiNewPanel(curarea, block, "Filter", "Sequencer", + 10, 230, 318, 204) == 0) return; + + uiBlockBeginAlign(block); + uiDefButF(block, NUM, B_SEQ_BUT_RELOAD, "Gain (dB):", 10,50,150,19, &last_seq->level, -96.0, 6.0, 100, 0, ""); + uiDefButF(block, NUM, B_SEQ_BUT_RELOAD, "Pan:", 10,30,150,19, &last_seq->pan, -1.0, 1.0, 100, 0, ""); + uiBlockEndAlign(block); +} + +static void seq_panel_effect() +{ + Sequence *last_seq = get_last_seq(); + uiBlock *block; + block = uiNewBlock(&curarea->uiblocks, "seq_panel_effect", + UI_EMBOSS, UI_HELV, curarea->win); + + if(uiNewPanel(curarea, block, "Effect", "Sequencer", + 10, 230, 318, 204) == 0) return; + + if(last_seq->type == SEQ_PLUGIN) { + PluginSeq *pis; + VarStruct *varstr; + int a, xco, yco; + + get_sequence_effect(last_seq);/* make sure, plugin is loaded */ + + pis= last_seq->plugin; + if(pis->vars==0) return; + + varstr= pis->varstr; + if(varstr) { + for(a=0; a<pis->vars; a++, varstr++) { + xco= 150*(a/6)+10; + yco= 125 - 20*(a % 6)+1; + uiDefBut(block, varstr->type, B_SEQ_BUT_PLUGIN, varstr->name, xco,yco,150,19, &(pis->data[a]), varstr->min, varstr->max, 100, 0, varstr->tip); + + } + } + return; + } + + uiBlockBeginAlign(block); + + if(last_seq->type==SEQ_WIPE){ + WipeVars *wipe = (WipeVars *)last_seq->effectdata; + char formatstring[256]; + + strncpy(formatstring, "Transition Type %t|Single Wipe%x0|Double Wipe %x1|Iris Wipe %x4|Clock Wipe %x5", 255); + uiDefButS(block, MENU,B_SEQ_BUT_EFFECT, formatstring, 10,65,220,22, &wipe->wipetype, 0, 0, 0, 0, "What type of wipe should be performed"); + uiDefButF(block, NUM,B_SEQ_BUT_EFFECT,"Blur:", 10,40,220,22, &wipe->edgeWidth,0.0,1.0, 1, 2, "The percent width of the blur edge"); + switch(wipe->wipetype){ /*Skip Types that do not require angle*/ + case DO_IRIS_WIPE: + case DO_CLOCK_WIPE: + break; + + default: + uiDefButF(block, NUM,B_SEQ_BUT_EFFECT,"Angle:", 10,15,220,22, &wipe->angle,-90.0,90.0, 1, 2, "The Angle of the Edge"); + } + uiDefButS(block, TOG,B_SEQ_BUT_EFFECT,"Wipe In", 10,-10,220,22, &wipe->forward,0,0, 0, 0, "Controls Primary Direction of Wipe"); + } else if(last_seq->type==SEQ_GLOW){ + GlowVars *glow = (GlowVars *)last_seq->effectdata; + + uiDefButF(block, NUM, B_SEQ_BUT_EFFECT, "Threshold:", 10,70,150,19, &glow->fMini, 0.0, 1.0, 0, 0, "Trigger Intensity"); + uiDefButF(block, NUM, B_SEQ_BUT_EFFECT, "Clamp:", 10,50,150,19, &glow->fClamp, 0.0, 1.0, 0, 0, "Brightness limit of intensity"); + uiDefButF(block, NUM, B_SEQ_BUT_EFFECT, "Boost factor:", 10,30,150,19, &glow->fBoost, 0.0, 10.0, 0, 0, "Brightness multiplier"); + uiDefButF(block, NUM, B_SEQ_BUT_EFFECT, "Blur distance:", 10,10,150,19, &glow->dDist, 0.5, 20.0, 0, 0, "Radius of glow effect"); + uiDefButI(block, NUM, B_NOP, "Quality:", 10,-5,150,19, &glow->dQuality, 1.0, 5.0, 0, 0, "Accuracy of the blur effect"); + uiDefButI(block, TOG, B_NOP, "Only boost", 10,-25,150,19, &glow->bNoComp, 0.0, 0.0, 0, 0, "Show the glow buffer only"); + } + else if(last_seq->type==SEQ_TRANSFORM){ + TransformVars *transform = (TransformVars *)last_seq->effectdata; + + uiDefButF(block, NUM, B_SEQ_BUT_EFFECT, "xScale Start:", 10,70,150,19, &transform->ScalexIni, 0.0, 10.0, 0, 0, "X Scale Start"); + uiDefButF(block, NUM, B_SEQ_BUT_EFFECT, "xScale End:", 160,70,150,19, &transform->ScalexFin, 0.0, 10.0, 0, 0, "X Scale End"); + uiDefButF(block, NUM, B_SEQ_BUT_EFFECT, "yScale Start:", 10,50,150,19, &transform->ScaleyIni, 0.0, 10.0, 0, 0, "Y Scale Start"); + uiDefButF(block, NUM, B_SEQ_BUT_EFFECT, "yScale End:", 160,50,150,19, &transform->ScaleyFin, 0.0, 10.0, 0, 0, "Y Scale End"); + + uiDefButI(block, ROW, B_SEQ_BUT_EFFECT, "Percent", 10, 30, 150, 19, &transform->percent, 0.0, 1.0, 0.0, 0.0, "Percent Translate"); + uiDefButI(block, ROW, B_SEQ_BUT_EFFECT, "Pixels", 160, 30, 150, 19, &transform->percent, 0.0, 0.0, 0.0, 0.0, "Pixels Translate"); + if(transform->percent==1){ + uiDefButF(block, NUM, B_SEQ_BUT_EFFECT, "x Start:", 10,10,150,19, &transform->xIni, -500.0, 500.0, 0, 0, "X Position Start"); + uiDefButF(block, NUM, B_SEQ_BUT_EFFECT, "x End:", 160,10,150,19, &transform->xFin, -500.0, 500.0, 0, 0, "X Position End"); + uiDefButF(block, NUM, B_SEQ_BUT_EFFECT, "y Start:", 10,-10,150,19, &transform->yIni, -500.0, 500.0, 0, 0, "Y Position Start"); + uiDefButF(block, NUM, B_SEQ_BUT_EFFECT, "y End:", 160,-10,150,19, &transform->yFin, -500.0, 500.0, 0, 0, "Y Position End"); + } else { + uiDefButF(block, NUM, B_SEQ_BUT_EFFECT, "x Start:", 10,10,150,19, &transform->xIni, -10000.0, 10000.0, 0, 0, "X Position Start"); + uiDefButF(block, NUM, B_SEQ_BUT_EFFECT, "x End:", 160,10,150,19, &transform->xFin, -10000.0, 10000.0, 0, 0, "X Position End"); + uiDefButF(block, NUM, B_SEQ_BUT_EFFECT, "y Start:", 10,-10,150,19, &transform->yIni, -10000.0, 10000.0, 0, 0, "Y Position Start"); + uiDefButF(block, NUM, B_SEQ_BUT_EFFECT, "y End:", 160,-10,150,19, &transform->yFin, -10000.0, 10000.0, 0, 0, "Y Position End"); + + } + + + + uiDefButF(block, NUM, B_SEQ_BUT_EFFECT, "rot Start:",10,-30,150,19, &transform->rotIni, 0.0, 360.0, 0, 0, "Rotation Start"); + uiDefButF(block, NUM, B_SEQ_BUT_EFFECT, "rot End:",160,-30,150,19, &transform->rotFin, 0.0, 360.0, 0, 0, "Rotation End"); + + uiDefButI(block, ROW, B_SEQ_BUT_EFFECT, "No Interpolat", 10, -50, 100, 19, &transform->interpolation, 0.0, 0.0, 0.0, 0.0, "No interpolation"); + uiDefButI(block, ROW, B_SEQ_BUT_EFFECT, "Bilinear", 101, -50, 100, 19, &transform->interpolation, 0.0, 1.0, 0.0, 0.0, "Bilinear interpolation"); + uiDefButI(block, ROW, B_SEQ_BUT_EFFECT, "Bicubic", 202, -50, 100, 19, &transform->interpolation, 0.0, 2.0, 0.0, 0.0, "Bicubic interpolation"); + } else if(last_seq->type==SEQ_COLOR) { + SolidColorVars *colvars = (SolidColorVars *)last_seq->effectdata; + uiDefButF(block, COL, B_SEQ_BUT_RELOAD, "",10,90,150,19, colvars->col, 0, 0, 0, 0, ""); + } else if(last_seq->type==SEQ_SPEED){ + SpeedControlVars *sp = + (SpeedControlVars *)last_seq->effectdata; + + uiDefButF(block, NUM, B_SEQ_BUT_RELOAD, "Global Speed:", 10,70,150,19, &sp->globalSpeed, 0.0, 100.0, 0, 0, "Global Speed"); + + uiDefButBitI(block, TOG, SEQ_SPEED_INTEGRATE, + B_SEQ_BUT_RELOAD, + "IPO is velocity", + 10,50,150,19, &sp->flags, + 0.0, 1.0, 0, 0, + "Interpret the IPO value as a " + "velocity instead of a frame number"); + + uiDefButBitI(block, TOG, SEQ_SPEED_BLEND, + B_SEQ_BUT_RELOAD, + "Enable frame blending", + 10,30,150,19, &sp->flags, + 0.0, 1.0, 0, 0, + "Blend two frames into the " + "target for a smoother result"); + + uiDefButBitI(block, TOG, SEQ_SPEED_COMPRESS_IPO_Y, + B_SEQ_BUT_RELOAD, + "IPO value runs from [0..1]", + 10,10,150,19, &sp->flags, + 0.0, 1.0, 0, 0, + "Scale IPO value to get the " + "target frame number."); + } + + uiBlockEndAlign(block); +} + +static void seq_panel_proxy() +{ + Sequence *last_seq = get_last_seq(); + uiBlock *block; + block = uiNewBlock(&curarea->uiblocks, "seq_panel_proxy", + UI_EMBOSS, UI_HELV, curarea->win); + + if(uiNewPanel(curarea, block, "Proxy", "Sequencer", + 10, 230, 318, 204) == 0) return; + + uiBlockBeginAlign(block); + + uiDefButBitI(block, TOG, SEQ_USE_PROXY, + B_SEQ_BUT_RELOAD, "Use Proxy", + 10,140,150,19, &last_seq->flag, + 0.0, 21.0, 100, 0, + "Use a preview proxy for this strip"); + + if (last_seq->flag & SEQ_USE_PROXY) { + + + } + + uiBlockEndAlign(block); +} + + +void sequencer_panels() +{ + Sequence *last_seq = get_last_seq(); + int panels = 0; + int type; + + if(last_seq == NULL) { + return; + } + + type = last_seq->type; + + panels = SEQ_PANEL_EDITING; + + if (type == SEQ_MOVIE || type == SEQ_IMAGE || type == SEQ_SCENE + || type == SEQ_HD_SOUND) { + panels |= SEQ_PANEL_INPUT | SEQ_PANEL_FILTER | SEQ_PANEL_PROXY; + } + + if (type == SEQ_RAM_SOUND) { + panels |= SEQ_PANEL_FILTER; + } + + if (type == SEQ_PLUGIN || type >= SEQ_EFFECT) { + panels |= SEQ_PANEL_EFFECT | SEQ_PANEL_PROXY; + } + + if (panels & SEQ_PANEL_EDITING) { + seq_panel_editing(); + } + + if (panels & SEQ_PANEL_INPUT) { + seq_panel_input(); + } + + if (panels & SEQ_PANEL_FILTER) { + if (type == SEQ_RAM_SOUND || type == SEQ_HD_SOUND) { + seq_panel_filter_audio(); + } else { + seq_panel_filter_video(); + } + } + + if (panels & SEQ_PANEL_EFFECT) { + seq_panel_effect(); + } + + if (panels & SEQ_PANEL_PROXY) { + seq_panel_proxy(); + } +} + + +void do_sequencer_panels(unsigned short event) +{ + Sequence *last_seq = get_last_seq(); + + switch(event) { + case B_SEQ_BUT_PLUGIN: + case B_SEQ_BUT_EFFECT: + update_changed_seq_and_deps(last_seq, 0, 1); + break; + + case B_SEQ_BUT_RELOAD: + case B_SEQ_BUT_RELOAD_ALL: + update_seq_ipo_rect(last_seq); + update_seq_icu_rects(last_seq); + + free_imbuf_seq(); // frees all + + break; + case B_SEQ_BUT_TRANSFORM: + calc_sequence(last_seq); + break; + } + + if (event == B_SEQ_BUT_RELOAD_ALL) { + allqueue(REDRAWALL, 0); + } else { + allqueue(REDRAWSEQ, 0); + } +} + /* ************************* SCENE *********************** */ diff --git a/source/blender/src/drawseq.c b/source/blender/src/drawseq.c index bcc47a7a1ca..b70a62cb65b 100644 --- a/source/blender/src/drawseq.c +++ b/source/blender/src/drawseq.c @@ -1052,529 +1052,7 @@ void seq_viewmove(SpaceSeq *sseq) window_set_cursor(win, oldcursor); } -#define SEQ_BUT_PLUGIN 1 -#define SEQ_BUT_RELOAD 2 -#define SEQ_BUT_EFFECT 3 -#define SEQ_BUT_RELOAD_ALL 4 -#define SEQ_BUT_TRANSFORM 5 -void do_seqbuttons(short val) -{ - Sequence *last_seq = get_last_seq(); - - switch(val) { - case SEQ_BUT_PLUGIN: - case SEQ_BUT_EFFECT: - update_changed_seq_and_deps(last_seq, 0, 1); - break; - - case SEQ_BUT_RELOAD: - case SEQ_BUT_RELOAD_ALL: - update_seq_ipo_rect(last_seq); - update_seq_icu_rects(last_seq); - - free_imbuf_seq(); // frees all - - break; - case SEQ_BUT_TRANSFORM: - calc_sequence(last_seq); - break; - } - - if (val == SEQ_BUT_RELOAD_ALL) { - allqueue(REDRAWALL, 0); - } else { - allqueue(REDRAWSEQ, 0); - } -} - -#define SEQ_PANEL_EDITING 1 -#define SEQ_PANEL_INPUT 2 -#define SEQ_PANEL_FILTER 4 -#define SEQ_PANEL_EFFECT 8 -#define SEQ_PANEL_PROXY 16 - -static char* seq_panal_blend_modes() -{ - static char string[2048]; - char formatstring[2048]; - - strcpy(formatstring, "Blend mode: %%t|%s %%x%d|%s %%x%d"); - sprintf(string, formatstring, - "REPLACE", SEQ_BLEND_REPLACE, - "TODO: ALPHA OVER", SEQ_BLEND_ALPHA_OVER); - return string; - -} - -static void seq_panel_editing(short cntrl) -{ - Sequence *last_seq = get_last_seq(); - char * seq_names[] = { "Image", "Meta", "Scene", "Movie", - "Snd RAM", "Snd HD", - "", "Effect" }; - uiBlock *block; - block = uiNewBlock(&curarea->uiblocks, "seq_panel_editing", - UI_EMBOSS, UI_HELV, curarea->win); - - uiPanelControl(UI_PNL_SOLID | UI_PNL_CLOSE | cntrl); - uiSetPanelHandler(SEQ_HANDLER_PROPERTIES); // for close and esc - if(uiNewPanel(curarea, block, "Edit", "Seq", - 10, 230, 318, 204) == 0) return; - - uiDefBut(block, LABEL, - 0, (last_seq->type >= SEQ_EFFECT) ? - "Effect" : seq_names[last_seq->type], - 10,140,60,19, 0, - 0, 0, 0, 0, ""); - - uiDefBut(block, TEX, - B_NOP, "Name: ", - 70,140,180,19, last_seq->name+2, - 0.0, 21.0, 100, 0, ""); - - uiDefButI(block, MENU, SEQ_BUT_RELOAD, seq_panal_blend_modes(), - 10, 120, 120, 19, &last_seq->blend_mode, - 0,0,0,0, "Strip Blend Mode"); - - if (last_seq->blend_mode > 0) { - uiDefButF(block, NUM, SEQ_BUT_RELOAD, "Blend:", - 130, 120, 120, 19, &last_seq->blend_opacity, - 0.0, 100.0, 100.0, 0, - "Blend opacity"); - } - - uiDefButBitI(block, TOG, SEQ_MUTE, - SEQ_BUT_RELOAD_ALL, "Mute", - 10,100,60,19, &last_seq->flag, - 0.0, 1.0, 0, 0, - "Mute the current strip."); - - uiDefButBitI(block, TOG, SEQ_LOCK, - B_NOP, "Lock", - 70,100,60,19, &last_seq->flag, - 0.0, 1.0, 0, 0, - "Lock strip, so that it can't be transformed."); - - uiDefButBitI(block, TOG, SEQ_IPO_FRAME_LOCKED, - SEQ_BUT_RELOAD_ALL, "IPO Frame locked", - 130,100,120,19, &last_seq->flag, - 0.0, 1.0, 0, 0, - "Lock the IPO coordinates to the " - "global frame counter."); - - if (!(last_seq->flag & SEQ_LOCK)) { - uiDefButI(block, NUM, - SEQ_BUT_TRANSFORM, "Start", - 10, 80, 120, 20, &last_seq->start, - 0.0, MAXFRAMEF, 0.0, 0.0, "Start of strip"); - uiDefButI(block, NUM, - SEQ_BUT_TRANSFORM, "Chan", - 130, 80, 120, 20, &last_seq->machine, - 0.0, MAXSEQ, 0.0, 0.0, "Channel used (Y position)"); - - if (last_seq->type == SEQ_IMAGE) { - uiDefButI(block, NUM, - SEQ_BUT_TRANSFORM, "Start-Still", - 10, 60, 120, 20, &last_seq->startstill, - 0.0, MAXFRAMEF, 0.0, 0.0, "Start still"); - uiDefButI(block, NUM, - SEQ_BUT_TRANSFORM, "End-Still", - 130, 60, 120, 19, &last_seq->endstill, - 0.0, MAXFRAMEF, 0.0, 0.0, "End still"); - } else { - uiDefButI(block, NUM, - SEQ_BUT_TRANSFORM, "Start-Ofs", - 10, 60, 120, 20, &last_seq->startofs, - 0.0, last_seq->len, 0.0, 0.0, "Start offset"); - uiDefButI(block, NUM, - SEQ_BUT_TRANSFORM, "End-Ofs", - 130, 60, 120, 19, &last_seq->endofs, - 0.0, last_seq->len, 0.0, 0.0, "End offset"); - } - } -} - -static void seq_panel_input(short cntrl) -{ - Sequence *last_seq = get_last_seq(); - uiBlock *block; - block = uiNewBlock(&curarea->uiblocks, "seq_panel_input", - UI_EMBOSS, UI_HELV, curarea->win); - - uiNewPanelTabbed("Edit", "Seq"); - uiPanelControl(UI_PNL_SOLID | UI_PNL_CLOSE | cntrl); - uiSetPanelHandler(SEQ_HANDLER_PROPERTIES); // for close and esc - if(uiNewPanel(curarea, block, "Input", "Seq", - 10, 230, 318, 204) == 0) return; - - - uiDefButBitI(block, TOG, SEQ_USE_CROP, - SEQ_BUT_RELOAD, "Use Crop", - 10,100,240,19, &last_seq->flag, - 0.0, 1.0, 0, 0, - "Crop image before processing."); - - if (last_seq->flag & SEQ_USE_CROP) { - if (!last_seq->strip->crop) { - last_seq->strip->crop = - MEM_callocN(sizeof(struct StripCrop), - "StripCrop"); - } - uiDefButI(block, NUM, - SEQ_BUT_RELOAD, "Top", - 10, 80, 120, 20, &last_seq->strip->crop->top, - 0.0, 4096, 0.0, 0.0, "Top of source image"); - uiDefButI(block, NUM, - SEQ_BUT_RELOAD, "Bottom", - 130, 80, 120, 20, &last_seq->strip->crop->bottom, - 0.0, 4096, 0.0, 0.0, "Bottom of source image"); - - uiDefButI(block, NUM, - SEQ_BUT_RELOAD, "Left", - 10, 60, 120, 20, &last_seq->strip->crop->left, - 0.0, 4096, 0.0, 0.0, "Left"); - uiDefButI(block, NUM, - SEQ_BUT_RELOAD, "Right", - 130, 60, 120, 19, &last_seq->strip->crop->right, - 0.0, 4096, 0.0, 0.0, "Right"); - } - - uiDefButBitI(block, TOG, SEQ_USE_TRANSFORM, - SEQ_BUT_RELOAD, "Use Translate", - 10,40,240,19, &last_seq->flag, - 0.0, 1.0, 0, 0, - "Translate image before processing."); - - if (last_seq->flag & SEQ_USE_TRANSFORM) { - if (!last_seq->strip->transform) { - last_seq->strip->transform = - MEM_callocN(sizeof(struct StripTransform), - "StripTransform"); - } - uiDefButI(block, NUM, - SEQ_BUT_RELOAD, "X-Ofs", - 10, 20, 120, 20, &last_seq->strip->transform->xofs, - 0.0, 4096, 0.0, 0.0, "X Offset"); - uiDefButI(block, NUM, - SEQ_BUT_RELOAD, "Y-Ofs", - 130, 20, 120, 20, &last_seq->strip->transform->yofs, - 0.0, 4096, 0.0, 0.0, "Y Offset"); - } - - - uiDefButI(block, NUM, SEQ_BUT_RELOAD, "Preseek:", - 10,0,150,19, &last_seq->anim_preseek, - 0.0, 50.0, 100,0,"On MPEG-seeking preseek this many frames"); - -} - -static void seq_panel_filter_video(short cntrl) -{ - Sequence *last_seq = get_last_seq(); - uiBlock *block; - block = uiNewBlock(&curarea->uiblocks, "seq_panel_filter", - UI_EMBOSS, UI_HELV, curarea->win); - - uiNewPanelTabbed("Edit", "Seq"); - uiPanelControl(UI_PNL_SOLID | UI_PNL_CLOSE | cntrl); - uiSetPanelHandler(SEQ_HANDLER_PROPERTIES); // for close and esc - if(uiNewPanel(curarea, block, "Filter", "Seq", - 10, 230, 318, 204) == 0) return; - - - uiBlockBeginAlign(block); - - - uiDefButBitI(block, TOG, SEQ_MAKE_PREMUL, - SEQ_BUT_RELOAD, "Convert to Premul", - 10,110,150,19, &last_seq->flag, - 0.0, 21.0, 100, 0, - "Converts RGB values to become premultiplied with Alpha"); - - uiDefButBitI(block, TOG, SEQ_FILTERY, - SEQ_BUT_RELOAD, "FilterY", - 10,90,75,19, &last_seq->flag, - 0.0, 21.0, 100, 0, - "For video movies to remove fields"); - - uiDefButBitI(block, TOG, SEQ_MAKE_FLOAT, - SEQ_BUT_RELOAD, "Make Float", - 85,90,75,19, &last_seq->flag, - 0.0, 21.0, 100, 0, - "Convert input to float data"); - - uiDefButBitI(block, TOG, SEQ_FLIPX, - SEQ_BUT_RELOAD, "FlipX", - 10,70,75,19, &last_seq->flag, - 0.0, 21.0, 100, 0, - "Flip on the X axis"); - uiDefButBitI(block, TOG, SEQ_FLIPY, - SEQ_BUT_RELOAD, "FlipY", - 85,70,75,19, &last_seq->flag, - 0.0, 21.0, 100, 0, - "Flip on the Y axis"); - - uiDefButF(block, NUM, SEQ_BUT_RELOAD, "Mul:", - 10,50,150,19, &last_seq->mul, - 0.001, 5.0, 100, 0, - "Multiply colors"); - - uiDefButBitI(block, TOG, SEQ_REVERSE_FRAMES, - SEQ_BUT_RELOAD, "Reverse Frames", - 10,30,150,19, &last_seq->flag, - 0.0, 21.0, 100, 0, - "Reverse frame order"); - - uiDefButF(block, NUM, SEQ_BUT_RELOAD, "Strobe:", - 10,10,150,19, &last_seq->strobe, - 1.0, 30.0, 100, 0, - "Only display every nth frame"); - - uiBlockEndAlign(block); - -} - - -static void seq_panel_filter_audio(short cntrl) -{ - Sequence *last_seq = get_last_seq(); - uiBlock *block; - block = uiNewBlock(&curarea->uiblocks, "seq_panel_filter", - UI_EMBOSS, UI_HELV, curarea->win); - - uiNewPanelTabbed("Edit", "Seq"); - uiPanelControl(UI_PNL_SOLID | UI_PNL_CLOSE | cntrl); - uiSetPanelHandler(SEQ_HANDLER_PROPERTIES); // for close and esc - if(uiNewPanel(curarea, block, "Filter", "Seq", - 10, 230, 318, 204) == 0) return; - - uiBlockBeginAlign(block); - uiDefButF(block, NUM, SEQ_BUT_RELOAD, "Gain (dB):", 10,50,150,19, &last_seq->level, -96.0, 6.0, 100, 0, ""); - uiDefButF(block, NUM, SEQ_BUT_RELOAD, "Pan:", 10,30,150,19, &last_seq->pan, -1.0, 1.0, 100, 0, ""); - uiBlockEndAlign(block); -} - -static void seq_panel_effect(short cntrl) -{ - Sequence *last_seq = get_last_seq(); - uiBlock *block; - block = uiNewBlock(&curarea->uiblocks, "seq_panel_effect", - UI_EMBOSS, UI_HELV, curarea->win); - - uiNewPanelTabbed("Edit", "Seq"); - uiPanelControl(UI_PNL_SOLID | UI_PNL_CLOSE | cntrl); - uiSetPanelHandler(SEQ_HANDLER_PROPERTIES); // for close and esc - if(uiNewPanel(curarea, block, "Effect", "Seq", - 10, 230, 318, 204) == 0) return; - - if(last_seq->type == SEQ_PLUGIN) { - PluginSeq *pis; - VarStruct *varstr; - int a, xco, yco; - - get_sequence_effect(last_seq);/* make sure, plugin is loaded */ - - pis= last_seq->plugin; - if(pis->vars==0) return; - - varstr= pis->varstr; - if(varstr) { - for(a=0; a<pis->vars; a++, varstr++) { - xco= 150*(a/6)+10; - yco= 125 - 20*(a % 6)+1; - uiDefBut(block, varstr->type, SEQ_BUT_PLUGIN, varstr->name, xco,yco,150,19, &(pis->data[a]), varstr->min, varstr->max, 100, 0, varstr->tip); - - } - } - return; - } - - uiBlockBeginAlign(block); - - if(last_seq->type==SEQ_WIPE){ - WipeVars *wipe = (WipeVars *)last_seq->effectdata; - char formatstring[256]; - - strncpy(formatstring, "Transition Type %t|Single Wipe%x0|Double Wipe %x1|Iris Wipe %x4|Clock Wipe %x5", 255); - uiDefButS(block, MENU,SEQ_BUT_EFFECT, formatstring, 10,65,220,22, &wipe->wipetype, 0, 0, 0, 0, "What type of wipe should be performed"); - uiDefButF(block, NUM,SEQ_BUT_EFFECT,"Blur:", 10,40,220,22, &wipe->edgeWidth,0.0,1.0, 1, 2, "The percent width of the blur edge"); - switch(wipe->wipetype){ /*Skip Types that do not require angle*/ - case DO_IRIS_WIPE: - case DO_CLOCK_WIPE: - break; - - default: - uiDefButF(block, NUM,SEQ_BUT_EFFECT,"Angle:", 10,15,220,22, &wipe->angle,-90.0,90.0, 1, 2, "The Angle of the Edge"); - } - uiDefButS(block, TOG,SEQ_BUT_EFFECT,"Wipe In", 10,-10,220,22, &wipe->forward,0,0, 0, 0, "Controls Primary Direction of Wipe"); - } else if(last_seq->type==SEQ_GLOW){ - GlowVars *glow = (GlowVars *)last_seq->effectdata; - - uiDefButF(block, NUM, SEQ_BUT_EFFECT, "Threshold:", 10,70,150,19, &glow->fMini, 0.0, 1.0, 0, 0, "Trigger Intensity"); - uiDefButF(block, NUM, SEQ_BUT_EFFECT, "Clamp:", 10,50,150,19, &glow->fClamp, 0.0, 1.0, 0, 0, "Brightness limit of intensity"); - uiDefButF(block, NUM, SEQ_BUT_EFFECT, "Boost factor:", 10,30,150,19, &glow->fBoost, 0.0, 10.0, 0, 0, "Brightness multiplier"); - uiDefButF(block, NUM, SEQ_BUT_EFFECT, "Blur distance:", 10,10,150,19, &glow->dDist, 0.5, 20.0, 0, 0, "Radius of glow effect"); - uiDefButI(block, NUM, B_NOP, "Quality:", 10,-5,150,19, &glow->dQuality, 1.0, 5.0, 0, 0, "Accuracy of the blur effect"); - uiDefButI(block, TOG, B_NOP, "Only boost", 10,-25,150,19, &glow->bNoComp, 0.0, 0.0, 0, 0, "Show the glow buffer only"); - } - else if(last_seq->type==SEQ_TRANSFORM){ - TransformVars *transform = (TransformVars *)last_seq->effectdata; - - uiDefButF(block, NUM, SEQ_BUT_EFFECT, "xScale Start:", 10,70,150,19, &transform->ScalexIni, 0.0, 10.0, 0, 0, "X Scale Start"); - uiDefButF(block, NUM, SEQ_BUT_EFFECT, "xScale End:", 160,70,150,19, &transform->ScalexFin, 0.0, 10.0, 0, 0, "X Scale End"); - uiDefButF(block, NUM, SEQ_BUT_EFFECT, "yScale Start:", 10,50,150,19, &transform->ScaleyIni, 0.0, 10.0, 0, 0, "Y Scale Start"); - uiDefButF(block, NUM, SEQ_BUT_EFFECT, "yScale End:", 160,50,150,19, &transform->ScaleyFin, 0.0, 10.0, 0, 0, "Y Scale End"); - - uiDefButI(block, ROW, SEQ_BUT_EFFECT, "Percent", 10, 30, 150, 19, &transform->percent, 0.0, 1.0, 0.0, 0.0, "Percent Translate"); - uiDefButI(block, ROW, SEQ_BUT_EFFECT, "Pixels", 160, 30, 150, 19, &transform->percent, 0.0, 0.0, 0.0, 0.0, "Pixels Translate"); - if(transform->percent==1){ - uiDefButF(block, NUM, SEQ_BUT_EFFECT, "x Start:", 10,10,150,19, &transform->xIni, -500.0, 500.0, 0, 0, "X Position Start"); - uiDefButF(block, NUM, SEQ_BUT_EFFECT, "x End:", 160,10,150,19, &transform->xFin, -500.0, 500.0, 0, 0, "X Position End"); - uiDefButF(block, NUM, SEQ_BUT_EFFECT, "y Start:", 10,-10,150,19, &transform->yIni, -500.0, 500.0, 0, 0, "Y Position Start"); - uiDefButF(block, NUM, SEQ_BUT_EFFECT, "y End:", 160,-10,150,19, &transform->yFin, -500.0, 500.0, 0, 0, "Y Position End"); - } else { - uiDefButF(block, NUM, SEQ_BUT_EFFECT, "x Start:", 10,10,150,19, &transform->xIni, -10000.0, 10000.0, 0, 0, "X Position Start"); - uiDefButF(block, NUM, SEQ_BUT_EFFECT, "x End:", 160,10,150,19, &transform->xFin, -10000.0, 10000.0, 0, 0, "X Position End"); - uiDefButF(block, NUM, SEQ_BUT_EFFECT, "y Start:", 10,-10,150,19, &transform->yIni, -10000.0, 10000.0, 0, 0, "Y Position Start"); - uiDefButF(block, NUM, SEQ_BUT_EFFECT, "y End:", 160,-10,150,19, &transform->yFin, -10000.0, 10000.0, 0, 0, "Y Position End"); - - } - - - - uiDefButF(block, NUM, SEQ_BUT_EFFECT, "rot Start:",10,-30,150,19, &transform->rotIni, 0.0, 360.0, 0, 0, "Rotation Start"); - uiDefButF(block, NUM, SEQ_BUT_EFFECT, "rot End:",160,-30,150,19, &transform->rotFin, 0.0, 360.0, 0, 0, "Rotation End"); - - uiDefButI(block, ROW, SEQ_BUT_EFFECT, "No Interpolat", 10, -50, 100, 19, &transform->interpolation, 0.0, 0.0, 0.0, 0.0, "No interpolation"); - uiDefButI(block, ROW, SEQ_BUT_EFFECT, "Bilinear", 101, -50, 100, 19, &transform->interpolation, 0.0, 1.0, 0.0, 0.0, "Bilinear interpolation"); - uiDefButI(block, ROW, SEQ_BUT_EFFECT, "Bicubic", 202, -50, 100, 19, &transform->interpolation, 0.0, 2.0, 0.0, 0.0, "Bicubic interpolation"); - } else if(last_seq->type==SEQ_COLOR) { - SolidColorVars *colvars = (SolidColorVars *)last_seq->effectdata; - uiDefButF(block, COL, SEQ_BUT_RELOAD, "",10,90,150,19, colvars->col, 0, 0, 0, 0, ""); - } else if(last_seq->type==SEQ_SPEED){ - SpeedControlVars *sp = - (SpeedControlVars *)last_seq->effectdata; - - uiDefButF(block, NUM, SEQ_BUT_RELOAD, "Global Speed:", 10,70,150,19, &sp->globalSpeed, 0.0, 100.0, 0, 0, "Global Speed"); - - uiDefButBitI(block, TOG, SEQ_SPEED_INTEGRATE, - SEQ_BUT_RELOAD, - "IPO is velocity", - 10,50,150,19, &sp->flags, - 0.0, 1.0, 0, 0, - "Interpret the IPO value as a " - "velocity instead of a frame number"); - - uiDefButBitI(block, TOG, SEQ_SPEED_BLEND, - SEQ_BUT_RELOAD, - "Enable frame blending", - 10,30,150,19, &sp->flags, - 0.0, 1.0, 0, 0, - "Blend two frames into the " - "target for a smoother result"); - - uiDefButBitI(block, TOG, SEQ_SPEED_COMPRESS_IPO_Y, - SEQ_BUT_RELOAD, - "IPO value runs from [0..1]", - 10,10,150,19, &sp->flags, - 0.0, 1.0, 0, 0, - "Scale IPO value to get the " - "target frame number."); - } - - uiBlockEndAlign(block); -} - -static void seq_panel_proxy(short cntrl) -{ - Sequence *last_seq = get_last_seq(); - uiBlock *block; - block = uiNewBlock(&curarea->uiblocks, "seq_panel_proxy", - UI_EMBOSS, UI_HELV, curarea->win); - - uiNewPanelTabbed("Edit", "Seq"); - uiPanelControl(UI_PNL_SOLID | UI_PNL_CLOSE | cntrl); - uiSetPanelHandler(SEQ_HANDLER_PROPERTIES); // for close and esc - if(uiNewPanel(curarea, block, "Proxy", "Seq", - 10, 230, 318, 204) == 0) return; - - uiBlockBeginAlign(block); - - uiDefButBitI(block, TOG, SEQ_USE_PROXY, - SEQ_BUT_RELOAD, "Use Proxy", - 10,140,150,19, &last_seq->flag, - 0.0, 21.0, 100, 0, - "Use a preview proxy for this strip"); - - if (last_seq->flag & SEQ_USE_PROXY) { - - - } - - uiBlockEndAlign(block); -} - - -static void seq_panel_properties(short cntrl) // SEQ_HANDLER_PROPERTIES -{ - Sequence *last_seq = get_last_seq(); - int panels = 0; - int type; - - if(last_seq == NULL) { - uiBlock *block; - block = uiNewBlock(&curarea->uiblocks, "seq_panel_editing", - UI_EMBOSS, UI_HELV, curarea->win); - - uiPanelControl(UI_PNL_SOLID | UI_PNL_CLOSE | cntrl); - uiSetPanelHandler(SEQ_HANDLER_PROPERTIES); - uiNewPanel(curarea, block, "Edit", "Seq", - 10, 230, 318, 204); - return; - } - - type = last_seq->type; - - panels = SEQ_PANEL_EDITING; - - if (type == SEQ_MOVIE || type == SEQ_IMAGE || type == SEQ_SCENE - || type == SEQ_HD_SOUND) { - panels |= SEQ_PANEL_INPUT | SEQ_PANEL_FILTER | SEQ_PANEL_PROXY; - } - - if (type == SEQ_RAM_SOUND) { - panels |= SEQ_PANEL_FILTER; - } - - if (type == SEQ_PLUGIN || type >= SEQ_EFFECT) { - panels |= SEQ_PANEL_EFFECT | SEQ_PANEL_PROXY; - } - - if (panels & SEQ_PANEL_EDITING) { - seq_panel_editing(cntrl); - } - - if (panels & SEQ_PANEL_INPUT) { - seq_panel_input(cntrl); - } - - if (panels & SEQ_PANEL_FILTER) { - if (type == SEQ_RAM_SOUND || type == SEQ_HD_SOUND) { - seq_panel_filter_audio(cntrl); - } else { - seq_panel_filter_video(cntrl); - } - } - - if (panels & SEQ_PANEL_EFFECT) { - seq_panel_effect(cntrl); - } - - if (panels & SEQ_PANEL_PROXY) { - seq_panel_proxy(cntrl); - } -} static void seq_blockhandlers(ScrArea *sa) { @@ -1585,13 +1063,6 @@ static void seq_blockhandlers(ScrArea *sa) uiFreeBlocksWin(&sa->uiblocks, sa->win); for(a=0; a<SPACE_MAXHANDLER; a+=2) { - switch(sseq->blockhandler[a]) { - - case SEQ_HANDLER_PROPERTIES: - seq_panel_properties(sseq->blockhandler[a+1]); - break; - - } /* clear action value for event */ sseq->blockhandler[a+1]= 0; } diff --git a/source/blender/src/editseq.c b/source/blender/src/editseq.c index b97dbac32ec..f1e2f957610 100644 --- a/source/blender/src/editseq.c +++ b/source/blender/src/editseq.c @@ -899,6 +899,7 @@ void mouse_select_seq(void) recurs_sel_seq(seq); } + allqueue(REDRAWBUTSSCENE, 0); force_draw(0); if(get_last_seq()) allqueue(REDRAWIPO, 0); diff --git a/source/blender/src/header_buttonswin.c b/source/blender/src/header_buttonswin.c index 07a63a46903..4dc1124a8bd 100644 --- a/source/blender/src/header_buttonswin.c +++ b/source/blender/src/header_buttonswin.c @@ -436,6 +436,14 @@ static uiBlock *buts_view_scenemenu(void *arg_unused) uiDefIconTextButC(block, BUTM, B_REDR, ICON_CHECKBOX_DEHLT, "Render|F10", 0, yco-=20, menuwidth, 19, &(G.buts->tab[CONTEXT_SCENE]), (float)TAB_SCENE_RENDER, 0.0, 0, 10, ""); } + + if((G.buts->mainb == CONTEXT_SCENE) && (G.buts->tab[CONTEXT_SCENE]==TAB_SCENE_SEQUENCER)) { + uiDefIconTextButC(block, BUTM, B_REDR, ICON_CHECKBOX_HLT, "Sequencer", + 0, yco-=20, menuwidth, 19, &(G.buts->tab[CONTEXT_SCENE]), (float)TAB_SCENE_SEQUENCER, 0.0, 0, 10, ""); + } else { + uiDefIconTextButC(block, BUTM, B_REDR, ICON_CHECKBOX_DEHLT, "Sequencer", + 0, yco-=20, menuwidth, 19, &(G.buts->tab[CONTEXT_SCENE]), (float)TAB_SCENE_SEQUENCER, 0.0, 0, 10, ""); + } if((G.buts->mainb == CONTEXT_SCENE) && (G.buts->tab[CONTEXT_SCENE]==TAB_SCENE_ANIM)) { uiDefIconTextButC(block, BUTM, B_REDR, ICON_CHECKBOX_HLT, "Animation", @@ -683,6 +691,7 @@ void buts_buttons(void) case CONTEXT_SCENE: uiBlockBeginAlign(block); uiDefIconButC(block, ROW, B_CONTEXT_SWITCH, ICON_SCENE, xco+=XIC, t_base, XIC, YIC, &(G.buts->tab[CONTEXT_SCENE]), 1.0, (float)TAB_SCENE_RENDER, 0, 0, "Render buttons "); + uiDefIconButC(block, ROW, B_CONTEXT_SWITCH, ICON_SEQUENCE, xco+=XIC, t_base, XIC, YIC, &(G.buts->tab[CONTEXT_SCENE]), 1.0, (float)TAB_SCENE_SEQUENCER, 0, 0, "Sequencer buttons "); uiDefIconButC(block, ROW, B_CONTEXT_SWITCH, ICON_ANIM, xco+=XIC, t_base, XIC, YIC, &(G.buts->tab[CONTEXT_SCENE]), 1.0, (float)TAB_SCENE_ANIM, 0, 0, "Anim/playback buttons"); uiDefIconButC(block, ROW, B_CONTEXT_SWITCH, ICON_SOUND, xco+=XIC, t_base, XIC, YIC, &(G.buts->tab[CONTEXT_SCENE]), 1.0, (float)TAB_SCENE_SOUND, 0, 0, "Sound block buttons"); diff --git a/source/blender/src/header_seq.c b/source/blender/src/header_seq.c index e26ab4a157a..1880484a09f 100644 --- a/source/blender/src/header_seq.c +++ b/source/blender/src/header_seq.c @@ -393,8 +393,7 @@ static void do_seq_editmenu(void *arg, int event) case 3: /* Separate Meta Strip */ un_meta(); break; - case 4: /* Properties... */ - add_blockhandler(curarea, SEQ_HANDLER_PROPERTIES, UI_PNL_UNSTOW); + case 4: /* former Properties... */ break; case 5: /* Duplicate */ add_duplicate_seq(); @@ -450,8 +449,6 @@ static uiBlock *seq_editmenu(void *arg_unused) block= uiNewBlock(&curarea->uiblocks, "seq_editmenu", UI_EMBOSSP, UI_HELV, curarea->headwin); uiBlockSetButmFunc(block, do_seq_editmenu, NULL); - uiDefIconTextBut(block, BUTM, 1, ICON_MENU_PANEL, "Strip Properties...|N", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 4, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Grab/Move|G", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 11, ""); uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Grab/Extend from frame|E", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 7, ""); uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Snap to Current Frame|Shift S, 1", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 12, ""); diff --git a/source/blender/src/space.c b/source/blender/src/space.c index 5415f03701e..486ebfa7010 100644 --- a/source/blender/src/space.c +++ b/source/blender/src/space.c @@ -4543,9 +4543,6 @@ static void winqreadseqspace(ScrArea *sa, void *spacedata, BWinEvent *evt) } switch(event) { - case UI_BUT_EVENT: - do_seqbuttons(val); - break; case LEFTMOUSE: if(sseq->mainb || view2dmove(event)==0) { @@ -6222,6 +6219,14 @@ void allqueue(unsigned short event, short val) scrarea_queue_headredraw(sa); } break; + case REDRAWSEQ: + if(sa->spacetype==SPACE_SEQ) { + addqueue(sa->win, CHANGED, 1); + scrarea_queue_winredraw(sa); + scrarea_queue_headredraw(sa); + } + /* fall through, since N-keys moved to + Buttons */ case REDRAWBUTSSCENE: if(sa->spacetype==SPACE_BUTS) { buts= sa->spacedata.first; @@ -6294,13 +6299,6 @@ void allqueue(unsigned short event, short val) scrarea_queue_winredraw(sa); } break; - case REDRAWSEQ: - if(sa->spacetype==SPACE_SEQ) { - addqueue(sa->win, CHANGED, 1); - scrarea_queue_winredraw(sa); - scrarea_queue_headredraw(sa); - } - break; case REDRAWOOPS: if(sa->spacetype==SPACE_OOPS) { scrarea_queue_winredraw(sa); |