diff options
Diffstat (limited to 'engines/titanic/support')
-rw-r--r-- | engines/titanic/support/rect.cpp | 18 | ||||
-rw-r--r-- | engines/titanic/support/rect.h | 9 |
2 files changed, 27 insertions, 0 deletions
diff --git a/engines/titanic/support/rect.cpp b/engines/titanic/support/rect.cpp index b39ffc1c45..f7f8f14d2f 100644 --- a/engines/titanic/support/rect.cpp +++ b/engines/titanic/support/rect.cpp @@ -42,4 +42,22 @@ void Rect::constrain(const Rect &r) { } } +Point Rect::getPoint(Quadrant quadrant) { + if (isEmpty()) + return Point(left, top); + + switch (quadrant) { + case Q_LEFT: + return Point(MIN(left + 10, (int)right), (top + bottom) / 2); + case Q_RIGHT: + return Point(MAX(right - 10, (int)left), (top + bottom) / 2); + case Q_TOP: + return Point((left + right) / 2, MIN(top + 10, (int)bottom)); + case Q_BOTTOM: + return Point((left + right) / 2, MAX(bottom - 10, (int)top)); + default: + return Point((left + right) / 2, (top + bottom) / 2); + } +} + } // End of namespace Titanic diff --git a/engines/titanic/support/rect.h b/engines/titanic/support/rect.h index 1661711870..eca256df56 100644 --- a/engines/titanic/support/rect.h +++ b/engines/titanic/support/rect.h @@ -27,6 +27,10 @@ namespace Titanic { +enum Quadrant { + Q_CENTER = 0, Q_LEFT, Q_RIGHT, Q_TOP, Q_BOTTOM +}; + typedef Common::Point Point; class Rect : public Common::Rect { @@ -54,6 +58,11 @@ public: * Constrains/clips to the intersection area of the given rect */ void constrain(const Rect &r); + + /** + * Returns a center point for a given edge or center of the rect + */ + Point getPoint(Quadrant quadrant); }; } // End of namespace Titanic |