diff options
-rw-r--r-- | gtk2_ardour/marker.cc | 27 | ||||
-rw-r--r-- | gtk2_ardour/marker.h | 13 |
2 files changed, 20 insertions, 20 deletions
diff --git a/gtk2_ardour/marker.cc b/gtk2_ardour/marker.cc index 75919f339a..56ab234b28 100644 --- a/gtk2_ardour/marker.cc +++ b/gtk2_ardour/marker.cc @@ -23,7 +23,7 @@ #include "canvas/group.h" #include "canvas/line.h" #include "canvas/polygon.h" -#include "canvas/pixbuf.h" +#include "canvas/text.h" #include "ardour_ui.h" /* @@ -268,12 +268,15 @@ Marker::Marker (PublicEditor& ed, ArdourCanvas::Group& parent, guint32 rgba, con layout->set_font_description (name_font); Gtkmm2ext::get_ink_pixel_size (layout, width, name_height); + + _name_item = new ArdourCanvas::Text (group); + _name_item->set_font_description (name_font); + _name_item->set_color (0); - name_pixbuf = new ArdourCanvas::Pixbuf (group); #ifdef CANVAS_DEBUG - name_pixbuf->name = string_compose ("Marker::name_pixbuf for %1", annotation); + _name_item->name = string_compose ("Marker::_name_item for %1", annotation); #endif - name_pixbuf->set_position (ArdourCanvas::Duple (_label_offset, 13 / 2 - name_height / 2)); + _name_item->set_position (ArdourCanvas::Duple (_label_offset, 13 / 2 - name_height / 2)); set_name (annotation.c_str()); @@ -393,22 +396,26 @@ Marker::setup_name_display () /* Work out how wide the name can be */ int name_width = min ((double) pixel_width (_name, name_font) + 2, limit); + if (name_width == 0) { name_width = 1; } if (label_on_left ()) { - name_pixbuf->set_x_position (-name_width); + _name_item->set_x_position (-name_width); } - name_pixbuf->set (pixbuf_from_string (_name, name_font, name_width, name_height, Gdk::Color ("#000000"))); + _name_item->set (_name); + + // CAIROCANVAS + // need to "clip" name to name_width and name_height if (label_on_left ()) { - _name_background->set_x0 (name_pixbuf->position().x - 2); - _name_background->set_x1 (name_pixbuf->position().x + name_width + _shift); + _name_background->set_x0 (_name_item->position().x - 2); + _name_background->set_x1 (_name_item->position().x + name_width + _shift); } else { - _name_background->set_x0 (name_pixbuf->position().x - _label_offset + 2); - _name_background->set_x1 (name_pixbuf->position().x + name_width); + _name_background->set_x0 (_name_item->position().x - _label_offset + 2); + _name_background->set_x1 (_name_item->position().x + name_width); } _name_background->set_y0 (0); diff --git a/gtk2_ardour/marker.h b/gtk2_ardour/marker.h index 02ef3dc478..62793264ae 100644 --- a/gtk2_ardour/marker.h +++ b/gtk2_ardour/marker.h @@ -27,6 +27,8 @@ #include "ardour/ardour.h" #include "pbd/signals.h" + +#include "canvas/fwd.h" #include "canvas/types.h" namespace ARDOUR { @@ -34,15 +36,6 @@ namespace ARDOUR { class MeterSection; } -namespace ArdourCanvas { - class Polygon; - class Line; - class Rectangle; - class Group; - class Pixbuf; - class Item; -} - class PublicEditor; class Marker : public sigc::trackable @@ -108,7 +101,7 @@ class Marker : public sigc::trackable ArdourCanvas::Group* _parent; ArdourCanvas::Group *group; ArdourCanvas::Polygon *mark; - ArdourCanvas::Pixbuf *name_pixbuf; + ArdourCanvas::Text *_name_item; ArdourCanvas::Points *points; ArdourCanvas::Line* _line; ArdourCanvas::Points *line_points; |