renaming: AutomationLineBase => AutomationLine, AutomationLine => EditorAutomationLine

This commit is contained in:
Paul Davis 2024-09-20 20:00:46 -06:00
parent 90c8726c6d
commit 56ce9c33c0
64 changed files with 1962 additions and 1962 deletions

View file

@ -43,7 +43,7 @@
#include "audio_clip_editor.h" #include "audio_clip_editor.h"
#include "audio_clock.h" #include "audio_clock.h"
#include "automation_line.h" #include "editor_automation_line.h"
#include "control_point.h" #include "control_point.h"
#include "editor.h" #include "editor.h"
#include "region_view.h" #include "region_view.h"

View file

@ -29,7 +29,7 @@
#include "ardour/session.h" #include "ardour/session.h"
#include "audio_clock.h" #include "audio_clock.h"
#include "automation_line.h" #include "editor_automation_line.h"
#include "control_point.h" #include "control_point.h"
#include "editor.h" #include "editor.h"
#include "region_view.h" #include "region_view.h"

View file

@ -29,7 +29,7 @@
#include "ardour/session.h" #include "ardour/session.h"
#include "audio_clock.h" #include "audio_clock.h"
#include "automation_line.h" #include "editor_automation_line.h"
#include "control_point.h" #include "control_point.h"
#include "editor.h" #include "editor.h"
#include "region_view.h" #include "region_view.h"

View file

@ -1301,13 +1301,13 @@ AudioRegionView::update_envelope_visibility ()
} }
if (trackview.editor().current_mouse_mode() == Editing::MouseDraw || trackview.editor().current_mouse_mode() == Editing::MouseContent ) { if (trackview.editor().current_mouse_mode() == Editing::MouseDraw || trackview.editor().current_mouse_mode() == Editing::MouseContent ) {
_fx_line->set_visibility (AutomationLine::VisibleAspects(AutomationLine::ControlPoints|AutomationLine::Line)); _fx_line->set_visibility (EditorAutomationLine::VisibleAspects(EditorAutomationLine::ControlPoints|EditorAutomationLine::Line));
_fx_line->canvas_group().raise_to_top (); _fx_line->canvas_group().raise_to_top ();
} else if (UIConfiguration::instance().get_show_region_gain() || trackview.editor().current_mouse_mode() == Editing::MouseRange ) { } else if (UIConfiguration::instance().get_show_region_gain() || trackview.editor().current_mouse_mode() == Editing::MouseRange ) {
_fx_line->set_visibility (AutomationLine::VisibleAspects(AutomationLine::Line)); _fx_line->set_visibility (EditorAutomationLine::VisibleAspects(EditorAutomationLine::Line));
_fx_line->canvas_group().raise_to_top (); _fx_line->canvas_group().raise_to_top ();
} else { } else {
_fx_line->set_visibility (AutomationLine::VisibleAspects(0)); _fx_line->set_visibility (EditorAutomationLine::VisibleAspects(0));
} }
} }

View file

@ -41,7 +41,7 @@
#include "line_merger.h" #include "line_merger.h"
#include "region_view.h" #include "region_view.h"
#include "time_axis_view_item.h" #include "time_axis_view_item.h"
#include "automation_line.h" #include "editor_automation_line.h"
#include "enums.h" #include "enums.h"
namespace ARDOUR { namespace ARDOUR {
@ -221,7 +221,7 @@ protected:
void transients_changed(); void transients_changed();
AutomationLine::VisibleAspects automation_line_visibility () const; EditorAutomationLine::VisibleAspects automation_line_visibility () const;
void redisplay (bool) {} void redisplay (bool) {}
private: private:

View file

@ -51,7 +51,7 @@
#include "ardour/panner_shell.h" #include "ardour/panner_shell.h"
#include "audio_time_axis.h" #include "audio_time_axis.h"
#include "automation_line.h" #include "editor_automation_line.h"
#include "enums.h" #include "enums.h"
#include "gui_thread.h" #include "gui_thread.h"
#include "automation_time_axis.h" #include "automation_time_axis.h"

View file

@ -58,7 +58,7 @@ class Selection;
class Selectable; class Selectable;
class RegionView; class RegionView;
class AudioRegionView; class AudioRegionView;
class AutomationLine; class EditorAutomationLine;
class AutomationGainLine; class AutomationGainLine;
class AutomationPanLine; class AutomationPanLine;
class TimeSelection; class TimeSelection;

View file

@ -35,7 +35,7 @@
#include "ardour/session.h" #include "ardour/session.h"
#include "audio_clock.h" #include "audio_clock.h"
#include "automation_line.h" #include "editor_automation_line.h"
#include "control_point.h" #include "control_point.h"
#include "editor.h" #include "editor.h"
#include "region_view.h" #include "region_view.h"

File diff suppressed because it is too large Load diff

View file

@ -23,8 +23,8 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/ */
#ifndef __ardour_automation_line_h__ #ifndef __gtk2_ardour_automation_line_base_h__
#define __ardour_automation_line_h__ #define __gtk2_ardour_automation_line_base_h__
#include <vector> #include <vector>
#include <list> #include <list>
@ -45,39 +45,220 @@
#include "canvas/container.h" #include "canvas/container.h"
#include "canvas/poly_line.h" #include "canvas/poly_line.h"
#include "automation_line_base.h" namespace ArdourCanvas {
class Rectangle;
}
class AutomationLine; class EditorAutomationLine;
class ControlPoint; class ControlPoint;
class PointSelection; class PointSelection;
class TimeAxisView; class TimeAxisView;
class AutomationTimeAxisView; class AutomationTimeAxisView;
class Selectable; class Selectable;
class Selection; class Selection;
class PublicEditor; class EditingContext;
/** A GUI representation of an ARDOUR::AutomationList */
/** A GUI representation of an ARDOUR::AutomationList within the main editor class AutomationLine : public sigc::trackable, public PBD::StatefulDestructible
* (i.e. in a TimeAxisView
*/
class AutomationLine : public AutomationLineBase
{ {
public: public:
enum VisibleAspects {
Line = 0x1,
ControlPoints = 0x2,
SelectedControlPoints = 0x4
};
AutomationLine (const std::string& name, AutomationLine (const std::string& name,
TimeAxisView& tv, EditingContext& ec,
ArdourCanvas::Item& parent, ArdourCanvas::Item& parent,
ArdourCanvas::Rectangle* drag_base,
std::shared_ptr<ARDOUR::AutomationList> al, std::shared_ptr<ARDOUR::AutomationList> al,
const ARDOUR::ParameterDescriptor& desc); const ARDOUR::ParameterDescriptor& desc);
virtual ~AutomationLine (); virtual ~AutomationLine ();
TimeAxisView& trackview; virtual Temporal::timepos_t get_origin () const;
ArdourCanvas::Rectangle* drag_base() const { return _drag_base; }
void queue_reset ();
void reset ();
void clear ();
void set_fill (bool f) { _fill = f; } // owner needs to call set_height
void set_selected_points (PointSelection const &);
void get_selectables (Temporal::timepos_t const &, Temporal::timepos_t const &, double, double, std::list<Selectable*>&);
void get_inverted_selectables (Selection&, std::list<Selectable*>& results);
virtual void remove_point (ControlPoint&);
bool control_points_adjacent (double xval, uint32_t& before, uint32_t& after);
/* dragging API */
virtual void start_drag_single (ControlPoint*, double, float);
virtual void start_drag_line (uint32_t, uint32_t, float);
virtual void start_drag_multiple (std::list<ControlPoint*>, float, XMLNode *);
virtual std::pair<float, float> drag_motion (Temporal::timecnt_t const &, float, bool, bool with_push, uint32_t& final_index);
virtual void end_drag (bool with_push, uint32_t final_index);
virtual void end_draw_merge () {}
ControlPoint* nth (uint32_t);
ControlPoint const * nth (uint32_t) const;
uint32_t npoints() const { return control_points.size(); }
std::string name() const { return _name; }
bool visible() const { return _visible != VisibleAspects(0); }
guint32 height() const { return _height; }
void set_line_color (std::string color, std::string mod = "");
uint32_t get_line_color() const;
void set_visibility (VisibleAspects);
void add_visibility (VisibleAspects);
void remove_visibility (VisibleAspects);
void hide ();
void set_height (guint32);
bool get_uses_gain_mapping () const;
void tempo_map_changed ();
ArdourCanvas::Container& canvas_group() const { return *group; }
ArdourCanvas::Item& parent_group() const { return _parent_group; }
ArdourCanvas::Item& grab_item() const { return *line; }
virtual std::string get_verbose_cursor_string (double) const;
std::string get_verbose_cursor_relative_string (double, double) const;
std::string fraction_to_string (double) const;
std::string delta_to_string (double) const;
double string_to_fraction (std::string const &) const;
void view_to_model_coord_y (double &) const;
double model_to_view_coord_y (double) const;
Temporal::timecnt_t model_to_view_coord_x (Temporal::timepos_t const &) const;
double compute_delta (double from, double to) const;
void apply_delta (double& val, double delta) const;
void set_list(std::shared_ptr<ARDOUR::AutomationList> list);
std::shared_ptr<ARDOUR::AutomationList> the_list() const { return alist; }
void track_entered();
void track_exited();
bool is_last_point (ControlPoint &);
bool is_first_point (ControlPoint &);
XMLNode& get_state () const;
int set_state (const XMLNode&, int version);
void set_colors();
void modify_points_y (std::vector<ControlPoint*> const&, double);
virtual MementoCommandBinder<ARDOUR::AutomationList>* memento_command_binder ();
std::pair<Temporal::timepos_t, Temporal::timepos_t> get_point_x_range () const;
void set_maximum_time (Temporal::timepos_t const &);
Temporal::timepos_t maximum_time () const {
return _maximum_time;
}
void set_offset (Temporal::timepos_t const &);
Temporal::timepos_t offset () { return _offset; }
void set_width (Temporal::timecnt_t const &);
Temporal::timepos_t session_position (Temporal::timepos_t const &) const;
void dump (std::ostream&) const;
double dt_to_dx (Temporal::timepos_t const &, Temporal::timecnt_t const &);
ARDOUR::ParameterDescriptor const & param() const { return _desc; }
EditingContext& editing_context() const { return _editing_context; }
protected: protected:
virtual bool event_handler (GdkEvent*);
std::string _name;
guint32 _height;
std::string _line_color;
std::string _line_color_mod;
uint32_t _view_index_offset;
std::shared_ptr<ARDOUR::AutomationList> alist;
VisibleAspects _visible;
bool terminal_points_can_slide;
bool update_pending;
bool have_reset_timeout;
bool no_draw;
bool _is_boolean;
/** true if we did a push at any point during the current drag */
bool did_push;
EditingContext& _editing_context;
ArdourCanvas::Item& _parent_group;
ArdourCanvas::Rectangle* _drag_base;
ArdourCanvas::Container* group;
ArdourCanvas::PolyLine* line; /* line */
ArdourCanvas::Points line_points; /* coordinates for canvas line */
std::vector<ControlPoint*> control_points; /* visible control points */
class ContiguousControlPoints : public std::list<ControlPoint*> {
public:
ContiguousControlPoints (AutomationLine& al);
Temporal::timecnt_t clamp_dt (Temporal::timecnt_t const & dx, Temporal::timepos_t const & region_limit);
void move (Temporal::timecnt_t const &, double dvalue);
void compute_x_bounds ();
private:
AutomationLine& line;
Temporal::timepos_t before_x;
Temporal::timepos_t after_x;
}; };
#endif /* __ardour_automation_line_h__ */ friend class ContiguousControlPoints;
typedef std::shared_ptr<ContiguousControlPoints> CCP;
std::vector<CCP> contiguous_points;
bool sync_model_with_view_point (ControlPoint&);
bool sync_model_with_view_points (std::list<ControlPoint*>);
void start_drag_common (double, float);
void reset_callback (const Evoral::ControlList&);
void list_changed ();
virtual bool event_handler (GdkEvent*) = 0;
private:
std::list<ControlPoint*> _drag_points; ///< points we are dragging
std::list<ControlPoint*> _push_points; ///< additional points we are dragging if "push" is enabled
bool _drag_had_movement; ///< true if the drag has seen movement, otherwise false
double _last_drag_fraction; ///< last y position of the drag, as a fraction
/** offset from the start of the automation list to the start of the line, so that
* a +ve offset means that the 0 on the line is at _offset in the list
*/
Temporal::timepos_t _offset;
bool is_stepped() const;
void update_visibility ();
void reset_line_coords (ControlPoint&);
void add_visible_control_point (uint32_t, uint32_t, double, double, ARDOUR::AutomationList::iterator, uint32_t);
double control_point_box_size ();
void connect_to_list ();
void interpolation_changed (ARDOUR::AutomationList::InterpolationStyle);
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 */
Temporal::timepos_t _maximum_time;
bool _fill;
const ARDOUR::ParameterDescriptor _desc;
friend class AudioRegionGainLine;
friend class RegionFxLine;
};
#endif /* __gtk2_ardour_automation_line_base_h__ */

File diff suppressed because it is too large Load diff

View file

@ -1,264 +0,0 @@
/*
* Copyright (C) 2005-2017 Paul Davis <paul@linuxaudiosystems.com>
* Copyright (C) 2005 Karsten Wiese <fzuuzf@googlemail.com>
* Copyright (C) 2005 Nick Mainsbridge <mainsbridge@gmail.com>
* Copyright (C) 2005 Taybin Rutkin <taybin@taybin.com>
* Copyright (C) 2006 Hans Fugal <hans@fugal.net>
* Copyright (C) 2007-2012 Carl Hetherington <carl@carlh.net>
* Copyright (C) 2007-2015 David Robillard <d@drobilla.net>
* Copyright (C) 2014-2017 Robin Gareus <robin@gareus.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifndef __gtk2_ardour_automation_line_base_h__
#define __gtk2_ardour_automation_line_base_h__
#include <vector>
#include <list>
#include <string>
#include <sys/types.h>
#include <sigc++/signal.h>
#include "pbd/undo.h"
#include "pbd/statefuldestructible.h"
#include "pbd/memento_command.h"
#include "ardour/automation_list.h"
#include "ardour/parameter_descriptor.h"
#include "ardour/types.h"
#include "canvas/types.h"
#include "canvas/container.h"
#include "canvas/poly_line.h"
namespace ArdourCanvas {
class Rectangle;
}
class AutomationLine;
class ControlPoint;
class PointSelection;
class TimeAxisView;
class AutomationTimeAxisView;
class Selectable;
class Selection;
class EditingContext;
/** A GUI representation of an ARDOUR::AutomationList */
class AutomationLineBase : public sigc::trackable, public PBD::StatefulDestructible
{
public:
enum VisibleAspects {
Line = 0x1,
ControlPoints = 0x2,
SelectedControlPoints = 0x4
};
AutomationLineBase (const std::string& name,
EditingContext& ec,
ArdourCanvas::Item& parent,
ArdourCanvas::Rectangle* drag_base,
std::shared_ptr<ARDOUR::AutomationList> al,
const ARDOUR::ParameterDescriptor& desc);
virtual ~AutomationLineBase ();
virtual Temporal::timepos_t get_origin () const;
ArdourCanvas::Rectangle* drag_base() const { return _drag_base; }
void queue_reset ();
void reset ();
void clear ();
void set_fill (bool f) { _fill = f; } // owner needs to call set_height
void set_selected_points (PointSelection const &);
void get_selectables (Temporal::timepos_t const &, Temporal::timepos_t const &, double, double, std::list<Selectable*>&);
void get_inverted_selectables (Selection&, std::list<Selectable*>& results);
virtual void remove_point (ControlPoint&);
bool control_points_adjacent (double xval, uint32_t& before, uint32_t& after);
/* dragging API */
virtual void start_drag_single (ControlPoint*, double, float);
virtual void start_drag_line (uint32_t, uint32_t, float);
virtual void start_drag_multiple (std::list<ControlPoint*>, float, XMLNode *);
virtual std::pair<float, float> drag_motion (Temporal::timecnt_t const &, float, bool, bool with_push, uint32_t& final_index);
virtual void end_drag (bool with_push, uint32_t final_index);
virtual void end_draw_merge () {}
ControlPoint* nth (uint32_t);
ControlPoint const * nth (uint32_t) const;
uint32_t npoints() const { return control_points.size(); }
std::string name() const { return _name; }
bool visible() const { return _visible != VisibleAspects(0); }
guint32 height() const { return _height; }
void set_line_color (std::string color, std::string mod = "");
uint32_t get_line_color() const;
void set_visibility (VisibleAspects);
void add_visibility (VisibleAspects);
void remove_visibility (VisibleAspects);
void hide ();
void set_height (guint32);
bool get_uses_gain_mapping () const;
void tempo_map_changed ();
ArdourCanvas::Container& canvas_group() const { return *group; }
ArdourCanvas::Item& parent_group() const { return _parent_group; }
ArdourCanvas::Item& grab_item() const { return *line; }
virtual std::string get_verbose_cursor_string (double) const;
std::string get_verbose_cursor_relative_string (double, double) const;
std::string fraction_to_string (double) const;
std::string delta_to_string (double) const;
double string_to_fraction (std::string const &) const;
void view_to_model_coord_y (double &) const;
double model_to_view_coord_y (double) const;
Temporal::timecnt_t model_to_view_coord_x (Temporal::timepos_t const &) const;
double compute_delta (double from, double to) const;
void apply_delta (double& val, double delta) const;
void set_list(std::shared_ptr<ARDOUR::AutomationList> list);
std::shared_ptr<ARDOUR::AutomationList> the_list() const { return alist; }
void track_entered();
void track_exited();
bool is_last_point (ControlPoint &);
bool is_first_point (ControlPoint &);
XMLNode& get_state () const;
int set_state (const XMLNode&, int version);
void set_colors();
void modify_points_y (std::vector<ControlPoint*> const&, double);
virtual MementoCommandBinder<ARDOUR::AutomationList>* memento_command_binder ();
std::pair<Temporal::timepos_t, Temporal::timepos_t> get_point_x_range () const;
void set_maximum_time (Temporal::timepos_t const &);
Temporal::timepos_t maximum_time () const {
return _maximum_time;
}
void set_offset (Temporal::timepos_t const &);
Temporal::timepos_t offset () { return _offset; }
void set_width (Temporal::timecnt_t const &);
Temporal::timepos_t session_position (Temporal::timepos_t const &) const;
void dump (std::ostream&) const;
double dt_to_dx (Temporal::timepos_t const &, Temporal::timecnt_t const &);
ARDOUR::ParameterDescriptor const & param() const { return _desc; }
EditingContext& editing_context() const { return _editing_context; }
protected:
std::string _name;
guint32 _height;
std::string _line_color;
std::string _line_color_mod;
uint32_t _view_index_offset;
std::shared_ptr<ARDOUR::AutomationList> alist;
VisibleAspects _visible;
bool terminal_points_can_slide;
bool update_pending;
bool have_reset_timeout;
bool no_draw;
bool _is_boolean;
/** true if we did a push at any point during the current drag */
bool did_push;
EditingContext& _editing_context;
ArdourCanvas::Item& _parent_group;
ArdourCanvas::Rectangle* _drag_base;
ArdourCanvas::Container* group;
ArdourCanvas::PolyLine* line; /* line */
ArdourCanvas::Points line_points; /* coordinates for canvas line */
std::vector<ControlPoint*> control_points; /* visible control points */
class ContiguousControlPoints : public std::list<ControlPoint*> {
public:
ContiguousControlPoints (AutomationLineBase& al);
Temporal::timecnt_t clamp_dt (Temporal::timecnt_t const & dx, Temporal::timepos_t const & region_limit);
void move (Temporal::timecnt_t const &, double dvalue);
void compute_x_bounds ();
private:
AutomationLineBase& line;
Temporal::timepos_t before_x;
Temporal::timepos_t after_x;
};
friend class ContiguousControlPoints;
typedef std::shared_ptr<ContiguousControlPoints> CCP;
std::vector<CCP> contiguous_points;
bool sync_model_with_view_point (ControlPoint&);
bool sync_model_with_view_points (std::list<ControlPoint*>);
void start_drag_common (double, float);
void reset_callback (const Evoral::ControlList&);
void list_changed ();
virtual bool event_handler (GdkEvent*) = 0;
private:
std::list<ControlPoint*> _drag_points; ///< points we are dragging
std::list<ControlPoint*> _push_points; ///< additional points we are dragging if "push" is enabled
bool _drag_had_movement; ///< true if the drag has seen movement, otherwise false
double _last_drag_fraction; ///< last y position of the drag, as a fraction
/** offset from the start of the automation list to the start of the line, so that
* a +ve offset means that the 0 on the line is at _offset in the list
*/
Temporal::timepos_t _offset;
bool is_stepped() const;
void update_visibility ();
void reset_line_coords (ControlPoint&);
void add_visible_control_point (uint32_t, uint32_t, double, double, ARDOUR::AutomationList::iterator, uint32_t);
double control_point_box_size ();
void connect_to_list ();
void interpolation_changed (ARDOUR::AutomationList::InterpolationStyle);
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 */
Temporal::timepos_t _maximum_time;
bool _fill;
const ARDOUR::ParameterDescriptor _desc;
friend class AudioRegionGainLine;
friend class RegionFxLine;
};
#endif /* __gtk2_ardour_automation_line_base_h__ */

View file

@ -96,14 +96,14 @@ AutomationRegionView::init (bool /*wfd*/)
void void
AutomationRegionView::create_line (std::shared_ptr<ARDOUR::AutomationList> list) AutomationRegionView::create_line (std::shared_ptr<ARDOUR::AutomationList> list)
{ {
_line = std::shared_ptr<AutomationLine> (new MidiAutomationLine( _line = std::shared_ptr<EditorAutomationLine> (new MidiAutomationLine(
ARDOUR::EventTypeMap::instance().to_symbol(list->parameter()), ARDOUR::EventTypeMap::instance().to_symbol(list->parameter()),
trackview, *get_canvas_group(), list, trackview, *get_canvas_group(), list,
std::dynamic_pointer_cast<ARDOUR::MidiRegion> (_region), std::dynamic_pointer_cast<ARDOUR::MidiRegion> (_region),
_parameter)); _parameter));
_line->set_colors(); _line->set_colors();
_line->set_height ((uint32_t)rint(trackview.current_height() - 2.5 - NAME_HIGHLIGHT_SIZE)); _line->set_height ((uint32_t)rint(trackview.current_height() - 2.5 - NAME_HIGHLIGHT_SIZE));
_line->set_visibility (AutomationLine::VisibleAspects (AutomationLine::Line|AutomationLine::ControlPoints)); _line->set_visibility (EditorAutomationLine::VisibleAspects (EditorAutomationLine::Line|EditorAutomationLine::ControlPoints));
_line->set_maximum_time (timepos_t (_region->length())); _line->set_maximum_time (timepos_t (_region->length()));
_line->set_offset (_region->start ()); _line->set_offset (_region->start ());
} }

View file

@ -25,7 +25,7 @@
#include "region_view.h" #include "region_view.h"
#include "automation_time_axis.h" #include "automation_time_axis.h"
#include "automation_line.h" #include "editor_automation_line.h"
#include "enums.h" #include "enums.h"
#include "line_merger.h" #include "line_merger.h"
@ -61,7 +61,7 @@ public:
inline AutomationTimeAxisView* automation_view() const inline AutomationTimeAxisView* automation_view() const
{ return dynamic_cast<AutomationTimeAxisView*>(&trackview); } { return dynamic_cast<AutomationTimeAxisView*>(&trackview); }
std::shared_ptr<AutomationLine> line() { return _line; } std::shared_ptr<EditorAutomationLine> line() { return _line; }
// We are a ghost. Meta ghosts? Crazy talk. // We are a ghost. Meta ghosts? Crazy talk.
virtual GhostRegion* add_ghost(TimeAxisView&) { return 0; } virtual GhostRegion* add_ghost(TimeAxisView&) { return 0; }
@ -91,7 +91,7 @@ protected:
private: private:
Evoral::Parameter _parameter; Evoral::Parameter _parameter;
std::shared_ptr<AutomationLine> _line; std::shared_ptr<EditorAutomationLine> _line;
PBD::ScopedConnection _mouse_mode_connection; PBD::ScopedConnection _mouse_mode_connection;
}; };

View file

@ -129,7 +129,7 @@ AutomationStreamView::add_region_view_internal (std::shared_ptr<Region> region,
/* setup automation state for this region */ /* setup automation state for this region */
if (_automation_view.parameter().type() != MidiVelocityAutomation) { if (_automation_view.parameter().type() != MidiVelocityAutomation) {
std::shared_ptr<AutomationLine> line = dynamic_cast<AutomationRegionView*>(region_view)->line (); std::shared_ptr<EditorAutomationLine> line = dynamic_cast<AutomationRegionView*>(region_view)->line ();
if (line && line->the_list()) { if (line && line->the_list()) {
line->the_list()->set_automation_state (automation_state ()); line->the_list()->set_automation_state (automation_state ());
} }
@ -209,7 +209,7 @@ AutomationStreamView::automation_state () const
return _pending_automation_state; return _pending_automation_state;
} }
std::shared_ptr<AutomationLine> line = ((AutomationRegionView*) region_views.front())->line (); std::shared_ptr<EditorAutomationLine> line = ((AutomationRegionView*) region_views.front())->line ();
if (!line || !line->the_list()) { if (!line || !line->the_list()) {
return Off; return Off;
} }
@ -289,10 +289,10 @@ AutomationStreamView::set_selected_points (PointSelection& ps)
} }
} }
list<std::shared_ptr<AutomationLineBase> > list<std::shared_ptr<AutomationLine> >
AutomationStreamView::get_lines () const AutomationStreamView::get_lines () const
{ {
list<std::shared_ptr<AutomationLineBase> > lines; list<std::shared_ptr<AutomationLine> > lines;
for (auto const & rv : region_views) { for (auto const & rv : region_views) {
AutomationRegionView* arv = dynamic_cast<AutomationRegionView*> (rv); AutomationRegionView* arv = dynamic_cast<AutomationRegionView*> (rv);

View file

@ -66,7 +66,7 @@ public:
void get_selectables (Temporal::timepos_t const &, Temporal::timepos_t const &, double, double, std::list<Selectable*> &, bool within = false); void get_selectables (Temporal::timepos_t const &, Temporal::timepos_t const &, double, double, std::list<Selectable*> &, bool within = false);
void set_selected_points (PointSelection &); void set_selected_points (PointSelection &);
std::list<std::shared_ptr<AutomationLineBase> > get_lines () const; std::list<std::shared_ptr<AutomationLine> > get_lines () const;
bool paste (Temporal::timepos_t const & pos, bool paste (Temporal::timepos_t const & pos,
unsigned paste_count, unsigned paste_count,

View file

@ -60,7 +60,7 @@
#include "gui_thread.h" #include "gui_thread.h"
#include "mergeable_line.h" #include "mergeable_line.h"
#include "route_time_axis.h" #include "route_time_axis.h"
#include "automation_line.h" #include "editor_automation_line.h"
#include "paste_context.h" #include "paste_context.h"
#include "public_editor.h" #include "public_editor.h"
#include "selection.h" #include "selection.h"
@ -340,8 +340,8 @@ AutomationTimeAxisView::add_contents (bool show_regions)
assert (_control); assert (_control);
std::shared_ptr<AutomationLine> line ( std::shared_ptr<EditorAutomationLine> line (
new AutomationLine ( new EditorAutomationLine (
ARDOUR::EventTypeMap::instance().to_symbol(_parameter), ARDOUR::EventTypeMap::instance().to_symbol(_parameter),
*this, *this,
*_canvas_display, *_canvas_display,
@ -987,7 +987,7 @@ AutomationTimeAxisView::clear_lines ()
} }
void void
AutomationTimeAxisView::add_line (std::shared_ptr<AutomationLine> line) AutomationTimeAxisView::add_line (std::shared_ptr<EditorAutomationLine> line)
{ {
if (_control && line) { if (_control && line) {
assert(line->the_list() == _control->list()); assert(line->the_list() == _control->list());
@ -1008,7 +1008,7 @@ AutomationTimeAxisView::add_line (std::shared_ptr<AutomationLine> line)
/* pick up the current state */ /* pick up the current state */
automation_state_changed (); automation_state_changed ();
line->add_visibility (AutomationLine::Line); line->add_visibility (EditorAutomationLine::Line);
} }
bool bool
@ -1084,10 +1084,10 @@ AutomationTimeAxisView::has_automation () const
return ( (_line && _line->npoints() > 0) || (_view && _view->has_automation()) ); return ( (_line && _line->npoints() > 0) || (_view && _view->has_automation()) );
} }
list<std::shared_ptr<AutomationLineBase> > list<std::shared_ptr<AutomationLine> >
AutomationTimeAxisView::lines () const AutomationTimeAxisView::lines () const
{ {
list<std::shared_ptr<AutomationLineBase> > lines; list<std::shared_ptr<AutomationLine> > lines;
if (_line) { if (_line) {
lines.push_back (_line); lines.push_back (_line);
@ -1167,7 +1167,7 @@ AutomationTimeAxisView::parse_state_id (
void void
AutomationTimeAxisView::cut_copy_clear (Selection& selection, CutCopyOp op) AutomationTimeAxisView::cut_copy_clear (Selection& selection, CutCopyOp op)
{ {
list<std::shared_ptr<AutomationLineBase> > lines; list<std::shared_ptr<AutomationLine> > lines;
if (_line) { if (_line) {
cut_copy_clear_one (*_line, selection, op); cut_copy_clear_one (*_line, selection, op);
@ -1179,7 +1179,7 @@ AutomationTimeAxisView::cut_copy_clear (Selection& selection, CutCopyOp op)
} }
void void
AutomationTimeAxisView::cut_copy_clear_one (AutomationLineBase& line, Selection& selection, CutCopyOp op) AutomationTimeAxisView::cut_copy_clear_one (AutomationLine& line, Selection& selection, CutCopyOp op)
{ {
std::shared_ptr<Evoral::ControlList> what_we_got; std::shared_ptr<Evoral::ControlList> what_we_got;
std::shared_ptr<AutomationList> alist (line.the_list()); std::shared_ptr<AutomationList> alist (line.the_list());

View file

@ -54,8 +54,8 @@ class PublicEditor;
class TimeSelection; class TimeSelection;
class RegionSelection; class RegionSelection;
class PointSelection; class PointSelection;
class AutomationLineBase;
class AutomationLine; class AutomationLine;
class EditorAutomationLine;
class Selection; class Selection;
class Selectable; class Selectable;
class AutomationStreamView; class AutomationStreamView;
@ -92,11 +92,11 @@ public:
void clear_lines (); void clear_lines ();
/** @return Our AutomationLine, if this view has one, or 0 if it uses AutomationRegionViews */ /** @return Our EditorAutomationLine, if this view has one, or 0 if it uses AutomationRegionViews */
std::shared_ptr<AutomationLine> line() { return _line; } std::shared_ptr<EditorAutomationLine> line() { return _line; }
/** @return All AutomationLines associated with this view */ /** @return All EditorAutomationLines associated with this view */
std::list<std::shared_ptr<AutomationLineBase> > lines () const; std::list<std::shared_ptr<AutomationLine> > lines () const;
AutomationStreamView* automation_view() const { return _view; } AutomationStreamView* automation_view() const { return _view; }
@ -167,7 +167,7 @@ protected:
Evoral::Parameter _parameter; Evoral::Parameter _parameter;
ArdourCanvas::Rectangle* _base_rect; ArdourCanvas::Rectangle* _base_rect;
std::shared_ptr<AutomationLine> _line; std::shared_ptr<EditorAutomationLine> _line;
std::string _name; std::string _name;
@ -194,7 +194,7 @@ protected:
bool _show_regions; bool _show_regions;
void add_line (std::shared_ptr<AutomationLine>); void add_line (std::shared_ptr<EditorAutomationLine>);
void clear_clicked (); void clear_clicked ();
void hide_clicked (); void hide_clicked ();
@ -203,7 +203,7 @@ protected:
void build_display_menu (); void build_display_menu ();
void cut_copy_clear_one (AutomationLineBase&, Selection&, Editing::CutCopyOp); void cut_copy_clear_one (AutomationLine&, Selection&, Editing::CutCopyOp);
bool paste_one (Temporal::timepos_t const &, unsigned, float times, const Selection&, ItemCounts& counts, bool greedy=false); bool paste_one (Temporal::timepos_t const &, unsigned, float times, const Selection&, ItemCounts& counts, bool greedy=false);
void route_going_away (); void route_going_away ();

View file

@ -19,7 +19,7 @@
*/ */
#include "control_point.h" #include "control_point.h"
#include "automation_line_base.h" #include "automation_line.h"
#include "public_editor.h" #include "public_editor.h"
#include "ui_config.h" #include "ui_config.h"
@ -33,7 +33,7 @@ using namespace PBD;
PBD::Signal1<void, ControlPoint *> ControlPoint::CatchDeletion; PBD::Signal1<void, ControlPoint *> ControlPoint::CatchDeletion;
ControlPoint::ControlPoint (AutomationLineBase& al) ControlPoint::ControlPoint (AutomationLine& al)
: _line (al) : _line (al)
{ {
_model = al.the_list()->end(); _model = al.the_list()->end();

View file

@ -29,7 +29,7 @@
#include "selectable.h" #include "selectable.h"
class AutomationLineBase; class AutomationLine;
class ControlPoint; class ControlPoint;
class PointSelection; class PointSelection;
class TimeAxisView; class TimeAxisView;
@ -46,7 +46,7 @@ namespace ArdourCanvas {
class ControlPoint : public Selectable class ControlPoint : public Selectable
{ {
public: public:
ControlPoint (AutomationLineBase& al); ControlPoint (AutomationLine& al);
ControlPoint (const ControlPoint&, bool dummy_arg_to_force_special_copy_constructor); ControlPoint (const ControlPoint&, bool dummy_arg_to_force_special_copy_constructor);
virtual ~ControlPoint (); virtual ~ControlPoint ();
@ -80,17 +80,17 @@ public:
ArdourCanvas::Item& item() const; ArdourCanvas::Item& item() const;
/* used from ~AutomationLine */ /* used from ~EditorAutomationLine */
void unset_item () { _item = 0 ; } void unset_item () { _item = 0 ; }
ARDOUR::AutomationList::iterator model() const { return _model; } ARDOUR::AutomationList::iterator model() const { return _model; }
AutomationLineBase& line() const { return _line; } AutomationLine& line() const { return _line; }
static PBD::Signal1<void, ControlPoint *> CatchDeletion; static PBD::Signal1<void, ControlPoint *> CatchDeletion;
private: private:
ArdourCanvas::Rectangle * _item; ArdourCanvas::Rectangle * _item;
AutomationLineBase& _line; AutomationLine& _line;
ARDOUR::AutomationList::iterator _model; ARDOUR::AutomationList::iterator _model;
uint32_t _view_index; uint32_t _view_index;
bool _can_slide; bool _can_slide;

View file

@ -21,7 +21,7 @@
#include "gtkmm2ext/gtk_ui.h" #include "gtkmm2ext/gtk_ui.h"
#include "automation_line_base.h" #include "automation_line.h"
#include "control_point.h" #include "control_point.h"
#include "control_point_dialog.h" #include "control_point_dialog.h"

View file

@ -34,7 +34,7 @@
#include "actions.h" #include "actions.h"
#include "ardour_ui.h" #include "ardour_ui.h"
#include "automation_line_base.h" #include "automation_line.h"
#include "control_point.h" #include "control_point.h"
#include "edit_note_dialog.h" #include "edit_note_dialog.h"
#include "editing_context.h" #include "editing_context.h"
@ -2656,7 +2656,7 @@ EditingContext::get_draw_length_as_beats (bool& success, timepos_t const & posit
void void
EditingContext::select_automation_line (GdkEventButton* event, ArdourCanvas::Item* item, ARDOUR::SelectionOperation op) EditingContext::select_automation_line (GdkEventButton* event, ArdourCanvas::Item* item, ARDOUR::SelectionOperation op)
{ {
AutomationLineBase* al = reinterpret_cast<AutomationLineBase*> (item->get_data ("line")); AutomationLine* al = reinterpret_cast<AutomationLine*> (item->get_data ("line"));
std::list<Selectable*> selectables; std::list<Selectable*> selectables;
double mx = event->x; double mx = event->x;
double my = event->y; double my = event->y;

View file

@ -109,7 +109,7 @@ class AudioClock;
class AudioRegionView; class AudioRegionView;
class AudioStreamView; class AudioStreamView;
class AudioTimeAxisView; class AudioTimeAxisView;
class AutomationLine; class EditorAutomationLine;
class AutomationSelection; class AutomationSelection;
class AutomationTimeAxisView; class AutomationTimeAxisView;
class BundleManager; class BundleManager;
@ -1494,7 +1494,7 @@ private:
bool canvas_control_point_event (GdkEvent* event,ArdourCanvas::Item*, ControlPoint*); bool canvas_control_point_event (GdkEvent* event,ArdourCanvas::Item*, ControlPoint*);
bool canvas_velocity_event (GdkEvent* event,ArdourCanvas::Item*); bool canvas_velocity_event (GdkEvent* event,ArdourCanvas::Item*);
bool canvas_velocity_base_event (GdkEvent* event,ArdourCanvas::Item*); bool canvas_velocity_base_event (GdkEvent* event,ArdourCanvas::Item*);
bool canvas_line_event (GdkEvent* event,ArdourCanvas::Item*, AutomationLine*); bool canvas_line_event (GdkEvent* event,ArdourCanvas::Item*, EditorAutomationLine*);
bool canvas_selection_rect_event (GdkEvent* event,ArdourCanvas::Item*, SelectionRect*); bool canvas_selection_rect_event (GdkEvent* event,ArdourCanvas::Item*, SelectionRect*);
bool canvas_selection_start_trim_event (GdkEvent* event,ArdourCanvas::Item*, SelectionRect*); bool canvas_selection_start_trim_event (GdkEvent* event,ArdourCanvas::Item*, SelectionRect*);
bool canvas_selection_end_trim_event (GdkEvent* event,ArdourCanvas::Item*, SelectionRect*); bool canvas_selection_end_trim_event (GdkEvent* event,ArdourCanvas::Item*, SelectionRect*);

View file

@ -0,0 +1,56 @@
/*
* Copyright (C) 2005-2017 Paul Davis <paul@linuxaudiosystems.com>
* Copyright (C) 2005 Karsten Wiese <fzuuzf@googlemail.com>
* Copyright (C) 2005 Taybin Rutkin <taybin@taybin.com>
* Copyright (C) 2006 Hans Fugal <hans@fugal.net>
* Copyright (C) 2007-2012 Carl Hetherington <carl@carlh.net>
* Copyright (C) 2007-2015 David Robillard <d@drobilla.net>
* Copyright (C) 2007 Doug McLain <doug@nostar.net>
* Copyright (C) 2013-2017 Robin Gareus <robin@gareus.org>
* Copyright (C) 2014-2016 Nick Mainsbridge <mainsbridge@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#include "editor_automation_line.h"
#include "public_editor.h"
#include "time_axis_view.h"
using namespace std;
using namespace ARDOUR;
/** @param converter A TimeConverter whose origin_b is the start time of the AutomationList in session samples.
* This will not be deleted by EditorAutomationLine.
*/
EditorAutomationLine::EditorAutomationLine (const string& name,
TimeAxisView& tv,
ArdourCanvas::Item& parent,
std::shared_ptr<AutomationList> al,
const ParameterDescriptor& desc)
: AutomationLine (name, tv.editor(), parent, nullptr, al, desc)
, trackview (tv)
{
line->set_data ("trackview", &trackview);
}
EditorAutomationLine::~EditorAutomationLine ()
{
}
bool
EditorAutomationLine::event_handler (GdkEvent* event)
{
return trackview.editor().canvas_line_event (event, line, this);
}

View file

@ -0,0 +1,83 @@
/*
* Copyright (C) 2005-2017 Paul Davis <paul@linuxaudiosystems.com>
* Copyright (C) 2005 Karsten Wiese <fzuuzf@googlemail.com>
* Copyright (C) 2005 Nick Mainsbridge <mainsbridge@gmail.com>
* Copyright (C) 2005 Taybin Rutkin <taybin@taybin.com>
* Copyright (C) 2006 Hans Fugal <hans@fugal.net>
* Copyright (C) 2007-2012 Carl Hetherington <carl@carlh.net>
* Copyright (C) 2007-2015 David Robillard <d@drobilla.net>
* Copyright (C) 2014-2017 Robin Gareus <robin@gareus.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifndef __ardour_automation_line_h__
#define __ardour_automation_line_h__
#include <vector>
#include <list>
#include <string>
#include <sys/types.h>
#include <sigc++/signal.h>
#include "pbd/undo.h"
#include "pbd/statefuldestructible.h"
#include "pbd/memento_command.h"
#include "ardour/automation_list.h"
#include "ardour/parameter_descriptor.h"
#include "ardour/types.h"
#include "canvas/types.h"
#include "canvas/container.h"
#include "canvas/poly_line.h"
#include "automation_line.h"
class AutomationLine;
class ControlPoint;
class PointSelection;
class TimeAxisView;
class AutomationTimeAxisView;
class Selectable;
class Selection;
class PublicEditor;
/** A GUI representation of an ARDOUR::AutomationList within the main editor
* (i.e. in a TimeAxisView
*/
class EditorAutomationLine : public AutomationLine
{
public:
EditorAutomationLine (const std::string& name,
TimeAxisView& tv,
ArdourCanvas::Item& parent,
std::shared_ptr<ARDOUR::AutomationList> al,
const ARDOUR::ParameterDescriptor& desc);
virtual ~EditorAutomationLine ();
TimeAxisView& trackview;
protected:
virtual bool event_handler (GdkEvent*);
};
#endif /* __ardour_automation_line_h__ */

View file

@ -1262,7 +1262,7 @@ Editor::which_canvas_cursor(ItemType type) const
case GainLineItem: case GainLineItem:
cursor = _cursors->cross_hair; cursor = _cursors->cross_hair;
break; break;
case AutomationLineItem: case EditorAutomationLineItem:
cursor = _cursors->cross_hair; cursor = _cursors->cross_hair;
break; break;
case StartSelectionTrimItem: case StartSelectionTrimItem:
@ -1431,7 +1431,7 @@ Editor::enter_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_
} }
break; break;
case AutomationLineItem: case EditorAutomationLineItem:
if (mouse_mode == MouseDraw || mouse_mode == MouseObject) { if (mouse_mode == MouseDraw || mouse_mode == MouseObject) {
ArdourCanvas::Line *line = dynamic_cast<ArdourCanvas::Line *> (item); ArdourCanvas::Line *line = dynamic_cast<ArdourCanvas::Line *> (item);
if (line) { if (line) {
@ -1523,7 +1523,7 @@ Editor::enter_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_
switch (item_type) { switch (item_type) {
case GainLineItem: case GainLineItem:
case AutomationLineItem: case EditorAutomationLineItem:
case ControlPointItem: case ControlPointItem:
/* these do not affect the current entered track state */ /* these do not affect the current entered track state */
clear_entered_track = false; clear_entered_track = false;
@ -1544,7 +1544,7 @@ Editor::enter_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_
bool bool
Editor::leave_handler (ArdourCanvas::Item* item, GdkEvent*, ItemType item_type) Editor::leave_handler (ArdourCanvas::Item* item, GdkEvent*, ItemType item_type)
{ {
AutomationLine* al; EditorAutomationLine* al;
ArdourMarker *marker; ArdourMarker *marker;
TempoMarker *t_marker; TempoMarker *t_marker;
MeterMarker *m_marker; MeterMarker *m_marker;
@ -1563,8 +1563,8 @@ Editor::leave_handler (ArdourCanvas::Item* item, GdkEvent*, ItemType item_type)
break; break;
case GainLineItem: case GainLineItem:
case AutomationLineItem: case EditorAutomationLineItem:
al = reinterpret_cast<AutomationLine*> (item->get_data ("line")); al = reinterpret_cast<EditorAutomationLine*> (item->get_data ("line"));
{ {
ArdourCanvas::Line *line = dynamic_cast<ArdourCanvas::Line *> (item); ArdourCanvas::Line *line = dynamic_cast<ArdourCanvas::Line *> (item);
if (line) { if (line) {

View file

@ -47,9 +47,9 @@
#include "audio_streamview.h" #include "audio_streamview.h"
#include "audio_time_axis.h" #include "audio_time_axis.h"
#include "region_gain_line.h" #include "region_gain_line.h"
#include "automation_line.h" #include "editor_automation_line.h"
#include "automation_time_axis.h" #include "automation_time_axis.h"
#include "automation_line.h" #include "editor_automation_line.h"
#include "control_point.h" #include "control_point.h"
#include "editor_drag.h" #include "editor_drag.h"
#include "midi_time_axis.h" #include "midi_time_axis.h"
@ -636,7 +636,7 @@ Editor::canvas_control_point_event (GdkEvent *event, ArdourCanvas::Item* item, C
case GDK_2BUTTON_PRESS: case GDK_2BUTTON_PRESS:
case GDK_3BUTTON_PRESS: case GDK_3BUTTON_PRESS:
clicked_control_point = cp; clicked_control_point = cp;
clicked_axisview = &dynamic_cast<AutomationLine*> (&cp->line())->trackview; clicked_axisview = &dynamic_cast<EditorAutomationLine*> (&cp->line())->trackview;
clicked_routeview = dynamic_cast<RouteTimeAxisView*>(clicked_axisview); clicked_routeview = dynamic_cast<RouteTimeAxisView*>(clicked_axisview);
clicked_regionview = 0; clicked_regionview = 0;
break; break;
@ -660,7 +660,7 @@ Editor::canvas_velocity_base_event (GdkEvent *event, ArdourCanvas::Item* item)
} }
bool bool
Editor::canvas_line_event (GdkEvent *event, ArdourCanvas::Item* item, AutomationLine* al) Editor::canvas_line_event (GdkEvent *event, ArdourCanvas::Item* item, EditorAutomationLine* al)
{ {
ItemType type; ItemType type;
RegionFxLine* rfl; RegionFxLine* rfl;
@ -670,7 +670,7 @@ Editor::canvas_line_event (GdkEvent *event, ArdourCanvas::Item* item, Automation
clicked_regionview = &rfl->region_view (); clicked_regionview = &rfl->region_view ();
} }
} else { } else {
type = AutomationLineItem; type = EditorAutomationLineItem;
if (event->type == GDK_BUTTON_PRESS) { if (event->type == GDK_BUTTON_PRESS) {
clicked_regionview = 0; clicked_regionview = 0;
} }

View file

@ -4935,7 +4935,7 @@ ControlPointDrag::active (Editing::MouseMode m)
} }
/* otherwise active if the point is on an automation line (ie not if its on a region gain line) */ /* otherwise active if the point is on an automation line (ie not if its on a region gain line) */
return dynamic_cast<AutomationLineBase*> (&(_point->line ())) != 0; return dynamic_cast<AutomationLine*> (&(_point->line ())) != 0;
} }
LineDrag::LineDrag (Editor& e, ArdourCanvas::Item* i) LineDrag::LineDrag (Editor& e, ArdourCanvas::Item* i)
@ -4962,7 +4962,7 @@ LineDrag::~LineDrag ()
void void
LineDrag::start_grab (GdkEvent* event, Gdk::Cursor* /*cursor*/) LineDrag::start_grab (GdkEvent* event, Gdk::Cursor* /*cursor*/)
{ {
_line = reinterpret_cast<AutomationLineBase*> (_item->get_data ("line")); _line = reinterpret_cast<AutomationLine*> (_item->get_data ("line"));
assert (_line); assert (_line);
_item = &_line->grab_item (); _item = &_line->grab_item ();
@ -6399,7 +6399,7 @@ AutomationRangeDrag::AutomationRangeDrag (EditingContext& ec, list<RegionView*>
{ {
DEBUG_TRACE (DEBUG::Drags, "New AutomationRangeDrag\n"); DEBUG_TRACE (DEBUG::Drags, "New AutomationRangeDrag\n");
list<std::shared_ptr<AutomationLineBase>> lines; list<std::shared_ptr<AutomationLine>> lines;
for (list<RegionView*>::const_iterator i = v.begin (); i != v.end (); ++i) { for (list<RegionView*>::const_iterator i = v.begin (); i != v.end (); ++i) {
if (AudioRegionView* audio_view = dynamic_cast<AudioRegionView*> (*i)) { if (AudioRegionView* audio_view = dynamic_cast<AudioRegionView*> (*i)) {
@ -6414,16 +6414,16 @@ AutomationRangeDrag::AutomationRangeDrag (EditingContext& ec, list<RegionView*>
setup (lines); setup (lines);
} }
/** @param lines AutomationLines to drag. /** @param lines EditorAutomationLines to drag.
* @param offset Offset from the session start to the points in the AutomationLines. * @param offset Offset from the session start to the points in the EditorAutomationLines.
*/ */
void void
AutomationRangeDrag::setup (list<std::shared_ptr<AutomationLineBase>> const& lines) AutomationRangeDrag::setup (list<std::shared_ptr<AutomationLine>> const& lines)
{ {
/* find the lines that overlap the ranges being dragged */ /* find the lines that overlap the ranges being dragged */
list<std::shared_ptr<AutomationLineBase>>::const_iterator i = lines.begin (); list<std::shared_ptr<AutomationLine>>::const_iterator i = lines.begin ();
while (i != lines.end ()) { while (i != lines.end ()) {
list<std::shared_ptr<AutomationLineBase>>::const_iterator j = i; list<std::shared_ptr<AutomationLine>>::const_iterator j = i;
++j; ++j;
pair<timepos_t, timepos_t> r = (*i)->get_point_x_range (); pair<timepos_t, timepos_t> r = (*i)->get_point_x_range ();
@ -6458,7 +6458,7 @@ AutomationRangeDrag::setup (list<std::shared_ptr<AutomationLineBase>> const& lin
i = j; i = j;
} }
/* Now ::lines contains the AutomationLines that somehow overlap our drag */ /* Now ::lines contains the EditorAutomationLines that somehow overlap our drag */
} }
double double
@ -7306,7 +7306,7 @@ FreehandLineDrag<OrderedPointList,OrderedPoint>::motion (GdkEvent* ev, bool firs
dragging_line = new ArdourCanvas::PolyLine (parent ? parent : item()); dragging_line = new ArdourCanvas::PolyLine (parent ? parent : item());
dragging_line->set_ignore_events (true); dragging_line->set_ignore_events (true);
dragging_line->set_outline_width (2.0); dragging_line->set_outline_width (2.0);
dragging_line->set_outline_color (UIConfiguration::instance().color ("automation line")); // XXX -> get color from AutomationLine dragging_line->set_outline_color (UIConfiguration::instance().color ("automation line")); // XXX -> get color from EditorAutomationLine
dragging_line->raise_to_top (); dragging_line->raise_to_top ();
/* for freehand drawing, we only support left->right direction, for now. */ /* for freehand drawing, we only support left->right direction, for now. */

View file

@ -84,7 +84,7 @@ class TempoMarker;
class TempoCurve; class TempoCurve;
class ControlPoint; class ControlPoint;
class AudioRegionView; class AudioRegionView;
class AutomationLineBase; class AutomationLine;
class AutomationTimeAxisView; class AutomationTimeAxisView;
class VelocityDisplay; class VelocityDisplay;
@ -1250,7 +1250,7 @@ public:
private: private:
AutomationLineBase* _line; AutomationLine* _line;
double _fixed_grab_x; double _fixed_grab_x;
double _fixed_grab_y; double _fixed_grab_y;
double _cumulative_y_drag; double _cumulative_y_drag;
@ -1487,7 +1487,7 @@ public:
} }
private: private:
void setup (std::list<std::shared_ptr<AutomationLineBase> > const &); void setup (std::list<std::shared_ptr<AutomationLine> > const &);
double y_fraction (double global_y_position) const; double y_fraction (double global_y_position) const;
double value (std::shared_ptr<ARDOUR::AutomationList> list, Temporal::timepos_t const & x) const; double value (std::shared_ptr<ARDOUR::AutomationList> list, Temporal::timepos_t const & x) const;
@ -1495,7 +1495,7 @@ private:
/** A line that is part of the drag */ /** A line that is part of the drag */
struct Line { struct Line {
std::shared_ptr<AutomationLineBase> line; ///< the line std::shared_ptr<AutomationLine> line; ///< the line
std::list<ControlPoint*> points; ///< points to drag on the line std::list<ControlPoint*> points; ///< points to drag on the line
std::pair<Temporal::timepos_t, Temporal::timepos_t> range; ///< the range of all points on the line, in session time std::pair<Temporal::timepos_t, Temporal::timepos_t> range; ///< the range of all points on the line, in session time
XMLNode* state; ///< the XML state node before the drag XMLNode* state; ///< the XML state node before the drag

View file

@ -35,7 +35,7 @@ enum ItemType {
SelectionItem, SelectionItem,
ControlPointItem, ControlPointItem,
GainLineItem, GainLineItem,
AutomationLineItem, EditorAutomationLineItem,
MeterMarkerItem, MeterMarkerItem,
BBTMarkerItem, BBTMarkerItem,
TempoCurveItem, TempoCurveItem,

View file

@ -516,7 +516,7 @@ Editor::button_selection (ArdourCanvas::Item* item, GdkEvent* event, ItemType it
case GainLineItem: case GainLineItem:
if (eff_mouse_mode != MouseRange) { if (eff_mouse_mode != MouseRange) {
AutomationLine* argl = reinterpret_cast<AutomationLine*> (item->get_data ("line")); EditorAutomationLine* argl = reinterpret_cast<EditorAutomationLine*> (item->get_data ("line"));
std::list<Selectable*> selectables; std::list<Selectable*> selectables;
uint32_t before, after; uint32_t before, after;
@ -559,7 +559,7 @@ Editor::button_selection (ArdourCanvas::Item* item, GdkEvent* event, ItemType it
} }
break; break;
case AutomationLineItem: case EditorAutomationLineItem:
if (eff_mouse_mode != MouseRange && eff_mouse_mode != MouseDraw) { if (eff_mouse_mode != MouseRange && eff_mouse_mode != MouseDraw) {
select_automation_line (&event->button, item, op); select_automation_line (&event->button, item, op);
} }
@ -857,7 +857,7 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT
return true; return true;
break; break;
case AutomationLineItem: case EditorAutomationLineItem:
_drags->set (new LineDrag (*this, item), event); _drags->set (new LineDrag (*this, item), event);
return true; return true;
break; break;
@ -998,7 +998,7 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT
return true; return true;
break; break;
case AutomationLineItem: case EditorAutomationLineItem:
_drags->set (new LineDrag (*this, item), event); _drags->set (new LineDrag (*this, item), event);
return true; return true;
break; break;
@ -1158,7 +1158,7 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT
break; break;
} }
case AutomationLineItem: case EditorAutomationLineItem:
/* fallthrough */ /* fallthrough */
case AutomationTrackItem: case AutomationTrackItem:
{ {
@ -1640,7 +1640,7 @@ Editor::button_release_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemT
case PlayheadCursorItem: case PlayheadCursorItem:
case MarkerItem: case MarkerItem:
case GainLineItem: case GainLineItem:
case AutomationLineItem: case EditorAutomationLineItem:
case StartSelectionTrimItem: case StartSelectionTrimItem:
case EndSelectionTrimItem: case EndSelectionTrimItem:
case SelectionMarkerItem: case SelectionMarkerItem:
@ -1918,7 +1918,7 @@ Editor::can_remove_control_point (ArdourCanvas::Item* item)
abort(); /*NOTREACHED*/ abort(); /*NOTREACHED*/
} }
AutomationLineBase& line (control_point->line()); AutomationLine& line (control_point->line());
if (dynamic_cast<RegionFxLine*> (&line)) { if (dynamic_cast<RegionFxLine*> (&line)) {
/* we shouldn't remove the first or last gain point in region gain lines */ /* we shouldn't remove the first or last gain point in region gain lines */
if (line.is_last_point(*control_point) || line.is_first_point(*control_point)) { if (line.is_last_point(*control_point) || line.is_first_point(*control_point)) {

View file

@ -89,7 +89,7 @@
#include "audio_region_view.h" #include "audio_region_view.h"
#include "audio_streamview.h" #include "audio_streamview.h"
#include "audio_time_axis.h" #include "audio_time_axis.h"
#include "automation_line_base.h" #include "automation_line.h"
#include "automation_time_axis.h" #include "automation_time_axis.h"
#include "control_point.h" #include "control_point.h"
#include "debug.h" #include "debug.h"
@ -4817,10 +4817,10 @@ Editor::cut_copy (CutCopyOp op)
struct AutomationRecord { struct AutomationRecord {
AutomationRecord () : state (0) , line (nullptr) {} AutomationRecord () : state (0) , line (nullptr) {}
AutomationRecord (XMLNode* s, const AutomationLineBase* l) : state (s) , line (l) {} AutomationRecord (XMLNode* s, const AutomationLine* l) : state (s) , line (l) {}
XMLNode* state; ///< state before any operation XMLNode* state; ///< state before any operation
const AutomationLineBase* line; ///< line this came from const AutomationLine* line; ///< line this came from
std::shared_ptr<Evoral::ControlList> copy; ///< copied events for the cut buffer std::shared_ptr<Evoral::ControlList> copy; ///< copied events for the cut buffer
}; };
@ -4843,7 +4843,7 @@ Editor::cut_copy_points (Editing::CutCopyOp op, timepos_t const & earliest_time)
timepos_t earliest (earliest_time); timepos_t earliest (earliest_time);
/* XXX: not ideal, as there may be more than one track involved in the point selection */ /* XXX: not ideal, as there may be more than one track involved in the point selection */
AutomationLine* line = dynamic_cast<AutomationLine*> (&selection->points.front()->line()); EditorAutomationLine* line = dynamic_cast<EditorAutomationLine*> (&selection->points.front()->line());
assert (line); assert (line);
_last_cut_copy_source_track = &line->trackview; _last_cut_copy_source_track = &line->trackview;
@ -4856,7 +4856,7 @@ Editor::cut_copy_points (Editing::CutCopyOp op, timepos_t const & earliest_time)
/* Go through all selected points, making an AutomationRecord for each distinct AutomationList */ /* Go through all selected points, making an AutomationRecord for each distinct AutomationList */
for (auto & selected_point : selection->points) { for (auto & selected_point : selection->points) {
const AutomationLineBase& line (selected_point->line()); const AutomationLine& line (selected_point->line());
const std::shared_ptr<AutomationList> al = line.the_list(); const std::shared_ptr<AutomationList> al = line.the_list();
if (lists.find (al) == lists.end ()) { if (lists.find (al) == lists.end ()) {
/* We haven't seen this list yet, so make a record for it. This includes /* We haven't seen this list yet, so make a record for it. This includes
@ -4909,7 +4909,7 @@ Editor::cut_copy_points (Editing::CutCopyOp op, timepos_t const & earliest_time)
/* Remove each selected point from its AutomationList */ /* Remove each selected point from its AutomationList */
for (auto & selected_point : selection->points) { for (auto & selected_point : selection->points) {
AutomationLineBase& line (selected_point->line ()); AutomationLine& line (selected_point->line ());
std::shared_ptr<AutomationList> al = line.the_list(); std::shared_ptr<AutomationList> al = line.the_list();
bool erase = true; bool erase = true;

View file

@ -45,7 +45,7 @@
#include "audio_time_axis.h" #include "audio_time_axis.h"
#include "audio_region_view.h" #include "audio_region_view.h"
#include "audio_streamview.h" #include "audio_streamview.h"
#include "automation_line.h" #include "editor_automation_line.h"
#include "control_point.h" #include "control_point.h"
#include "editor_regions.h" #include "editor_regions.h"
#include "editor_cursors.h" #include "editor_cursors.h"

View file

@ -160,7 +160,7 @@ setup_gtk_ardour_enums ()
REGISTER_ENUM (SelectionItem); REGISTER_ENUM (SelectionItem);
REGISTER_ENUM (ControlPointItem); REGISTER_ENUM (ControlPointItem);
REGISTER_ENUM (GainLineItem); REGISTER_ENUM (GainLineItem);
REGISTER_ENUM (AutomationLineItem); REGISTER_ENUM (EditorAutomationLineItem);
REGISTER_ENUM (MeterMarkerItem); REGISTER_ENUM (MeterMarkerItem);
REGISTER_ENUM (TempoCurveItem); REGISTER_ENUM (TempoCurveItem);
REGISTER_ENUM (TempoMarkerItem); REGISTER_ENUM (TempoMarkerItem);

View file

@ -20,7 +20,7 @@
#include "ardour/session.h" #include "ardour/session.h"
#include "automation_line.h" #include "editor_automation_line.h"
#include "editing_context.h" #include "editing_context.h"
#include "mergeable_line.h" #include "mergeable_line.h"
#include "route_time_axis.h" #include "route_time_axis.h"

View file

@ -26,7 +26,7 @@
#include "ardour/types.h" #include "ardour/types.h"
class AutomationLine; class EditorAutomationLine;
class RouteTimeAxisView; class RouteTimeAxisView;
class EditingContext; class EditingContext;
@ -38,7 +38,7 @@ class AutomationControl;
class MergeableLine class MergeableLine
{ {
public: public:
MergeableLine (std::shared_ptr<AutomationLine> l, std::shared_ptr<ARDOUR::AutomationControl> c, MergeableLine (std::shared_ptr<EditorAutomationLine> l, std::shared_ptr<ARDOUR::AutomationControl> c,
std::function<Temporal::timepos_t(Temporal::timepos_t const &)> tf, std::function<Temporal::timepos_t(Temporal::timepos_t const &)> tf,
std::function<void(ARDOUR::AutoState)> asc, std::function<void(ARDOUR::AutoState)> asc,
std::function<void()> ctc) std::function<void()> ctc)
@ -53,7 +53,7 @@ class MergeableLine
void merge_drawn_line (EditingContext& e, ARDOUR::Session& s, Evoral::ControlList::OrderedPoints& points, bool thin); void merge_drawn_line (EditingContext& e, ARDOUR::Session& s, Evoral::ControlList::OrderedPoints& points, bool thin);
private: private:
std::shared_ptr<AutomationLine> _line; std::shared_ptr<EditorAutomationLine> _line;
std::shared_ptr<ARDOUR::AutomationControl> _control; std::shared_ptr<ARDOUR::AutomationControl> _control;
std::function<Temporal::timepos_t(Temporal::timepos_t const &)> time_filter; std::function<Temporal::timepos_t(Temporal::timepos_t const &)> time_filter;
std::function<void(ARDOUR::AutoState)> automation_state_callback; std::function<void(ARDOUR::AutoState)> automation_state_callback;

View file

@ -38,7 +38,7 @@ MidiAutomationLine::MidiAutomationLine (
std::shared_ptr<ARDOUR::AutomationList> list, std::shared_ptr<ARDOUR::AutomationList> list,
std::shared_ptr<ARDOUR::MidiRegion> region, std::shared_ptr<ARDOUR::MidiRegion> region,
Evoral::Parameter parameter) Evoral::Parameter parameter)
: AutomationLine (name, tav, parent, list, parameter) : EditorAutomationLine (name, tav, parent, list, parameter)
, _region (region) , _region (region)
, _parameter (parameter) , _parameter (parameter)
{ {
@ -72,26 +72,26 @@ MidiAutomationLine::get_verbose_cursor_string (double fraction) const
using namespace MIDI::Name; using namespace MIDI::Name;
if (_parameter.type() != ARDOUR::MidiCCAutomation) { if (_parameter.type() != ARDOUR::MidiCCAutomation) {
return AutomationLine::get_verbose_cursor_string(fraction); return EditorAutomationLine::get_verbose_cursor_string(fraction);
} }
MidiTimeAxisView* const mtv = dynamic_cast<MidiTimeAxisView*>(trackview.get_parent()); MidiTimeAxisView* const mtv = dynamic_cast<MidiTimeAxisView*>(trackview.get_parent());
if (!mtv) { if (!mtv) {
return AutomationLine::get_verbose_cursor_string(fraction); return EditorAutomationLine::get_verbose_cursor_string(fraction);
} }
const uint8_t channel = mtv->get_preferred_midi_channel(); const uint8_t channel = mtv->get_preferred_midi_channel();
std::shared_ptr<const ValueNameList> value_names = mtv->route()->instrument_info().value_name_list_by_control (channel, _parameter.id()); std::shared_ptr<const ValueNameList> value_names = mtv->route()->instrument_info().value_name_list_by_control (channel, _parameter.id());
if (!value_names) { if (!value_names) {
return AutomationLine::get_verbose_cursor_string(fraction); return EditorAutomationLine::get_verbose_cursor_string(fraction);
} }
const uint16_t cc_value = floor(std::max(std::min(fraction * 127.0, 127.0), 0.0)); const uint16_t cc_value = floor(std::max(std::min(fraction * 127.0, 127.0), 0.0));
std::shared_ptr<const Value> value = value_names->max_value_below(cc_value); std::shared_ptr<const Value> value = value_names->max_value_below(cc_value);
if (!value) { if (!value) {
return AutomationLine::get_verbose_cursor_string(fraction); return EditorAutomationLine::get_verbose_cursor_string(fraction);
} }
return value->name(); return value->name();

View file

@ -18,7 +18,7 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/ */
#include "automation_line.h" #include "editor_automation_line.h"
namespace ARDOUR { namespace ARDOUR {
class MidiRegion; class MidiRegion;
@ -27,7 +27,7 @@ namespace ARDOUR {
/** Stub class so that lines for MIDI AutomationRegionViews can use the correct /** Stub class so that lines for MIDI AutomationRegionViews can use the correct
* MementoCommandBinder. * MementoCommandBinder.
*/ */
class MidiAutomationLine : public AutomationLine class MidiAutomationLine : public EditorAutomationLine
{ {
public: public:
MidiAutomationLine (const std::string&, TimeAxisView&, ArdourCanvas::Item&, MidiAutomationLine (const std::string&, TimeAxisView&, ArdourCanvas::Item&,

View file

@ -35,7 +35,7 @@
#include "widgets/ardour_button.h" #include "widgets/ardour_button.h"
#include "audio_clock.h" #include "audio_clock.h"
#include "automation_line.h" #include "editor_automation_line.h"
#include "control_point.h" #include "control_point.h"
#include "editor.h" #include "editor.h"
#include "midi_cue_editor.h" #include "midi_cue_editor.h"

View file

@ -29,7 +29,7 @@ MidiCueAutomationLine::MidiCueAutomationLine (const std::string&
ArdourCanvas::Rectangle* drag_base, ArdourCanvas::Rectangle* drag_base,
std::shared_ptr<ARDOUR::AutomationList> al, std::shared_ptr<ARDOUR::AutomationList> al,
const ARDOUR::ParameterDescriptor& desc) const ARDOUR::ParameterDescriptor& desc)
: AutomationLineBase (name, ec, parent, drag_base, al, desc) : AutomationLine (name, ec, parent, drag_base, al, desc)
{ {
_drag_base->set_data ("line", this); _drag_base->set_data ("line", this);
_drag_base->Event.connect (sigc::mem_fun (*this, &MidiCueAutomationLine::base_event_handler)); _drag_base->Event.connect (sigc::mem_fun (*this, &MidiCueAutomationLine::base_event_handler));
@ -44,5 +44,5 @@ MidiCueAutomationLine::base_event_handler (GdkEvent* ev)
bool bool
MidiCueAutomationLine::event_handler (GdkEvent* ev) MidiCueAutomationLine::event_handler (GdkEvent* ev)
{ {
return _editing_context.typed_event (line, ev, AutomationLineItem); return _editing_context.typed_event (line, ev, EditorAutomationLineItem);
} }

View file

@ -19,9 +19,9 @@
#ifndef __gtk2_ardour_midi_cue_automation_line_h__ #ifndef __gtk2_ardour_midi_cue_automation_line_h__
#define __gtk2_ardour_midi_cue_automation_line_h__ #define __gtk2_ardour_midi_cue_automation_line_h__
#include "automation_line_base.h" #include "automation_line.h"
class MidiCueAutomationLine : public AutomationLineBase class MidiCueAutomationLine : public AutomationLine
{ {
public: public:
MidiCueAutomationLine (const std::string& name, MidiCueAutomationLine (const std::string& name,

View file

@ -544,7 +544,7 @@ MidiCueEditor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event
return true; return true;
break; break;
case AutomationLineItem: { case EditorAutomationLineItem: {
ARDOUR::SelectionOperation op = ArdourKeyboard::selection_type (event->button.state); ARDOUR::SelectionOperation op = ArdourKeyboard::selection_type (event->button.state);
select_automation_line (&event->button, item, op); select_automation_line (&event->button, item, op);
return true; return true;
@ -1525,7 +1525,7 @@ MidiCueEditor::which_canvas_cursor (ItemType type) const
case GainLineItem: case GainLineItem:
cursor = _cursors->cross_hair; cursor = _cursors->cross_hair;
break; break;
case AutomationLineItem: case EditorAutomationLineItem:
cursor = _cursors->cross_hair; cursor = _cursors->cross_hair;
break; break;
case StartSelectionTrimItem: case StartSelectionTrimItem:
@ -1566,18 +1566,18 @@ MidiCueEditor::which_canvas_cursor (ItemType type) const
bool bool
MidiCueEditor::enter_handler (ArdourCanvas::Item* item, GdkEvent* ev, ItemType item_type) MidiCueEditor::enter_handler (ArdourCanvas::Item* item, GdkEvent* ev, ItemType item_type)
{ {
AutomationLine* al; EditorAutomationLine* al;
choose_canvas_cursor_on_entry (item_type); choose_canvas_cursor_on_entry (item_type);
switch (item_type) { switch (item_type) {
case AutomationTrackItem: case AutomationTrackItem:
/* item is the base rectangle */ /* item is the base rectangle */
al = reinterpret_cast<AutomationLine*> (item->get_data ("line")); al = reinterpret_cast<EditorAutomationLine*> (item->get_data ("line"));
al->track_entered (); al->track_entered ();
break; break;
case AutomationLineItem: case EditorAutomationLineItem:
{ {
ArdourCanvas::Line *line = dynamic_cast<ArdourCanvas::Line *> (item); ArdourCanvas::Line *line = dynamic_cast<ArdourCanvas::Line *> (item);
@ -1596,7 +1596,7 @@ MidiCueEditor::enter_handler (ArdourCanvas::Item* item, GdkEvent* ev, ItemType i
bool bool
MidiCueEditor::leave_handler (ArdourCanvas::Item* item, GdkEvent* ev, ItemType item_type) MidiCueEditor::leave_handler (ArdourCanvas::Item* item, GdkEvent* ev, ItemType item_type)
{ {
AutomationLine* al; EditorAutomationLine* al;
if (!_enter_stack.empty()) { if (!_enter_stack.empty()) {
_enter_stack.pop_back(); _enter_stack.pop_back();
@ -1607,8 +1607,8 @@ MidiCueEditor::leave_handler (ArdourCanvas::Item* item, GdkEvent* ev, ItemType i
_verbose_cursor->hide (); _verbose_cursor->hide ();
break; break;
case AutomationLineItem: case EditorAutomationLineItem:
al = reinterpret_cast<AutomationLine*> (item->get_data ("line")); al = reinterpret_cast<EditorAutomationLine*> (item->get_data ("line"));
{ {
ArdourCanvas::Line *line = dynamic_cast<ArdourCanvas::Line *> (item); ArdourCanvas::Line *line = dynamic_cast<ArdourCanvas::Line *> (item);
if (line) { if (line) {

View file

@ -29,7 +29,7 @@
#include "ardour/session.h" #include "ardour/session.h"
#include "audio_clock.h" #include "audio_clock.h"
#include "automation_line.h" #include "editor_automation_line.h"
#include "control_point.h" #include "control_point.h"
#include "editor.h" #include "editor.h"
#include "region_view.h" #include "region_view.h"

View file

@ -31,7 +31,7 @@
#include "widgets/ardour_button.h" #include "widgets/ardour_button.h"
#include "audio_clock.h" #include "audio_clock.h"
#include "automation_line.h" #include "editor_automation_line.h"
#include "control_point.h" #include "control_point.h"
#include "editor.h" #include "editor.h"
#include "region_view.h" #include "region_view.h"

View file

@ -39,7 +39,7 @@
#include "midi_time_axis.h" #include "midi_time_axis.h"
#include "midi_view.h" #include "midi_view.h"
#include "time_axis_view_item.h" #include "time_axis_view_item.h"
#include "automation_line.h" #include "editor_automation_line.h"
#include "enums.h" #include "enums.h"
namespace ARDOUR { namespace ARDOUR {

View file

@ -76,7 +76,7 @@
#include "ardour/velocity_control.h" #include "ardour/velocity_control.h"
#include "ardour_message.h" #include "ardour_message.h"
#include "automation_line.h" #include "editor_automation_line.h"
#include "automation_time_axis.h" #include "automation_time_axis.h"
#include "editor.h" #include "editor.h"
#include "enums.h" #include "enums.h"

View file

@ -31,7 +31,7 @@
#include "widgets/ardour_button.h" #include "widgets/ardour_button.h"
#include "audio_clock.h" #include "audio_clock.h"
#include "automation_line.h" #include "editor_automation_line.h"
#include "control_point.h" #include "control_point.h"
#include "editor.h" #include "editor.h"
#include "region_view.h" #include "region_view.h"

View file

@ -42,7 +42,7 @@
#include "region_view.h" #include "region_view.h"
#include "midi_view_background.h" #include "midi_view_background.h"
#include "time_axis_view_item.h" #include "time_axis_view_item.h"
#include "automation_line.h" #include "editor_automation_line.h"
#include "enums.h" #include "enums.h"
namespace ARDOUR { namespace ARDOUR {

View file

@ -29,7 +29,7 @@
#include "ardour/session.h" #include "ardour/session.h"
#include "audio_clock.h" #include "audio_clock.h"
#include "automation_line.h" #include "editor_automation_line.h"
#include "control_point.h" #include "control_point.h"
#include "editor.h" #include "editor.h"
#include "region_view.h" #include "region_view.h"

View file

@ -86,7 +86,7 @@ namespace Gtk {
} }
class AudioRegionView; class AudioRegionView;
class AutomationLine; class EditorAutomationLine;
class AutomationTimeAxisView; class AutomationTimeAxisView;
class ControlPoint; class ControlPoint;
class DragManager; class DragManager;
@ -361,7 +361,7 @@ public:
virtual bool canvas_control_point_event (GdkEvent* event, ArdourCanvas::Item*, ControlPoint*) = 0; virtual bool canvas_control_point_event (GdkEvent* event, ArdourCanvas::Item*, ControlPoint*) = 0;
virtual bool canvas_velocity_event (GdkEvent* event, ArdourCanvas::Item*) = 0; virtual bool canvas_velocity_event (GdkEvent* event, ArdourCanvas::Item*) = 0;
virtual bool canvas_velocity_base_event (GdkEvent* event, ArdourCanvas::Item*) = 0; virtual bool canvas_velocity_base_event (GdkEvent* event, ArdourCanvas::Item*) = 0;
virtual bool canvas_line_event (GdkEvent* event, ArdourCanvas::Item*, AutomationLine*) = 0; virtual bool canvas_line_event (GdkEvent* event, ArdourCanvas::Item*, EditorAutomationLine*) = 0;
virtual bool canvas_selection_rect_event (GdkEvent* event, ArdourCanvas::Item*, SelectionRect*) = 0; virtual bool canvas_selection_rect_event (GdkEvent* event, ArdourCanvas::Item*, SelectionRect*) = 0;
virtual bool canvas_selection_start_trim_event (GdkEvent* event, ArdourCanvas::Item*, SelectionRect*) = 0; virtual bool canvas_selection_start_trim_event (GdkEvent* event, ArdourCanvas::Item*, SelectionRect*) = 0;
virtual bool canvas_selection_end_trim_event (GdkEvent* event, ArdourCanvas::Item*, SelectionRect*) = 0; virtual bool canvas_selection_end_trim_event (GdkEvent* event, ArdourCanvas::Item*, SelectionRect*) = 0;

View file

@ -27,7 +27,7 @@
using namespace ARDOUR; using namespace ARDOUR;
RegionFxLine::RegionFxLine (std::string const& name, RegionView& r, ArdourCanvas::Container& parent, std::shared_ptr<AutomationList> l, ParameterDescriptor const& d) RegionFxLine::RegionFxLine (std::string const& name, RegionView& r, ArdourCanvas::Container& parent, std::shared_ptr<AutomationList> l, ParameterDescriptor const& d)
: AutomationLine (name, r.get_time_axis_view(), parent, l, d) : EditorAutomationLine (name, r.get_time_axis_view(), parent, l, d)
, _rv (r) , _rv (r)
{ {
terminal_points_can_slide = false; terminal_points_can_slide = false;
@ -35,7 +35,7 @@ RegionFxLine::RegionFxLine (std::string const& name, RegionView& r, ArdourCanvas
} }
RegionFxLine::RegionFxLine (std::string const& name, RegionView& r, ArdourCanvas::Container& parent, std::shared_ptr<ARDOUR::AutomationControl> ac) RegionFxLine::RegionFxLine (std::string const& name, RegionView& r, ArdourCanvas::Container& parent, std::shared_ptr<ARDOUR::AutomationControl> ac)
: AutomationLine (name, r.get_time_axis_view(), parent, ac->alist (), ac->desc ()) : EditorAutomationLine (name, r.get_time_axis_view(), parent, ac->alist (), ac->desc ())
, _rv (r) , _rv (r)
, _ac (ac) , _ac (ac)
{ {
@ -70,14 +70,14 @@ void
RegionFxLine::end_drag (bool with_push, uint32_t final_index) RegionFxLine::end_drag (bool with_push, uint32_t final_index)
{ {
enable_automation (); enable_automation ();
AutomationLine::end_drag (with_push, final_index); EditorAutomationLine::end_drag (with_push, final_index);
} }
void void
RegionFxLine::end_draw_merge () RegionFxLine::end_draw_merge ()
{ {
enable_automation (); enable_automation ();
AutomationLine::end_draw_merge (); EditorAutomationLine::end_draw_merge ();
} }
void void

View file

@ -19,11 +19,11 @@
#ifndef __ardour_gtk_region_fx_line_h__ #ifndef __ardour_gtk_region_fx_line_h__
#define __ardour_gtk_region_fx_line_h__ #define __ardour_gtk_region_fx_line_h__
#include "automation_line.h" #include "editor_automation_line.h"
class RegionView; class RegionView;
class RegionFxLine : public AutomationLine class RegionFxLine : public EditorAutomationLine
{ {
public: public:
RegionFxLine (std::string const&, RegionView&, ArdourCanvas::Container&, std::shared_ptr<ARDOUR::AutomationList>, ARDOUR::ParameterDescriptor const&); RegionFxLine (std::string const&, RegionView&, ArdourCanvas::Container&, std::shared_ptr<ARDOUR::AutomationList>, ARDOUR::ParameterDescriptor const&);

View file

@ -29,7 +29,7 @@
#include "ardour/session.h" #include "ardour/session.h"
#include "audio_clock.h" #include "audio_clock.h"
#include "automation_line.h" #include "editor_automation_line.h"
#include "control_point.h" #include "control_point.h"
#include "editor.h" #include "editor.h"
#include "region_view.h" #include "region_view.h"

View file

@ -36,7 +36,7 @@
#include "canvas/fwd.h" #include "canvas/fwd.h"
#include "time_axis_view_item.h" #include "time_axis_view_item.h"
#include "automation_line.h" #include "editor_automation_line.h"
#include "enums.h" #include "enums.h"
#include "marker.h" #include "marker.h"

View file

@ -1968,7 +1968,7 @@ RouteTimeAxisView::add_existing_processor_automation_curves (std::weak_ptr<Proce
for (set<Evoral::Parameter>::iterator i = existing.begin(); i != existing.end(); ++i) { for (set<Evoral::Parameter>::iterator i = existing.begin(); i != existing.end(); ++i) {
Evoral::Parameter param (*i); Evoral::Parameter param (*i);
std::shared_ptr<AutomationLine> al; std::shared_ptr<EditorAutomationLine> al;
std::shared_ptr<AutomationControl> control = std::dynamic_pointer_cast<AutomationControl>(processor->control(*i, false)); std::shared_ptr<AutomationControl> control = std::dynamic_pointer_cast<AutomationControl>(processor->control(*i, false));
if (!control || control->flags () & Controllable::HiddenControl) { if (!control || control->flags () & Controllable::HiddenControl) {
@ -2227,7 +2227,7 @@ RouteTimeAxisView::processors_changed (RouteProcessorChange c)
} }
} }
std::shared_ptr<AutomationLine> std::shared_ptr<EditorAutomationLine>
RouteTimeAxisView::find_processor_automation_curve (std::shared_ptr<Processor> processor, Evoral::Parameter what) RouteTimeAxisView::find_processor_automation_curve (std::shared_ptr<Processor> processor, Evoral::Parameter what)
{ {
ProcessorAutomationNode* pan; ProcessorAutomationNode* pan;
@ -2238,7 +2238,7 @@ RouteTimeAxisView::find_processor_automation_curve (std::shared_ptr<Processor> p
} }
} }
return std::shared_ptr<AutomationLine>(); return std::shared_ptr<EditorAutomationLine>();
} }
void void
@ -2606,7 +2606,7 @@ RouteTimeAxisView::automation_child(Evoral::Parameter param, PBD::ID ctrl_id)
return std::shared_ptr<AutomationTimeAxisView>(); return std::shared_ptr<AutomationTimeAxisView>();
} }
std::shared_ptr<AutomationLineBase> std::shared_ptr<AutomationLine>
RouteTimeAxisView::automation_child_by_alist_id (PBD::ID alist_id) RouteTimeAxisView::automation_child_by_alist_id (PBD::ID alist_id)
{ {
for (list<ProcessorAutomationInfo*>::iterator i = processor_automation.begin(); i != processor_automation.end(); ++i) { for (list<ProcessorAutomationInfo*>::iterator i = processor_automation.begin(); i != processor_automation.end(); ++i) {

View file

@ -69,7 +69,7 @@ class Selection;
class RegionSelection; class RegionSelection;
class Selectable; class Selectable;
class AutomationTimeAxisView; class AutomationTimeAxisView;
class AutomationLine; class EditorAutomationLine;
class TimeSelection; class TimeSelection;
class RouteGroupMenu; class RouteGroupMenu;
class ItemCounts; class ItemCounts;
@ -201,13 +201,13 @@ protected:
std::shared_ptr<AutomationTimeAxisView> std::shared_ptr<AutomationTimeAxisView>
find_atav_by_ctrl (std::shared_ptr<ARDOUR::AutomationControl>, bool route_owned_only = true); find_atav_by_ctrl (std::shared_ptr<ARDOUR::AutomationControl>, bool route_owned_only = true);
std::shared_ptr<AutomationLine> std::shared_ptr<EditorAutomationLine>
find_processor_automation_curve (std::shared_ptr<ARDOUR::Processor> i, Evoral::Parameter); find_processor_automation_curve (std::shared_ptr<ARDOUR::Processor> i, Evoral::Parameter);
void add_processor_automation_curve (std::shared_ptr<ARDOUR::Processor> r, Evoral::Parameter); void add_processor_automation_curve (std::shared_ptr<ARDOUR::Processor> r, Evoral::Parameter);
void add_existing_processor_automation_curves (std::weak_ptr<ARDOUR::Processor>); void add_existing_processor_automation_curves (std::weak_ptr<ARDOUR::Processor>);
std::shared_ptr<AutomationLineBase> automation_child_by_alist_id (PBD::ID); std::shared_ptr<AutomationLine> automation_child_by_alist_id (PBD::ID);
void reset_processor_automation_curves (); void reset_processor_automation_curves ();
@ -270,7 +270,7 @@ protected:
std::map<std::shared_ptr<PBD::Controllable>, Gtk::CheckMenuItem*> ctrl_item_map; std::map<std::shared_ptr<PBD::Controllable>, Gtk::CheckMenuItem*> ctrl_item_map;
typedef std::vector<std::shared_ptr<AutomationLine> > ProcessorAutomationCurves; typedef std::vector<std::shared_ptr<EditorAutomationLine> > ProcessorAutomationCurves;
ProcessorAutomationCurves processor_automation_curves; ProcessorAutomationCurves processor_automation_curves;
/** parameter -> menu item map for the plugin automation menu */ /** parameter -> menu item map for the plugin automation menu */
ParameterMenuMap _subplugin_menu_map; ParameterMenuMap _subplugin_menu_map;

View file

@ -37,7 +37,7 @@
#include "control_protocol/control_protocol.h" #include "control_protocol/control_protocol.h"
#include "audio_region_view.h" #include "audio_region_view.h"
#include "automation_line_base.h" #include "automation_line.h"
#include "debug.h" #include "debug.h"
#include "gui_thread.h" #include "gui_thread.h"
#include "midi_cut_buffer.h" #include "midi_cut_buffer.h"
@ -540,7 +540,7 @@ Selection::add (std::shared_ptr<Evoral::ControlList> cl)
} }
/* The original may change so we must store a copy (not a pointer) here. /* The original may change so we must store a copy (not a pointer) here.
* e.g AutomationLine rewrites the list with gain mapping. * e.g EditorAutomationLine rewrites the list with gain mapping.
* the downside is that we can't perform duplicate checks. * the downside is that we can't perform duplicate checks.
* This code was changed in response to #6842 * This code was changed in response to #6842
*/ */
@ -1165,7 +1165,7 @@ Selection::get_state () const
} }
for (auto & cp : points) { for (auto & cp : points) {
AutomationLine* al = dynamic_cast<AutomationLine*> (&cp->line()); EditorAutomationLine* al = dynamic_cast<EditorAutomationLine*> (&cp->line());
assert (al); assert (al);
AutomationTimeAxisView* atv = dynamic_cast<AutomationTimeAxisView*> (&al->trackview); AutomationTimeAxisView* atv = dynamic_cast<AutomationTimeAxisView*> (&al->trackview);
if (atv) { if (atv) {
@ -1315,7 +1315,7 @@ Selection::set_state (XMLNode const & node, int)
vector <ControlPoint *> cps; vector <ControlPoint *> cps;
if (stv) { if (stv) {
std::shared_ptr<AutomationLineBase> li = stv->automation_child_by_alist_id (alist_id); std::shared_ptr<AutomationLine> li = stv->automation_child_by_alist_id (alist_id);
if (li) { if (li) {
ControlPoint* cp = li->nth(view_index); ControlPoint* cp = li->nth(view_index);
if (cp) { if (cp) {

View file

@ -52,7 +52,7 @@ class RegionView;
class Selectable; class Selectable;
class EditingContext; class EditingContext;
class MidiRegionView; class MidiRegionView;
class AutomationLine; class EditorAutomationLine;
class ControlPoint; class ControlPoint;

View file

@ -29,7 +29,7 @@
#include "ardour/session.h" #include "ardour/session.h"
#include "audio_clock.h" #include "audio_clock.h"
#include "automation_line.h" #include "editor_automation_line.h"
#include "control_point.h" #include "control_point.h"
#include "editor.h" #include "editor.h"
#include "region_view.h" #include "region_view.h"

View file

@ -621,7 +621,7 @@ StreamView::get_selectables (timepos_t const & start, timepos_t const & end, dou
if (_trackview.editor().internal_editing()) { if (_trackview.editor().internal_editing()) {
AudioRegionView* arv = dynamic_cast<AudioRegionView*> (*i); AudioRegionView* arv = dynamic_cast<AudioRegionView*> (*i);
if (arv && arv->fx_line ()) { if (arv && arv->fx_line ()) {
/* Note: AutomationLine::get_selectables() uses trackview.current_height (), /* Note: EditorAutomationLine::get_selectables() uses trackview.current_height (),
* disregarding Stacked layer display height * disregarding Stacked layer display height
*/ */
double const c = height; // child_height (); // XXX double const c = height; // child_height (); // XXX

View file

@ -25,7 +25,7 @@
#include "public_editor.h" #include "public_editor.h"
#include "stripable_time_axis.h" #include "stripable_time_axis.h"
#include "automation_line.h" #include "editor_automation_line.h"
#include "pbd/i18n.h" #include "pbd/i18n.h"
@ -192,7 +192,7 @@ StripableTimeAxisView::automation_child(Evoral::Parameter param, PBD::ID)
} }
} }
std::shared_ptr<AutomationLineBase> std::shared_ptr<AutomationLine>
StripableTimeAxisView::automation_child_by_alist_id (PBD::ID alist_id) StripableTimeAxisView::automation_child_by_alist_id (PBD::ID alist_id)
{ {
for (AutomationTracks::iterator i = _automation_tracks.begin(); i != _automation_tracks.end(); ++i) { for (AutomationTracks::iterator i = _automation_tracks.begin(); i != _automation_tracks.end(); ++i) {
@ -203,7 +203,7 @@ StripableTimeAxisView::automation_child_by_alist_id (PBD::ID alist_id)
} }
} }
} }
return std::shared_ptr<AutomationLine> (); return std::shared_ptr<EditorAutomationLine> ();
} }
void void

View file

@ -38,7 +38,7 @@ public:
virtual void create_automation_child (const Evoral::Parameter& param, bool show) = 0; virtual void create_automation_child (const Evoral::Parameter& param, bool show) = 0;
virtual std::shared_ptr<AutomationTimeAxisView> automation_child (Evoral::Parameter param, PBD::ID ctrl_id = PBD::ID(0)); virtual std::shared_ptr<AutomationTimeAxisView> automation_child (Evoral::Parameter param, PBD::ID ctrl_id = PBD::ID(0));
virtual std::shared_ptr<AutomationLineBase> automation_child_by_alist_id (PBD::ID); virtual std::shared_ptr<AutomationLine> automation_child_by_alist_id (PBD::ID);
void request_redraw (); void request_redraw ();

View file

@ -30,7 +30,7 @@
#include "ardour/session.h" #include "ardour/session.h"
#include "audio_clock.h" #include "audio_clock.h"
#include "automation_line.h" #include "editor_automation_line.h"
#include "control_point.h" #include "control_point.h"
#include "editor.h" #include "editor.h"
#include "region_view.h" #include "region_view.h"

View file

@ -49,7 +49,6 @@ gtk2_ardour_sources = [
'audio_time_axis.cc', 'audio_time_axis.cc',
'automation_controller.cc', 'automation_controller.cc',
'automation_line.cc', 'automation_line.cc',
'automation_line_base.cc',
'automation_region_view.cc', 'automation_region_view.cc',
'automation_streamview.cc', 'automation_streamview.cc',
'automation_time_axis.cc', 'automation_time_axis.cc',
@ -78,6 +77,7 @@ gtk2_ardour_sources = [
'editing_context.cc', 'editing_context.cc',
'editor.cc', 'editor.cc',
'editor_actions.cc', 'editor_actions.cc',
'editor_automation_line.cc',
'editor_audio_import.cc', 'editor_audio_import.cc',
'editor_pt_import.cc', 'editor_pt_import.cc',
'editor_audiotrack.cc', 'editor_audiotrack.cc',