summaryrefslogtreecommitdiff
path: root/gtk2_ardour/canvas-program-change.cc
diff options
context:
space:
mode:
authorHans Baier <hansfbaier@googlemail.com>2008-04-29 07:28:24 +0000
committerHans Baier <hansfbaier@googlemail.com>2008-04-29 07:28:24 +0000
commit6d319e2132270b89efc47820e707840eb49a2cfe (patch)
treec1ce4a3b8f98b2f829da4b1e929f8181aa5c1a23 /gtk2_ardour/canvas-program-change.cc
parentf41f334be69f3cc95bf49c90dd49f86b46ce32e4 (diff)
* first prototype of program changes UI show up correctly (see http://www.flickr.com/photos/24012642@N02/2451596190/)
git-svn-id: svn://localhost/ardour2/branches/3.0@3293 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/canvas-program-change.cc')
-rw-r--r--gtk2_ardour/canvas-program-change.cc58
1 files changed, 58 insertions, 0 deletions
diff --git a/gtk2_ardour/canvas-program-change.cc b/gtk2_ardour/canvas-program-change.cc
new file mode 100644
index 0000000000..5883dd5b86
--- /dev/null
+++ b/gtk2_ardour/canvas-program-change.cc
@@ -0,0 +1,58 @@
+#include "canvas-program-change.h"
+#include <iostream>
+
+using namespace ArdourCanvas;
+using namespace std;
+
+CanvasProgramChange::CanvasProgramChange(
+ MidiRegionView& region,
+ Group& parent,
+ boost::shared_ptr<MIDI::Event> event,
+ double height,
+ double x,
+ double y)
+ : Group(parent, x, y),
+ _region(region),
+ _event(event),
+ _text(0),
+ _line(0),
+ _rect(0),
+ _widget(0)
+{
+ _text = new Text(*this);
+ ostringstream pgm(ios::ate);
+ pgm << int(event->pgm_number());
+ _text->property_text() = pgm.str();
+ _text->property_justification() = Gtk::JUSTIFY_CENTER;
+ _text->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_MidiProgramChangeOutline.get();
+ double flagwidth = _text->property_text_width() + 10.0;
+ double flagheight = _text->property_text_height() + 3.0;
+ _text->property_x() = flagwidth / 2.0;
+ _text->property_y() = flagheight / 2.0;
+ _text->show();
+ _line = new SimpleLine(*this, 0.0, 0.0, 0.0, height);
+ _line->property_color_rgba() = ARDOUR_UI::config()->canvasvar_MidiProgramChangeOutline.get();
+ _rect = new SimpleRect(*this, 0.0, 0.0, flagwidth, flagheight);
+ _rect->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_MidiProgramChangeOutline.get();
+ _rect->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_MidiProgramChangeFill.get();
+ _text->lower_to_bottom();
+ _text->raise(2);
+ assert(_widget == 0);
+ assert(_text != 0);
+ assert(_line != 0);
+ assert(_rect != 0);
+}
+
+CanvasProgramChange::~CanvasProgramChange()
+{
+ if(_line)
+ delete _line;
+ if(_rect)
+ delete _rect;
+ if(_text)
+ delete _text;
+ if(_widget)
+ delete _widget;
+}
+
+