X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fcanvas%2Fcanvas%2Frectangle.h;h=351074cc42ae26962648bed9551c3f7494c7cd81;hb=4d3cd732c93dd64b8768ec5f8398999f521ee6f0;hp=2983d33ed2b6ec122804a1d630ac3f4c7aa7384d;hpb=ff46a3c3a216afc97fee0c796ac2eaa92d58becb;p=ardour.git diff --git a/libs/canvas/canvas/rectangle.h b/libs/canvas/canvas/rectangle.h index 2983d33ed2..351074cc42 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 { @@ -36,7 +34,7 @@ public: Rectangle (Canvas*, Rect const &); Rectangle (Item*); Rectangle (Item*, Rect const &); - + void render (Rect const &, Cairo::RefPtr) const; void compute_bounding_box () const; @@ -66,22 +64,30 @@ 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); } -private: + private: /** Our rectangle; note that x0 may not always be less than x1 * and likewise with y0 and y1. */