X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fcanvas%2Fruler.cc;h=b11793cb7fa1d1a524049cfc1ea1f5d3375bdf9e;hb=c4c7598adbc9e5eca5fe04a23bb7e88fc0989f34;hp=aa48b52e92db2b8e1e99345fe08da531c17eec84;hpb=87a6f633a1add7ec014179b7f361c45894e16552;p=ardour.git diff --git a/libs/canvas/ruler.cc b/libs/canvas/ruler.cc index aa48b52e92..b11793cb7f 100644 --- a/libs/canvas/ruler.cc +++ b/libs/canvas/ruler.cc @@ -31,20 +31,36 @@ using namespace std; using namespace ArdourCanvas; -Ruler::Ruler (Group *p, const Metric& m) - : Item (p) - , Rectangle (p) - , _metric (m) +Ruler::Ruler (Canvas* c, const Metric& m) + : Rectangle (c) + , _metric (&m) , _lower (0) , _upper (0) , _need_marks (true) { } -Ruler::Ruler (Group *p, const Metric& m, Rect const& r) - : Item (p) - , Rectangle (p, r) - , _metric (m) +Ruler::Ruler (Canvas* c, const Metric& m, Rect const& r) + : Rectangle (c, r) + , _metric (&m) + , _lower (0) + , _upper (0) + , _need_marks (true) +{ +} + +Ruler::Ruler (Item* parent, const Metric& m) + : Rectangle (parent) + , _metric (&m) + , _lower (0) + , _upper (0) + , _need_marks (true) +{ +} + +Ruler::Ruler (Item* parent, const Metric& m, Rect const& r) + : Rectangle (parent, r) + , _metric (&m) , _lower (0) , _upper (0) , _need_marks (true) @@ -90,7 +106,7 @@ Ruler::render (Rect const & area, Cairo::RefPtr cr) const if (_need_marks) { marks.clear (); - _metric.get_marks (marks, _lower, _upper, 50); + _metric->get_marks (marks, _lower, _upper, 50); _need_marks = false; } @@ -126,7 +142,7 @@ Ruler::render (Rect const & area, Cairo::RefPtr cr) const for (vector::const_iterator m = marks.begin(); m != marks.end(); ++m) { Duple pos; - pos.x = floor ((m->position - _lower) / _metric.units_per_pixel); + pos.x = floor ((m->position - _lower) / _metric->units_per_pixel); pos.y = self.y1; /* bottom edge */ if (_outline_width == 1.0) { @@ -164,3 +180,11 @@ Ruler::render (Rect const & area, Cairo::RefPtr cr) const /* done! */ } + +void +Ruler::set_metric (const Metric& m) +{ + _metric = &m; + _need_marks = true; + redraw (); +}