summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/audio_region_view.cc6
-rw-r--r--gtk2_ardour/automation_streamview.cc4
-rw-r--r--gtk2_ardour/editor.h12
-rw-r--r--gtk2_ardour/editor_canvas.cc23
-rw-r--r--gtk2_ardour/editor_drag.cc1
-rw-r--r--gtk2_ardour/imageframe_view.cc4
-rw-r--r--gtk2_ardour/marker.cc2
-rw-r--r--gtk2_ardour/midi_region_view.cc4
-rw-r--r--gtk2_ardour/public_editor.h1
-rw-r--r--gtk2_ardour/region_view.cc10
-rw-r--r--gtk2_ardour/streamview.cc18
-rw-r--r--gtk2_ardour/streamview.h8
-rw-r--r--gtk2_ardour/time_axis_view.cc9
-rw-r--r--gtk2_ardour/time_axis_view.h2
-rw-r--r--gtk2_ardour/time_axis_view_item.cc77
-rw-r--r--gtk2_ardour/time_axis_view_item.h8
-rw-r--r--libs/canvas/text.cc5
17 files changed, 72 insertions, 122 deletions
diff --git a/gtk2_ardour/audio_region_view.cc b/gtk2_ardour/audio_region_view.cc
index 4f222f3413..eaa1f2fabb 100644
--- a/gtk2_ardour/audio_region_view.cc
+++ b/gtk2_ardour/audio_region_view.cc
@@ -41,7 +41,7 @@
#include "canvas/polygon.h"
#include "canvas/poly_line.h"
#include "canvas/line.h"
-#include "canvas/pixbuf.h"
+#include "canvas/text.h"
#include "streamview.h"
#include "audio_region_view.h"
@@ -511,8 +511,8 @@ AudioRegionView::set_height (gdouble height)
ArdourCanvas::Duple (pos_x, _height - TimeAxisViewItem::NAME_HIGHLIGHT_SIZE - 1));
}
- if (name_pixbuf) {
- name_pixbuf->raise_to_top();
+ if (name_text) {
+ name_text->raise_to_top();
}
}
diff --git a/gtk2_ardour/automation_streamview.cc b/gtk2_ardour/automation_streamview.cc
index 3904c2728e..cab176429d 100644
--- a/gtk2_ardour/automation_streamview.cc
+++ b/gtk2_ardour/automation_streamview.cc
@@ -45,9 +45,7 @@ using namespace PBD;
using namespace Editing;
AutomationStreamView::AutomationStreamView (AutomationTimeAxisView& tv)
- : StreamView (*dynamic_cast<RouteTimeAxisView*>(tv.get_parent()),
- new ArdourCanvas::Group (tv.canvas_background()),
- new ArdourCanvas::Group (tv.canvas_display()))
+ : StreamView (*dynamic_cast<RouteTimeAxisView*>(tv.get_parent()))
, _automation_view(tv)
, _pending_automation_state (Off)
{
diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h
index 558f24f31c..e35e206881 100644
--- a/gtk2_ardour/editor.h
+++ b/gtk2_ardour/editor.h
@@ -735,16 +735,6 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
ArdourCanvas::Group* transport_marker_bar_group;
ArdourCanvas::Group* cd_marker_bar_group;
- /** The group containing all items that require horizontal scrolling. */
- ArdourCanvas::Group* _background_group;
- /*
- The _master_group is the group containing all items
- that require horizontal scrolling..
- It is primarily used to separate canvas items
- that require horizontal scrolling from those that do not.
- */
- ArdourCanvas::Group* _master_group;
-
/* The group containing all trackviews. Only scrolled vertically. */
ArdourCanvas::Group* _trackview_group;
@@ -1016,8 +1006,8 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
bool deferred_control_scroll (framepos_t);
sigc::connection control_scroll_connection;
- ArdourCanvas::Group* get_background_group () const { return _background_group; }
ArdourCanvas::Group* get_trackview_group () const { return _trackview_group; }
+
void tie_vertical_scrolling ();
void set_horizontal_position (double);
double horizontal_position () const;
diff --git a/gtk2_ardour/editor_canvas.cc b/gtk2_ardour/editor_canvas.cc
index faaae52ff6..06e40ce91f 100644
--- a/gtk2_ardour/editor_canvas.cc
+++ b/gtk2_ardour/editor_canvas.cc
@@ -100,13 +100,7 @@ Editor::initialize_canvas ()
transport_punch_range_rect->set_outline_width (0);
transport_punch_range_rect->hide();
-
- _background_group = new ArdourCanvas::Group (_track_canvas->root());
- CANVAS_DEBUG_NAME (_background_group, "Canvas Background");
- _master_group = new ArdourCanvas::Group (_track_canvas->root());
- CANVAS_DEBUG_NAME (_master_group, "Canvas Master");
-
- _trackview_group = new ArdourCanvas::Group (_master_group);
+ _trackview_group = new ArdourCanvas::Group (_track_canvas->root());
CANVAS_DEBUG_NAME (_trackview_group, "Canvas TrackViews");
_region_motion_group = new ArdourCanvas::Group (_trackview_group);
CANVAS_DEBUG_NAME (_region_motion_group, "Canvas Region Motion");
@@ -168,14 +162,14 @@ Editor::initialize_canvas ()
transport_bar_drag_rect->set_outline (false);
transport_bar_drag_rect->hide ();
- transport_punchin_line = new ArdourCanvas::Line (_master_group);
+ transport_punchin_line = new ArdourCanvas::Line (_track_canvas->root());
transport_punchin_line->set_x0 (0);
transport_punchin_line->set_y0 (0);
transport_punchin_line->set_x1 (0);
transport_punchin_line->set_y1 (ArdourCanvas::COORD_MAX);
transport_punchin_line->hide ();
- transport_punchout_line = new ArdourCanvas::Line (_master_group);
+ transport_punchout_line = new ArdourCanvas::Line (_track_canvas->root());
transport_punchout_line->set_x0 (0);
transport_punchout_line->set_y0 (0);
transport_punchout_line->set_x1 (0);
@@ -183,7 +177,7 @@ Editor::initialize_canvas ()
transport_punchout_line->hide();
// used to show zoom mode active zooming
- zoom_rect = new ArdourCanvas::Rectangle (_master_group, ArdourCanvas::Rect (0.0, 0.0, 0.0, 0.0));
+ zoom_rect = new ArdourCanvas::Rectangle (_track_canvas->root(), ArdourCanvas::Rect (0.0, 0.0, 0.0, 0.0));
zoom_rect->set_outline_width (1);
zoom_rect->hide();
@@ -544,7 +538,6 @@ Editor::autoscroll_canvas ()
{
framepos_t new_frame;
framepos_t limit = max_framepos - current_page_samples();
- GdkEventMotion ev;
double new_pixel;
double target_pixel;
@@ -640,11 +633,15 @@ Editor::autoscroll_canvas ()
Glib::RefPtr<Gdk::Window> canvas_window = const_cast<Editor*>(this)->_track_canvas->get_window();
gint x, y;
Gdk::ModifierType mask;
+ GdkEventMotion ev;
canvas_window->get_pointer (x, y, mask);
ev.type = GDK_MOTION_NOTIFY;
ev.state = Gdk::BUTTON1_MASK;
- ev.x = x;
- ev.y = y;
+
+ /* the motion handler expects events in canvas coordinate space */
+ ArdourCanvas::Duple d = _track_canvas->window_to_canvas (ArdourCanvas::Duple (x, y));
+ ev.x = d.x;
+ ev.y = d.y;
motion_handler (0, (GdkEvent*) &ev, true);
diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc
index 1b9a820ae6..09ac4ba120 100644
--- a/gtk2_ardour/editor_drag.cc
+++ b/gtk2_ardour/editor_drag.cc
@@ -637,6 +637,7 @@ RegionMotionDrag::motion (GdkEvent* event, bool first_move)
double const x_delta = compute_x_delta (event, &pending_region_position);
/* Work out the change in y */
+
int delta_time_axis_view = current_pointer_time_axis_view - _last_pointer_time_axis_view;
double delta_layer = current_pointer_layer - _last_pointer_layer;
diff --git a/gtk2_ardour/imageframe_view.cc b/gtk2_ardour/imageframe_view.cc
index 857780ffe2..4956779af8 100644
--- a/gtk2_ardour/imageframe_view.cc
+++ b/gtk2_ardour/imageframe_view.cc
@@ -262,11 +262,11 @@ ImageFrameView::set_height (gdouble h)
frame->raise_to_top();
imageframe->raise_to_top();
name_highlight->raise_to_top();
- name_pixbuf->raise_to_top();
+ name_text->raise_to_top();
frame_handle_start->raise_to_top();
frame_handle_end->raise_to_top();
- name_pixbuf->property_y() = h - TimeAxisViewItem::NAME_Y_OFFSET;
+ name_text->property_y() = h - TimeAxisViewItem::NAME_Y_OFFSET;
frame->property_y2() = h;
name_highlight->property_y1() = (gdouble) h - TimeAxisViewItem::NAME_HIGHLIGHT_SIZE;
diff --git a/gtk2_ardour/marker.cc b/gtk2_ardour/marker.cc
index 20f28bd785..59ed01f177 100644
--- a/gtk2_ardour/marker.cc
+++ b/gtk2_ardour/marker.cc
@@ -276,7 +276,7 @@ Marker::Marker (PublicEditor& ed, ArdourCanvas::Group& parent, guint32 rgba, con
#ifdef CANVAS_DEBUG
_name_item->name = string_compose ("Marker::_name_item for %1", annotation);
#endif
- _name_item->set_position (ArdourCanvas::Duple (_label_offset, 13 / 2 - name_height / 2));
+ _name_item->set_position (ArdourCanvas::Duple (_label_offset, (13.0 / 2.0) - (name_height / 2.0)));
set_name (annotation.c_str());
diff --git a/gtk2_ardour/midi_region_view.cc b/gtk2_ardour/midi_region_view.cc
index 26ddb2c338..db53215137 100644
--- a/gtk2_ardour/midi_region_view.cc
+++ b/gtk2_ardour/midi_region_view.cc
@@ -1387,8 +1387,8 @@ MidiRegionView::set_height (double height)
midi_stream_view()->highest_note(),
height != old_height + FUDGE);
- if (name_pixbuf) {
- name_pixbuf->raise_to_top();
+ if (name_text) {
+ name_text->raise_to_top();
}
for (PatchChanges::iterator x = _patch_changes.begin(); x != _patch_changes.end(); ++x) {
diff --git a/gtk2_ardour/public_editor.h b/gtk2_ardour/public_editor.h
index 42ff531a35..6110bca046 100644
--- a/gtk2_ardour/public_editor.h
+++ b/gtk2_ardour/public_editor.h
@@ -381,7 +381,6 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulDestructible {
#endif
virtual ArdourCanvas::Group* get_trackview_group () const = 0;
- virtual ArdourCanvas::Group* get_background_group () const = 0;
virtual TimeAxisView* axis_view_from_route (boost::shared_ptr<ARDOUR::Route>) const = 0;
diff --git a/gtk2_ardour/region_view.cc b/gtk2_ardour/region_view.cc
index 1b6ed3a6ff..2edad1cd16 100644
--- a/gtk2_ardour/region_view.cc
+++ b/gtk2_ardour/region_view.cc
@@ -183,9 +183,9 @@ RegionView::init (Gdk::Color const & basic_color, bool wfd)
}
}
- if (name_pixbuf) {
- name_pixbuf->set_data ("regionview", this);
- name_pixbuf->Event.connect (sigc::bind (sigc::mem_fun (PublicEditor::instance(), &PublicEditor::canvas_region_view_name_event), name_pixbuf, this));
+ if (name_text) {
+ name_text->set_data ("regionview", this);
+ name_text->Event.connect (sigc::bind (sigc::mem_fun (PublicEditor::instance(), &PublicEditor::canvas_region_view_name_event), name_text, this));
}
if (wfd) {
@@ -838,8 +838,8 @@ RegionView::update_coverage_frames (LayerDisplay d)
name_highlight->raise_to_top ();
}
- if (name_pixbuf) {
- name_pixbuf->raise_to_top ();
+ if (name_text) {
+ name_text->raise_to_top ();
}
}
diff --git a/gtk2_ardour/streamview.cc b/gtk2_ardour/streamview.cc
index fac4572c92..774e150f13 100644
--- a/gtk2_ardour/streamview.cc
+++ b/gtk2_ardour/streamview.cc
@@ -50,12 +50,9 @@ using namespace ARDOUR;
using namespace PBD;
using namespace Editing;
-StreamView::StreamView (RouteTimeAxisView& tv, ArdourCanvas::Group* background_group, ArdourCanvas::Group* canvas_group)
+StreamView::StreamView (RouteTimeAxisView& tv)
: _trackview (tv)
- , owns_background_group (background_group == 0)
- , owns_canvas_group (canvas_group == 0)
- , _background_group (background_group ? background_group : new ArdourCanvas::Group (_trackview.canvas_background()))
- , _canvas_group (canvas_group ? canvas_group : new ArdourCanvas::Group (_trackview.canvas_display()))
+ , _canvas_group (new ArdourCanvas::Group (_trackview.canvas_display()))
, _samples_per_pixel (_trackview.editor().get_current_zoom ())
, rec_updating(false)
, rec_active(false)
@@ -65,12 +62,11 @@ StreamView::StreamView (RouteTimeAxisView& tv, ArdourCanvas::Group* background_g
, height(tv.height)
, last_rec_data_frame(0)
{
- CANVAS_DEBUG_NAME (_background_group, string_compose ("SV background group %1", _trackview.name()));
CANVAS_DEBUG_NAME (_canvas_group, string_compose ("SV canvas group %1", _trackview.name()));
/* set_position() will position the group */
- canvas_rect = new ArdourCanvas::Rectangle (_background_group);
+ canvas_rect = new ArdourCanvas::Rectangle (_canvas_group);
CANVAS_DEBUG_NAME (canvas_rect, string_compose ("SV canvas rectangle %1", _trackview.name()));
canvas_rect->set (ArdourCanvas::Rect (0, 0, ArdourCanvas::COORD_MAX, tv.current_height ()));
canvas_rect->raise(1); // raise above tempo lines
@@ -99,14 +95,6 @@ StreamView::~StreamView ()
undisplay_track ();
delete canvas_rect;
-
- if (owns_background_group) {
- delete _background_group;
- }
-
- if (owns_canvas_group) {
- delete _canvas_group;
- }
}
void
diff --git a/gtk2_ardour/streamview.h b/gtk2_ardour/streamview.h
index 869772ed20..ce7991d2eb 100644
--- a/gtk2_ardour/streamview.h
+++ b/gtk2_ardour/streamview.h
@@ -83,7 +83,6 @@ public:
void set_layer_display (LayerDisplay);
LayerDisplay layer_display () const { return _layer_display; }
- ArdourCanvas::Group* background_group() { return _background_group; }
ArdourCanvas::Group* canvas_item() { return _canvas_group; }
enum ColorTarget {
@@ -129,7 +128,7 @@ public:
sigc::signal<void> ContentsHeightChanged;
protected:
- StreamView (RouteTimeAxisView&, ArdourCanvas::Group* background_group = 0, ArdourCanvas::Group* canvas_group = 0);
+ StreamView (RouteTimeAxisView&);
void transport_changed();
void transport_looped();
@@ -152,11 +151,8 @@ protected:
virtual void color_handler () = 0;
RouteTimeAxisView& _trackview;
- bool owns_background_group;
- bool owns_canvas_group;
- ArdourCanvas::Group* _background_group;
ArdourCanvas::Group* _canvas_group;
- ArdourCanvas::Rectangle* canvas_rect; /* frame around the whole thing */
+ ArdourCanvas::Rectangle* canvas_rect; /* frame around the whole thing */
typedef std::list<RegionView* > RegionViewList;
RegionViewList region_views;
diff --git a/gtk2_ardour/time_axis_view.cc b/gtk2_ardour/time_axis_view.cc
index a426656cf6..7d30ffed49 100644
--- a/gtk2_ardour/time_axis_view.cc
+++ b/gtk2_ardour/time_axis_view.cc
@@ -94,7 +94,6 @@ TimeAxisView::TimeAxisView (ARDOUR::Session* sess, PublicEditor& ed, TimeAxisVie
compute_heights ();
}
- _canvas_background = new Group (ed.get_background_group (), ArdourCanvas::Duple (0.0, 0.0));
_canvas_display = new Group (ed.get_trackview_group (), ArdourCanvas::Duple (0.0, 0.0));
_canvas_display->hide(); // reveal as needed
@@ -189,9 +188,6 @@ TimeAxisView::~TimeAxisView()
delete selection_group;
selection_group = 0;
- delete _canvas_background;
- _canvas_background = 0;
-
delete _canvas_display;
_canvas_display = 0;
@@ -209,7 +205,6 @@ TimeAxisView::hide ()
}
_canvas_display->hide ();
- _canvas_background->hide ();
if (control_parent) {
control_parent->remove (time_axis_vbox);
@@ -255,15 +250,11 @@ TimeAxisView::show_at (double y, int& nth, VBox *parent)
if (_y_position != y) {
_canvas_display->set_y_position (y);
- _canvas_background->set_y_position (y);
_y_position = y;
}
- _canvas_background->raise_to_top ();
_canvas_display->raise_to_top ();
-
- _canvas_background->show ();
_canvas_display->show ();
_hidden = false;
diff --git a/gtk2_ardour/time_axis_view.h b/gtk2_ardour/time_axis_view.h
index 17b702ec38..7dc3ba9494 100644
--- a/gtk2_ardour/time_axis_view.h
+++ b/gtk2_ardour/time_axis_view.h
@@ -105,7 +105,6 @@ class TimeAxisView : public virtual AxisView
virtual void leave_internal_edit_mode () {}
ArdourCanvas::Group* canvas_display () { return _canvas_display; }
- ArdourCanvas::Group* canvas_background () { return _canvas_background; }
ArdourCanvas::Group* ghost_group () { return _ghost_group; }
/** @return effective height (taking children into account) in canvas units, or
@@ -279,7 +278,6 @@ class TimeAxisView : public virtual AxisView
void build_size_menu ();
private:
- ArdourCanvas::Group* _canvas_background;
Gtk::VBox* control_parent;
int _order;
uint32_t _effective_height;
diff --git a/gtk2_ardour/time_axis_view_item.cc b/gtk2_ardour/time_axis_view_item.cc
index bd00f5484d..ede06796df 100644
--- a/gtk2_ardour/time_axis_view_item.cc
+++ b/gtk2_ardour/time_axis_view_item.cc
@@ -29,7 +29,7 @@
#include "canvas/group.h"
#include "canvas/rectangle.h"
#include "canvas/debug.h"
-#include "canvas/pixbuf.h"
+#include "canvas/text.h"
#include "ardour_ui.h"
/*
@@ -80,7 +80,7 @@ TimeAxisViewItem::set_constant_heights ()
Gtkmm2ext::get_ink_pixel_size (layout, width, height);
NAME_HEIGHT = height;
- NAME_Y_OFFSET = height + 3;
+ NAME_Y_OFFSET = height + 4;
NAME_HIGHLIGHT_SIZE = height + 2;
NAME_HIGHLIGHT_THRESH = NAME_HIGHLIGHT_SIZE * 3;
}
@@ -157,7 +157,7 @@ TimeAxisViewItem::init (const string& it_name, double fpp, Gdk::Color const & ba
show_vestigial = true;
visibility = vis;
_sensitive = true;
- name_pixbuf_width = 0;
+ name_text_width = 0;
last_item_width = 0;
wide_enough_for_name = wide;
high_enough_for_name = high;
@@ -169,7 +169,6 @@ TimeAxisViewItem::init (const string& it_name, double fpp, Gdk::Color const & ba
vestigial_frame = new ArdourCanvas::Rectangle (group, ArdourCanvas::Rect (0.0, 1.0, 2.0, trackview.current_height()));
vestigial_frame->hide ();
- vestigial_frame->set_outline_what (0xF);
vestigial_frame->set_outline_color (ARDOUR_UI::config()->canvasvar_VestigialFrame.get());
vestigial_frame->set_fill_color (ARDOUR_UI::config()->canvasvar_VestigialFrame.get());
@@ -179,18 +178,14 @@ TimeAxisViewItem::init (const string& it_name, double fpp, Gdk::Color const & ba
trackview.editor().sample_to_pixel(duration),
trackview.current_height()));
- frame->set_outline_width (1);
- frame->set_outline_what (0xF);
-
if (_recregion) {
frame->set_outline_color (ARDOUR_UI::config()->canvasvar_RecordingRect.get());
} else {
frame->set_outline_color (ARDOUR_UI::config()->canvasvar_TimeAxisFrame.get());
}
- frame->set_outline_what (0x1|0x2|0x4|0x8);
-
} else {
+
frame = 0;
}
@@ -199,15 +194,17 @@ TimeAxisViewItem::init (const string& it_name, double fpp, Gdk::Color const & ba
if (visibility & FullWidthNameHighlight) {
name_highlight = new ArdourCanvas::Rectangle (group,
ArdourCanvas::Rect (0.0, trackview.editor().sample_to_pixel(item_duration),
- trackview.current_height() - TimeAxisViewItem::NAME_HIGHLIGHT_SIZE, trackview.current_height()));
+ trackview.current_height() - TimeAxisViewItem::NAME_HIGHLIGHT_SIZE,
+ trackview.current_height()));
} else {
name_highlight = new ArdourCanvas::Rectangle (group,
ArdourCanvas::Rect (1.0, trackview.editor().sample_to_pixel(item_duration) - 1,
- trackview.current_height() - TimeAxisViewItem::NAME_HIGHLIGHT_SIZE, trackview.current_height()));
+ trackview.current_height() - TimeAxisViewItem::NAME_HIGHLIGHT_SIZE,
+ trackview.current_height()));
}
name_highlight->set_data ("timeaxisviewitem", this);
- name_highlight->set_outline_what (0x4);
+ name_highlight->set_outline_what (ArdourCanvas::Rectangle::TOP);
/* we should really use a canvas color property here */
name_highlight->set_outline_color (RGBA_TO_UINT (0,0,0,255));
@@ -216,11 +213,12 @@ TimeAxisViewItem::init (const string& it_name, double fpp, Gdk::Color const & ba
}
if (visibility & ShowNameText) {
- name_pixbuf = new ArdourCanvas::Pixbuf(group);
- name_pixbuf->set_position (ArdourCanvas::Duple (NAME_X_OFFSET, trackview.current_height() + 1 - NAME_Y_OFFSET));
-
+ name_text = new ArdourCanvas::Text (group);
+ name_text->set_position (ArdourCanvas::Duple (NAME_X_OFFSET, trackview.current_height() - NAME_Y_OFFSET));
+ name_text->set_font_description (NAME_FONT);
+
} else {
- name_pixbuf = 0;
+ name_text = 0;
}
/* create our grab handles used for trimming/duration etc */
@@ -229,9 +227,9 @@ TimeAxisViewItem::init (const string& it_name, double fpp, Gdk::Color const & ba
double width = TimeAxisViewItem::GRAB_HANDLE_WIDTH;
frame_handle_start = new ArdourCanvas::Rectangle (group, ArdourCanvas::Rect (0.0, top, width, trackview.current_height()));
- frame_handle_start->set_outline_what (0x0);
+ frame_handle_start->set_outline_what (ArdourCanvas::Rectangle::What (0));
frame_handle_end = new ArdourCanvas::Rectangle (group, ArdourCanvas::Rect (0.0, top, width, trackview.current_height()));
- frame_handle_end->set_outline_what (0x0);
+ frame_handle_end->set_outline_what (ArdourCanvas::Rectangle::What (0));
} else {
frame_handle_start = frame_handle_end = 0;
}
@@ -256,7 +254,7 @@ TimeAxisViewItem::hide_rect ()
set_frame_color ();
if (name_highlight) {
- name_highlight->set_outline_what (0);
+ name_highlight->set_outline_what (ArdourCanvas::Rectangle::What (0));
name_highlight->set_fill_color (UINT_RGBA_CHANGE_A (fill_color, 64));
}
}
@@ -268,12 +266,11 @@ TimeAxisViewItem::show_rect ()
set_frame_color ();
if (name_highlight) {
- name_highlight->set_outline_what (0x4);
+ name_highlight->set_outline_what (ArdourCanvas::Rectangle::TOP);
name_highlight->set_fill_color (fill_color);
}
}
-
/**
* Set the position of this item on the timeline.
*
@@ -519,16 +516,16 @@ TimeAxisViewItem::get_time_axis_view () const
void
TimeAxisViewItem::set_name_text(const string& new_name)
{
- if (!name_pixbuf) {
+ if (!name_text) {
return;
}
last_item_width = trackview.editor().sample_to_pixel(item_duration);
- name_pixbuf_width = pixel_width (new_name, NAME_FONT) + 2;
- name_pixbuf->set (pixbuf_from_string(new_name, NAME_FONT, name_pixbuf_width, NAME_HEIGHT, Gdk::Color ("#000000")));
+ name_text_width = pixel_width (new_name, NAME_FONT) + 2;
+ name_text->set (new_name);
+ // CAIROCANVAS need to limit text to name_text_width or something
}
-
/**
* Set the height of this item.
*
@@ -561,7 +558,7 @@ TimeAxisViewItem::set_height (double height)
}
if (visibility & ShowNameText) {
- name_pixbuf->set_y_position (height + 1 - NAME_Y_OFFSET);
+ name_text->set_y_position (height + 1 - NAME_Y_OFFSET);
}
if (frame) {
@@ -574,7 +571,7 @@ TimeAxisViewItem::set_height (double height)
vestigial_frame->set_y1 (height - 1);
- update_name_pixbuf_visibility ();
+ update_name_text_visibility ();
set_colors ();
}
@@ -603,12 +600,6 @@ TimeAxisViewItem::get_name_highlight()
return name_highlight;
}
-ArdourCanvas::Pixbuf*
-TimeAxisViewItem::get_name_pixbuf()
-{
- return name_pixbuf;
-}
-
/**
* Calculate some contrasting color for displaying various parts of this item, based upon the base color.
*
@@ -887,7 +878,7 @@ TimeAxisViewItem::reset_width_dependent_items (double pixel_width)
wide_enough_for_name = true;
}
- update_name_pixbuf_visibility ();
+ update_name_text_visibility ();
}
void
@@ -897,12 +888,12 @@ TimeAxisViewItem::reset_name_width (double /*pixel_width*/)
int pb_width;
bool pixbuf_holds_full_name;
- if (!name_pixbuf) {
+ if (!name_text) {
return;
}
it_width = trackview.editor().sample_to_pixel(item_duration);
- pb_width = name_pixbuf_width;
+ pb_width = name_text_width;
pixbuf_holds_full_name = last_item_width > pb_width + NAME_X_OFFSET;
last_item_width = it_width;
@@ -925,13 +916,15 @@ TimeAxisViewItem::reset_name_width (double /*pixel_width*/)
wide_enough_for_name = true;
}
- update_name_pixbuf_visibility ();
+ update_name_text_visibility ();
if (pb_width < 1) {
pb_width = 1;
}
- name_pixbuf->set (pixbuf_from_string(item_name, NAME_FONT, pb_width, NAME_HEIGHT, Gdk::Color ("#000000")));
+ name_text->set (item_name);
+ // CAIROCANVAS need to limit text length to pb_width
+
}
/**
@@ -958,16 +951,16 @@ TimeAxisViewItem::set_y (double y)
}
void
-TimeAxisViewItem::update_name_pixbuf_visibility ()
+TimeAxisViewItem::update_name_text_visibility ()
{
- if (!name_pixbuf) {
+ if (!name_text) {
return;
}
if (wide_enough_for_name && high_enough_for_name) {
- name_pixbuf->show ();
+ name_text->show ();
} else {
- name_pixbuf->hide ();
+ name_text->hide ();
}
}
diff --git a/gtk2_ardour/time_axis_view_item.h b/gtk2_ardour/time_axis_view_item.h
index 2f4e5f465d..dd6ebe0120 100644
--- a/gtk2_ardour/time_axis_view_item.h
+++ b/gtk2_ardour/time_axis_view_item.h
@@ -33,6 +33,7 @@ namespace ArdourCanvas {
class Rectangle;
class Item;
class Group;
+ class Text;
}
using ARDOUR::framepos_t;
@@ -75,7 +76,6 @@ class TimeAxisViewItem : public Selectable, public PBD::ScopedConnectionList
ArdourCanvas::Item* get_canvas_frame();
ArdourCanvas::Group* get_canvas_group();
ArdourCanvas::Item* get_name_highlight();
- ArdourCanvas::Pixbuf* get_name_pixbuf();
virtual void set_samples_per_pixel (double);
@@ -165,7 +165,7 @@ class TimeAxisViewItem : public Selectable, public PBD::ScopedConnectionList
virtual void reset_width_dependent_items (double);
void reset_name_width (double);
- void update_name_pixbuf_visibility ();
+ void update_name_text_visibility ();
static gint idle_remove_this_item(TimeAxisViewItem*, void*);
@@ -228,7 +228,7 @@ class TimeAxisViewItem : public Selectable, public PBD::ScopedConnectionList
uint32_t lock_handle_color_g;
uint32_t lock_handle_color_b;
uint32_t last_item_width;
- int name_pixbuf_width;
+ int name_text_width;
bool wide_enough_for_name;
bool high_enough_for_name;
bool rect_visible;
@@ -236,7 +236,7 @@ class TimeAxisViewItem : public Selectable, public PBD::ScopedConnectionList
ArdourCanvas::Group* group;
ArdourCanvas::Rectangle* vestigial_frame;
ArdourCanvas::Rectangle* frame;
- ArdourCanvas::Pixbuf* name_pixbuf;
+ ArdourCanvas::Text* name_text;
ArdourCanvas::Rectangle* name_highlight;
/* with these two values, if frame_handle_start == 0 then frame_handle_end will also be 0 */
diff --git a/libs/canvas/text.cc b/libs/canvas/text.cc
index 4d240db3fd..9f3f98528b 100644
--- a/libs/canvas/text.cc
+++ b/libs/canvas/text.cc
@@ -61,8 +61,8 @@ Text::redraw (Cairo::RefPtr<Cairo::Context> context) const
_origin.x = ink_rect.get_x() / Pango::SCALE;
_origin.y = ink_rect.get_y() / Pango::SCALE;
- _width = _origin.x + ((ink_rect.get_width() + Pango::SCALE / 2) / Pango::SCALE);
- _height = _origin.y + ((ink_rect.get_height() + Pango::SCALE / 2) / Pango::SCALE);
+ _width = _origin.x + (ink_rect.get_width() / Pango::SCALE);
+ _height = _origin.y + (ink_rect.get_height() / Pango::SCALE);
_image = Cairo::ImageSurface::create (Cairo::FORMAT_ARGB32, _width, _height);
@@ -71,7 +71,6 @@ Text::redraw (Cairo::RefPtr<Cairo::Context> context) const
/* and draw, in the appropriate color of course */
set_source_rgba (img_context, _color);
-
layout->show_in_cairo_context (img_context);
/* text has now been rendered in _image and is ready for blit in