X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fautomation_line.h;h=76afff5097a43cf62ce7359ac4bd0d29de5637be;hb=185be4e841e182bbe7cb7820f9cb6371ebebe15d;hp=0567abba0541b2ed25dc6863e3e81eceb6a529e8;hpb=54a80321064aa543023cd0b224ba9d433520983f;p=ardour.git diff --git a/gtk2_ardour/automation_line.h b/gtk2_ardour/automation_line.h index 0567abba05..76afff5097 100644 --- a/gtk2_ardour/automation_line.h +++ b/gtk2_ardour/automation_line.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __ardour_automation_line_h__ @@ -26,12 +25,13 @@ #include #include -#include #include #include #include "canvas.h" #include "simplerect.h" + #include +#include #include @@ -95,10 +95,10 @@ class ControlPoint ShapeType _shape; }; -class AutomationLine : public sigc::trackable +class AutomationLine : public sigc::trackable, public PBD::StatefulThingWithGoingAway { public: - AutomationLine (string name, TimeAxisView&, ArdourCanvas::Group&, ARDOUR::AutomationList&); + AutomationLine (const string & name, TimeAxisView&, ArdourCanvas::Group&, ARDOUR::AutomationList&); virtual ~AutomationLine (); void queue_reset (); @@ -106,7 +106,7 @@ class AutomationLine : public sigc::trackable void clear(); void set_selected_points (PointSelection&); - void get_selectables (jack_nframes_t& start, jack_nframes_t& end, + void get_selectables (nframes_t& start, nframes_t& end, double botfrac, double topfrac, list& results); void get_inverted_selectables (Selection&, list& results); @@ -116,8 +116,8 @@ class AutomationLine : public sigc::trackable /* dragging API */ - virtual void start_drag (ControlPoint*, float fraction); - virtual void point_drag(ControlPoint&, jack_nframes_t x, float, bool with_push); + virtual void start_drag (ControlPoint*, nframes_t x, float fraction); + virtual void point_drag(ControlPoint&, nframes_t x, float, bool with_push); virtual void end_drag (ControlPoint*); virtual void line_drag(uint32_t i1, uint32_t i2, float, bool with_push); @@ -145,8 +145,6 @@ class AutomationLine : public sigc::trackable void show_selection(); void hide_selection (); - void set_point_size (double size); - virtual string get_verbose_cursor_string (float); virtual void view_to_model_y (double&) = 0; virtual void model_to_view_y (double&) = 0; @@ -159,7 +157,12 @@ class AutomationLine : public sigc::trackable bool is_last_point (ControlPoint &); bool is_first_point (ControlPoint &); + XMLNode& get_state (void); + int set_state (const XMLNode&); + void set_colors(); + protected: + string _name; guint32 _height; uint32_t _line_color; @@ -171,7 +174,8 @@ class AutomationLine : public sigc::trackable bool update_pending : 1; bool no_draw : 1; bool points_visible : 1; - + bool did_push; + ArdourCanvas::Group& _parent_group; ArdourCanvas::Group* group; ArdourCanvas::Line* line; /* line */ @@ -190,18 +194,14 @@ class AutomationLine : public sigc::trackable static bool invalid_point (ALPoints&, uint32_t index); void determine_visible_control_points (ALPoints&); - void sync_model_from (ControlPoint&); - void sync_model_with_view_point (ControlPoint&); + void sync_model_with_view_point (ControlPoint&, bool did_push, int64_t distance); void sync_model_with_view_line (uint32_t, uint32_t); - void modify_view (ControlPoint&, double, double, bool with_push); virtual void change_model (ARDOUR::AutomationList::iterator, double x, double y); virtual void change_model_range (ARDOUR::AutomationList::iterator,ARDOUR::AutomationList::iterator, double delta, float ydelta); void reset_callback (const ARDOUR::AutomationList&); - void list_changed (ARDOUR::Change); - - UndoAction get_memento(); + void list_changed (); virtual bool event_handler (GdkEvent*); @@ -211,21 +211,24 @@ class AutomationLine : public sigc::trackable double last_drag_fraction; uint32_t line_drag_cp1; uint32_t line_drag_cp2; + int64_t drag_x; + int64_t drag_distance; void modify_view_point(ControlPoint&, double, double, bool with_push); void reset_line_coords (ControlPoint&); - void update_line (); + + double control_point_box_size (); struct ModelRepresentation { ARDOUR::AutomationList::iterator start; ARDOUR::AutomationList::iterator end; - jack_nframes_t xpos; + nframes_t xpos; double ypos; - jack_nframes_t xmin; + nframes_t xmin; double ymin; - jack_nframes_t xmax; + nframes_t xmax; double ymax; - jack_nframes_t xval; + nframes_t xval; double yval; };