Merged changes from branches/supertux-milestone2-grumbel/ to trunk/supertux/
[supertux.git] / src / math / aatriangle.hpp
1 //  SuperTux
2 //  Copyright (C) 2006 Matthias Braun <matze@braunis.de>
3 //
4 //  This program is free software: you can redistribute it and/or modify
5 //  it under the terms of the GNU General Public License as published by
6 //  the Free Software Foundation, either version 3 of the License, or
7 //  (at your option) any later version.
8 //
9 //  This program is distributed in the hope that it will be useful,
10 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
11 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 //  GNU General Public License for more details.
13 //
14 //  You should have received a copy of the GNU General Public License
15 //  along with this program.  If not, see <http://www.gnu.org/licenses/>.
16
17 #ifndef HEADER_SUPERTUX_MATH_AATRIANGLE_HPP
18 #define HEADER_SUPERTUX_MATH_AATRIANGLE_HPP
19
20 #include "math/rect.hpp"
21
22 /**
23  * An axis-aligned triangle (ie. a triangle where 2 sides are parallel to the x-
24  * and y-axis.
25  */
26 class AATriangle : public Rect
27 {
28 public:
29   /** Directions:
30    *
31    *    SOUTHEWEST    NORTHEAST   SOUTHEAST    NORTHWEST
32    *    *      or      *---*   or      *    or *---*
33    *    | \             \  |         / |       |  /
34    *    |  \             \ |        /  |       | /
35    *    *---*              *       *---*       *
36    *
37    * Deform flags: (see docs/aatriangletypes.png for details)
38    */
39   enum Direction {
40     SOUTHWEST = 0,
41     NORTHEAST,
42     SOUTHEAST,
43     NORTHWEST,
44     DIRECTION_MASK = 0x0003,
45     DEFORM1 = 0x0010,
46     DEFORM2 = 0x0020,
47     DEFORM3 = 0x0030,
48     DEFORM4 = 0x0040,
49     DEFORM_MASK = 0x0070
50   };
51
52   AATriangle()
53     : dir(SOUTHWEST)
54   {
55   }
56   AATriangle(const Vector& v1, const Vector& v2, int newdir)
57     : Rect(v1, v2), dir(newdir)
58   {
59   }
60
61   int dir;
62 };
63
64 #endif
65
66 /* EOF */