X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fcanvas%2Fcanvas%2Frectangle.h;h=5df10fbc606c1772b3ce5294a025c4ebc3798fec;hb=f694b867c1eaa8b959db2f17a894900d0a972738;hp=dd8232c4393b20d67d4fe8d488807ec1b2510af0;hpb=30968b854257cb5f9159ca59589f783c85615601;p=ardour.git diff --git a/libs/canvas/canvas/rectangle.h b/libs/canvas/canvas/rectangle.h index dd8232c439..5df10fbc60 100644 --- a/libs/canvas/canvas/rectangle.h +++ b/libs/canvas/canvas/rectangle.h @@ -1,24 +1,42 @@ +/* + Copyright (C) 2011-2013 Paul Davis + Author: Carl Hetherington + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + #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; - XMLNode* get_state () const; - void set_state (XMLNode const *); Rect const & get () const { return _rect; @@ -47,16 +65,22 @@ public: void set_y1 (Coord); 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); } + + 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. */