diff options
| author | Carl Hetherington <cth@carlh.net> | 2018-07-04 11:31:22 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2018-07-04 11:31:22 +0100 |
| commit | ea8bceee9e9d2e43fe4e49067013295931687f96 (patch) | |
| tree | 8b833ecce73bfaf83ad7223d2c31ad1502195ce3 | |
| parent | 9e065519743ff8eac63207552a97314febca24c7 (diff) | |
More zoom / timeline tidying.
| -rw-r--r-- | src/wx/timeline.cc | 21 | ||||
| -rw-r--r-- | src/wx/timeline_labels_view.cc | 15 | ||||
| -rw-r--r-- | src/wx/timeline_labels_view.h | 4 |
3 files changed, 28 insertions, 12 deletions
diff --git a/src/wx/timeline.cc b/src/wx/timeline.cc index ba528c007..5babcfea1 100644 --- a/src/wx/timeline.cc +++ b/src/wx/timeline.cc @@ -375,9 +375,10 @@ Timeline::assign_tracks () /* Audio */ - place<TimelineAudioContentView> (_views, _tracks); + int const audio_tracks = place<TimelineAudioContentView> (_views, _tracks); _labels_view->set_3d (have_3d); + _labels_view->set_audio_tracks (audio_tracks); _labels_view->set_subtitle_tracks (subtitle_tracks); _labels_view->set_atmos (have_atmos); @@ -398,9 +399,12 @@ Timeline::setup_scrollbars () if (!film || !_pixels_per_second) { return; } - _labels_canvas->SetVirtualSize (_labels_view->bbox().width, tracks() * pixels_per_track() + 96); + + int const h = tracks() * pixels_per_track() + tracks_y_offset() + _time_axis_view->bbox().height; + + _labels_canvas->SetVirtualSize (_labels_view->bbox().width, h); _labels_canvas->SetScrollRate (_x_scroll_rate, _y_scroll_rate); - _main_canvas->SetVirtualSize (*_pixels_per_second * film->length().seconds(), tracks() * pixels_per_track() + tracks_y_offset() + _time_axis_view->bbox().height); + _main_canvas->SetVirtualSize (*_pixels_per_second * film->length().seconds(), h); _main_canvas->SetScrollRate (_x_scroll_rate, _y_scroll_rate); } @@ -552,13 +556,14 @@ Timeline::left_up_zoom (wxMouseEvent& ev) DCPTime const time_right = DCPTime::from_seconds((bottom_right.x + vsx) / *_pixels_per_second); set_pixels_per_second (double(GetSize().GetWidth()) / (time_right.seconds() - time_left.seconds())); - double const tracks_top = double(top_left.y) / _pixels_per_track; - double const tracks_bottom = double(bottom_right.y) / _pixels_per_track; + double const tracks_top = double(top_left.y - tracks_y_offset()) / _pixels_per_track; + double const tracks_bottom = double(bottom_right.y - tracks_y_offset()) / _pixels_per_track; set_pixels_per_track (lrint(GetSize().GetHeight() / (tracks_bottom - tracks_top))); setup_scrollbars (); - _main_canvas->Scroll (time_left.seconds() * *_pixels_per_second / _x_scroll_rate, tracks_top * _pixels_per_track / _y_scroll_rate); - _labels_canvas->Scroll (0, tracks_top * _pixels_per_track / _y_scroll_rate); + int const y = (tracks_top * _pixels_per_track + tracks_y_offset()) / _y_scroll_rate; + _main_canvas->Scroll (time_left.seconds() * *_pixels_per_second / _x_scroll_rate, y); + _labels_canvas->Scroll (0, y); _zoom_point = optional<wxPoint> (); Refresh (); @@ -809,7 +814,7 @@ Timeline::scrolled (wxScrollWinEvent& ev) { if (ev.GetOrientation() == wxVERTICAL) { int x, y; - _main_canvas->GetViewState (&x, &y); + _main_canvas->GetViewStart (&x, &y); _labels_canvas->Scroll (0, y); } ev.Skip (); diff --git a/src/wx/timeline_labels_view.cc b/src/wx/timeline_labels_view.cc index 3d0b42651..43adfc936 100644 --- a/src/wx/timeline_labels_view.cc +++ b/src/wx/timeline_labels_view.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2016 Carl Hetherington <cth@carlh.net> + Copyright (C) 2016-2018 Carl Hetherington <cth@carlh.net> This file is part of DCP-o-matic. @@ -31,6 +31,7 @@ using std::max; TimelineLabelsView::TimelineLabelsView (Timeline& tl) : TimelineView (tl) , _threed (true) + , _audio_tracks (0) , _subtitle_tracks (0) , _atmos (true) { @@ -81,8 +82,10 @@ TimelineLabelsView::do_paint (wxGraphicsContext* gc, list<dcpomatic::Rect<int> > fy = ty; } - ty = _timeline.tracks() * h; - gc->DrawText (_("Audio"), 0, (ty + fy) / 2 - 8); + if (_audio_tracks) { + ty = _timeline.tracks() * h; + gc->DrawText (_("Audio"), 0, (ty + fy) / 2 - 8); + } } void @@ -92,6 +95,12 @@ TimelineLabelsView::set_3d (bool s) } void +TimelineLabelsView::set_audio_tracks (int n) +{ + _audio_tracks = n; +} + +void TimelineLabelsView::set_subtitle_tracks (int n) { _subtitle_tracks = n; diff --git a/src/wx/timeline_labels_view.h b/src/wx/timeline_labels_view.h index 90293768c..25302cc33 100644 --- a/src/wx/timeline_labels_view.h +++ b/src/wx/timeline_labels_view.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2016 Carl Hetherington <cth@carlh.net> + Copyright (C) 2016-2018 Carl Hetherington <cth@carlh.net> This file is part of DCP-o-matic. @@ -30,6 +30,7 @@ public: dcpomatic::Rect<int> bbox () const; void set_3d (bool s); + void set_audio_tracks (int n); void set_subtitle_tracks (int n); void set_atmos (bool s); @@ -38,6 +39,7 @@ private: int _width; bool _threed; + int _audio_tracks; int _subtitle_tracks; bool _atmos; }; |
