193
|
1 #include <math.h>
|
|
2
|
192
|
3 #include "paranormal.h"
|
|
4 #include "actuators.h"
|
|
5 #include "pn_utils.h"
|
|
6
|
|
7 extern SDL_Surface *screen;
|
|
8
|
|
9 void
|
|
10 pn_draw_line (guint _x0, guint _y0, guint _x1, guint _y1, guchar value)
|
|
11 {
|
|
12 gint x0 = _x0;
|
|
13 gint y0 = _y0;
|
|
14 gint x1 = _x1;
|
|
15 gint y1 = _y1;
|
|
16
|
193
|
17 gint dx = x1 - x0;
|
192
|
18 gint dy = y1 - y0;
|
|
19
|
|
20 pn_image_data->surface[0][PN_IMG_INDEX(x0, y0)] = value;
|
193
|
21
|
|
22 if (dx != 0)
|
192
|
23 {
|
193
|
24 gfloat m = (gfloat) dy / (gfloat) dx;
|
|
25 gfloat b = y0 - m * x0;
|
|
26
|
|
27 dx = (x1 > x0) ? 1 : - 1;
|
192
|
28 while (x0 != x1)
|
193
|
29 {
|
|
30 x0 += dx;
|
|
31 y0 = round(m * x0 + b);
|
|
32
|
|
33 pn_image_data->surface[0][PN_IMG_INDEX(x0, y0)] = value;
|
|
34 }
|
192
|
35 }
|
|
36 }
|