diff options
Diffstat (limited to 'src/wx/timeline_view.h')
| -rw-r--r-- | src/wx/timeline_view.h | 42 |
1 files changed, 22 insertions, 20 deletions
diff --git a/src/wx/timeline_view.h b/src/wx/timeline_view.h index 166a1121a..32eedde09 100644 --- a/src/wx/timeline_view.h +++ b/src/wx/timeline_view.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2013-2021 Carl Hetherington <cth@carlh.net> + Copyright (C) 2023 Carl Hetherington <cth@carlh.net> This file is part of DCP-o-matic. @@ -28,40 +28,42 @@ class wxGraphicsContext; -class Timeline; -/** @class TimelineView - * @brief Parent class for components of the timeline (e.g. a piece of content or an axis). +/** @class ContentTimelineView + * @brief Parent class for components of the content timeline (e.g. a piece of content or an axis). */ +template <class Timeline> class TimelineView { public: - explicit TimelineView (Timeline& t); - virtual ~TimelineView () {} + explicit TimelineView(Timeline& timeline) + : _timeline(timeline) + {} - TimelineView (TimelineView const&) = delete; - TimelineView& operator= (TimelineView const&) = delete; + virtual ~TimelineView () = default; - void paint (wxGraphicsContext* g, std::list<dcpomatic::Rect<int>> overlaps); - void force_redraw (); + TimelineView(TimelineView const&) = delete; + TimelineView& operator=(TimelineView const&) = delete; - virtual dcpomatic::Rect<int> bbox () const = 0; + void force_redraw() + { + _timeline.force_redraw(_last_paint_bbox.extended(4)); + _timeline.force_redraw(bbox().extended(4)); + } -protected: - virtual void do_paint (wxGraphicsContext *, std::list<dcpomatic::Rect<int>> overlaps) = 0; + virtual dcpomatic::Rect<int> bbox() const = 0; - int time_x (dcpomatic::DCPTime t) const; - int y_pos(int t) const; +protected: + int time_x(dcpomatic::DCPTime t) const + { + return t.seconds() * _timeline.pixels_per_second().get_value_or(0); + } Timeline& _timeline; - -private: dcpomatic::Rect<int> _last_paint_bbox; }; -typedef std::vector<std::shared_ptr<TimelineView>> TimelineViewList; - - #endif + |
