i.e line(x1,y1,x2,y2,PIXEL color, buffer)
source for line function:
- Code: Select all
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67void line( int x1, int y1, int x2, int y2, PIXEL color, PIXEL* buff)
{
if (y1>y2)
{
int h=y1;
y1=y2, y2=h;
h=x1, x1=x2, x2=h;
}
int dx, dy, len = abs( x2-x1 );
if (abs( y2 - y1 ) > len) len = abs( y2 - y1 );
len = len >> FPP;
if (len != 0)
{
dx = (x2 - x1) / len;
dy = (y2 - y1) / len;
}
if (y1 < 0)
{
if (dy > 0)
{
int i = -(y1 / dy) + 1;
x1 += dx * i;
y1 += dy * i;
len -= i;
}
else len = 0;
}
if (len > 0) if (x1 < 0)
{
if (dx > 0)
{
int i = -(x1 / dx) + 1;
x1 += dx * i;
y1 += dy * i;
len -= i;
}
else len = 0;
}
if (len > 0) if (y2 > (240 << FPP))
{
if (dy > 0)
{
int i = ((y2 - (240 << FPP)) / dy) + 1;
x2 -= dx * i;
y2 -= dy * i;
len -= i;
}
else len = 0;
}
if (len > 0) if (x2 > (320 << FPP))
{
if (dx > 0)
{
int i = ((x2 - (320 << FPP)) / dx) + 1;
x2 -= dx * i;
y2 -= dy * i;
len -= i;
}
else len = 0;
}
for ( int i = 0; i < len + 1; i++)
{
buff[((y1 >> FPP) * 240) + (x1 >> FPP)] = color;
x1 += dx;
y1 += dy;
}
}67 lines; 31 keywds; 25 nums; 249 ops; 0 strs; 0 coms Syntactic Coloring v0.4 - Dan East
am I missing somthing here?, is there a bug in jakkos code? any ideas?
