summaryrefslogtreecommitdiff
path: root/libs/canvas/item.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2013-06-18 08:23:06 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2013-06-18 08:23:06 -0400
commit77f5f4c4bf9074d953a1653658c8f96f38ae258c (patch)
tree08790670f6435eed917ab3f2629a0373652cbc1e /libs/canvas/item.cc
parenta0c5de281a2ba029a9af53a6ffe3a717280998b3 (diff)
basically operational switch to canvas drawing coordinates, although text and waves don't work, and redraw areas are too small
Diffstat (limited to 'libs/canvas/item.cc')
-rw-r--r--libs/canvas/item.cc32
1 files changed, 32 insertions, 0 deletions
diff --git a/libs/canvas/item.cc b/libs/canvas/item.cc
index 569d03f81f..dca3064bce 100644
--- a/libs/canvas/item.cc
+++ b/libs/canvas/item.cc
@@ -127,6 +127,20 @@ Item::canvas_to_item (ArdourCanvas::Duple const & d) const
return d.translate (offset);
}
+ArdourCanvas::Rect
+Item::canvas_to_item (ArdourCanvas::Rect const & d) const
+{
+ Item const * i = this;
+ Duple offset;
+
+ while (i) {
+ offset = offset.translate (-(i->position()));
+ i = i->parent();
+ }
+
+ return d.translate (offset);
+}
+
void
Item::item_to_canvas (Coord& x, Coord& y) const
{
@@ -145,6 +159,24 @@ Item::canvas_to_item (Coord& x, Coord& y) const
y = d.y;
}
+Duple
+Item::item_to_window (ArdourCanvas::Duple const & d) const
+{
+ return _canvas->canvas_to_window (item_to_canvas (d));
+}
+
+Duple
+Item::window_to_item (ArdourCanvas::Duple const & d) const
+{
+ return _canvas->window_to_canvas (canvas_to_item (d));
+}
+
+Rect
+Item::item_to_window (ArdourCanvas::Rect const & r) const
+{
+ return _canvas->canvas_to_window (item_to_canvas (r));
+}
+
/** Set the position of this item in the parent's coordinates */
void
Item::set_position (Duple p)