diff options
author | Max Horn | 2003-05-15 21:40:36 +0000 |
---|---|---|
committer | Max Horn | 2003-05-15 21:40:36 +0000 |
commit | 128f793be03e389891a0fe92373269bfb8b39114 (patch) | |
tree | c7e6978c8c0047bcae5744472a928bd47ee1b5e8 | |
parent | c0e8eb0cb77807236897a764f4414cb5e33e7ba9 (diff) | |
download | scummvm-rg350-128f793be03e389891a0fe92373269bfb8b39114.tar.gz scummvm-rg350-128f793be03e389891a0fe92373269bfb8b39114.tar.bz2 scummvm-rg350-128f793be03e389891a0fe92373269bfb8b39114.zip |
make SWAP a template function, so that it works for swapping non-int stuff, too; 'int16' should be sufficient for points/rects
svn-id: r7540
-rw-r--r-- | common/rect.h | 20 | ||||
-rw-r--r-- | common/util.h | 4 |
2 files changed, 13 insertions, 11 deletions
diff --git a/common/rect.h b/common/rect.h index 420be79ddd..8f983abe66 100644 --- a/common/rect.h +++ b/common/rect.h @@ -31,12 +31,12 @@ namespace ScummVM { This small class is an helper for position and size values. */ struct Point { - int x; //!< The horizontal part of the point - int y; //!< The vertical part of the point + int16 x; //!< The horizontal part of the point + int16 y; //!< The vertical part of the point Point() : x(0), y(0) {}; Point(const Point & p) : x(p.x), y(p.y) {}; - explicit Point(int x1, int y1) : x(x1), y(y1) {}; + explicit Point(int16 x1, int16 y1) : x(x1), y(y1) {}; Point & operator=(const Point & p) { x = p.x; y = p.y; return *this; }; bool operator==(const Point & p) const { return x == p.x && y == p.y; }; }; @@ -47,14 +47,14 @@ struct Point { It is mostly used by the blitter class. */ struct Rect { - int top, left; //!< The point at the top left of the rectangle (part of the rect). - int bottom, right; //!< The point at the bottom right of the rectangle (not part of the rect). + int16 top, left; //!< The point at the top left of the rectangle (part of the rect). + int16 bottom, right; //!< The point at the bottom right of the rectangle (not part of the rect). Rect() : top(0), left(0), bottom(0), right(0) {} - Rect(int x, int y) : top(0), left(0), bottom(x), right(y) {} - Rect(int x1, int y1, int x2, int y2) : top(x1), left(y1), bottom(x2), right(y2) {} - int width() const { return right - left; } - int height() const { return top - bottom; } + Rect(int16 x, int16 y) : top(0), left(0), bottom(x), right(y) {} + Rect(int16 x1, int16 y1, int16 x2, int16 y2) : top(x1), left(y1), bottom(x2), right(y2) {} + int16 width() const { return right - left; } + int16 height() const { return top - bottom; } /*! @brief check if given position is inside the rectangle @@ -63,7 +63,7 @@ struct Rect { @return true if the given position is inside the rectangle, false otherwise */ - bool isInside(int x, int y) const { + bool isInside(int16 x, int16 y) const { return (left <= x) && (x < right) && (top <= y) && (y < bottom); } /*! @brief check if given point is inside the rectangle diff --git a/common/util.h b/common/util.h index 7123a8e4a1..330d9d369b 100644 --- a/common/util.h +++ b/common/util.h @@ -35,7 +35,9 @@ #define MAX(a,b) (((a) > (b)) ? (a) : (b)) #endif -static inline void SWAP(int &a, int &b) { int tmp = a; a = b; b = tmp; } +template<class T> +static inline void SWAP(T &a, T &b) { T tmp = a; a = b; b = tmp; } + #define ARRAYSIZE(x) (sizeof(x) / sizeof(x[0])) int RGBMatch(byte *palette, int r, int g, int b); |