From ea8bceee9e9d2e43fe4e49067013295931687f96 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Wed, 4 Jul 2018 11:31:22 +0100 Subject: [PATCH] More zoom / timeline tidying. --- src/wx/timeline.cc | 21 +++++++++++++-------- src/wx/timeline_labels_view.cc | 15 ++++++++++++--- 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 (_views, _tracks); + int const audio_tracks = place (_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 (); 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 + Copyright (C) 2016-2018 Carl Hetherington 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 > 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 @@ -91,6 +94,12 @@ TimelineLabelsView::set_3d (bool s) _threed = s; } +void +TimelineLabelsView::set_audio_tracks (int n) +{ + _audio_tracks = n; +} + void TimelineLabelsView::set_subtitle_tracks (int 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 + Copyright (C) 2016-2018 Carl Hetherington This file is part of DCP-o-matic. @@ -30,6 +30,7 @@ public: dcpomatic::Rect 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; }; -- 2.30.2