1 #ifndef SEEN_NR_CONVEX_HULL_H
2 #define SEEN_NR_CONVEX_HULL_H
4 /* ex:set et ts=4 sw=4: */
6 /*
7 * A class representing the convex hull of a set of points.
8 *
9 * Copyright 2004 MenTaLguY <mental@rydia.net>
10 *
11 * This code is licensed under the GNU GPL; see COPYING for more information.
12 */
14 #include <libnr/nr-rect.h>
16 namespace NR {
18 class ConvexHull {
19 public:
20 explicit ConvexHull(Point const &p) : _bounds(p, p) {}
22 Point midpoint() const {
23 return _bounds.midpoint();
24 }
26 void add(Point const &p) {
27 _bounds.expandTo(p);
28 }
29 void add(Rect const &p) {
30 // Note that this is a hack. when convexhull actually works
31 // you will need to add all four points.
32 _bounds.expandTo(p.min());
33 _bounds.expandTo(p.max());
34 }
35 void add(ConvexHull const &h) {
36 _bounds.expandTo(h._bounds);
37 }
39 Rect const &bounds() const {
40 return _bounds;
41 }
43 private:
44 Rect _bounds;
45 };
47 } /* namespace NR */
49 #endif