summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2011-02-17 19:47:53 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2011-02-17 19:47:53 +0000
commit1b8e8303b25b6b013367741f2b47be3585b22cb3 (patch)
tree9a91c56bbf6ded80dd0bd8a04f00405f13178980 /libs
parent96cc6c3410c927ca14f50a52487e304967efdbf3 (diff)
draw speaker positions in 2d panner
git-svn-id: svn://localhost/ardour2/branches/3.0@8891 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/ardour/panner.h2
-rw-r--r--libs/panners/vbap/vbap.cc6
-rw-r--r--libs/panners/vbap/vbap.h1
-rw-r--r--libs/panners/vbap/vbap_speakers.cc6
-rw-r--r--libs/panners/vbap/vbap_speakers.h7
5 files changed, 16 insertions, 6 deletions
diff --git a/libs/ardour/ardour/panner.h b/libs/ardour/ardour/panner.h
index 7ebfe5ee03..66842e697f 100644
--- a/libs/ardour/ardour/panner.h
+++ b/libs/ardour/ardour/panner.h
@@ -48,6 +48,8 @@ class Panner : public PBD::Stateful, public PBD::ScopedConnectionList
Panner (boost::shared_ptr<Pannable>);
~Panner ();
+ virtual boost::shared_ptr<Speakers> get_speakers() const { return boost::shared_ptr<Speakers>(); }
+
virtual ChanCount in() const = 0;
virtual ChanCount out() const = 0;
diff --git a/libs/panners/vbap/vbap.cc b/libs/panners/vbap/vbap.cc
index c76a514eaa..fc75ae7183 100644
--- a/libs/panners/vbap/vbap.cc
+++ b/libs/panners/vbap/vbap.cc
@@ -341,3 +341,9 @@ VBAPanner::signal_position (uint32_t n) const
return AngularVector();
}
+
+boost::shared_ptr<Speakers>
+VBAPanner::get_speakers () const
+{
+ return _speakers->parent();
+}
diff --git a/libs/panners/vbap/vbap.h b/libs/panners/vbap/vbap.h
index 183554132c..af3c1c0df2 100644
--- a/libs/panners/vbap/vbap.h
+++ b/libs/panners/vbap/vbap.h
@@ -60,6 +60,7 @@ public:
int set_state (const XMLNode&, int version);
PBD::AngularVector signal_position (uint32_t n) const;
+ boost::shared_ptr<Speakers> get_speakers() const;
private:
struct Signal {
diff --git a/libs/panners/vbap/vbap_speakers.cc b/libs/panners/vbap/vbap_speakers.cc
index bf87791b60..a0602b3e10 100644
--- a/libs/panners/vbap/vbap_speakers.cc
+++ b/libs/panners/vbap/vbap_speakers.cc
@@ -45,9 +45,9 @@ using namespace std;
VBAPSpeakers::VBAPSpeakers (boost::shared_ptr<Speakers> s)
: _dimension (2)
- , parent (s)
+ , _parent (s)
{
- parent->Changed.connect_same_thread (speaker_connection, boost::bind (&VBAPSpeakers::update, this));
+ _parent->Changed.connect_same_thread (speaker_connection, boost::bind (&VBAPSpeakers::update, this));
update ();
}
@@ -60,7 +60,7 @@ VBAPSpeakers::update ()
{
int dim = 2;
- _speakers = parent->speakers();
+ _speakers = _parent->speakers();
for (vector<Speaker>::const_iterator i = _speakers.begin(); i != _speakers.end(); ++i) {
if ((*i).angles().ele != 0.0) {
diff --git a/libs/panners/vbap/vbap_speakers.h b/libs/panners/vbap/vbap_speakers.h
index 85cd75d085..4c28fc6489 100644
--- a/libs/panners/vbap/vbap_speakers.h
+++ b/libs/panners/vbap/vbap_speakers.h
@@ -35,23 +35,24 @@ class Speakers;
class VBAPSpeakers : public boost::noncopyable {
public:
- typedef std::vector<double> dvector;
+ VBAPSpeakers (boost::shared_ptr<Speakers>);
+ typedef std::vector<double> dvector;
const dvector matrix (int tuple) const { return _matrices[tuple]; }
int speaker_for_tuple (int tuple, int which) const { return _speaker_tuples[tuple][which]; }
int n_tuples () const { return _matrices.size(); }
int dimension() const { return _dimension; }
- VBAPSpeakers (boost::shared_ptr<Speakers>);
uint32_t n_speakers() const { return _speakers.size(); }
+ boost::shared_ptr<Speakers> parent() const { return _parent; }
~VBAPSpeakers ();
private:
static const double MIN_VOL_P_SIDE_LGTH = 0.01;
int _dimension;
- boost::shared_ptr<Speakers> parent;
+ boost::shared_ptr<Speakers> _parent;
std::vector<Speaker> _speakers;
PBD::ScopedConnection speaker_connection;