// Draw a line func Line(screen *sdl.Surface, x1 int, y1 int, x2 int, y2 int, color sdl.Color) { if x1 == x2 || y1 == y2 { return } startx, stopx := minmax(x1, x2) starty, stopy := minmax(y1, y2) xdiff := stopx - startx ydiff := stopy - starty if xdiff > ydiff { // We're going along X y := float32(starty) ystep := float32(ydiff) / float32(xdiff) if y1 != starty { // Move in the other direction along Y ystep = -ystep y = float32(stopy) } // Draw the line for x := startx; x < stopx; x++ { screen.Set(x, int(y), color) y += ystep } } else { // We're going along Y x := float32(startx) xstep := float32(xdiff) / float32(ydiff) if x1 != startx { // Move in the other direction along X xstep = -xstep x = float32(stopx) } // Draw the line for y := starty; y < stopy; y++ { screen.Set(int(x), y, color) x += xstep } } }