X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fcanvas%2Fcanvas%2Frectangle.h;h=b979a24430bfd12e010da03ad3cc303c54a4d15b;hb=8491a015e33fd306548c324f32c0225a2bd866e2;hp=ff6eca3cd9bf00be62fa9ffab199b35e1462e940;hpb=590882f3c8e063528452d71daffb36d3151da05e;p=ardour.git diff --git a/libs/canvas/canvas/rectangle.h b/libs/canvas/canvas/rectangle.h index ff6eca3cd9..b979a24430 100644 --- a/libs/canvas/canvas/rectangle.h +++ b/libs/canvas/canvas/rectangle.h @@ -23,8 +23,6 @@ #include "canvas/visibility.h" #include "canvas/item.h" #include "canvas/types.h" -#include "canvas/outline.h" -#include "canvas/fill.h" namespace ArdourCanvas { @@ -34,8 +32,8 @@ class LIBCANVAS_API Rectangle : public Item public: Rectangle (Canvas*); Rectangle (Canvas*, Rect const &); - Rectangle (Group*); - Rectangle (Group*, Rect const &); + Rectangle (Item*); + Rectangle (Item*, Rect const &); void render (Rect const &, Cairo::RefPtr) const; void compute_bounding_box () const; @@ -66,22 +64,34 @@ public: void set_x1 (Coord); void set_y1 (Coord); + /** return @param y as a floating point fraction of the overall + * height of the rectangle. @param y is in canvas coordinate space. + * + * A value of zero indicates that y is at the bottom of the + * rectangle; a value of 1 indicates that y is at the top. + * + * Will return zero if there is no bounding box or if y + * is outside the bounding box. + */ + double vertical_fraction (double y) const; + enum What { + NOTHING = 0x0, LEFT = 0x1, RIGHT = 0x2, TOP = 0x4, - BOTTOM = 0x8 + BOTTOM = 0x8, + ALL = LEFT|RIGHT|TOP|BOTTOM, }; void set_outline_what (What); - void set_outline_all () { - set_outline_what (ArdourCanvas::Rectangle::What (ArdourCanvas::Rectangle::TOP| - ArdourCanvas::Rectangle::LEFT| - ArdourCanvas::Rectangle::RIGHT| - ArdourCanvas::Rectangle::BOTTOM)); - } + void set_outline_all () { set_outline_what (ArdourCanvas::Rectangle::ALL); } + + protected: + void render_self (Rect const &, Cairo::RefPtr, Rect) const; + Rect get_self_for_render () const; -private: + private: /** Our rectangle; note that x0 may not always be less than x1 * and likewise with y0 and y1. */