mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-07 15:25:01 +01:00
Use shared_ptr for the TimeAxisView hierarchy.
git-svn-id: svn://localhost/ardour2/branches/3.0@5339 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
0f8031da06
commit
4297071b3f
71 changed files with 1102 additions and 879 deletions
|
|
@ -58,20 +58,46 @@ const string AutomationTimeAxisView::state_node_name = "AutomationChild";
|
|||
* For region automation (e.g. MIDI CC), pass null for \a.
|
||||
*/
|
||||
AutomationTimeAxisView::AutomationTimeAxisView (Session& s, boost::shared_ptr<Route> r,
|
||||
boost::shared_ptr<Automatable> a, boost::shared_ptr<AutomationControl> c,
|
||||
PublicEditor& e, TimeAxisView& parent, bool show_regions,
|
||||
ArdourCanvas::Canvas& canvas, const string & nom, const string & nomparent)
|
||||
boost::shared_ptr<Automatable> a, boost::shared_ptr<AutomationControl> c,
|
||||
PublicEditor& e, TimeAxisViewPtr parent, bool show_regions,
|
||||
ArdourCanvas::Canvas& canvas, const string & nom, const string & nomparent)
|
||||
: AxisView (s),
|
||||
TimeAxisView (s, e, &parent, canvas),
|
||||
TimeAxisView (s, e, parent, canvas),
|
||||
_route (r),
|
||||
_control (c),
|
||||
_automatable (a),
|
||||
_controller(AutomationController::create(a, c->parameter(), c)),
|
||||
_base_rect (0),
|
||||
_view (show_regions ? new AutomationStreamView(*this) : NULL),
|
||||
_name (nom),
|
||||
auto_button (X_("")) /* force addition of a label */
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
AutomationTimeAxisViewPtr
|
||||
AutomationTimeAxisView::create (Session& s, boost::shared_ptr<Route> r,
|
||||
boost::shared_ptr<Automatable> a, boost::shared_ptr<AutomationControl> c,
|
||||
PublicEditor& e, TimeAxisViewPtr parent, bool show_regions,
|
||||
ArdourCanvas::Canvas& canvas, const string & nom, const string & nomparent)
|
||||
{
|
||||
AutomationTimeAxisViewPtr v (new AutomationTimeAxisView (s, r, a, c, e, parent, show_regions, canvas, nom, nomparent));
|
||||
v->init (s, r, a, c, e, parent, show_regions, canvas, nom, nomparent);
|
||||
return v;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
AutomationTimeAxisView::init (Session& s, boost::shared_ptr<Route> r,
|
||||
boost::shared_ptr<Automatable> a, boost::shared_ptr<AutomationControl> c,
|
||||
PublicEditor& e, TimeAxisViewPtr parent, bool show_regions,
|
||||
ArdourCanvas::Canvas& canvas, const string & nom, const string & nomparent)
|
||||
{
|
||||
if (show_regions) {
|
||||
_view = new AutomationStreamView (boost::dynamic_pointer_cast<AutomationTimeAxisView> (shared_from_this()));
|
||||
} else {
|
||||
_view = 0;
|
||||
}
|
||||
|
||||
if (!have_name_font) {
|
||||
name_font = get_font_for_style (X_("AutomationTrackName"));
|
||||
have_name_font = true;
|
||||
|
|
@ -100,9 +126,15 @@ AutomationTimeAxisView::AutomationTimeAxisView (Session& s, boost::shared_ptr<Ro
|
|||
|
||||
_base_rect->set_data ("trackview", this);
|
||||
|
||||
_base_rect->signal_event().connect (bind (
|
||||
_base_rect->signal_event().connect (
|
||||
bind (
|
||||
mem_fun (_editor, &PublicEditor::canvas_automation_track_event),
|
||||
_base_rect, this));
|
||||
_base_rect,
|
||||
boost::weak_ptr<AutomationTimeAxisView> (
|
||||
boost::dynamic_pointer_cast<AutomationTimeAxisView> (shared_from_this ())
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
// _base_rect->lower_to_bottom();
|
||||
|
||||
|
|
@ -207,7 +239,7 @@ AutomationTimeAxisView::AutomationTimeAxisView (Session& s, boost::shared_ptr<Ro
|
|||
} else {
|
||||
boost::shared_ptr<AutomationLine> line(new AutomationLine (
|
||||
ARDOUR::EventTypeMap::instance().to_symbol(_control->parameter()),
|
||||
*this,
|
||||
boost::dynamic_pointer_cast<AutomationTimeAxisView> (shared_from_this ()),
|
||||
*_canvas_display,
|
||||
_control->alist()));
|
||||
|
||||
|
|
@ -380,7 +412,7 @@ AutomationTimeAxisView::set_height (uint32_t h)
|
|||
(height < hNormal && h >= hNormal)
|
||||
|| (height >= hNormal || h < hNormal) );
|
||||
|
||||
TimeAxisView* state_parent = get_parent_with_state ();
|
||||
TimeAxisViewPtr state_parent = get_parent_with_state ();
|
||||
assert(state_parent);
|
||||
XMLNode* xml_node = state_parent->get_automation_child_xml_node (_control->parameter());
|
||||
|
||||
|
|
@ -658,7 +690,7 @@ AutomationTimeAxisView::reset_objects_one (AutomationLine& line, PointSelection&
|
|||
|
||||
for (PointSelection::iterator i = selection.begin(); i != selection.end(); ++i) {
|
||||
|
||||
if (&(*i).track != this) {
|
||||
if (i->track != shared_from_this ()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
@ -683,7 +715,7 @@ AutomationTimeAxisView::cut_copy_clear_objects_one (AutomationLine& line, PointS
|
|||
|
||||
for (PointSelection::iterator i = selection.begin(); i != selection.end(); ++i) {
|
||||
|
||||
if (&(*i).track != this) {
|
||||
if (i->track != shared_from_this ()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
@ -888,7 +920,7 @@ AutomationTimeAxisView::set_state (const XMLNode& node)
|
|||
XMLNode*
|
||||
AutomationTimeAxisView::get_state_node ()
|
||||
{
|
||||
TimeAxisView* state_parent = get_parent_with_state ();
|
||||
TimeAxisViewPtr state_parent = get_parent_with_state ();
|
||||
|
||||
if (state_parent) {
|
||||
return state_parent->get_automation_child_xml_node (_control->parameter());
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue