X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fport_matrix_component.h;h=0b472e157ddc48fb57efa111de14260455aa34da;hb=9971e718fed4a1126d97bad69f2608638d5a5464;hp=9eb2c566a5e56406c45868c96acd22d916aabd1c;hpb=d06d697e41e2089ec4cce35ea17b4995797deab7;p=ardour.git diff --git a/gtk2_ardour/port_matrix_component.h b/gtk2_ardour/port_matrix_component.h index 9eb2c566a5..0b472e157d 100644 --- a/gtk2_ardour/port_matrix_component.h +++ b/gtk2_ardour/port_matrix_component.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2009 Paul Davis + Copyright (C) 2002-2009 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 @@ -20,11 +20,20 @@ #ifndef __gtk_ardour_port_matrix_component_h__ #define __gtk_ardour_port_matrix_component_h__ +#include #include +#include class PortMatrix; class PortMatrixBody; class PortMatrixNode; +class PortGroup; +class PortGroupList; + +namespace ARDOUR { + class Bundle; + class BundleChannel; +} /** One component of the PortMatrix. This is a cairo-rendered * Pixmap. @@ -39,9 +48,13 @@ public: virtual double parent_to_component_x (double x) const = 0; virtual double component_to_parent_y (double y) const = 0; virtual double parent_to_component_y (double y) const = 0; - virtual void mouseover_changed (PortMatrixNode const &) = 0; + virtual void mouseover_changed (std::list const &) = 0; virtual void draw_extra (cairo_t *) = 0; + virtual void button_press (double, double, GdkEventButton *) {} + virtual void button_release (double, double, GdkEventButton *) {} + virtual void motion (double, double) {} + void set_show_ports (bool); void setup (); GdkPixmap* get_pixmap (GdkDrawable *); std::pair dimensions (); @@ -49,7 +62,7 @@ public: void require_render () { _render_required = true; } - + void require_rebuild () { _dimension_computation_required = true; _render_required = true; @@ -63,14 +76,9 @@ public: return _parent_rectangle; } - /** @return width of columns in the grid */ - static uint32_t column_width () { - return 32; - } - - /** @return height of rows in the grid */ - static uint32_t row_height () { - return 32; + /** @return grid spacing */ + static uint32_t grid_spacing () { + return 24; } protected: @@ -86,18 +94,18 @@ protected: } /** @return width of thin lines in the grid */ - static uint32_t thin_grid_line_width () { - return 1; + static double thin_grid_line_width () { + return 0.5; } /** @return width of thick lines in the grid */ - static uint32_t thick_grid_line_width () { - return 2; + static double thick_grid_line_width () { + return 1; } /** @return space around the connection indicator */ static uint32_t connection_indicator_pad () { - return 8; + return 6; } static uint32_t mouseover_line_width () { @@ -109,12 +117,10 @@ protected: return M_PI / 4; } - /* XXX I guess these colours should come from a theme, or something */ - /** @return background colour */ - static Gdk::Color background_colour () { - return Gdk::Color ("#000000"); - } + Gdk::Color background_colour (); + + /* XXX I guess these colours should come from a theme, or something */ /** @return text colour */ static Gdk::Color text_colour () { @@ -123,7 +129,7 @@ protected: /** @return grid line colour */ static Gdk::Color grid_colour () { - return Gdk::Color ("#333333"); + return Gdk::Color ("#000000"); } /** @return colour of association blobs */ @@ -132,7 +138,7 @@ protected: } /** @return colour to paint grid squares when they can't be associated */ - static Gdk::Color unknown_colour () { + static Gdk::Color non_connectable_colour () { return Gdk::Color ("#cccccc"); } @@ -149,9 +155,9 @@ protected: /* XXX */ static Gdk::Color get_a_bundle_colour (int x) { if ((x % 2) == 0) { - return Gdk::Color ("#547027"); + return Gdk::Color ("#555555"); } else { - return Gdk::Color ("#3552a6"); + return Gdk::Color ("#666666"); } } @@ -163,10 +169,12 @@ protected: return Gdk::Color ("#444444"); } } - + void set_source_rgb (cairo_t *, Gdk::Color const &); void set_source_rgba (cairo_t *, Gdk::Color const &, double); - std::pair display_port_name (cairo_t*, std::string const &, double) const; + uint32_t group_size (boost::shared_ptr) const; + uint32_t channel_to_position (ARDOUR::BundleChannel, boost::shared_ptr) const; + virtual ARDOUR::BundleChannel position_to_channel (double, double, boost::shared_ptr) const; /** Render the complete component to a cairo context. */ virtual void render (cairo_t *) = 0; @@ -181,7 +189,7 @@ protected: uint32_t _height; ///< full height of the contents Gdk::Rectangle _parent_rectangle; -private: +private: GdkPixmap* _pixmap; ///< pixmap bool _render_required; ///< true if the rendered pixmap is out of date bool _dimension_computation_required; ///< true if the dimensions are out of date