X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fcanvas%2Fcanvas%2Frectangle.h;h=351074cc42ae26962648bed9551c3f7494c7cd81;hb=4d3cd732c93dd64b8768ec5f8398999f521ee6f0;hp=f93324b39e75a8ec330c8af0c9a630736acdf5c6;hpb=1676789907b95aa8d5bf6cc2ce62aa66a80b9aae;p=ardour.git diff --git a/libs/canvas/canvas/rectangle.h b/libs/canvas/canvas/rectangle.h index f93324b39e..351074cc42 100644 --- a/libs/canvas/canvas/rectangle.h +++ b/libs/canvas/canvas/rectangle.h @@ -20,20 +20,21 @@ #ifndef __CANVAS_RECTANGLE_H__ #define __CANVAS_RECTANGLE_H__ +#include "canvas/visibility.h" #include "canvas/item.h" #include "canvas/types.h" -#include "canvas/outline.h" -#include "canvas/fill.h" namespace ArdourCanvas { -class Rectangle : virtual public Item, public Outline, public Fill +class LIBCANVAS_API Rectangle : public Item { public: - Rectangle (Group *); - Rectangle (Group *, Rect const &); - + Rectangle (Canvas*); + Rectangle (Canvas*, Rect const &); + Rectangle (Item*); + Rectangle (Item*, Rect const &); + void render (Rect const &, Cairo::RefPtr) const; void compute_bounding_box () const; @@ -63,17 +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_what (int); + 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. */