X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fport_matrix_grid.h;h=7172b82699ab95add95782e52cfc5ac8dfe6ccea;hb=ccf58b8de23619db9983a45f696fd97e13a15cce;hp=945ba5a2e6a0934fe028928205274e72520fa6f7;hpb=9cc7b452ebb8fe8f348ad6aad18054703700da18;p=ardour.git diff --git a/gtk2_ardour/port_matrix_grid.h b/gtk2_ardour/port_matrix_grid.h index 945ba5a2e6..7172b82699 100644 --- a/gtk2_ardour/port_matrix_grid.h +++ b/gtk2_ardour/port_matrix_grid.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 @@ -17,8 +17,8 @@ */ -#ifndef __gtk_ardour_port_matrix_grid_h__ -#define __gtk_ardour_port_matrix_grid_h__ +#ifndef __gtk_ardour_port_matrix_grid_h__ +#define __gtk_ardour_port_matrix_grid_h__ #include #include @@ -26,6 +26,7 @@ #include "ardour/types.h" #include "port_matrix_component.h" #include "port_matrix_types.h" +#include "port_group.h" class PortMatrix; class PortMatrixBody; @@ -34,14 +35,15 @@ namespace ARDOUR { class Bundle; } -/// The grid part of the port matrix +/** The grid part of the port matrix */ class PortMatrixGrid : public PortMatrixComponent { public: PortMatrixGrid (PortMatrix *, PortMatrixBody *); - void button_press (double, double, int); - void mouseover_event (double, double); + void button_press (double, double, int, uint32_t); + void button_release (double, double, int, uint32_t); + void motion (double, double); double component_to_parent_x (double x) const; double parent_to_component_x (double x) const; @@ -51,16 +53,28 @@ public: void draw_extra (cairo_t *); private: - + void compute_dimensions (); void render (cairo_t *); + void render_group_pair (cairo_t *, boost::shared_ptr, boost::shared_ptr, uint32_t, uint32_t); - double channel_position (PortMatrixBundleChannel, ARDOUR::BundleList const &, double) const; - PortMatrixNode position_to_node (double, double) const; - PortMatrixBundleChannel position_to_channel (double, ARDOUR::BundleList const &, double) const; + PortMatrixNode position_to_node (uint32_t, uint32_t) const; void queue_draw_for (PortMatrixNode const &); + void draw_association_indicator (cairo_t *, uint32_t, uint32_t, double p = 1); + void draw_empty_square (cairo_t *, uint32_t, uint32_t); + void draw_unknown_indicator (cairo_t *, uint32_t, uint32_t); + std::list nodes_on_line (int, int, int, int) const; + PortMatrixNode::State get_association (PortMatrixNode) const; + void set_association (PortMatrixNode, bool); + bool toggle_state (PortMatrixNode::State) const; - PortMatrix* _port_matrix; + bool _dragging; + bool _drag_valid; + bool _moved; + int _drag_start_x; + int _drag_start_y; + int _drag_x; + int _drag_y; }; #endif