click-less processor re-ordering.
[ardour.git] / libs / ardour / ardour / parameter_descriptor.h
index 8916f081a38be3c4cc3f9fc1683e4c6b62aee271..749ed109734c65bd618d4f5b3d505f0c9ed6d068 100644 (file)
@@ -21,7 +21,9 @@
 #define __ardour_parameter_descriptor_h__
 
 #include "ardour/variant.h"
+
 #include "evoral/Parameter.hpp"
+#include "evoral/ParameterDescriptor.hpp"
 
 namespace ARDOUR {
 
@@ -31,64 +33,38 @@ typedef std::map<const std::string, const float> ScalePoints;
  *
  * Essentially a union of LADSPA, VST and LV2 info.
  */
-struct ParameterDescriptor
+struct LIBARDOUR_API ParameterDescriptor : public Evoral::ParameterDescriptor
 {
-       ParameterDescriptor(const Evoral::Parameter& parameter)
-               : key((uint32_t)-1)
-               , datatype(Variant::VOID)
-               , normal(parameter.normal())
-               , lower(parameter.min())
-               , upper(parameter.max())
-               , step(0)
-               , smallstep((upper - lower) / 100.0)
-               , largestep((upper - lower) / 10.0)
-               , integer_step(false)
-               , toggled(parameter.toggled())
-               , logarithmic(false)
-               , sr_dependent(false)
-               , min_unbound(0)
-               , max_unbound(0)
-               , enumeration(false)
-               , midinote(false)
-       {}
+       enum Unit {
+               NONE,       ///< No unit
+               DB,         ///< Decibels
+               MIDI_NOTE,  ///< MIDI note number
+               HZ,         ///< Frequency in Hertz
+       };
+
+       ParameterDescriptor(const Evoral::Parameter& parameter);
+
+       ParameterDescriptor();
 
-       ParameterDescriptor()
-               : key((uint32_t)-1)
-               , datatype(Variant::VOID)
-               , normal(0)
-               , lower(0)
-               , upper(0)
-               , step(0)
-               , smallstep(0)
-               , largestep(0)
-               , integer_step(false)
-               , toggled(false)
-               , logarithmic(false)
-               , sr_dependent(false)
-               , min_unbound(0)
-               , max_unbound(0)
-               , enumeration(false)
-               , midinote(false)
-       {}
+       /** Set step, smallstep, and largestep, based on current description. */
+       void update_steps();
 
        std::string                    label;
+       std::string                    print_fmt;  ///< format string for pretty printing
        boost::shared_ptr<ScalePoints> scale_points;
        uint32_t                       key;  ///< for properties
        Variant::Type                  datatype;  ///< for properties
-       float                          normal;
-       float                          lower;  ///< for frequencies, this is in Hz (not a fraction of the sample rate)
-       float                          upper;  ///< for frequencies, this is in Hz (not a fraction of the sample rate)
+       AutomationType                 type;
+       Unit                           unit;
        float                          step;
        float                          smallstep;
        float                          largestep;
        bool                           integer_step;
-       bool                           toggled;
        bool                           logarithmic;
        bool                           sr_dependent;
        bool                           min_unbound;
        bool                           max_unbound;
        bool                           enumeration;
-       bool                           midinote;  ///< only used if integer_step is also true
 };
 
 } // namespace ARDOUR