Unhardcode and increase bindable Lua-script-action count
[ardour.git] / libs / canvas / canvas / ruler.h
index f3631a2f033e391dc9a74697c8ec3c909763b4f9..59ce625dca8145ecfe34c4e70e6d7d86d24d68c9 100644 (file)
 
 #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 {
@@ -44,7 +42,7 @@ public:
                double position;
                Style  style;
        };
-       
+
        struct Metric {
                Metric () : units_per_pixel (0) {}
                virtual ~Metric() {}
@@ -53,28 +51,37 @@ public:
 
                /* 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;