aboutsummaryrefslogtreecommitdiff
path: root/graphics
diff options
context:
space:
mode:
authorMax Horn2005-05-08 12:33:55 +0000
committerMax Horn2005-05-08 12:33:55 +0000
commit5d5b997864bdc9d0daddf5b9b73a803122558130 (patch)
treecc661fef6897a9b6c7aa2fa340772dcb1275094c /graphics
parentbd8831487f9b1acb5f81986832e532f49544e5bd (diff)
downloadscummvm-rg350-5d5b997864bdc9d0daddf5b9b73a803122558130.tar.gz
scummvm-rg350-5d5b997864bdc9d0daddf5b9b73a803122558130.tar.bz2
scummvm-rg350-5d5b997864bdc9d0daddf5b9b73a803122558130.zip
Patch #1193795 (Adding drawLine() to Surface)
svn-id: r17959
Diffstat (limited to 'graphics')
-rw-r--r--graphics/surface.cpp22
-rw-r--r--graphics/surface.h3
2 files changed, 24 insertions, 1 deletions
diff --git a/graphics/surface.cpp b/graphics/surface.cpp
index 0ae59926f2..4d7cc713bf 100644
--- a/graphics/surface.cpp
+++ b/graphics/surface.cpp
@@ -20,10 +20,32 @@
#include "common/stdafx.h"
#include "common/util.h"
+#include "graphics/primitives.h"
#include "graphics/surface.h"
namespace Graphics {
+static void plotPoint1(int x, int y, int color, void *data) {
+ Surface *s = (Surface *)data;
+ byte *ptr = (byte *)s->getBasePtr(x, y);
+ *ptr = (byte)color;
+}
+
+static void plotPoint2(int x, int y, int color, void *data) {
+ Surface *s = (Surface *)data;
+ uint16 *ptr = (uint16 *)s->getBasePtr(x, y);
+ *ptr = (uint16)color;
+}
+
+void Surface::drawLine(int x0, int y0, int x1, int y1, uint32 color) {
+ if (bytesPerPixel == 1)
+ Graphics::drawLine(x0, y0, x1, y1, color, &plotPoint1, this);
+ else if (bytesPerPixel == 2)
+ Graphics::drawLine(x0, y0, x1, y1, color, &plotPoint2, this);
+ else
+ error("Surface::drawLine: bytesPerPixel must be 1 or 2");
+}
+
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 8407b73bbe..ce3596b364 100644
--- a/graphics/surface.h
+++ b/graphics/surface.h
@@ -46,7 +46,8 @@ struct Surface {
inline void *getBasePtr(int x, int y) {
return static_cast<void *>(static_cast<byte *>(pixels) + y * pitch + x * bytesPerPixel);
}
-
+
+ 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);
void fillRect(const Common::Rect &r, uint32 color);