X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fzoombar.C;h=60ed04c5bdebd0391352c579f2ca6e1bd02b2f6e;hp=408473d6ec0167c6ca7d1a722ffbc245e5bc1fd3;hb=5ec378f09aeeb646705fdb8035b39a186374fba0;hpb=7fd85fb66168f6b518c5f2d73e04036e87faa0e1 diff --git a/cinelerra-5.1/cinelerra/zoombar.C b/cinelerra-5.1/cinelerra/zoombar.C index 408473d6..60ed04c5 100644 --- a/cinelerra-5.1/cinelerra/zoombar.C +++ b/cinelerra-5.1/cinelerra/zoombar.C @@ -23,6 +23,7 @@ #include "clip.h" #include "edl.h" #include "edlsession.h" +#include "keys.h" #include "language.h" #include "localsession.h" #include "maincursor.h" @@ -39,8 +40,6 @@ #include "zoombar.h" - - ZoomBar::ZoomBar(MWindow *mwindow, MWindowGUI *gui) : BC_SubWindow(mwindow->theme->mzoom_x, mwindow->theme->mzoom_y, @@ -49,7 +48,6 @@ ZoomBar::ZoomBar(MWindow *mwindow, MWindowGUI *gui) { this->gui = gui; this->mwindow = mwindow; - old_position = 0; } ZoomBar::~ZoomBar() @@ -61,9 +59,9 @@ ZoomBar::~ZoomBar() 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); @@ -77,16 +75,16 @@ void ZoomBar::create_objects() 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; + x += track_zoom->get_w() + xs10; - int wid = 120; + 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(); @@ -96,25 +94,25 @@ void ZoomBar::create_objects() x, y, DEFAULT_TEXT)); - x += auto_zoom_text->get_w() + 5; + 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() + xs5; + add_subwindow(title_alpha_text = new TitleAlphaText(mwindow, this, x, y)); update_formatting(from_value); update_formatting(length_value); update_formatting(to_value); - add_subwindow(playback_value = new BC_Title(x, 100, "--", MEDIUMFONT, RED)); - - add_subwindow(zoom_value = new BC_Title(x, 100, "--", MEDIUMFONT, BLACK)); update(); } @@ -151,9 +149,22 @@ int ZoomBar::draw() } void ZoomBar::update_autozoom() +{ + update_autozoom(mwindow->edl->local_session->zoombar_showautocolor); +} + +void ZoomBar::update_autozoom(int grouptype, int color) +{ + mwindow->edl->local_session->zoombar_showautotype = grouptype; + update_autozoom(color); +} + +void ZoomBar::update_autozoom(int color) { char string[BCTEXTLEN]; int autogroup_type = mwindow->edl->local_session->zoombar_showautotype; + mwindow->edl->local_session->zoombar_showautocolor = color; + if( color < 0 ) color = get_resources()->default_text_color; switch( autogroup_type ) { case AUTOGROUPTYPE_AUDIO_FADE: case AUTOGROUPTYPE_VIDEO_FADE: @@ -179,6 +190,7 @@ void ZoomBar::update_autozoom() auto_type->set_text(group_name); } + int ZoomBar::update() { sample_zoom->update(mwindow->edl->local_session->zoom_sample); @@ -198,19 +210,41 @@ int ZoomBar::update_clocks() return 0; } -int ZoomBar::update_playback(int64_t new_position) +TitleAlphaBar::TitleAlphaBar(MWindow *mwindow, ZoomBar *zoombar, int x, int y) + : BC_FSlider(x, y, 0, xS(150), xS(200), 0, 1.0, mwindow->session->title_bar_alpha, 0) { - if(new_position != old_position) - { - Units::totext(string, new_position, - mwindow->edl->session->sample_rate, - mwindow->edl->session->time_format, - mwindow->edl->session->frame_rate, - mwindow->edl->session->frames_per_foot); - playback_value->update(string); - old_position = new_position; - } - return 0; + this->mwindow = mwindow; + this->zoombar = zoombar; + set_precision(0.01); + enable_show_value(0); +} + +int TitleAlphaBar::handle_event() +{ + float v = get_value(); + mwindow->session->title_bar_alpha = v; + zoombar->title_alpha_text->update(v); + mwindow->gui->draw_trackmovement(); + mwindow->gui->flush(); + return 1; +} + +TitleAlphaText::TitleAlphaText(MWindow *mwindow, ZoomBar *zoombar, int x, int y) + : BC_TextBox(x, y, xS(48), 1, mwindow->session->title_bar_alpha, 0, MEDIUMFONT, 2) +{ + this->mwindow = mwindow; + this->zoombar = zoombar; + set_tooltip(_("Title Alpha")); +} + +int TitleAlphaText::handle_event() +{ + float v = atof(get_text()); + mwindow->session->title_bar_alpha = v; + zoombar->title_alpha_bar->update(v); + mwindow->gui->draw_trackmovement(); + mwindow->gui->flush(); + return 1; } int ZoomBar::resize_event(int w, int h) @@ -316,19 +350,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; @@ -342,7 +366,7 @@ 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(100), MIN_AMP_ZOOM, MAX_AMP_ZOOM, ZOOM_LONG) { this->mwindow = mwindow; this->zoombar = zoombar; @@ -355,7 +379,7 @@ int AmpZoomPanel::handle_event() 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) + x, y, xS(90), MIN_TRACK_ZOOM, MAX_TRACK_ZOOM, ZOOM_LONG) { this->mwindow = mwindow; this->zoombar = zoombar; @@ -407,7 +431,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; @@ -448,6 +473,20 @@ int AutoTypeMenu::from_text(char *text) return AUTOGROUPTYPE_INT255; } +int AutoTypeMenu::draw_face(int dx, int color) +{ + 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+xS(8), my = 3*margin/8; + int bh = get_h() - 2*my; + draw_box(mx,my, bh,bh); + } + return 1; +} + int AutoTypeMenu::handle_event() { mwindow->edl->local_session->zoombar_showautotype = from_text(this->get_text()); @@ -457,7 +496,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; @@ -517,7 +556,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; @@ -526,7 +565,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; @@ -553,7 +592,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; @@ -562,7 +601,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; @@ -587,7 +626,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; @@ -596,7 +635,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;