From 315943f19a3d7b9acb64e9fb8b7e1587d81c1ae5 Mon Sep 17 00:00:00 2001 From: Max Horn Date: Sun, 8 May 2005 21:24:33 +0000 Subject: Added convenience methods create/free to Graphics::Surface (part of patch #1163026) svn-id: r17973 --- graphics/surface.cpp | 19 +++++++++++++++++++ graphics/surface.h | 11 +++++++++++ 2 files changed, 30 insertions(+) (limited to 'graphics') 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(static_cast(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); -- cgit v1.2.3