diff options
author | Max Horn | 2005-05-08 21:24:33 +0000 |
---|---|---|
committer | Max Horn | 2005-05-08 21:24:33 +0000 |
commit | 315943f19a3d7b9acb64e9fb8b7e1587d81c1ae5 (patch) | |
tree | c1ab2da9c01c134176a671efd074940c25552962 | |
parent | cf936916db8375a504ec8e10ff478cd8827b059d (diff) | |
download | scummvm-rg350-315943f19a3d7b9acb64e9fb8b7e1587d81c1ae5.tar.gz scummvm-rg350-315943f19a3d7b9acb64e9fb8b7e1587d81c1ae5.tar.bz2 scummvm-rg350-315943f19a3d7b9acb64e9fb8b7e1587d81c1ae5.zip |
Added convenience methods create/free to Graphics::Surface (part of patch #1163026)
svn-id: r17973
-rw-r--r-- | graphics/surface.cpp | 19 | ||||
-rw-r--r-- | graphics/surface.h | 11 |
2 files changed, 30 insertions, 0 deletions
diff --git a/graphics/surface.cpp b/graphics/surface.cpp index 4d7cc713bf..b0585eab15 100644 --- a/graphics/surface.cpp +++ b/graphics/surface.cpp @@ -46,6 +46,25 @@ void Surface::drawLine(int x0, int y0, int x1, int y1, uint32 color) { error("Surface::drawLine: bytesPerPixel must be 1 or 2"); } +void Surface::create(uint16 width, uint16 height, uint8 bytesPP) { + free(); + + w = width; + h = height; + bytesPerPixel = bytesPP; + pitch = w * bytesPP; + + pixels = calloc(width * height, bytesPP); + assert(pixels); +} + +void Surface::free() { + ::free(pixels); + pixels = 0; + w = h = pitch = 0; + bytesPerPixel = 0; +} + void Surface::hLine(int x, int y, int x2, uint32 color) { // Clipping if (y < 0 || y >= h) diff --git a/graphics/surface.h b/graphics/surface.h index ce3596b364..fcdadf3b4a 100644 --- a/graphics/surface.h +++ b/graphics/surface.h @@ -47,6 +47,17 @@ struct Surface { return static_cast<void *>(static_cast<byte *>(pixels) + y * pitch + x * bytesPerPixel); } + /** + * Allocate pixels memory for this surface and for the specified dimension. + */ + void create(uint16 width, uint16 height, uint8 bytesPP); + + /** + * Release the memory used by the pixels memory of this surface. This is the + * counterpart to create(). + */ + void free(); + void drawLine(int x0, int y0, int x1, int y1, uint32 color); void hLine(int x, int y, int x2, uint32 color); void vLine(int x, int y, int y2, uint32 color); |