Ardour  9.0-pre0-582-g084a23a80d
canvas/canvas/rectangle.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2012 Carl Hetherington <carl@carlh.net>
3  * Copyright (C) 2013-2018 Paul Davis <paul@linuxaudiosystems.com>
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License along
16  * with this program; if not, write to the Free Software Foundation, Inc.,
17  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18  */
19 
20 #ifndef __CANVAS_RECTANGLE_H__
21 #define __CANVAS_RECTANGLE_H__
22 
23 #include "canvas/visibility.h"
24 #include "canvas/item.h"
25 #include "canvas/types.h"
26 
27 namespace ArdourCanvas
28 {
29 
31 {
32 public:
34  Rectangle (Canvas*, Rect const &);
36  Rectangle (Item*, Rect const &);
37 
38  void render (Rect const &, Cairo::RefPtr<Cairo::Context>) const;
39  void compute_bounding_box () const;
40  void _size_allocate (Rect const&);
41 
42  Rect const & get () const {
43  return _rect;
44  }
45 
46  Coord x0 () const {
47  return _rect.x0;
48  }
49 
50  Coord y0 () const {
51  return _rect.y0;
52  }
53 
54  Coord x1 () const {
55  return _rect.x1;
56  }
57 
58  Coord y1 () const {
59  return _rect.y1;
60  }
61 
62  Distance height() const {
63  return _rect.height();
64  }
65 
66  Distance width() const {
67  return _rect.height();
68  }
69 
70  void set (Rect const &);
71  void set_x0 (Coord);
72  void set_y0 (Coord);
73  void set_x1 (Coord);
74  void set_y1 (Coord);
75 
85  double vertical_fraction (double y) const;
86 
87  void set_corner_radius (double d);
88 
89  enum What {
90  NOTHING = 0x0,
91  LEFT = 0x1,
92  RIGHT = 0x2,
93  TOP = 0x4,
94  BOTTOM = 0x8,
95  ALL = LEFT|RIGHT|TOP|BOTTOM,
96  };
97 
99  void set_outline_all () { set_outline_what (ArdourCanvas::Rectangle::ALL); }
100 
101  void size_request (double& w, double& h) const;
102 
103  void dump (std::ostream&) const;
104 
105  protected:
110 
111  private:
114 };
115 
116 }
117 
118 #endif
#define LIBCANVAS_API
void compute_bounding_box() const
void render(Rect const &, Cairo::RefPtr< Cairo::Context >) const
void set(Rect const &)
double vertical_fraction(double y) const
void size_request(double &w, double &h) const
void dump(std::ostream &) const
Rectangle(Canvas *, Rect const &)
void set_corner_radius(double d)
Rectangle(Item *, Rect const &)
void _size_allocate(Rect const &)
@ NOTHING
Definition: event.h:57