diff --git a/libs/canvas/canvas/ruler.h b/libs/canvas/canvas/ruler.h index 56876e761b..0a6a13e078 100644 --- a/libs/canvas/canvas/ruler.h +++ b/libs/canvas/canvas/ruler.h @@ -65,7 +65,9 @@ public: void set_metric (const Metric&); void render (Rect const & area, Cairo::RefPtr) const; - + + void set_divide_colors (Color top, Color bottom); + void set_divide_height (double); private: const Metric* _metric; @@ -74,6 +76,9 @@ private: Coord _lower; Coord _upper; + double _divide_height; + Color _divider_color_top; + Color _divider_color_bottom; Pango::FontDescription* _font_description; mutable std::vector marks; diff --git a/libs/canvas/ruler.cc b/libs/canvas/ruler.cc index b11793cb7f..c5a08ed283 100644 --- a/libs/canvas/ruler.cc +++ b/libs/canvas/ruler.cc @@ -36,6 +36,7 @@ Ruler::Ruler (Canvas* c, const Metric& m) , _metric (&m) , _lower (0) , _upper (0) + , _divide_height (-1.0) , _need_marks (true) { } @@ -45,6 +46,7 @@ Ruler::Ruler (Canvas* c, const Metric& m, Rect const& r) , _metric (&m) , _lower (0) , _upper (0) + , _divide_height (-1.0) , _need_marks (true) { } @@ -54,6 +56,7 @@ Ruler::Ruler (Item* parent, const Metric& m) , _metric (&m) , _lower (0) , _upper (0) + , _divide_height (-1.0) , _need_marks (true) { } @@ -63,6 +66,7 @@ Ruler::Ruler (Item* parent, const Metric& m, Rect const& r) , _metric (&m) , _lower (0) , _upper (0) + , _divide_height (-1.0) , _need_marks (true) { } @@ -178,9 +182,32 @@ Ruler::render (Rect const & area, Cairo::RefPtr cr) const } } + if (_divide_height >= 0.0) { + + cr->set_line_width (1.0); + + set_source_rgba (cr, _divider_color_top); + cr->move_to (self.x0, self.y0 + _divide_height+0.5); + cr->line_to (self.x1, self.y0 + _divide_height+0.5); + cr->stroke (); + + set_source_rgba (cr, _divider_color_bottom); + cr->move_to (self.x0, self.y0 + _divide_height+1.5); + cr->line_to (self.x1, self.y0 + _divide_height+1.5); + cr->stroke (); + + + } + /* done! */ } +void +Ruler::set_divide_height (double h) +{ + _divide_height = h; +} + void Ruler::set_metric (const Metric& m) {