More zoom / timeline tidying.
authorCarl Hetherington <cth@carlh.net>
Wed, 4 Jul 2018 10:31:22 +0000 (11:31 +0100)
committerCarl Hetherington <cth@carlh.net>
Wed, 4 Jul 2018 10:31:22 +0000 (11:31 +0100)
src/wx/timeline.cc
src/wx/timeline_labels_view.cc
src/wx/timeline_labels_view.h

index ba528c007a12a0db4acd59e547bdf7ec4f41e71c..5babcfea14547c4eefb9aea87dbbc7598e7f98ab 100644 (file)
@@ -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 ();
index 3d0b4265173419e2cd55b9c6629ed355b4961edc..43adfc936a41820b1659ff38eb2c2a1554b4442f 100644 (file)
@@ -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
@@ -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)
 {
index 90293768c4364fcf2fc4565e493ef360e3ff1c5b..25302cc33eabb370f9b8ebc2dc82f49f8da3a721 100644 (file)
@@ -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;
 };