X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Ftimeline.h;h=24c046a6a2faaabebb85400972fcb339ff0e36fe;hb=3c29aa6531a4046a8db72dcac81189eb8893233c;hp=1ec633085935bb0af1e4d07456de3a19a45651f9;hpb=c257dde2b276dd4cb416faf63fd50c0ff1ace953;p=dcpomatic.git diff --git a/src/wx/timeline.h b/src/wx/timeline.h index 1ec633085..24c046a6a 100644 --- a/src/wx/timeline.h +++ b/src/wx/timeline.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2013-2015 Carl Hetherington + Copyright (C) 2013-2019 Carl Hetherington This file is part of DCP-o-matic. @@ -20,34 +20,38 @@ #include "content_menu.h" #include "timeline_content_view.h" -#include "lib/util.h" -#include "lib/rect.h" #include "lib/film.h" +#include "lib/rect.h" +#include "lib/util.h" +#include +LIBDCP_DISABLE_WARNINGS #include -#include -#include +LIBDCP_ENABLE_WARNINGS #include -class Film; + class ContentPanel; -class TimelineView; -class TimelineTimeAxisView; -class TimelineReelsView; +class Film; +class FilmViewer; class TimelineLabelsView; +class TimelineReelsView; +class TimelineTimeAxisView; +class TimelineView; + class Timeline : public wxPanel { public: - Timeline (wxWindow *, ContentPanel *, boost::shared_ptr); + Timeline (wxWindow *, ContentPanel *, std::shared_ptr, std::weak_ptr viewer); - boost::shared_ptr film () const; + std::shared_ptr film () const; void force_redraw (dcpomatic::Rect const &); int width () const; - int track_height () const { - return _track_height; + int pixels_per_track () const { + return _pixels_per_track; } boost::optional pixels_per_second () const { @@ -68,12 +72,13 @@ public: enum Tool { SELECT, - ZOOM + ZOOM, + ZOOM_ALL, + SNAP, + SEQUENCE }; - void set_tool (Tool t) { - _tool = t; - } + void tool_clicked (Tool t); int tracks_y_offset () const; @@ -90,45 +95,56 @@ private: void mouse_moved (wxMouseEvent &); void mouse_moved_select (wxMouseEvent &); void mouse_moved_zoom (wxMouseEvent &); - void film_changed (Film::Property); - void film_content_changed (int, bool frequent); + void film_change (ChangeType type, Film::Property); + void film_content_change (ChangeType type, int, bool frequent); void resized (); void assign_tracks (); - void set_position_from_event (wxMouseEvent &); + void set_position_from_event (wxMouseEvent& ev, bool force_emit = false); void clear_selection (); void recreate_views (); void setup_scrollbars (); + void scrolled (wxScrollWinEvent& ev); + void set_pixels_per_second (double pps); + void set_pixels_per_track (int h); + void zoom_all (); + void update_playhead (); - boost::shared_ptr event_to_view (wxMouseEvent &); + std::shared_ptr event_to_view (wxMouseEvent &); TimelineContentViewList selected_views () const; ContentList selected_content () const; - void maybe_snap (DCPTime a, DCPTime b, boost::optional& nearest_distance) const; + void maybe_snap (dcpomatic::DCPTime a, dcpomatic::DCPTime b, boost::optional& nearest_distance) const; wxScrolledCanvas* _labels_canvas; wxScrolledCanvas* _main_canvas; ContentPanel* _content_panel; - boost::weak_ptr _film; + std::weak_ptr _film; + std::weak_ptr _viewer; TimelineViewList _views; - boost::shared_ptr _time_axis_view; - boost::shared_ptr _reels_view; - boost::shared_ptr _labels_view; + std::shared_ptr _time_axis_view; + std::shared_ptr _reels_view; + std::shared_ptr _labels_view; int _tracks; boost::optional _pixels_per_second; bool _left_down; wxPoint _down_point; boost::optional _zoom_point; - boost::shared_ptr _down_view; - DCPTime _down_view_position; + std::shared_ptr _down_view; + dcpomatic::DCPTime _down_view_position; bool _first_move; ContentMenu _menu; bool _snap; - std::list _start_snaps; - std::list _end_snaps; + std::list _start_snaps; + std::list _end_snaps; Tool _tool; int _x_scroll_rate; int _y_scroll_rate; - int _track_height; + int _pixels_per_track; + bool _first_resize; + wxTimer _timer; + + static double const _minimum_pixels_per_second; + static int const _minimum_pixels_per_track; boost::signals2::scoped_connection _film_changed_connection; - boost::signals2::scoped_connection _film_content_changed_connection; + boost::signals2::scoped_connection _film_content_change_connection; };