GRAPHICS: Add two new methods to change 'pixels' of a Surface.

One method is a simpler setter for 'pixels'. The other one can be used to
setup a Surface with custom data.
This commit is contained in:
Johannes Schickel 2013-08-03 03:42:37 +02:00
parent 767f0d8ca9
commit 260ec7a430
2 changed files with 31 additions and 0 deletions

View File

@ -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) {

View File

@ -95,6 +95,15 @@ struct Surface {
return pixels;
}
/**
* 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.
*
@ -139,6 +148,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.
*