X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fcwindowtool.C;h=371464e9d4753fbdc701071f027a72945852e9a1;hp=fb4e895b24e2932f925cca95f8eed168f8ffb234;hb=8e67d840c5a93f77de021102a4f0bfc4e07504f4;hpb=8095c6d2685554310e70f32a1274c902188897a4 diff --git a/cinelerra-5.1/cinelerra/cwindowtool.C b/cinelerra-5.1/cinelerra/cwindowtool.C index fb4e895b..371464e9 100644 --- a/cinelerra-5.1/cinelerra/cwindowtool.C +++ b/cinelerra-5.1/cinelerra/cwindowtool.C @@ -1922,16 +1922,6 @@ int CWindowMaskDelPoint::handle_event() return 1; } -int CWindowMaskDelPoint::keypress_event() -{ - if( get_keypress() == BACKSPACE || - get_keypress() == DELETE ) - return handle_event(); - return 0; -} - - - CWindowMaskAffectedPoint::CWindowMaskAffectedPoint(MWindow *mwindow, CWindowMaskGUI *gui, int x, int y) @@ -2087,7 +2077,7 @@ int CWindowMaskDrawBoundary::handle_event() CWindowMaskFeather::CWindowMaskFeather(MWindow *mwindow, CWindowMaskGUI *gui, int x, int y) - : BC_TumbleTextBox(gui, 0, -FEATHER_MAX, FEATHER_MAX, x, y, 64, 2) + : BC_TumbleTextBox(gui, 0, INT_MIN, INT_MAX, x, y, 64, 2) { this->mwindow = mwindow; this->gui = gui; @@ -2134,7 +2124,6 @@ int CWindowMaskFeather::update_value(float v) if( !gui->mask_enables[i]->get_value() ) continue; SubMask *sub_mask = keyframe->get_submask(i); float feather = sub_mask->feather + change; - bclamp(feather, -FEATHER_MAX, FEATHER_MAX); sub_mask->feather = feather; } #ifdef USE_KEYFRAME_SPANNING @@ -2156,7 +2145,7 @@ int CWindowMaskFeather::handle_event() CWindowMaskFeatherSlider::CWindowMaskFeatherSlider(MWindow *mwindow, CWindowMaskGUI *gui, int x, int y, int w, float v) - : BC_FSlider(x, y, 0, w, w, -FEATHER_MAX, FEATHER_MAX, v) + : BC_FSlider(x, y, 0, w, w, -FEATHER_MAX-5, FEATHER_MAX+5, v) { this->mwindow = mwindow; this->gui = gui; @@ -2164,6 +2153,7 @@ CWindowMaskFeatherSlider::CWindowMaskFeatherSlider(MWindow *mwindow, timer = new Timer(); stick = 0; last_v = 0; + max = FEATHER_MAX; } CWindowMaskFeatherSlider::~CWindowMaskFeatherSlider() @@ -2173,32 +2163,42 @@ CWindowMaskFeatherSlider::~CWindowMaskFeatherSlider() int CWindowMaskFeatherSlider::handle_event() { + int sticky = 0; float v = get_value(); - if( stick > 0 ) { - int64_t ms = timer->get_difference(); - if( ms < 250 && --stick > 0 ) { - if( get_value() == 0 ) return 1; - update(v = 0); + if( stick && timer->get_difference() >= 250 ) + stick = 0; // no events for .25 sec + if( stick && (last_v * (v-last_v)) < 0 ) + stick = 0; // dv changed direction + if( stick ) { + if( --stick > 0 ) { + timer->update(); + update(last_v); + return 1; } - else { - stick = 0; - last_v = v; + if( last_v ) { + max *= 1.25; + update(get_w(), v=last_v, -max-5, max+5); + button_release_event(); } } - else if( (last_v>=0 && v<0) || (last_v<0 && v>=0) ) { - stick = 16; - v = 0; - } - else - last_v = v; - timer->update(); + else if( v > max ) { v = max; sticky = 24; } + else if( v < -max ) { v = -max; sticky = 24; } + else if( v>=0 ? last_v<0 : last_v>=0 ) { v = 0; sticky = 16; } + if( sticky ) { update(v); stick = sticky; timer->update(); } + last_v = v; gui->feather->BC_TumbleTextBox::update(v); return gui->feather->update_value(v); } int CWindowMaskFeatherSlider::update(float v) { - return BC_FSlider::update(v); + float vv = fabsf(v); + while( max < vv ) max *= 1.25; + return update(get_w(), v, -max-5, max+5); +} +int CWindowMaskFeatherSlider::update(int r, float v, float mn, float mx) +{ + return BC_FSlider::update(r, v, mn, mx); } CWindowMaskFade::CWindowMaskFade(MWindow *mwindow, CWindowMaskGUI *gui, int x, int y) @@ -2597,7 +2597,7 @@ void CWindowMaskGUI::create_objects() } add_subwindow(mask_unclr = new CWindowMaskUnclear(mwindow, this, clr_x, y)); y += mask_enables[0]->get_h() + 2*margin; - add_subwindow(title_bar = new BC_TitleBar(x, y, get_w()-2*x, 20, 10, _("Presets shapes"))); + add_subwindow(title_bar = new BC_TitleBar(x, y, get_w()-2*x, 20, 10, _("Preset Shapes"))); y += title_bar->get_h() + margin; add_subwindow(mask_shape_sqr = new CWindowMaskShape(mwindow, this, "mask_prst_sqr_images", MASK_SHAPE_SQUARE, t[0], y, _("Square"))); @@ -2706,7 +2706,6 @@ void CWindowMaskGUI::create_objects() "Shift+LMB: move an end point\n" "Ctrl+LMB: move a control point\n" "Alt+LMB: to drag translate the mask\n" - "Shift+Key Delete: to delete the point\n" "Shift+MMB: Set Pivot Point at pointer\n" "Wheel: rotate around Pivot Point\n" "Shift+Wheel: scale around Pivot Point\n" @@ -3330,7 +3329,7 @@ CWindowMaskDelete::CWindowMaskDelete(MWindow *mwindow, { this->mwindow = mwindow; this->gui = gui; - set_tooltip(_("delete preset")); + set_tooltip(_("Delete preset")); } int CWindowMaskDelete::handle_event()