#include <pangomm/fontdescription.h>
-#include "canvas/item.h"
-#include "canvas/fill.h"
-#include "canvas/outline.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 {
double position;
Style style;
};
-
+
struct Metric {
Metric () : units_per_pixel (0) {}
virtual ~Metric() {}
/* lower and upper and sample positions, which are also canvas coordinates
*/
-
+
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&);
+
+ virtual ~Ruler () {
+ delete _font_description;
+ }
+
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 (Gtkmm2ext::Color top, Gtkmm2ext::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
- */
+ /* lower and upper and sample positions, which are also canvas coordinates */
- Coord _lower;
- Coord _upper;
+ Coord _lower;
+ Coord _upper;
+ double _divide_height;
+ Gtkmm2ext::Color _divider_color_top;
+ Gtkmm2ext::Color _divider_color_bottom;
Pango::FontDescription* _font_description;
mutable std::vector<Mark> marks;