Draw all automation points, rather than trying to use a heuristic to show some

at any given zoom level. 

This works because (1) automation data is obtained by sampling, and we control
the sampling interval (2) automation data is filtered to remove co-linear
points before becoming part of a ControlList. 

This commit removes some of the hairiest code in Ardour's GUI, which was
responsible for figuring out which invisible control points were affected by an
edit. The change is based on an experiment in mixbus done by Ben Loftis.


git-svn-id: svn://localhost/ardour2/branches/3.0@11798 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis 2012-04-05 16:53:55 +00:00
parent 8aa72a031a
commit 49240fe7c5
4 changed files with 125 additions and 382 deletions

View file

@ -174,18 +174,6 @@ class AutomationLine : public sigc::trackable, public PBD::StatefulDestructible
ArdourCanvas::Points line_points; /* coordinates for canvas line */
std::vector<ControlPoint*> control_points; /* visible control points */
struct ALPoint {
double x;
double y;
ALPoint (double xx, double yy) : x(xx), y(yy) {}
};
typedef std::vector<ALPoint> ALPoints;
static void invalidate_point (ALPoints&, uint32_t index);
static bool invalid_point (ALPoints&, uint32_t index);
void determine_visible_control_points (ALPoints &, int);
void sync_model_with_view_point (ControlPoint&, bool, int64_t);
void sync_model_with_view_points (std::list<ControlPoint*>, bool, int64_t);
void start_drag_common (double, float);
@ -216,21 +204,6 @@ class AutomationLine : public sigc::trackable, public PBD::StatefulDestructible
void connect_to_list ();
void interpolation_changed (ARDOUR::AutomationList::InterpolationStyle);
struct ModelRepresentation {
ARDOUR::AutomationList::iterator start;
ARDOUR::AutomationList::iterator end;
double xpos;
double ypos;
double xmin;
double ymin;
double xmax;
double ymax;
double xval;
double yval;
};
void model_representation (ControlPoint&, ModelRepresentation&);
PBD::ScopedConnectionList _list_connections;
/** maximum time that a point on this line can be at, relative to the position of its region or start of its track */