#include "line.h"

void DrawLine_2(Point *a, Point *b, int colour)
{
  register int  d, x, y, ax, ay, sx, sy, dx, dy, x1;

  dx = b->x - a->x;
  ax = Abs(dx) << 1;
  sx = Sgn(dx);

  dy = b->y - a->y;
  ay = Abs(dy) << 1;
  sy = Sgn(dy);

  x  = a->x;
  y  = a->y;
  x1 = b->x;

  if (ax > ay) {
    d = ay - (ax >> 1);
    while (x != x1) {
      PutPixel(x, y, colour);
      if (d >= 0) {
	y += sy;
	d -= ax;
      }
      x += sx;
      d += ay;
    }
  } else {
    d = ax - (ay >> 1);
    while (y != y1) {
      PutPixel(x, y, colour);
      if (d >= 0) {
	x += sx;
	d -= ay;
      }
      y += sy;
      d += ax;
    }
  }
}