20 #include <sigc++/bind.h>
23 #include "canvas/rectangle.h"
24 #include "canvas/container.h"
25 #include "canvas/line.h"
26 #include "canvas/polygon.h"
27 #include "canvas/text.h"
28 #include "canvas/canvas.h"
29 #include "canvas/scroll_group.h"
30 #include "canvas/debug.h"
63 Type type,
framepos_t frame,
bool handle_events)
67 , _track_canvas_line (0)
73 , _left_label_limit (DBL_MAX)
74 , _right_label_limit (DBL_MAX)
156 points =
new ArdourCanvas::Points ();
158 points->push_back (ArdourCanvas::Duple (0.0, 0.0));
159 points->push_back (ArdourCanvas::Duple ( M6, 0.0));
160 points->push_back (ArdourCanvas::Duple ( M6, MH * .4));
161 points->push_back (ArdourCanvas::Duple ( M3, MH));
162 points->push_back (ArdourCanvas::Duple (0.0, MH * .4));
163 points->push_back (ArdourCanvas::Duple (0.0, 0.0));
171 points =
new ArdourCanvas::Points ();
172 points->push_back (ArdourCanvas::Duple ( M3, 0.0));
173 points->push_back (ArdourCanvas::Duple ( M6, MH * .6));
174 points->push_back (ArdourCanvas::Duple ( M6, MH));
175 points->push_back (ArdourCanvas::Duple (0.0, MH));
176 points->push_back (ArdourCanvas::Duple (0.0, MH * .6));
177 points->push_back (ArdourCanvas::Duple ( M3, 0.0));
185 points =
new ArdourCanvas::Points ();
186 points->push_back (ArdourCanvas::Duple ( 0.0, 0.0));
187 points->push_back (ArdourCanvas::Duple (M6 + .5, MH * .5));
188 points->push_back (ArdourCanvas::Duple ( 0.0, MH));
189 points->push_back (ArdourCanvas::Duple ( 0.0, 0.0));
197 points =
new ArdourCanvas::Points ();
198 points->push_back (ArdourCanvas::Duple ( M6, 0.0));
199 points->push_back (ArdourCanvas::Duple ( M6, MH));
200 points->push_back (ArdourCanvas::Duple (0.0, MH * .5));
201 points->push_back (ArdourCanvas::Duple ( M6, 0.0));
208 points =
new ArdourCanvas::Points ();
209 points->push_back (ArdourCanvas::Duple (0.0, 0.0));
212 points->push_back (ArdourCanvas::Duple (0.0, 0.0));
219 points =
new ArdourCanvas::Points ();
230 points =
new ArdourCanvas::Points ();
231 points->push_back (ArdourCanvas::Duple (0.0, 0.0));
234 points->push_back (ArdourCanvas::Duple (0.0, 0.0));
241 points =
new ArdourCanvas::Points ();
242 points->push_back (ArdourCanvas::Duple (0.0, 0.0));
245 points->push_back (ArdourCanvas::Duple (0.0, 0.0));
257 group =
new ArdourCanvas::Container (&parent, ArdourCanvas::Duple (
unit_position, 0));
269 mark =
new ArdourCanvas::Polygon (
group);
280 Glib::RefPtr<Pango::Layout> layout = foo.create_pango_layout (
X_(
"Hg"));
283 layout->set_font_description (
name_font);
300 group->set_data (
"marker",
this);
301 mark->set_data (
"marker",
this);
319 group->reparent (&parent);
349 ArdourCanvas::Duple g =
group->canvas_origin();
398 double limit = DBL_MAX;
411 if (name_width == 0) {
523 :
Marker (editor, parent, rgba, text,
Tempo, 0, false),
538 :
Marker (editor, parent, rgba, text,
Meter, 0, false),
void setup_name_display()
ArdourCanvas::Points * points
void set_left_label_limit(double)
Pango::FontDescription get_font_for_style(std::string widgetname)
virtual bool canvas_tempo_marker_event(GdkEvent *event, ArdourCanvas::Item *, TempoMarker *)=0
Representation of the interface of the Editor class.
MeterMarker(PublicEditor &editor, ArdourCanvas::Container &, guint32 rgba, const std::string &text, ARDOUR::MeterSection &)
virtual double sample_to_pixel(framepos_t frame) const =0
static PBD::Signal1< void, Marker * > CatchDeletion
Pango::FontDescription name_font
ARDOUR::MeterSection & _meter
ArdourCanvas::Rectangle * _name_background
#define UINT_RGBA_CHANGE_A(x, a)
void reparent(ArdourCanvas::Container &parent)
virtual ArdourCanvas::ScrollGroup * get_hscroll_group() const =0
ArdourCanvas::Line * _track_canvas_line
ArdourCanvas::Container * _parent
framepos_t frame_position
void canvas_height_set(double)
void set_right_label_limit(double)
double _right_label_limit
the number of pixels available to the right of this marker for a label
void set_color_rgba(uint32_t rgba)
ArdourCanvas::Item & the_item() const
bool label_on_left() const
ArdourCanvas::Container * group
void set_position(framepos_t)
virtual bool canvas_marker_event(GdkEvent *event, ArdourCanvas::Item *, Marker *)=0
virtual bool canvas_meter_marker_event(GdkEvent *event, ArdourCanvas::Item *, MeterMarker *)=0
static void setup_sizes(const double timebar_height)
Marker(PublicEditor &editor, ArdourCanvas::Container &, guint32 rgba, const std::string &text, Type, framepos_t frame=0, bool handle_events=true)
LIBGTKMM2EXT_API void get_ink_pixel_size(Glib::RefPtr< Pango::Layout >, int &width, int &height)
ArdourCanvas::Polygon * mark
static UIConfiguration * config()
sigc::signal< void > ZoomChanged
double _left_label_limit
the number of pixels available to the left of this marker for a label
void set_name(const std::string &)
LIBGTKMM2EXT_API int pixel_width(const std::string &str, Pango::FontDescription &font)
#define RGBA_TO_UINT(r, g, b, a)
TempoMarker(PublicEditor &editor, ArdourCanvas::Container &, guint32 rgba, const std::string &text, ARDOUR::TempoSection &)
ARDOUR::TempoSection & _tempo
static double marker_height
std::string string_compose(const std::string &fmt, const T1 &o1)
ArdourCanvas::Text * _name_item
LIBARDOUR_API PBD::PropertyDescriptor< bool > color