X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fzoombar.C;h=5171469d3f1e0a6e9fc77917da01b583cb7b33a8;hp=6ed44a6d1d85d55ff85703c89b878b831e2c96e2;hb=9ffdfbe8e6fa7daaad4dcfdd46b6ac7b6e7a47e8;hpb=6a9fa3df95fb5ef53e1b09fdd2297a8aaf549fe5 diff --git a/cinelerra-5.1/cinelerra/zoombar.C b/cinelerra-5.1/cinelerra/zoombar.C index 6ed44a6d..5171469d 100644 --- a/cinelerra-5.1/cinelerra/zoombar.C +++ b/cinelerra-5.1/cinelerra/zoombar.C @@ -21,8 +21,11 @@ #include "apatchgui.inc" #include "clip.h" +#include "cwindow.h" +#include "cwindowgui.h" #include "edl.h" #include "edlsession.h" +#include "keys.h" #include "language.h" #include "localsession.h" #include "maincursor.h" @@ -53,14 +56,15 @@ ZoomBar::~ZoomBar() { delete sample_zoom; delete amp_zoom; - delete track_zoom; + delete atrack_zoom; + delete vtrack_zoom; } void ZoomBar::create_objects() { - int x = 3; - int y = get_h() / 2 - - mwindow->theme->get_image_set("zoombar_menu", 0)[0]->get_h() / 2; + int xs5 = xS(5), xs10 = xS(10); + int x = xS(3), y = get_h()/2 - + mwindow->theme->get_image_set("zoombar_menu", 0)[0]->get_h()/2; draw_top_background(get_parent(), 0, 0, get_w(), get_h()); sample_zoom = new SampleZoomPanel(mwindow, this, x, y); @@ -71,41 +75,40 @@ void ZoomBar::create_objects() amp_zoom->create_objects(); amp_zoom->set_tooltip(_("Audio waveform scale")); x += amp_zoom->get_w(); - track_zoom = new TrackZoomPanel(mwindow, this, x, y); - track_zoom->create_objects(); - track_zoom->set_tooltip(_("Height of tracks in the timeline")); - x += track_zoom->get_w() + 10; - - int wid = 120; + atrack_zoom = new ATrackZoomPanel(mwindow, this, x, y); + atrack_zoom->create_objects(); + atrack_zoom->set_tooltip(_("Height of audio tracks")); + x += atrack_zoom->get_w() + xs10; + vtrack_zoom = new VTrackZoomPanel(mwindow, this, x, y); + vtrack_zoom->create_objects(); + vtrack_zoom->set_tooltip(_("Height of video tracks")); + x += vtrack_zoom->get_w() + xs10; + + int wid = xS(120); for( int i=AUTOGROUPTYPE_AUDIO_FADE; i<=AUTOGROUPTYPE_Y; ++i ) { int ww = BC_GenericButton::calculate_w(this, AutoTypeMenu::to_text(i)); if( ww > wid ) wid = ww; } add_subwindow(auto_type = new AutoTypeMenu(mwindow, this, x, y, wid)); auto_type->create_objects(); - x += auto_type->get_w() + 10; + x += auto_type->get_w() + xs10; #define DEFAULT_TEXT "000.00 to 000.00" add_subwindow(auto_zoom = new AutoZoom(mwindow, this, x, y, 0)); x += auto_zoom->get_w(); - add_subwindow(auto_zoom_text = new ZoomTextBox( - mwindow, - this, - x, - y, - DEFAULT_TEXT)); - x += auto_zoom_text->get_w() + 5; + add_subwindow(auto_zoom_text = new ZoomTextBox(mwindow, this, x, y, DEFAULT_TEXT)); + x += auto_zoom_text->get_w() + xs5; add_subwindow(auto_zoom = new AutoZoom(mwindow, this, x, y, 1)); update_autozoom(); - x += auto_zoom->get_w() + 5; + x += auto_zoom->get_w() + xs5; add_subwindow(from_value = new FromTextBox(mwindow, this, x, y)); - x += from_value->get_w() + 5; + x += from_value->get_w() + xs5; add_subwindow(length_value = new LengthTextBox(mwindow, this, x, y)); - x += length_value->get_w() + 5; + x += length_value->get_w() + xs5; add_subwindow(to_value = new ToTextBox(mwindow, this, x, y)); - x += to_value->get_w() + 5; + x += to_value->get_w() + xs5; add_subwindow(title_alpha_bar = new TitleAlphaBar(mwindow, this, x, y)); - x += title_alpha_bar->get_w() + 5; + x += title_alpha_bar->get_w() + xs5; add_subwindow(title_alpha_text = new TitleAlphaText(mwindow, this, x, y)); update_formatting(from_value); @@ -187,6 +190,18 @@ void ZoomBar::update_autozoom(int color) auto_zoom_text->update(string); const char *group_name = AutoTypeMenu::to_text(autogroup_type); auto_type->set_text(group_name); + switch( autogroup_type ) { + case AUTOGROUPTYPE_ZOOM: + case AUTOGROUPTYPE_X: + case AUTOGROUPTYPE_Y: + CWindowGUI *cgui = mwindow->cwindow->gui; + unlock_window(); + cgui->lock_window("ZoomBar::update_autozoom"); + cgui->update_tool(); + cgui->unlock_window(); + lock_window("ZoomBar::update_autozoom"); + break; + } } @@ -194,7 +209,8 @@ int ZoomBar::update() { sample_zoom->update(mwindow->edl->local_session->zoom_sample); amp_zoom->update(mwindow->edl->local_session->zoom_y); - track_zoom->update(mwindow->edl->local_session->zoom_track); + atrack_zoom->update(mwindow->edl->local_session->zoom_atrack); + vtrack_zoom->update(mwindow->edl->local_session->zoom_vtrack); update_autozoom(); update_clocks(); return 0; @@ -210,7 +226,7 @@ int ZoomBar::update_clocks() } TitleAlphaBar::TitleAlphaBar(MWindow *mwindow, ZoomBar *zoombar, int x, int y) - : BC_FSlider(x, y, 0, 150, 200, 0, 1.0, mwindow->session->title_bar_alpha, 0) + : BC_FSlider(x, y, 0, xS(150), xS(200), 0, 1.0, mwindow->session->title_bar_alpha, 0) { this->mwindow = mwindow; this->zoombar = zoombar; @@ -229,7 +245,7 @@ int TitleAlphaBar::handle_event() } TitleAlphaText::TitleAlphaText(MWindow *mwindow, ZoomBar *zoombar, int x, int y) - : BC_TextBox(x, y, 48, 1, mwindow->session->title_bar_alpha, 0, MEDIUMFONT, 2) + : BC_TextBox(x, y, xS(48), 1, mwindow->session->title_bar_alpha, 0, MEDIUMFONT, 2) { this->mwindow = mwindow; this->zoombar = zoombar; @@ -349,19 +365,9 @@ int ZoomBar::set_selection(int which_one) } - - - - - - - - - - SampleZoomPanel::SampleZoomPanel(MWindow *mwindow, ZoomBar *zoombar, int x, int y) : ZoomPanel(mwindow, zoombar, mwindow->edl->local_session->zoom_sample, - x, y, 110, MIN_ZOOM_TIME, MAX_ZOOM_TIME, ZOOM_TIME) + x, y, xS(130), MIN_ZOOM_TIME, MAX_ZOOM_TIME, ZOOM_TIME) { this->mwindow = mwindow; this->zoombar = zoombar; @@ -375,32 +381,49 @@ int SampleZoomPanel::handle_event() AmpZoomPanel::AmpZoomPanel(MWindow *mwindow, ZoomBar *zoombar, int x, int y) : ZoomPanel(mwindow, zoombar, mwindow->edl->local_session->zoom_y, - x, y, 80, MIN_AMP_ZOOM, MAX_AMP_ZOOM, ZOOM_LONG) + x, y, xS(80), MIN_AMP_ZOOM, MAX_AMP_ZOOM, ZOOM_LONG) { this->mwindow = mwindow; this->zoombar = zoombar; } int AmpZoomPanel::handle_event() { + if( zoombar->shift_down() ) + update(DEFAULT_ZOOM_TRACK); mwindow->zoom_amp((int64_t)get_value()); return 1; } -TrackZoomPanel::TrackZoomPanel(MWindow *mwindow, ZoomBar *zoombar, int x, int y) - : ZoomPanel(mwindow, zoombar, mwindow->edl->local_session->zoom_track, - x, y, 70, MIN_TRACK_ZOOM, MAX_TRACK_ZOOM, ZOOM_LONG) +ATrackZoomPanel::ATrackZoomPanel(MWindow *mwindow, ZoomBar *zoombar, int x, int y) + : ZoomPanel(mwindow, zoombar, mwindow->edl->local_session->zoom_atrack, + x, y, xS(64), MIN_TRACK_ZOOM, MAX_TRACK_ZOOM, ZOOM_LONG) { this->mwindow = mwindow; this->zoombar = zoombar; } -int TrackZoomPanel::handle_event() +int ATrackZoomPanel::handle_event() { - mwindow->zoom_track((int64_t)get_value()); + if( zoombar->shift_down() ) + update(DEFAULT_ZOOM_TRACK); + mwindow->zoom_atrack((int64_t)get_value()); zoombar->amp_zoom->update(mwindow->edl->local_session->zoom_y); return 1; } - +VTrackZoomPanel::VTrackZoomPanel(MWindow *mwindow, ZoomBar *zoombar, int x, int y) + : ZoomPanel(mwindow, zoombar, mwindow->edl->local_session->zoom_vtrack, + x, y, xS(64), MIN_TRACK_ZOOM, MAX_TRACK_ZOOM, ZOOM_LONG) +{ + this->mwindow = mwindow; + this->zoombar = zoombar; +} +int VTrackZoomPanel::handle_event() +{ + if( zoombar->shift_down() ) + update(DEFAULT_ZOOM_TRACK); + mwindow->zoom_vtrack((int64_t)get_value()); + return 1; +} AutoZoom::AutoZoom(MWindow *mwindow, ZoomBar *zoombar, int x, int y, int changemax) @@ -440,7 +463,8 @@ int AutoZoom::handle_down_event() AutoTypeMenu::AutoTypeMenu(MWindow *mwindow, ZoomBar *zoombar, int x, int y, int wid) - : BC_PopupMenu(x, y, wid, to_text(mwindow->edl->local_session->zoombar_showautotype), 1) + : BC_PopupMenu(x, y, wid + xS(24), + to_text(mwindow->edl->local_session->zoombar_showautotype), 1, 0, 12) { this->mwindow = mwindow; this->zoombar = zoombar; @@ -481,14 +505,14 @@ int AutoTypeMenu::from_text(char *text) return AUTOGROUPTYPE_INT255; } -int AutoTypeMenu::draw_face(int dx) +int AutoTypeMenu::draw_face(int dx, int color) { - BC_PopupMenu::draw_face(dx); - int color = mwindow->edl->local_session->zoombar_showautocolor; + BC_PopupMenu::draw_face(dx+xS(8), color); + color = mwindow->edl->local_session->zoombar_showautocolor; if( color >= 0 ) { set_color(color); int margin = get_margin(); - int mx = margin+5, my = 3*margin/8; + int mx = margin+xS(8), my = 3*margin/8; int bh = get_h() - 2*my; draw_box(mx,my, bh,bh); } @@ -504,7 +528,7 @@ int AutoTypeMenu::handle_event() ZoomTextBox::ZoomTextBox(MWindow *mwindow, ZoomBar *zoombar, int x, int y, const char *text) - : BC_TextBox(x, y, 130, 1, text) + : BC_TextBox(x, y, xS(130), 1, text) { this->mwindow = mwindow; this->zoombar = zoombar; @@ -564,7 +588,7 @@ int ZoomTextBox::handle_event() FromTextBox::FromTextBox(MWindow *mwindow, ZoomBar *zoombar, int x, int y) - : BC_TextBox(x, y, 90, 1, "") + : BC_TextBox(x, y, xS(90), 1, "") { this->mwindow = mwindow; this->zoombar = zoombar; @@ -573,7 +597,7 @@ FromTextBox::FromTextBox(MWindow *mwindow, ZoomBar *zoombar, int x, int y) int FromTextBox::handle_event() { - if(get_keypress() == 13) + if(get_keypress() == NEWLINE) { zoombar->set_selection(SET_FROM); return 1; @@ -600,7 +624,7 @@ int FromTextBox::update_position(double new_position) LengthTextBox::LengthTextBox(MWindow *mwindow, ZoomBar *zoombar, int x, int y) - : BC_TextBox(x, y, 90, 1, "") + : BC_TextBox(x, y, xS(90), 1, "") { this->mwindow = mwindow; this->zoombar = zoombar; @@ -609,7 +633,7 @@ LengthTextBox::LengthTextBox(MWindow *mwindow, ZoomBar *zoombar, int x, int y) int LengthTextBox::handle_event() { - if(get_keypress() == 13) + if(get_keypress() == NEWLINE) { zoombar->set_selection(SET_LENGTH); return 1; @@ -634,7 +658,7 @@ int LengthTextBox::update_position(double new_position) ToTextBox::ToTextBox(MWindow *mwindow, ZoomBar *zoombar, int x, int y) - : BC_TextBox(x, y, 90, 1, "") + : BC_TextBox(x, y, xS(90), 1, "") { this->mwindow = mwindow; this->zoombar = zoombar; @@ -643,7 +667,7 @@ ToTextBox::ToTextBox(MWindow *mwindow, ZoomBar *zoombar, int x, int y) int ToTextBox::handle_event() { - if(get_keypress() == 13) + if(get_keypress() == NEWLINE) { zoombar->set_selection(SET_TO); return 1;