aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--graphics/surface.cpp8
-rw-r--r--graphics/surface.h23
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