2008-12-11 03:06:27 -05:00
|
|
|
#ifndef CANVASFLAG_H_
|
|
|
|
#define CANVASFLAG_H_
|
|
|
|
|
|
|
|
#include <libgnomecanvasmm/group.h>
|
|
|
|
#include <libgnomecanvasmm/text.h>
|
|
|
|
#include <libgnomecanvasmm/widget.h>
|
|
|
|
|
|
|
|
#include <ardour/midi_model.h>
|
|
|
|
|
|
|
|
#include "simplerect.h"
|
|
|
|
#include "simpleline.h"
|
|
|
|
|
|
|
|
class MidiRegionView;
|
|
|
|
|
|
|
|
namespace Gnome {
|
|
|
|
namespace Canvas {
|
|
|
|
|
2008-12-12 17:04:22 -05:00
|
|
|
class CanvasFlagRect;
|
|
|
|
class CanvasFlagText;
|
|
|
|
|
2008-12-11 03:06:27 -05:00
|
|
|
class CanvasFlag : public Group
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
CanvasFlag(
|
|
|
|
MidiRegionView& region,
|
|
|
|
Group& parent,
|
|
|
|
double height,
|
|
|
|
guint outline_color_rgba = 0xc0c0c0ff,
|
|
|
|
guint fill_color_rgba = 0x07070707,
|
|
|
|
double x = 0.0,
|
|
|
|
double y = 0.0
|
|
|
|
) : Group(parent, x, y)
|
|
|
|
, _text(0)
|
|
|
|
, _height(height)
|
|
|
|
, _outline_color_rgba(outline_color_rgba)
|
|
|
|
, _fill_color_rgba(fill_color_rgba)
|
|
|
|
, _region(region)
|
|
|
|
, _line(0)
|
|
|
|
, _rect(0)
|
|
|
|
{}
|
2008-12-12 17:04:22 -05:00
|
|
|
|
2008-12-11 03:06:27 -05:00
|
|
|
virtual ~CanvasFlag();
|
|
|
|
|
2008-12-12 17:04:22 -05:00
|
|
|
virtual bool on_event(GdkEvent* ev);
|
|
|
|
|
2008-12-12 00:17:53 -05:00
|
|
|
void set_text(string& a_text);
|
2008-12-11 03:06:27 -05:00
|
|
|
|
|
|
|
protected:
|
2008-12-15 06:05:41 -05:00
|
|
|
CanvasFlagText* _text;
|
2008-12-11 03:06:27 -05:00
|
|
|
double _height;
|
|
|
|
guint _outline_color_rgba;
|
|
|
|
guint _fill_color_rgba;
|
2008-12-15 06:05:41 -05:00
|
|
|
MidiRegionView& _region;
|
2008-12-11 03:06:27 -05:00
|
|
|
|
|
|
|
private:
|
2008-12-12 01:57:38 -05:00
|
|
|
void delete_allocated_objects();
|
|
|
|
|
2008-12-11 03:06:27 -05:00
|
|
|
SimpleLine* _line;
|
2008-12-12 17:04:22 -05:00
|
|
|
CanvasFlagRect* _rect;
|
|
|
|
};
|
|
|
|
|
|
|
|
class CanvasFlagText: public Text
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
CanvasFlagText(Group& parent, double x, double y, const Glib::ustring& text)
|
|
|
|
: Text(parent, x, y, text) {
|
|
|
|
_parent = dynamic_cast<CanvasFlag*>(&parent);
|
|
|
|
;
|
|
|
|
}
|
|
|
|
|
|
|
|
virtual bool on_event(GdkEvent* ev) {
|
|
|
|
if(_parent) {
|
|
|
|
return _parent->on_event(ev);
|
|
|
|
} else {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private:
|
|
|
|
CanvasFlag* _parent;
|
2008-12-11 03:06:27 -05:00
|
|
|
};
|
|
|
|
|
2008-12-12 17:04:22 -05:00
|
|
|
class CanvasFlagRect: public SimpleRect
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
CanvasFlagRect(Group& parent, double x1, double y1, double x2, double y2)
|
|
|
|
: SimpleRect(parent, x1, y1, x2, y2) {
|
|
|
|
_parent = dynamic_cast<CanvasFlag*>(&parent);
|
|
|
|
}
|
|
|
|
|
|
|
|
virtual bool on_event(GdkEvent* ev) {
|
|
|
|
if(_parent) {
|
|
|
|
return _parent->on_event(ev);
|
|
|
|
} else {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private:
|
|
|
|
CanvasFlag* _parent;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
2008-12-11 03:06:27 -05:00
|
|
|
} // namespace Canvas
|
|
|
|
} // namespace Gnome
|
|
|
|
|
|
|
|
#endif /*CANVASFLAG_H_*/
|