enum ModifierState {
None = 0,
ModShift = 0x1,
+ ModSelect = 0x2,
};
ModifierState modifier_state;
int open ();
int close ();
bool redraw ();
- int bitblt_to_device_frame_buffer ();
+ int blit_to_device_frame_buffer ();
bool vblank ();
enum ButtonID {
, id (bb)
, press_method (&Push2::relax)
, release_method (&Push2::relax)
+ , long_press_method (&Push2::relax)
{}
Button (ButtonID bb, uint8_t ex, void (Push2::*press)())
, id (bb)
, press_method (press)
, release_method (&Push2::relax)
+ , long_press_method (&Push2::relax)
{}
Button (ButtonID bb, uint8_t ex, void (Push2::*press)(), void (Push2::*release)())
, id (bb)
, press_method (press)
, release_method (release)
+ , long_press_method (&Push2::relax)
+ {}
+
+ Button (ButtonID bb, uint8_t ex, void (Push2::*press)(), void (Push2::*release)(), void (Push2::*long_press)())
+ : LED (ex)
+ , id (bb)
+ , press_method (press)
+ , release_method (release)
+ , long_press_method (long_press)
{}
MidiByteArray state_msg () const { return MidiByteArray (3, 0xb0|_state, _extra, _color_index); }
ButtonID id;
void (Push2::*press_method)();
void (Push2::*release_method)();
+ void (Push2::*long_press_method)();
+ sigc::connection timeout_connection;
};
struct ColorButton : public Button {
ColorButton (ButtonID bb, uint8_t ex, void (Push2::*press)(), void (Push2::*release)())
: Button (bb, ex, press, release) {}
+
+ ColorButton (ButtonID bb, uint8_t ex, void (Push2::*press)(), void (Push2::*release)(), void (Push2::*long_press)())
+ : Button (bb, ex, press, release, long_press) {}
};
struct WhiteButton : public Button {
WhiteButton (ButtonID bb, uint8_t ex, void (Push2::*press)(), void (Push2::*release)())
: Button (bb, ex, press, release) {}
+
+ WhiteButton (ButtonID bb, uint8_t ex, void (Push2::*press)(), void (Push2::*release)(), void (Push2::*long_press)())
+ : Button (bb, ex, press, release, long_press) {}
};
void relax () {}
/* map of Buttons by ButtonID */
typedef std::map<ButtonID,Button*> IDButtonMap;
IDButtonMap id_button_map;
+ std::set<ButtonID> buttons_down;
+ std::set<ButtonID> consumed;
+
+ bool button_long_press_timeout (ButtonID id);
+ void start_press_timeout (Button&, ButtonID);
- void init_buttons ();
+ void init_buttons (bool startup);
void init_touch_strip ();
/* map of Pads by note number */
void button_solo ();
void button_fixed_length ();
void button_new ();
- void button_shift_press ();
- void button_shift_release ();
void button_browse ();
void button_clip ();
void button_upper (uint32_t n);
void button_fwd8 ();
void button_fwd4t ();
void button_fwd4 ();
+ void button_add_track ();
+ void button_stop ();
+ void button_shift_press ();
+ void button_shift_release ();
+ void button_shift_long_press ();
+ void button_select_press ();
+ void button_select_release ();
+ void button_select_long_press ();
+ void button_page_left ();
+ void button_page_right ();
+
+ void start_shift ();
+ void end_shift ();
+ void start_select ();
+ void end_select ();
/* encoders */
Glib::RefPtr<Pango::Layout> mid_layout[8];
Glib::RefPtr<Pango::Layout> lower_layout[8];
+ void splash ();
+ ARDOUR::microseconds_t splash_start;
+
/* stripables */
int32_t bank_start;
void solo_change (int);
void mute_change (int);
+ void stripable_property_change (PBD::PropertyChange const& what_changed, int which);
void switch_bank (uint32_t base);
};