]> git.localhorst.tv Git - l2e.git/commitdiff
made Frame default constructible
authorDaniel Karbach <daniel.karbach@localhorst.tv>
Fri, 31 Aug 2012 19:20:46 +0000 (21:20 +0200)
committerDaniel Karbach <daniel.karbach@localhorst.tv>
Fri, 31 Aug 2012 19:20:46 +0000 (21:20 +0200)
src/graphics/Frame.cpp
src/graphics/Frame.h

index a152ee76c8efa152825dc514938e100df97c3736..14856071662a8ba80494c6b536c4b1cc71e9fbf8 100644 (file)
@@ -13,6 +13,15 @@ namespace graphics {
 
 // TODO: maybe create a cache for frames?
 void Frame::Draw(SDL_Surface *dest, const Vector<int> &position, int width, int height) const {
+       if (!surface) {
+               SDL_Rect rect;
+               rect.x = position.X();
+               rect.y = position.Y();
+               rect.w = width;
+               rect.h = height;
+               SDL_FillRect(dest, &rect, SDL_MapRGB(dest->format, 0xFF, 0x00, 0x00));
+               return;
+       }
        // top-left corner
        SDL_Rect srcRect;
        srcRect.x = offset.X();
index 09674cc62d2f63a97dc50a327a2c6df2c33a0fd4..59aa1fb0c74486b99c05be713030cd5a9d7a9650 100644 (file)
@@ -17,7 +17,7 @@ namespace graphics {
 class Frame {
 
 public:
-       Frame(SDL_Surface *s, int borderWidth, int borderHeight, int repeatWidth = 1, int repeatHeight = 1, int xOffset = 0, int yOffset = 0)
+       explicit Frame(SDL_Surface *s = 0, int borderWidth = 1, int borderHeight = 1, int repeatWidth = 1, int repeatHeight = 1, int xOffset = 0, int yOffset = 0)
        : surface(s), borderSize(borderWidth, borderHeight), repeatSize(repeatWidth, repeatHeight), offset(xOffset, yOffset) { }
 
 public:
@@ -31,6 +31,12 @@ public:
        const geometry::Vector<int> RepeatSize() const { return repeatSize; }
        void Draw(SDL_Surface *dest, const geometry::Vector<int> &position, int width, int height) const;
 
+public:
+       void SetSurface(SDL_Surface *s) { surface = s; }
+       void SetBorderSize(const geometry::Vector<int> &s) { borderSize = s; }
+       void SetRepeatSize(const geometry::Vector<int> &s) { repeatSize = s; }
+       void SetOffset(const geometry::Vector<int> &o) { offset = o; }
+
 private:
        SDL_Surface *surface;
        geometry::Vector<int> borderSize;