/*
- 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
#include <stdint.h>
#include <gtkmm/eventbox.h>
+#include <boost/shared_ptr.hpp>
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.
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<PortMatrixNode> 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 ();
void require_render () {
_render_required = true;
}
-
+
void require_rebuild () {
_dimension_computation_required = true;
_render_required = true;
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:
/** @return space around the connection indicator */
static uint32_t connection_indicator_pad () {
- return 8;
+ return 6;
}
static uint32_t mouseover_line_width () {
}
/** @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");
}
/* 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");
}
}
return Gdk::Color ("#444444");
}
}
-
+
void set_source_rgb (cairo_t *, Gdk::Color const &);
void set_source_rgba (cairo_t *, Gdk::Color const &, double);
+ uint32_t group_size (boost::shared_ptr<const PortGroup>) const;
+ uint32_t channel_to_position (ARDOUR::BundleChannel, boost::shared_ptr<const PortGroup>) const;
+ virtual ARDOUR::BundleChannel position_to_channel (double, double, boost::shared_ptr<const PortGroup>) const;
/** Render the complete component to a cairo context. */
virtual void render (cairo_t *) = 0;
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