aatriangle.hpp 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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. #ifndef HEADER_SUPERTUX_MATH_AATRIANGLE_HPP
  17. #define HEADER_SUPERTUX_MATH_AATRIANGLE_HPP
  18. #include "math/rectf.hpp"
  19. /**
  20. * An axis-aligned triangle (ie. a triangle where 2 sides are parallel to the x-
  21. * and y-axis.
  22. */
  23. class AATriangle final
  24. {
  25. public:
  26. /** Directions:
  27. *
  28. * SOUTHEWEST NORTHEAST SOUTHEAST NORTHWEST
  29. * * or *---* or * or *---*
  30. * | \ \ | / | | /
  31. * | \ \ | / | | /
  32. * *---* * *---* *
  33. *
  34. * Deform flags: (see docs/aatriangletypes.png for details)
  35. */
  36. enum Direction {
  37. SOUTHWEST = 0,
  38. NORTHEAST,
  39. SOUTHEAST,
  40. NORTHWEST,
  41. DIRECTION_MASK = 0x0003,
  42. DEFORM_BOTTOM = 0x0010,
  43. DEFORM_TOP = 0x0020,
  44. DEFORM_LEFT = 0x0030,
  45. DEFORM_RIGHT = 0x0040,
  46. DEFORM_MASK = 0x0070
  47. };
  48. static int vertical_flip(int dir);
  49. public:
  50. AATriangle() :
  51. bbox(),
  52. dir(SOUTHWEST)
  53. {
  54. }
  55. AATriangle(const Rectf& newbbox, int newdir) :
  56. bbox(newbbox),
  57. dir(newdir)
  58. {
  59. }
  60. public:
  61. Rectf bbox;
  62. int dir;
  63. };
  64. #endif
  65. /* EOF */