virtual bool clamp_width (double&) { return true; }
virtual bool clamp_elevation (double&) { return true; }
+ virtual std::pair<double, double> position_range () const { return std::make_pair (-DBL_MAX, DBL_MAX); }
+ virtual std::pair<double, double> width_range () const { return std::make_pair (-DBL_MAX, DBL_MAX); }
+ virtual std::pair<double, double> elevation_range () const { return std::make_pair (-DBL_MAX, DBL_MAX); }
+
virtual void set_position (double) { }
virtual void set_width (double) { }
virtual void set_elevation (double) { }
boost::shared_ptr<Pannable> pannable() const { return _pannable; }
- //virtual std::string describe_parameter (Evoral::Parameter);
- //virtual std::string value_as_string (Evoral::Parameter, double val);
-
static bool equivalent (pan_t a, pan_t b) {
return fabsf (a - b) < 0.002; // about 1 degree of arc for a stereo panner
}
return fabs (a.azi - b.azi) < 1.0;
}
+ virtual void freeze ();
+ virtual void thaw ();
+
protected:
boost::shared_ptr<Pannable> _pannable;
virtual void distribute_one_automated (AudioBuffer&, BufferSet& obufs,
framepos_t start, framepos_t end, pframes_t nframes,
pan_t** buffers, uint32_t which) = 0;
+
+ int32_t _frozen;
};
} // namespace