save version string with session for informational purposes
[ardour.git] / libs / ardour / ardour / parameter_descriptor.h
index a6315ae429ac1c6fc6d9593c64e161a0007cd021..9d219d17afffb0b45611cda54ef2747a8dc8ee3b 100644 (file)
 #ifndef __ardour_parameter_descriptor_h__
 #define __ardour_parameter_descriptor_h__
 
+#include "ardour/types.h"
 #include "ardour/variant.h"
 
+#include "evoral/Parameter.hpp"
+#include "evoral/ParameterDescriptor.hpp"
+
 namespace ARDOUR {
 
 typedef std::map<const std::string, const float> ScalePoints;
@@ -30,43 +34,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()
-               : key((uint32_t)-1)
-               , datatype(Variant::VOID)
-               , 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)
-       {}
+       enum Unit {
+               NONE,       ///< No unit
+               DB,         ///< Decibels
+               MIDI_NOTE,  ///< MIDI note number
+               HZ,         ///< Frequency in Hertz
+       };
+
+       ParameterDescriptor(const Evoral::Parameter& parameter);
+
+       ParameterDescriptor();
+
+       /** 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                          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