1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
#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 {
class CanvasFlagRect;
class CanvasFlagText;
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)
{}
virtual ~CanvasFlag();
virtual bool on_event(GdkEvent* ev);
void set_text(string& a_text);
protected:
CanvasFlagText* _text;
double _height;
guint _outline_color_rgba;
guint _fill_color_rgba;
private:
void delete_allocated_objects();
MidiRegionView& _region;
SimpleLine* _line;
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;
};
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;
};
} // namespace Canvas
} // namespace Gnome
#endif /*CANVASFLAG_H_*/
|