summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2013-04-17 10:53:17 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2013-04-17 10:53:17 -0400
commitd1a05240efc9816b4358cdeab458a54048abf9be (patch)
treefa45892d3971951ec5a51d6a0526271940cb6de3 /gtk2_ardour
parent96eee9e7a162e3e26dd9c1ea4d8fc1ad02a3dda9 (diff)
fix clamping of line and rect coordinates to avoid issues with cairo when drawing way outside a surface's dimensions; move various coordinate methods down to Canvas, because they don't require GTK information; make visible_area() a Canvas virtual method so that we don't have to cast to call it
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/editor_canvas.cc6
-rw-r--r--gtk2_ardour/editor_cursors.cc4
-rw-r--r--gtk2_ardour/editor_markers.cc2
-rw-r--r--gtk2_ardour/editor_mouse.cc4
-rw-r--r--gtk2_ardour/editor_ops.cc4
-rw-r--r--gtk2_ardour/editor_tempodisplay.cc2
-rw-r--r--gtk2_ardour/tempo_lines.cc6
-rw-r--r--gtk2_ardour/tempo_lines.h4
-rw-r--r--gtk2_ardour/time_axis_view.cc3
-rw-r--r--gtk2_ardour/time_axis_view_item.cc1
10 files changed, 21 insertions, 15 deletions
diff --git a/gtk2_ardour/editor_canvas.cc b/gtk2_ardour/editor_canvas.cc
index 1b9795bde4..bf195525b9 100644
--- a/gtk2_ardour/editor_canvas.cc
+++ b/gtk2_ardour/editor_canvas.cc
@@ -107,31 +107,37 @@ Editor::initialize_canvas ()
meter_bar_group = new ArdourCanvas::Group (_time_bars_canvas->root ());
meter_bar = new ArdourCanvas::Rectangle (meter_bar_group, ArdourCanvas::Rect (0.0, 0.0, ArdourCanvas::COORD_MAX, timebar_height - 1));
+ CANVAS_DEBUG_NAME (meter_bar, "meter Bar");
meter_bar->set_outline_width (1);
meter_bar->set_outline_what (0x8);
tempo_bar_group = new ArdourCanvas::Group (_time_bars_canvas->root ());
tempo_bar = new ArdourCanvas::Rectangle (tempo_bar_group, ArdourCanvas::Rect (0.0, 0.0, ArdourCanvas::COORD_MAX, timebar_height - 1));
+ CANVAS_DEBUG_NAME (tempo_bar, "Tempo Bar");
tempo_bar->set_outline_width (1);
tempo_bar->set_outline_what (0x8);
range_marker_bar_group = new ArdourCanvas::Group (_time_bars_canvas->root ());
range_marker_bar = new ArdourCanvas::Rectangle (range_marker_bar_group, ArdourCanvas::Rect (0.0, 0.0, ArdourCanvas::COORD_MAX, timebar_height - 1));
+ CANVAS_DEBUG_NAME (range_marker_bar, "Range Marker Bar");
range_marker_bar->set_outline_width (1);
range_marker_bar->set_outline_what (0x8);
transport_marker_bar_group = new ArdourCanvas::Group (_time_bars_canvas->root ());
transport_marker_bar = new ArdourCanvas::Rectangle (transport_marker_bar_group, ArdourCanvas::Rect (0.0, 0.0, ArdourCanvas::COORD_MAX, timebar_height - 1));
+ CANVAS_DEBUG_NAME (transport_marker_bar, "transport Marker Bar");
transport_marker_bar->set_outline_width (1);
transport_marker_bar->set_outline_what (0x8);
marker_bar_group = new ArdourCanvas::Group (_time_bars_canvas->root ());
marker_bar = new ArdourCanvas::Rectangle (marker_bar_group, ArdourCanvas::Rect (0.0, 0.0, ArdourCanvas::COORD_MAX, timebar_height - 1));
+ CANVAS_DEBUG_NAME (marker_bar, "Marker Bar");
marker_bar->set_outline_width (1);
marker_bar->set_outline_what (0x8);
cd_marker_bar_group = new ArdourCanvas::Group (_time_bars_canvas->root ());
cd_marker_bar = new ArdourCanvas::Rectangle (cd_marker_bar_group, ArdourCanvas::Rect (0.0, 0.0, ArdourCanvas::COORD_MAX, timebar_height - 1));
+ CANVAS_DEBUG_NAME (cd_marker_bar, "CD Marker Bar");
cd_marker_bar->set_outline_width (1);
cd_marker_bar->set_outline_what (0x8);
diff --git a/gtk2_ardour/editor_cursors.cc b/gtk2_ardour/editor_cursors.cc
index c5e6b6d5d6..b012b97fe9 100644
--- a/gtk2_ardour/editor_cursors.cc
+++ b/gtk2_ardour/editor_cursors.cc
@@ -21,6 +21,7 @@
#include <cmath>
#include "canvas/canvas.h"
+#include "canvas/debug.h"
#include "utils.h"
#include "editor_cursors.h"
@@ -36,6 +37,9 @@ EditorCursor::EditorCursor (Editor& ed, bool (Editor::*callbck)(GdkEvent*,Ardour
, _track_canvas_item (_editor._track_canvas->root ())
, _length (1.0)
{
+ CANVAS_DEBUG_NAME ((&_time_bars_canvas_item), "timebars editor cursor");
+ CANVAS_DEBUG_NAME ((&_track_canvas_item), "track canvas editor cursor");
+
_time_bars_canvas_item.set_outline_width (1);
_track_canvas_item.set_outline_width (1);
diff --git a/gtk2_ardour/editor_markers.cc b/gtk2_ardour/editor_markers.cc
index 04cea1bc04..ff28f7b56a 100644
--- a/gtk2_ardour/editor_markers.cc
+++ b/gtk2_ardour/editor_markers.cc
@@ -1444,7 +1444,7 @@ Editor::update_punch_range_view (bool visibility)
Location* tpl;
if ((_session->config.get_punch_in() || _session->config.get_punch_out()) && ((tpl = transport_punch_location()) != 0)) {
- ArdourCanvas::Rect const v = _track_canvas_viewport->visible_area ();
+ ArdourCanvas::Rect const v = _track_canvas->visible_area ();
if (_session->config.get_punch_in()) {
transport_punch_range_rect->set_x0 (sample_to_pixel (tpl->start()));
transport_punch_range_rect->set_x1 (_session->config.get_punch_out() ? sample_to_pixel (tpl->end()) : sample_to_pixel (JACK_MAX_FRAMES));
diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc
index 137c3e2c37..efb4c1d5ae 100644
--- a/gtk2_ardour/editor_mouse.cc
+++ b/gtk2_ardour/editor_mouse.cc
@@ -1343,7 +1343,7 @@ Editor::button_press_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemTyp
pointer_window = canvas_window->get_pointer (x, y, mask);
if (pointer_window == _track_canvas->get_window()) {
- _track_canvas_viewport->window_to_canvas (x, y, wx, wy);
+ _track_canvas->window_to_canvas (x, y, wx, wy);
}
}
@@ -2942,5 +2942,5 @@ Editor::get_pointer_position (double& x, double& y) const
{
int px, py;
_track_canvas->get_pointer (px, py);
- _track_canvas_viewport->window_to_canvas (px, py, x, y);
+ _track_canvas->window_to_canvas (px, py, x, y);
}
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc
index 157a034ea5..1bd1a5c82e 100644
--- a/gtk2_ardour/editor_ops.cc
+++ b/gtk2_ardour/editor_ops.cc
@@ -1335,8 +1335,8 @@ Editor::clamp_samples_per_pixel (double& fpp) const
{
bool clamped = false;
- if (fpp < 2.0) {
- fpp = 2.0;
+ if (fpp < 1.0) {
+ fpp = 1.0;
clamped = true;
}
diff --git a/gtk2_ardour/editor_tempodisplay.cc b/gtk2_ardour/editor_tempodisplay.cc
index 7421ebee47..4eb43ad53b 100644
--- a/gtk2_ardour/editor_tempodisplay.cc
+++ b/gtk2_ardour/editor_tempodisplay.cc
@@ -191,7 +191,7 @@ Editor::draw_measures (ARDOUR::TempoMap::BBTPointList::const_iterator& begin,
}
if (tempo_lines == 0) {
- tempo_lines = new TempoLines (*_track_canvas_viewport, time_line_group, physical_screen_height(get_window()));
+ tempo_lines = new TempoLines (*_track_canvas, time_line_group, physical_screen_height(get_window()));
}
tempo_lines->draw (begin, end, samples_per_pixel);
diff --git a/gtk2_ardour/tempo_lines.cc b/gtk2_ardour/tempo_lines.cc
index 282d8f62dd..dddb1ee426 100644
--- a/gtk2_ardour/tempo_lines.cc
+++ b/gtk2_ardour/tempo_lines.cc
@@ -27,8 +27,8 @@ using namespace std;
#define MAX_CACHED_LINES 128
-TempoLines::TempoLines (ArdourCanvas::GtkCanvasViewport& canvas_viewport, ArdourCanvas::Group* group, double screen_height)
- : _canvas_viewport (canvas_viewport)
+TempoLines::TempoLines (ArdourCanvas::Canvas& canvas, ArdourCanvas::Group* group, double screen_height)
+ : _canvas (canvas)
, _group(group)
, _clean_left(DBL_MAX)
, _clean_right(0.0)
@@ -88,7 +88,7 @@ TempoLines::draw (const ARDOUR::TempoMap::BBTPointList::const_iterator& begin,
const size_t needed = distance (begin, end);
- ArdourCanvas::Rect const visible = _canvas_viewport.visible_area ();
+ ArdourCanvas::Rect const visible = _canvas.visible_area ();
/* get the first bar spacing */
diff --git a/gtk2_ardour/tempo_lines.h b/gtk2_ardour/tempo_lines.h
index defe07226c..a0c7650516 100644
--- a/gtk2_ardour/tempo_lines.h
+++ b/gtk2_ardour/tempo_lines.h
@@ -33,7 +33,7 @@ typedef boost::fast_pool_allocator<
class TempoLines {
public:
- TempoLines(ArdourCanvas::GtkCanvasViewport& canvas, ArdourCanvas::Group* group, double screen_height);
+ TempoLines(ArdourCanvas::Canvas& canvas, ArdourCanvas::Group* group, double screen_height);
void tempo_map_changed();
@@ -48,7 +48,7 @@ private:
typedef std::map<double, ArdourCanvas::Line*, std::less<double>, MapAllocator> Lines;
Lines _lines;
- ArdourCanvas::GtkCanvasViewport& _canvas_viewport;
+ ArdourCanvas::Canvas& _canvas;
ArdourCanvas::Group* _group;
double _clean_left;
double _clean_right;
diff --git a/gtk2_ardour/time_axis_view.cc b/gtk2_ardour/time_axis_view.cc
index c54b26a1ea..cfa22ae805 100644
--- a/gtk2_ardour/time_axis_view.cc
+++ b/gtk2_ardour/time_axis_view.cc
@@ -780,9 +780,6 @@ TimeAxisView::set_samples_per_pixel (double fpp)
for (Children::iterator i = children.begin(); i != children.end(); ++i) {
(*i)->set_samples_per_pixel (fpp);
}
-
- AnalysisFeatureList::const_iterator i;
- list<ArdourCanvas::Line*>::iterator l;
}
void
diff --git a/gtk2_ardour/time_axis_view_item.cc b/gtk2_ardour/time_axis_view_item.cc
index 0a20cea3dd..57bda5fa26 100644
--- a/gtk2_ardour/time_axis_view_item.cc
+++ b/gtk2_ardour/time_axis_view_item.cc
@@ -849,7 +849,6 @@ TimeAxisViewItem::set_samples_per_pixel (double fpp)
void
TimeAxisViewItem::reset_width_dependent_items (double pixel_width)
{
-
if (pixel_width < 2.0) {
if (show_vestigial) {