canvas markers now use ArdourCanvas::Text, not ArdourCanvas::Pixbuf, since the latter...
authorPaul Davis <paul@linuxaudiosystems.com>
Sat, 6 Apr 2013 20:39:11 +0000 (16:39 -0400)
committerPaul Davis <paul@linuxaudiosystems.com>
Sat, 6 Apr 2013 20:39:11 +0000 (16:39 -0400)
gtk2_ardour/marker.cc
gtk2_ardour/marker.h

index 75919f339a33349eea5123a45e2d6dab72f4004d..56ab234b2877754e2b4aa49cffd3c0da64f59d68 100644 (file)
@@ -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);
index 02ef3dc478b756e3d9de7119e077e5b7f50b943c..62793264aec4dcca7841033bd501e1a7440cc1ac 100644 (file)
@@ -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;