diff options
author | Carl Hetherington <carl@carlh.net> | 2012-06-06 11:47:09 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2012-06-06 11:47:09 +0000 |
commit | 46e448252f74ce35f37a1a41bb3ebe0f0312cd5d (patch) | |
tree | 727768ad3569c3e4becb9694e93fbf6f1b909691 /libs/panners | |
parent | 31f94b9b048f55b06b7de8fa0b8612b0fa2ea274 (diff) |
Provide dialogs to edit pan values numerically, at least for
mono and stereo panners.
git-svn-id: svn://localhost/ardour2/branches/3.0@12577 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/panners')
-rw-r--r-- | libs/panners/1in2out/panner_1in2out.cc | 6 | ||||
-rw-r--r-- | libs/panners/1in2out/panner_1in2out.h | 1 | ||||
-rw-r--r-- | libs/panners/2in2out/panner_2in2out.cc | 21 | ||||
-rw-r--r-- | libs/panners/2in2out/panner_2in2out.h | 3 |
4 files changed, 27 insertions, 4 deletions
diff --git a/libs/panners/1in2out/panner_1in2out.cc b/libs/panners/1in2out/panner_1in2out.cc index d84af57ade..4524ed560b 100644 --- a/libs/panners/1in2out/panner_1in2out.cc +++ b/libs/panners/1in2out/panner_1in2out.cc @@ -121,6 +121,12 @@ Panner1in2out::clamp_position (double& p) return true; } +pair<double, double> +Panner1in2out::position_range () const +{ + return make_pair (0, 1); +} + double Panner1in2out::position () const { diff --git a/libs/panners/1in2out/panner_1in2out.h b/libs/panners/1in2out/panner_1in2out.h index 13b48fa839..97d23495c7 100644 --- a/libs/panners/1in2out/panner_1in2out.h +++ b/libs/panners/1in2out/panner_1in2out.h @@ -43,6 +43,7 @@ class Panner1in2out : public Panner void set_position (double); bool clamp_position (double&); + std::pair<double, double> position_range () const; double position() const; diff --git a/libs/panners/2in2out/panner_2in2out.cc b/libs/panners/2in2out/panner_2in2out.cc index 57b8836787..a316b764c7 100644 --- a/libs/panners/2in2out/panner_2in2out.cc +++ b/libs/panners/2in2out/panner_2in2out.cc @@ -152,8 +152,8 @@ Panner2in2out::update () */ float pos[2]; - double width = _pannable->pan_width_control->get_value(); - const double direction_as_lr_fract = _pannable->pan_azimuth_control->get_value(); + double width = this->width (); + const double direction_as_lr_fract = position (); if (width < 0.0) { width = -width; @@ -189,17 +189,30 @@ Panner2in2out::update () bool Panner2in2out::clamp_position (double& p) { - double w = _pannable->pan_width_control->get_value(); + double w = width (); return clamp_stereo_pan (p, w); } bool Panner2in2out::clamp_width (double& w) { - double p = _pannable->pan_azimuth_control->get_value(); + double p = position (); return clamp_stereo_pan (p, w); } +pair<double, double> +Panner2in2out::position_range () const +{ + return make_pair (0.5 - (1 - width()) / 2, 0.5 + (1 - width()) / 2); +} + +pair<double, double> +Panner2in2out::width_range () const +{ + double const w = min (position(), (1 - position())) * 2; + return make_pair (-w, w); +} + bool Panner2in2out::clamp_stereo_pan (double& direction_as_lr_fract, double& width) { diff --git a/libs/panners/2in2out/panner_2in2out.h b/libs/panners/2in2out/panner_2in2out.h index 001d3064e8..a34556d463 100644 --- a/libs/panners/2in2out/panner_2in2out.h +++ b/libs/panners/2in2out/panner_2in2out.h @@ -49,6 +49,9 @@ class Panner2in2out : public Panner bool clamp_position (double&); bool clamp_width (double&); + std::pair<double, double> position_range () const; + std::pair<double, double> width_range () const; + void set_position (double); void set_width (double); |