#include <string>
#include <vector>
-#include "canvas/item.h"
-#include "canvas/fill.h"
-#include "canvas/outline.h"
+#include <pangomm/fontdescription.h>
+
+#include "canvas/rectangle.h"
namespace ArdourCanvas
{
-class LIBCANVAS_API Ruler : virtual public Item, public Fill, public Outline
+class LIBCANVAS_API Ruler : public Rectangle
{
public:
struct Mark {
/* lower and upper and sample positions, which are also canvas coordinates
*/
- virtual int get_marks (std::vector<Mark>&, double lower, double upper, int maxchars) const = 0;
+ virtual void get_marks (std::vector<Mark>&, double lower, double upper, int maxchars) const = 0;
};
- Ruler (Group *, const Metric& m);
+ Ruler (Canvas*, const Metric& m);
+ Ruler (Canvas*, const Metric& m, Rect const&);
+ Ruler (Item*, const Metric& m);
+ Ruler (Item*, const Metric& m, Rect const&);
void set_range (double lower, double upper);
- void set_size (Rect const&);
+ void set_font_description (Pango::FontDescription);
+ void set_metric (const Metric&);
void render (Rect const & area, Cairo::RefPtr<Cairo::Context>) const;
- void compute_bounding_box () const;
-
+
+ void set_divide_colors (Color top, Color bottom);
+ void set_divide_height (double);
private:
- const Metric& _metric;
- Rect _rect;
+ const Metric* _metric;
/* lower and upper and sample positions, which are also canvas coordinates
*/
Coord _lower;
Coord _upper;
+ double _divide_height;
+ Color _divider_color_top;
+ Color _divider_color_bottom;
+
+ Pango::FontDescription* _font_description;
+ mutable std::vector<Mark> marks;
+ mutable bool _need_marks;
};
}