Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,52 @@
|
|||
module bitmap_bresenhams_line_algorithm;
|
||||
|
||||
import std.algorithm, std.math, bitmap;
|
||||
|
||||
void drawLine(Color)(Image!Color img,
|
||||
size_t x1, size_t y1,
|
||||
in size_t x2, in size_t y2,
|
||||
in Color color)
|
||||
pure nothrow @nogc {
|
||||
immutable int dx = x2 - x1;
|
||||
immutable int ix = (dx > 0) - (dx < 0);
|
||||
immutable size_t dx2 = abs(dx) * 2;
|
||||
int dy = y2 - y1;
|
||||
immutable int iy = (dy > 0) - (dy < 0);
|
||||
immutable size_t dy2 = abs(dy) * 2;
|
||||
img[x1, y1] = color;
|
||||
|
||||
if (dx2 >= dy2) {
|
||||
int error = dy2 - (dx2 / 2);
|
||||
while (x1 != x2) {
|
||||
if (error >= 0 && (error || (ix > 0))) {
|
||||
error -= dx2;
|
||||
y1 += iy;
|
||||
}
|
||||
|
||||
error += dy2;
|
||||
x1 += ix;
|
||||
img[x1, y1] = color;
|
||||
}
|
||||
} else {
|
||||
int error = dx2 - (dy2 / 2);
|
||||
while (y1 != y2) {
|
||||
if (error >= 0 && (error || (iy > 0))) {
|
||||
error -= dy2;
|
||||
x1 += ix;
|
||||
}
|
||||
|
||||
error += dx2;
|
||||
y1 += iy;
|
||||
img[x1, y1] = color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
version (bitmap_bresenhams_line_algorithm_main) {
|
||||
void main() {
|
||||
auto img = new Image!RGB(25, 22);
|
||||
img.drawLine(5, 5, 15, 20, RGB.white);
|
||||
img.drawLine(3, 20, 10, 12, RGB.white);
|
||||
img.textualShow();
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue