20 #ifndef __ardour_automation_line_h__
21 #define __ardour_automation_line_h__
26 #include <sys/types.h>
28 #include <sigc++/signal.h>
40 #include "canvas/types.h"
41 #include "canvas/container.h"
42 #include "canvas/poly_line.h"
66 ArdourCanvas::Item& parent,
88 virtual std::pair<double, float>
drag_motion (
double,
float,
bool,
bool with_push, uint32_t& final_index);
89 virtual void end_drag (
bool with_push, uint32_t final_index);
192 void move (
double dx,
double dy);
void interpolation_changed(ARDOUR::AutomationList::InterpolationStyle)
std::vector< CCP > contiguous_points
ArdourCanvas::Container & canvas_group() const
ArdourCanvas::Item & parent_group() const
bool control_points_adjacent(double xval, uint32_t &before, uint32_t &after)
uint32_t get_line_color() const
ControlPoint * nth(uint32_t)
void modify_point_y(ControlPoint &, double)
PBD::ScopedConnectionList _list_connections
double _last_drag_fraction
last y position of the drag, as a fraction
void add_visibility(VisibleAspects)
virtual void start_drag_single(ControlPoint *, double, float)
std::pair< ARDOUR::framepos_t, ARDOUR::framepos_t > get_point_x_range() const
virtual void end_drag(bool with_push, uint32_t final_index)
void view_to_model_coord(double &x, double &y) const
boost::shared_ptr< ARDOUR::AutomationList > the_list() const
Lists of selected things.
void model_to_view_coord_y(double &) const
Representation of the interface of the Editor class.
std::vector< ControlPoint * > control_points
int set_state(const XMLNode &, int version)
void move(double dx, double dy)
void set_uses_gain_mapping(bool yn)
void add_visible_control_point(uint32_t, uint32_t, double, double, ARDOUR::AutomationList::iterator, uint32_t)
void start_drag_common(double, float)
std::list< ControlPoint * > _push_points
additional points we are dragging if "push" is enabled
ArdourCanvas::Item & _parent_group
std::string fraction_to_relative_string(double, double) const
std::string get_verbose_cursor_relative_string(double, double) const
bool get_uses_gain_mapping() const
double control_point_box_size()
bool sync_model_with_view_points(std::list< ControlPoint * >)
const ARDOUR::ParameterDescriptor _desc
ARDOUR::framecnt_t maximum_time() const
ArdourCanvas::PolyLine * line
boost::shared_ptr< ContiguousControlPoints > CCP
virtual void remove_point(ControlPoint &)
bool _drag_had_movement
true if the drag has seen movement, otherwise false
void set_offset(ARDOUR::framecnt_t)
bool sync_model_with_view_point(ControlPoint &)
XMLNode & get_state(void)
virtual std::string get_verbose_cursor_string(double) const
ArdourCanvas::Container * group
virtual std::pair< double, float > drag_motion(double, float, bool, bool with_push, uint32_t &final_index)
framepos_t session_position(ARDOUR::AutomationList::const_iterator) const
virtual ~AutomationLine()
Evoral::TimeConverter< double, ARDOUR::framepos_t > * _time_converter
ARDOUR::framecnt_t _offset
void view_to_model_coord_y(double &) const
double clamp_dx(double dx)
void set_width(ARDOUR::framecnt_t)
virtual void start_drag_multiple(std::list< ControlPoint * >, float, XMLNode *)
double _drag_distance
total x movement of the drag, in canvas units
bool is_last_point(ControlPoint &)
double _drag_x
last x position of the drag, in units
std::string fraction_to_string(double) const
boost::shared_ptr< ARDOUR::AutomationList > alist
void model_to_view_coord(double &x, double &y) const
void reset_callback(const Evoral::ControlList &)
bool is_first_point(ControlPoint &)
AutomationLine(const std::string &name, TimeAxisView &tv, ArdourCanvas::Item &parent, boost::shared_ptr< ARDOUR::AutomationList > al, const ARDOUR::ParameterDescriptor &desc, Evoral::TimeConverter< double, ARDOUR::framepos_t > *converter=0)
virtual MementoCommandBinder< ARDOUR::AutomationList > * memento_command_binder()
void get_selectables(ARDOUR::framepos_t, ARDOUR::framepos_t, double, double, std::list< Selectable * > &)
const Evoral::TimeConverter< double, ARDOUR::framepos_t > & time_converter() const
void set_maximum_time(ARDOUR::framecnt_t)
EventList::const_iterator const_iterator
void get_inverted_selectables(Selection &, std::list< Selectable * > &results)
void set_line_color(uint32_t)
ArdourCanvas::Item & grab_item() const
virtual bool event_handler(GdkEvent *)
ARDOUR::framecnt_t _maximum_time
ContiguousControlPoints(AutomationLine &al)
double string_to_fraction(std::string const &) const
bool terminal_points_can_slide
void set_list(boost::shared_ptr< ARDOUR::AutomationList > list)
void remove_visibility(VisibleAspects)
ArdourCanvas::Points line_points
EventList::iterator iterator
void reset_line_coords(ControlPoint &)
virtual void start_drag_line(uint32_t, uint32_t, float)
void set_visibility(VisibleAspects)
void compute_x_bounds(PublicEditor &e)
void set_selected_points(PointSelection const &)
std::list< ControlPoint * > _drag_points
points we are dragging