remove XML-based constructors for several types of Processors; less debugging
[ardour.git] / libs / ardour / ardour / monitor_processor.h
index a66338c75b99fd06c44f4d1bb69cb5e1c11506b4..18c50e51043293af9ff045a2bf081dec2c2544dc 100644 (file)
@@ -37,7 +37,6 @@ class MonitorProcessor : public Processor
 {
   public:
         MonitorProcessor (Session&);
-        MonitorProcessor (Session&, const XMLNode& name);
 
         bool display_to_user() const;
 
@@ -55,6 +54,7 @@ class MonitorProcessor : public Processor
         void set_cut (uint32_t, bool cut);
         void set_dim (uint32_t, bool dim);
         void set_solo (uint32_t, bool);
+        void set_mono (bool);
 
         void set_dim_level (gain_t);
         void set_solo_boost_level (gain_t);
@@ -66,20 +66,34 @@ class MonitorProcessor : public Processor
         bool soloed (uint32_t chn) const;
         bool inverted (uint32_t chn) const;
         bool cut (uint32_t chn) const;
+        bool cut_all () const;
+        bool dim_all () const;
+        bool mono () const;
 
         PBD::Signal0<void> Changed;
         
   private:
-        std::vector<gain_t>  current_gain;
-        std::vector<gain_t> _cut;
-        std::vector<bool>   _dim;
-        std::vector<gain_t> _polarity;
-        std::vector<bool>   _soloed;
+        struct ChannelRecord { 
+            gain_t current_gain;
+            gain_t cut;
+            bool   dim;
+            gain_t polarity;
+            bool   soloed;
+
+            ChannelRecord () 
+            : current_gain(1.0), cut(1.0), dim(false), polarity(1.0), soloed (false) {}
+        };
+
+        std::vector<ChannelRecord> _channels;
+
         uint32_t             solo_cnt;
         bool                _dim_all;
         bool                _cut_all;
+        bool                _mono;
         volatile gain_t     _dim_level;
         volatile gain_t     _solo_boost_level;
+
+        void allocate_channels (uint32_t);
 };
 
 } /* namespace */