diff options
-rw-r--r-- | libs/surfaces/push2/buttons.cc | 1 | ||||
-rw-r--r-- | libs/surfaces/push2/layout.cc | 1 | ||||
-rw-r--r-- | libs/surfaces/push2/layout.h | 67 | ||||
-rw-r--r-- | libs/surfaces/push2/mix.cc | 1 | ||||
-rw-r--r-- | libs/surfaces/push2/mix.h | 71 | ||||
-rw-r--r-- | libs/surfaces/push2/push2.cc | 4 | ||||
-rw-r--r-- | libs/surfaces/push2/push2.h | 86 | ||||
-rw-r--r-- | libs/surfaces/push2/scale.cc | 3 | ||||
-rw-r--r-- | libs/surfaces/push2/scale.h | 51 |
9 files changed, 198 insertions, 87 deletions
diff --git a/libs/surfaces/push2/buttons.cc b/libs/surfaces/push2/buttons.cc index 980dcf6a94..19fbfcb513 100644 --- a/libs/surfaces/push2/buttons.cc +++ b/libs/surfaces/push2/buttons.cc @@ -23,6 +23,7 @@ #include "ardour/session.h" #include "ardour/solo_control.h" +#include "layout.h" #include "push2.h" using namespace ArdourSurface; diff --git a/libs/surfaces/push2/layout.cc b/libs/surfaces/push2/layout.cc index e27ea0fe55..f675e3ddbb 100644 --- a/libs/surfaces/push2/layout.cc +++ b/libs/surfaces/push2/layout.cc @@ -16,6 +16,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include "layout.h" #include "push2.h" using namespace ARDOUR; diff --git a/libs/surfaces/push2/layout.h b/libs/surfaces/push2/layout.h new file mode 100644 index 0000000000..969c510dfb --- /dev/null +++ b/libs/surfaces/push2/layout.h @@ -0,0 +1,67 @@ +/* + Copyright (C) 2016 Paul Davis + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#ifndef __ardour_push2_layout_h__ +#define __ardour_push2_layout_h__ + +#include <stdint.h> + +#include <cairomm/refptr.h> + +namespace ARDOUR { + class Session; +} + +namespace Cairo { + class Context; +} + +namespace ArdourSurface { + +class Push2; + +class Push2Layout +{ + public: + Push2Layout (Push2& p, ARDOUR::Session& s); + virtual ~Push2Layout (); + + bool mapped() const; + + virtual bool redraw (Cairo::RefPtr<Cairo::Context>) const = 0; + + virtual void button_upper (uint32_t n) {} + virtual void button_lower (uint32_t n) {} + virtual void button_up () {} + virtual void button_down () {} + virtual void button_right () {} + virtual void button_left () {} + virtual void button_select_press () {} + virtual void button_select_release () {} + + virtual void strip_vpot (int, int) = 0; + virtual void strip_vpot_touch (int, bool) = 0; + + protected: + Push2& p2; + ARDOUR::Session& session; +}; + +} /* namespace */ + +#endif /* __ardour_push2_layout_h__ */ diff --git a/libs/surfaces/push2/mix.cc b/libs/surfaces/push2/mix.cc index a4bebf463a..f0ee572455 100644 --- a/libs/surfaces/push2/mix.cc +++ b/libs/surfaces/push2/mix.cc @@ -41,6 +41,7 @@ #include "ardour/tempo.h" #include "push2.h" +#include "mix.h" #include "i18n.h" diff --git a/libs/surfaces/push2/mix.h b/libs/surfaces/push2/mix.h new file mode 100644 index 0000000000..488f888cd5 --- /dev/null +++ b/libs/surfaces/push2/mix.h @@ -0,0 +1,71 @@ +/* + Copyright (C) 2016 Paul Davis + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#ifndef __ardour_push2_mix_layout_h__ +#define __ardour_push2_mix_layout_h__ + +#include "layout.h" + +namespace ARDOUR { + class Stripable; +} + +namespace ArdourSurface { + +class MixLayout : public Push2Layout +{ + public: + MixLayout (Push2& p, ARDOUR::Session&, Cairo::RefPtr<Cairo::Context>); + ~MixLayout (); + + bool redraw (Cairo::RefPtr<Cairo::Context>) const; + + void button_upper (uint32_t n); + void button_lower (uint32_t n); + void button_left (); + void button_right (); + void button_select_press (); + void button_select_release (); + + void strip_vpot (int, int); + void strip_vpot_touch (int, bool); + + private: + Glib::RefPtr<Pango::Layout> tc_clock_layout; + Glib::RefPtr<Pango::Layout> bbt_clock_layout; + Glib::RefPtr<Pango::Layout> upper_layout[8]; + Glib::RefPtr<Pango::Layout> mid_layout[8]; + Glib::RefPtr<Pango::Layout> lower_layout[8]; + + /* stripables */ + + int32_t bank_start; + PBD::ScopedConnectionList stripable_connections; + boost::shared_ptr<ARDOUR::Stripable> stripable[8]; + + 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); +}; + +} /* namespace */ + +#endif /* __ardour_push2_layout_h__ */ diff --git a/libs/surfaces/push2/push2.cc b/libs/surfaces/push2/push2.cc index 664704d9c6..16cd0a6f82 100644 --- a/libs/surfaces/push2/push2.cc +++ b/libs/surfaces/push2/push2.cc @@ -40,6 +40,10 @@ #include "push2.h" #include "gui.h" +#include "layout.h" +#include "scale.h" +#include "mix.h" +#include "track_mix.h" #include "menu.h" #include "i18n.h" diff --git a/libs/surfaces/push2/push2.h b/libs/surfaces/push2/push2.h index 3a1f33861f..1132435318 100644 --- a/libs/surfaces/push2/push2.h +++ b/libs/surfaces/push2/push2.h @@ -532,92 +532,6 @@ class Push2 : public ARDOUR::ControlProtocol void set_percussive_mode (bool); }; -class Push2Layout -{ - public: - Push2Layout (Push2& p, ARDOUR::Session& s); - virtual ~Push2Layout (); - - bool mapped() const; - - virtual bool redraw (Cairo::RefPtr<Cairo::Context>) const = 0; - - virtual void button_upper (uint32_t n) {} - virtual void button_lower (uint32_t n) {} - virtual void button_up () {} - virtual void button_down () {} - virtual void button_right () {} - virtual void button_left () {} - virtual void button_select_press () {} - virtual void button_select_release () {} - - virtual void strip_vpot (int, int) = 0; - virtual void strip_vpot_touch (int, bool) = 0; - - protected: - Push2& p2; - ARDOUR::Session& session; -}; - - -class MixLayout : public Push2Layout -{ - public: - MixLayout (Push2& p, ARDOUR::Session&, Cairo::RefPtr<Cairo::Context>); - ~MixLayout (); - - bool redraw (Cairo::RefPtr<Cairo::Context>) const; - - void button_upper (uint32_t n); - void button_lower (uint32_t n); - void button_left (); - void button_right (); - void button_select_press (); - void button_select_release (); - - void strip_vpot (int, int); - void strip_vpot_touch (int, bool); - - private: - Glib::RefPtr<Pango::Layout> tc_clock_layout; - Glib::RefPtr<Pango::Layout> bbt_clock_layout; - Glib::RefPtr<Pango::Layout> upper_layout[8]; - Glib::RefPtr<Pango::Layout> mid_layout[8]; - Glib::RefPtr<Pango::Layout> lower_layout[8]; - - /* stripables */ - - int32_t bank_start; - PBD::ScopedConnectionList stripable_connections; - boost::shared_ptr<ARDOUR::Stripable> stripable[8]; - - 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); -}; - -class ScaleLayout : public Push2Layout -{ - public: - ScaleLayout (Push2& p, ARDOUR::Session&, Cairo::RefPtr<Cairo::Context>); - ~ScaleLayout (); - - bool redraw (Cairo::RefPtr<Cairo::Context>) const; - - void button_upper (uint32_t n); - void button_lower (uint32_t n); - - void strip_vpot (int, int); - void strip_vpot_touch (int, bool); - - private: - Push2Menu* scale_menu; - void build_scale_menu (Cairo::RefPtr<Cairo::Context>); -}; - } /* namespace */ #endif /* __ardour_push2_h__ */ diff --git a/libs/surfaces/push2/scale.cc b/libs/surfaces/push2/scale.cc index da9c4fa3b1..2f86d54786 100644 --- a/libs/surfaces/push2/scale.cc +++ b/libs/surfaces/push2/scale.cc @@ -40,8 +40,9 @@ #include "ardour/session.h" #include "ardour/tempo.h" -#include "push2.h" #include "menu.h" +#include "push2.h" +#include "scale.h" #include "i18n.h" diff --git a/libs/surfaces/push2/scale.h b/libs/surfaces/push2/scale.h new file mode 100644 index 0000000000..a859756d2f --- /dev/null +++ b/libs/surfaces/push2/scale.h @@ -0,0 +1,51 @@ +/* + Copyright (C) 2016 Paul Davis + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#ifndef __ardour_push2_scale_layout_h__ +#define __ardour_push2_scale_layout_h__ + +#include "layout.h" + +namespace ARDOUR { + class Stripable; +} + +namespace ArdourSurface { + +class ScaleLayout : public Push2Layout +{ + public: + ScaleLayout (Push2& p, ARDOUR::Session&, Cairo::RefPtr<Cairo::Context>); + ~ScaleLayout (); + + bool redraw (Cairo::RefPtr<Cairo::Context>) const; + + void button_upper (uint32_t n); + void button_lower (uint32_t n); + + void strip_vpot (int, int); + void strip_vpot_touch (int, bool); + + private: + Push2Menu* scale_menu; + void build_scale_menu (Cairo::RefPtr<Cairo::Context>); +}; + +} /* namespace */ + +#endif /* __ardour_push2_scale_layout_h__ */ |