X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fpanner2d.h;h=f3077187aba4b38c3431a1c1e3a36d467a3aba6b;hb=abf1f286d49482ade939da7e49863a3d63048b42;hp=cd84ad9e2c5918d26aec616bad5757c21097cdbb;hpb=39d5ef503456a754e9a1be98b7215625d17a56e3;p=ardour.git diff --git a/gtk2_ardour/panner2d.h b/gtk2_ardour/panner2d.h index cd84ad9e2c..f3077187ab 100644 --- a/gtk2_ardour/panner2d.h +++ b/gtk2_ardour/panner2d.h @@ -46,14 +46,14 @@ namespace Gtk { } namespace Pango { - class Layout; + class Container; } class Panner2dWindow; class Panner2d : public Gtk::DrawingArea { - public: + public: Panner2d (boost::shared_ptr, int32_t height); ~Panner2d (); @@ -63,13 +63,14 @@ class Panner2d : public Gtk::DrawingArea int add_signal (const char* text, const PBD::AngularVector&); void move_signal (int which, const PBD::AngularVector&); void reset (uint32_t n_inputs); + void set_send_drawing_mode (bool); boost::shared_ptr get_panner_shell() const { return panner_shell; } void cart_to_gtk (PBD::CartesianVector&) const; void gtk_to_cart (PBD::CartesianVector&) const; - protected: + protected: bool on_expose_event (GdkEventExpose *); bool on_button_press_event (GdkEventButton *); bool on_button_release_event (GdkEventButton *); @@ -77,9 +78,9 @@ class Panner2d : public Gtk::DrawingArea bool on_scroll_event (GdkEventScroll *); void on_size_allocate (Gtk::Allocation& alloc); - private: + private: class Target { - public: + public: PBD::AngularVector position; bool visible; std::string text; @@ -95,28 +96,49 @@ class Panner2d : public Gtk::DrawingArea return _selected; } - private: + private: bool _selected; }; + struct ColorScheme { + uint32_t background; + uint32_t crosshairs; + uint32_t signalcircle_border; + uint32_t signalcircle; + uint32_t diffusion; + uint32_t diffusion_inv; + uint32_t pos_outline; + uint32_t pos_fill; + uint32_t signal_outline; + uint32_t signal_fill; + uint32_t speaker_fill; + uint32_t text; + }; + + static ColorScheme colors; + static void set_colors (); + static bool have_colors; + void color_handler (); + boost::shared_ptr panner_shell; Glib::RefPtr layout; typedef std::vector Targets; Targets speakers; Targets signals; - Target position; + Target position; Target *drag_target; int width; int height; - double radius; - double border; - double hoffset; - double voffset; - double last_width; + double radius; + double border; + double hoffset; + double voffset; + double last_width; bool did_move; bool have_elevation; + bool _send_mode; Target *find_closest_object (gdouble x, gdouble y, bool& is_signal); @@ -125,10 +147,10 @@ class Panner2d : public Gtk::DrawingArea void toggle_bypass (); void handle_state_change (); void handle_position_change (); - void label_signals (); + void label_signals (); - PBD::ScopedConnectionList connections; - PBD::ScopedConnectionList panconnect; + PBD::ScopedConnectionList panshell_connections; + PBD::ScopedConnectionList panner_connections; /* cartesian coordinates in GTK units ; adjust to same but on a circle of radius 1.0 and centered in the middle of our area @@ -139,12 +161,12 @@ class Panner2d : public Gtk::DrawingArea class Panner2dWindow : public ArdourWindow { - public: + public: Panner2dWindow (boost::shared_ptr, int32_t height, uint32_t inputs); void reset (uint32_t n_inputs); - private: + private: Panner2d widget; Gtk::HBox hpacker; @@ -156,14 +178,16 @@ class Panner2dWindow : public ArdourWindow Gtk::Adjustment width_adjustment; Gtk::SpinButton width_spinner; - PBD::ScopedConnectionList connections; - void set_bypassed(); - void set_width(); + PBD::ScopedConnectionList panshell_connections; + PBD::ScopedConnectionList panvalue_connections; + void set_bypassed(); + void set_width(); - void bypass_toggled (); - void width_changed (); - bool on_key_press_event (GdkEventKey*); - bool on_key_release_event (GdkEventKey*); + void pannable_handler (); + void bypass_toggled (); + void width_changed (); + bool on_key_press_event (GdkEventKey*); + bool on_key_release_event (GdkEventKey*); }; #endif /* __ardour_panner_2d_h__ */