diff options
-rw-r--r-- | libs/canvas/canvas/ruler.h | 7 | ||||
-rw-r--r-- | libs/canvas/ruler.cc | 27 |
2 files changed, 33 insertions, 1 deletions
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<Cairo::Context>) 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<Mark> 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,10 +182,33 @@ Ruler::render (Rect const & area, Cairo::RefPtr<Cairo::Context> 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) { _metric = &m; |