summaryrefslogtreecommitdiff
path: root/src/spriteloader/spriteloader.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/spriteloader/spriteloader.hpp')
-rw-r--r--src/spriteloader/spriteloader.hpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/spriteloader/spriteloader.hpp b/src/spriteloader/spriteloader.hpp
index 34e668e22..9b431fb4f 100644
--- a/src/spriteloader/spriteloader.hpp
+++ b/src/spriteloader/spriteloader.hpp
@@ -15,12 +15,32 @@ public:
uint8 m; ///< Remap-channel
};
+ /**
+ * Structure for passing information from the sprite loader to the blitter.
+ * You can only use this struct once at a time when using AllocateData to
+ * allocate the memory as that will always return the same memory address.
+ * This to prevent thousands of malloc + frees just to load a sprite.
+ */
struct Sprite {
+ Sprite() : data(NULL) {}
+ ~Sprite() { assert(this->data == NULL || this->data == Sprite::mem); }
+
uint16 height; ///< Height of the sprite
uint16 width; ///< Width of the sprite
int16 x_offs; ///< The x-offset of where the sprite will be drawn
int16 y_offs; ///< The y-offset of where the sprite will be drawn
SpriteLoader::CommonPixel *data; ///< The sprite itself
+
+ /**
+ * Allocate the sprite data of this sprite.
+ * @param size the minimum size of the data field.
+ */
+ void AllocateData(size_t size);
+ private:
+ /** Allocated memory to pass sprite data around */
+ static SpriteLoader::CommonPixel *mem;
+ /** Size (in items) of the above memory. */
+ static size_t size;
};
/**