/*
- Copyright (C) 2002 Paul Davis
+ Copyright (C) 2002 Paul Davis
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
#include <list>
#include <cmath>
-#include <sigc++/signal.h>
#include <glibmm/thread.h>
-#include <boost/pool/pool.hpp>
-#include <boost/pool/pool_alloc.hpp>
+#include "pbd/undo.h"
+#include "pbd/xml++.h"
+#include "pbd/statefuldestructible.h"
-#include <pbd/undo.h>
-#include <pbd/xml++.h>
-#include <pbd/statefuldestructible.h>
+#include "ardour/ardour.h"
-#include <ardour/ardour.h>
-#include <ardour/parameter.h>
-
-#include <evoral/ControlList.hpp>
-
-using Evoral::ControlEvent;
+#include "evoral/ControlList.hpp"
namespace ARDOUR {
class AutomationList : public PBD::StatefulDestructible, public Evoral::ControlList
{
public:
- AutomationList (Parameter id);
- AutomationList (const XMLNode&, Parameter id);
+ AutomationList (Evoral::Parameter id);
+ AutomationList (const XMLNode&, Evoral::Parameter id);
+ AutomationList (const AutomationList&);
+ AutomationList (const AutomationList&, double start, double end);
~AutomationList();
virtual boost::shared_ptr<Evoral::ControlList> create(Evoral::Parameter id);
- AutomationList (const AutomationList&);
- AutomationList (const AutomationList&, double start, double end);
AutomationList& operator= (const AutomationList&);
bool operator== (const AutomationList&);
-
+
void freeze();
void thaw ();
void mark_dirty () const;
void set_automation_state (AutoState);
AutoState automation_state() const { return _state; }
- sigc::signal<void> automation_state_changed;
+ PBD::Signal0<void> automation_state_changed;
void set_automation_style (AutoStyle m);
AutoStyle automation_style() const { return _style; }
- sigc::signal<void> automation_style_changed;
+ PBD::Signal0<void> automation_style_changed;
bool automation_playback() const {
return (_state & Play) || ((_state & Touch) && !_touching);
bool automation_write () const {
return (_state & Write) || ((_state & Touch) && _touching);
}
-
- sigc::signal<void> StateChanged;
-
- static sigc::signal<void, AutomationList*> AutomationListCreated;
- mutable sigc::signal<void> Dirty;
+
+ PBD::Signal0<void> StateChanged;
+
+ static PBD::Signal1<void,AutomationList*> AutomationListCreated;
+ mutable PBD::Signal0<void> Dirty;
void start_touch ();
void stop_touch ();
bool touching() const { return _touching; }
- XMLNode& get_state(void);
- int set_state (const XMLNode &s);
+ XMLNode& get_state ();
+ int set_state (const XMLNode &, int version);
XMLNode& state (bool full);
XMLNode& serialize_events ();
private:
+ void create_curve_if_necessary ();
int deserialize_events (const XMLNode&);
-
+
void maybe_signal_changed ();
-
+
AutoState _state;
AutoStyle _style;
bool _touching;