aboutsummaryrefslogtreecommitdiff
path: root/sword2
diff options
context:
space:
mode:
authorMax Horn2005-04-27 20:29:19 +0000
committerMax Horn2005-04-27 20:29:19 +0000
commit4ec716103270459a978fe1e6c699db5bfd5ae6cc (patch)
tree1cce871512dd281dfa90c8b160b9e5bf5a60d8a1 /sword2
parent6fb944befd6e7bc089d4e7cc309ee1f6e8d89dc7 (diff)
downloadscummvm-rg350-4ec716103270459a978fe1e6c699db5bfd5ae6cc.tar.gz
scummvm-rg350-4ec716103270459a978fe1e6c699db5bfd5ae6cc.tar.bz2
scummvm-rg350-4ec716103270459a978fe1e6c699db5bfd5ae6cc.zip
Patch #1186744 (Common line-drawing function)
svn-id: r17842
Diffstat (limited to 'sword2')
-rw-r--r--sword2/build_display.h1
-rw-r--r--sword2/driver/render.cpp45
2 files changed, 3 insertions, 43 deletions
diff --git a/sword2/build_display.h b/sword2/build_display.h
index 11b25e6694..76853bcf7e 100644
--- a/sword2/build_display.h
+++ b/sword2/build_display.h
@@ -417,7 +417,6 @@ public:
void plotPoint(int x, int y, uint8 colour);
void drawLine(int x0, int y0, int x1, int y1, uint8 colour);
- void drawLine(int x0, int y0, int x1, int y1, int color, void (*plotProc)(int, int, int, void *), void *data);
#ifdef BACKEND_8BIT
void plotYUV(byte *lut, int width, int height, byte *const *dat);
diff --git a/sword2/driver/render.cpp b/sword2/driver/render.cpp
index 0cb20b0291..f2030a295f 100644
--- a/sword2/driver/render.cpp
+++ b/sword2/driver/render.cpp
@@ -21,6 +21,8 @@
#include "common/stdafx.h"
#include "common/system.h"
+#include "graphics/primitives.h"
+
#include "sword2/sword2.h"
#include "sword2/defs.h"
#include "sword2/build_display.h"
@@ -225,48 +227,7 @@ static void plot(int x, int y, int colour, void *data) {
*/
void Screen::drawLine(int x0, int y0, int x1, int y1, uint8 colour) {
- drawLine(x0, y0, x1, y1, colour, &plot, this);
-}
-
-// TODO: Main line-drawing function. Move this somewhere where other engines
-// can benefit from it.
-
-void Screen::drawLine(int x0, int y0, int x1, int y1, int color, void (*plotProc)(int, int, int, void *), void *data) {
- // Bresenham's line algorithm, as described by Wikipedia
- bool steep = ABS(y1 - y0) > ABS(x1 - x0);
-
- if (steep) {
- SWAP(x0, y0);
- SWAP(x1, y1);
- }
-
- int delta_x = ABS(x1 - x0);
- int delta_y = ABS(y1 - y0);
- int err = 0;
- int delta_err = delta_y;
- int x = x0;
- int y = y0;
-
- int x_step = (x0 < x1) ? 1 : -1;
- int y_step = (y0 < y1) ? 1 : -1;
-
- if (steep)
- (*plotProc)(y, x, color, data);
- else
- (*plotProc)(x, y, color, data);
-
- while (x != x1) {
- x += x_step;
- err += delta_err;
- if (2 * err > delta_x) {
- y += y_step;
- err -= delta_x;
- }
- if (steep)
- (*plotProc)(y, x, color, data);
- else
- (*plotProc)(x, y, color, data);
- }
+ Graphics::drawLine(x0, y0, x1, y1, colour, &plot, this);
}
/**