add new API to PBD::Controllable, ::get_save_value()
[ardour.git] / libs / pbd / pbd / controllable.h
index 51aa28a4fe7c9b8a1f40ccd952c72fefbe04e110..3b416b07fda7e6eb281041bfa37e9ca3218a7240 100644 (file)
@@ -104,6 +104,13 @@ class LIBPBD_API Controllable : public PBD::StatefulDestructible {
         virtual void set_value (double, GroupControlDisposition group_override) = 0;
        virtual double get_value (void) const = 0;
 
+       /** This is used when saving state. By default it just calls
+        * get_value(), but a class with more complex semantics might override
+        * this to save some value that differs from what get_value() would 
+        * return.
+        */
+       virtual double get_save_value () const { return get_value(); }
+
        /** Conversions between `internal', 'interface', and 'user' values */
        virtual double internal_to_interface (double i) const {return  (i-lower())/(upper() - lower());}  //by default, the interface range is just a linear interpolation between lower and upper values
        virtual double interface_to_internal (double i) const {return lower() + i*(upper() - lower());}