diff options
-rw-r--r-- | graphics/surface.cpp | 8 | ||||
-rw-r--r-- | graphics/surface.h | 23 |
2 files changed, 31 insertions, 0 deletions
diff --git a/graphics/surface.cpp b/graphics/surface.cpp index 010389c9fa..728c6db12c 100644 --- a/graphics/surface.cpp +++ b/graphics/surface.cpp @@ -82,6 +82,14 @@ void Surface::free() { format = PixelFormat(); } +void Surface::init(uint16 width, uint16 height, uint16 newPitch, void *newPixels, const PixelFormat &f) { + w = width; + h = height; + pitch = newPitch; + pixels = newPixels; + format = f; +} + void Surface::copyFrom(const Surface &surf) { create(surf.w, surf.h, surf.format); if (surf.pitch == pitch) { diff --git a/graphics/surface.h b/graphics/surface.h index d685853009..8ce2cf3ecc 100644 --- a/graphics/surface.h +++ b/graphics/surface.h @@ -96,6 +96,15 @@ struct Surface { } /** + * Sets the pixel data. + * + * Note that this is a simply setter. Be careful what you are doing! + * + * @param newPixels The new pixel data. + */ + void setPixels(void *newPixels) { pixels = newPixels; } + + /** * Return a pointer to the pixel at the specified point. * * @param x The x coordinate of the pixel. @@ -140,6 +149,20 @@ struct Surface { void free(); /** + * Set up the Surface with user specified data. + * + * Note that this simply sets the 'internal' attributes of the Surface. It + * will not take care of freeing old data via free or similar! + * + * @param width Width of the pixel data. + * @param height Height of the pixel data. + * @param pitch The pitch of the pixel data. + * @param pixels The pixel data itself. + * @param format The pixel format of the pixel data. + */ + void init(uint16 width, uint16 height, uint16 pitch, void *pixels, const PixelFormat &format); + + /** * Copy the data from another Surface. * * Note that this calls free on the current surface, to assure it being |