X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Ftimeline.h;h=2133a537dc72b3f76faacc3c3435224b8b65c273;hb=7bcf60f8ad3acd4dcae77a120216839b665c4335;hp=c8424541eb8eb226a7cd0b6e707107df901cbf4c;hpb=3828baf56467224f5d44049bf1e7a7ed11f43a05;p=dcpomatic.git diff --git a/src/wx/timeline.h b/src/wx/timeline.h index c8424541e..2133a537d 100644 --- a/src/wx/timeline.h +++ b/src/wx/timeline.h @@ -44,26 +44,18 @@ public: void force_redraw (dcpomatic::Rect const &); - int width () const { - return GetSize().GetWidth (); - } + int width () const; - int track_height () const { - return 48; + int pixels_per_track () const { + return _pixels_per_track; } boost::optional pixels_per_second () const { return _pixels_per_second; } - Position tracks_position () const { - return _tracks_position; - } - int tracks () const; - void setup_pixels_per_second (); - void set_snap (bool s) { _snap = s; } @@ -74,12 +66,29 @@ public: void set_selection (ContentList selection); + enum Tool { + SELECT, + ZOOM, + ZOOM_ALL + }; + + void tool_clicked (Tool t); + + int tracks_y_offset () const; + private: - void paint (); + void paint_labels (); + void paint_main (); void left_down (wxMouseEvent &); + void left_down_select (wxMouseEvent &); void left_up (wxMouseEvent &); + void left_up_select (wxMouseEvent &); + void left_up_zoom (wxMouseEvent &); void right_down (wxMouseEvent &); + void right_down_select (wxMouseEvent &); 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 resized (); @@ -87,12 +96,19 @@ private: void set_position_from_event (wxMouseEvent &); 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 (); boost::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; + wxScrolledCanvas* _labels_canvas; + wxScrolledCanvas* _main_canvas; ContentPanel* _content_panel; boost::weak_ptr _film; TimelineViewList _views; @@ -103,6 +119,7 @@ private: boost::optional _pixels_per_second; bool _left_down; wxPoint _down_point; + boost::optional _zoom_point; boost::shared_ptr _down_view; DCPTime _down_view_position; bool _first_move; @@ -110,7 +127,14 @@ private: bool _snap; std::list _start_snaps; std::list _end_snaps; - Position _tracks_position; + Tool _tool; + int _x_scroll_rate; + int _y_scroll_rate; + int _pixels_per_track; + bool _first_resize; + + 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;