Metropoli BBS
VIEWER: progp086.pas MODE: TEXT (ASCII)
{**********************************************************************}
{ Drawing line with brute force algorithm				}
{**********************************************************************}

procedure slow_line(x0, y0, x1, y1, color:integer);
var
i,x,y : integer;
l : longint;
begin
	{--- Draw degenerate line (pixel)				}
        if (x0 = x1) and (y0 = y1) then
                pixel_write(x0,y0,color)

	{--- Draw lines with dx > dy					}
	else if abs(x1-x0) >= abs(y1-y0) then
        	begin
		if x1<x0 then
                        begin
			x := x1; { Swap end points	}
			y := y1;
			x1 := x0;
			y1 := y0;
			x0 := x;
			y0 := y;
	                end;

		for x := x0 to x1 do
                	begin { Loop over x coord, computing y}
			l := longint(y1 - y0) * longint(x - x0);
			l := l div longint(x1 - x0);
			y := y0 + integer(l);

			pixel_write(x,y,color);	{ Draw next point	}
                        end;
                end

	{--- Draw lines with dy > dx					}
	else    begin
		if y1<y0 then
                        begin	{ Swap end points	}
			x := x1;
			y := y1;
			x1 := x0;
			y1 := y0;
			x0 := x;
			y0 := y;
		        end;
		for y := y0 to y1 do
		        begin  { Loop over y coord, computing x}
			l := longint(y - y0) *  longint(x1 - x0);
			l := l div longint(y1 - y0);
			x := x0 + integer(l);

                        pixel_write(x,y,color);	{ Draw next point	}
		        end;
	        end;
end;

[ RETURN TO DIRECTORY ]