- int Width() const { return width; }
- int Height() const { return height; }
- void Draw(SDL_Surface *dest, geometry::Point<int> position, int col = 0, int row = 0) const;
+ int Width() const { return size.X(); }
+ int Height() const { return size.Y(); }
+ const math::Vector<int> &Size() const { return size; }
+ void Draw(SDL_Surface *dest, const math::Vector<int> &position, int col = 0, int row = 0) const;
+ void DrawTopRight(SDL_Surface *dest, const math::Vector<int> &position, int col = 0, int row = 0) const {
+ math::Vector<int> offset(-Width(), 0);
+ Draw(dest, position + offset, col, row);
+ }
+ void DrawCenter(SDL_Surface *dest, const math::Vector<int> &position, int col = 0, int row = 0) const {
+ Draw(dest, position - (Size() / 2), col, row);
+ }
+ void DrawCenterBottom(SDL_Surface *dest, const math::Vector<int> &position, int col = 0, int row = 0) const {
+ math::Vector<int> offset(-Width() / 2, -Height());
+ Draw(dest, position + offset, col, row);
+ }
+
+public:
+ void SetSurface(SDL_Surface *s) { surface = s; }
+ void SetSize(const math::Vector<int> &s) { size = s; }
+ void SetOffset(const math::Vector<int> &o) { offset = o; }
+
+ static void CreateTypeDescription();
+ static void Construct(void *);