MSVC won't allow us to cast directly from float to an enum. We need to kludge it...
[ardour.git] / libs / surfaces / osc / osc.h
index a982a53fe70358e6d9d677f9df7667e5fdaf9cf7..f7284063f5916e01664c50121a304e8e27f0448c 100644 (file)
@@ -109,6 +109,17 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI<OSCUIRequest>
                All
        };
 
+       enum OSCCustomMode {
+               CusOff = 0,
+               CusRawOrder = 1,
+               CusSort =2,
+               CusFilterRaw = 5,
+               CusFilter = 6,
+               GroupOnly = 7,
+               VCAOnly = 8,
+               BusOnly = 9
+       };
+
        typedef std::vector<boost::shared_ptr<ARDOUR::Stripable> > Sorted;
        Sorted get_sorted_stripables(std::bitset<32> types, bool cue, uint32_t custom, Sorted my_list);
        typedef std::map<boost::shared_ptr<ARDOUR::AutomationControl>, uint32_t> FakeTouchMap;
@@ -127,7 +138,7 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI<OSCUIRequest>
                int gainmode;                           // what kind of faders do we have Gain db or position 0 to 1?
                PBD::Controllable::GroupControlDisposition usegroup;    // current group disposition
                Sorted custom_strips;           // a sorted list of user selected strips
-               uint32_t custom_mode;           // use custom strip list
+               OSCCustomMode custom_mode;      // use custom strip list
                Sorted temp_strips;                     // temp strip list for grouponly, vcaonly, auxonly
                Sorted strips;                          // list of stripables for this surface
                // strips
@@ -191,7 +202,7 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI<OSCUIRequest>
                bool autobank;                                  // banksize is derived from total
                uint32_t not_ready;                             // number of 1st device, 0 = ready
                Sorted custom_strips;                   // a sorted list of user selected strips
-               uint32_t custom_mode;                   // use custom strip list
+               OSCCustomMode custom_mode;      // use custom strip list
                Sorted temp_strips;                     // temp strip list for grouponly, vcaonly, auxonly
                std::bitset<32> strip_types;    // strip_types for this linkset
                Sorted strips;                                  // list of valid strips in order for this set
@@ -692,6 +703,7 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI<OSCUIRequest>
        int refresh_surface (lo_message msg);
        int custom_clear (lo_message msg);
        int custom_mode (float state, lo_message msg);
+       int _custom_mode (OSCCustomMode state, lo_address addr);
        int name_session (char *n, lo_message msg);
        // select
        int sel_send_pagesize (uint32_t size, lo_message msg);