summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2018-07-04 11:31:22 +0100
committerCarl Hetherington <cth@carlh.net>2018-07-04 11:31:22 +0100
commitea8bceee9e9d2e43fe4e49067013295931687f96 (patch)
tree8b833ecce73bfaf83ad7223d2c31ad1502195ce3 /src
parent9e065519743ff8eac63207552a97314febca24c7 (diff)
More zoom / timeline tidying.
Diffstat (limited to 'src')
-rw-r--r--src/wx/timeline.cc21
-rw-r--r--src/wx/timeline_labels_view.cc15
-rw-r--r--src/wx/timeline_labels_view.h4
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;
};