13
0
livetrax/gtk2_ardour/canvas-program-change.cc
David Robillard 05801cc3d6 Eliminate excessive allocation (for every event) during MidiModel iteration.
git-svn-id: svn://localhost/ardour2/branches/3.0@3351 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-05-15 05:00:28 +00:00

48 lines
1.6 KiB
C++

#include "canvas-program-change.h"
#include <iostream>
#include "ardour_ui.h"
using namespace Gnome::Canvas;
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)
{
char pgm_str[4];
snprintf(pgm_str, 4, "%d", (int)event->pgm_number());
_text = new Text(*this, 0.0, 0.0, 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);
}
CanvasProgramChange::~CanvasProgramChange()
{
delete _line;
delete _rect;
delete _text;
}