X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Ftimeline_view.h;h=32eedde09e47765d45bb186c18e6e9f390b0f16b;hb=a3fcbb3a76e079a5485a0552ea5d35b8d6739116;hp=e52e28d471005e2f39dff41c695d994a1e5139d1;hpb=341f0a81591ab83b96069d6e6bb70cbf8e6cf878;p=dcpomatic.git diff --git a/src/wx/timeline_view.h b/src/wx/timeline_view.h index e52e28d47..32eedde09 100644 --- a/src/wx/timeline_view.h +++ b/src/wx/timeline_view.h @@ -1,57 +1,69 @@ /* - Copyright (C) 2013-2015 Carl Hetherington + Copyright (C) 2023 Carl Hetherington - This program is free software; you can redistribute it and/or modify + This file is part of DCP-o-matic. + + DCP-o-matic is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, + DCP-o-matic is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + along with DCP-o-matic. If not, see . */ + #ifndef DCPOMATIC_TIMELINE_VIEW_H #define DCPOMATIC_TIMELINE_VIEW_H + #include "lib/rect.h" #include "lib/dcpomatic_time.h" -#include + 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). */ -class TimelineView : public boost::noncopyable +template +class TimelineView { public: - TimelineView (Timeline& t); - virtual ~TimelineView () {} - - void paint (wxGraphicsContext* g); - void force_redraw (); + explicit TimelineView(Timeline& timeline) + : _timeline(timeline) + {} + + virtual ~TimelineView () = default; - virtual dcpomatic::Rect bbox () const = 0; + TimelineView(TimelineView const&) = delete; + TimelineView& operator=(TimelineView const&) = delete; + + void force_redraw() + { + _timeline.force_redraw(_last_paint_bbox.extended(4)); + _timeline.force_redraw(bbox().extended(4)); + } + + virtual dcpomatic::Rect bbox() const = 0; protected: - virtual void do_paint (wxGraphicsContext *) = 0; - - int time_x (DCPTime t) const; - - Timeline& _timeline; + int time_x(dcpomatic::DCPTime t) const + { + return t.seconds() * _timeline.pixels_per_second().get_value_or(0); + } -private: + Timeline& _timeline; dcpomatic::Rect _last_paint_bbox; }; -typedef std::vector > TimelineViewList; #endif +