diff options
Diffstat (limited to 'gtk2_ardour/control_point.h')
-rw-r--r-- | gtk2_ardour/control_point.h | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/gtk2_ardour/control_point.h b/gtk2_ardour/control_point.h new file mode 100644 index 0000000000..47b0d131b7 --- /dev/null +++ b/gtk2_ardour/control_point.h @@ -0,0 +1,102 @@ +/* + Copyright (C) 2002-2007 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_control_point_h__ +#define __ardour_control_point_h__ + +#include <sys/types.h> + +#include <ardour/automation_event.h> + +#include "canvas.h" +#include "simplerect.h" + +class AutomationLine; +class ControlPoint; +class PointSelection; +class TimeAxisView; +class AutomationTimeAxisView; +class Selectable; +class Selection; + +namespace Gnome { + namespace Canvas { + class SimpleRect; + class Diamond; + } +} + +class ControlPoint +{ + public: + ControlPoint (AutomationLine& al); + ControlPoint (const ControlPoint&, bool dummy_arg_to_force_special_copy_constructor); + virtual ~ControlPoint (); + + enum ShapeType { + Full, + Start, + End + }; + + void move_to (double x, double y, ShapeType); + void reset (double x, double y, ARDOUR::AutomationList::iterator, uint32_t, ShapeType); + double get_x() const { return _x; } + double get_y() const { return _y; } + + void hide (); + void show (); + void show_color (bool entered, bool hide_too); + + void set_size (double); + void set_visible (bool); + + bool can_slide() const { return _can_slide; } + void set_can_slide(bool yn) { _can_slide = yn; } + bool selected() const { return _selected; } + void set_selected(bool yn) { _selected = yn; } + uint32_t view_index() const { return _view_index; } + void set_view_index(uint32_t i) { _view_index = i; } + + ARDOUR::AutomationList::iterator model() const { return _model; } + AutomationLine& line() const { return _line; } + ArdourCanvas::Item* item() const { return _item; } + + protected: + ArdourCanvas::SimpleRect* _item; + + AutomationLine& _line; + + ARDOUR::AutomationList::iterator _model; + uint32_t _view_index; + bool _can_slide; + bool _selected; + + virtual bool event_handler (GdkEvent*); + + private: + double _x; + double _y; + double _size; + ShapeType _shape; +}; + + +#endif /* __ardour_control_point_h__ */ + |