#include <pbd/undo.h>
#include <pbd/statefuldestructible.h>
-#include <ardour/automation_event.h>
+#include <ardour/automation_list.h>
using std::vector;
}
}
-class ControlPoint
-{
- public:
- ControlPoint (AutomationLine& al);
- ControlPoint (const ControlPoint&, bool dummy_arg_to_force_special_copy_constructor);
- virtual ~ControlPoint ();
-
- enum ShapeType {
- Full,
- Start,
- End
- };
-
- void move_to (double x, double y, ShapeType);
- void reset (double x, double y, ARDOUR::AutomationList::iterator, uint32_t, ShapeType);
- double get_x() const { return _x; }
- double get_y() const { return _y; }
-
- void hide ();
- void show ();
- void show_color (bool entered, bool hide_too);
-
- void set_size (double);
- void set_visible (bool);
-
- ArdourCanvas::SimpleRect* item;
- AutomationLine& line;
- uint32_t view_index;
- ARDOUR::AutomationList::iterator model;
- bool can_slide;
- bool selected;
-
- protected:
- virtual bool event_handler (GdkEvent*);
-
- private:
- double _x;
- double _y;
- double _size;
- ShapeType _shape;
-};
-
class AutomationLine : public sigc::trackable, public PBD::StatefulThingWithGoingAway
{
public:
string name() const { return _name; }
bool visible() const { return _visible; }
guint32 height() const { return _height; }
- guint32 y_position() const { return _y_position; }
- void set_line_color (uint32_t);
+ void set_line_color (uint32_t);
uint32_t get_line_color() const { return _line_color; }
+ void set_interpolation(ARDOUR::AutomationList::InterpolationStyle style);
+
void show ();
void hide ();
- void set_y_position_and_height (uint32_t, uint32_t);
+ void set_height (guint32);
void set_verbose_cursor_uses_gain_mapping (bool yn);
TimeAxisView& trackview;
virtual void view_to_model_y (double&);
virtual void model_to_view_y (double&);
+ void set_list(boost::shared_ptr<ARDOUR::AutomationList> list);
boost::shared_ptr<ARDOUR::AutomationList> the_list() const { return alist; }
void show_all_control_points ();
void hide_all_but_selected_control_points ();
+ void track_entered();
+ void track_exited();
+
bool is_last_point (ControlPoint &);
bool is_first_point (ControlPoint &);
protected:
string _name;
- guint32 _y_position;
guint32 _height;
uint32_t _line_color;
boost::shared_ptr<ARDOUR::AutomationList> alist;
ArdourCanvas::Group& _parent_group;
ArdourCanvas::Group* group;
- ArdourCanvas::Line* line; /* line */
- ArdourCanvas::Points line_points; /* coordinates for canvas line */
+ ArdourCanvas::Line* line; /* line */
+ ArdourCanvas::Points line_points; /* coordinates for canvas line */
vector<ControlPoint*> control_points; /* visible control points */
struct ALPoint {
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 reset_callback (const Evoral::ControlList&);
void list_changed ();
virtual bool event_handler (GdkEvent*);
+ virtual void add_model_point (ALPoints& tmp_points, double frame, double yfract);
private:
uint32_t drags;
uint32_t line_drag_cp2;
int64_t drag_x;
int64_t drag_distance;
+
+ ARDOUR::AutomationList::InterpolationStyle _interpolation;
void modify_view_point(ControlPoint&, double, double, bool with_push);
void reset_line_coords (ControlPoint&);