1
0

Implement GCIRCLE (1)

This commit is contained in:
otya128
2016-12-19 23:37:49 +09:00
parent 9023198e23
commit 871a48d2c8

View File

@@ -991,9 +991,44 @@ class Graphic2 : Graphic
color = convertColor(color); color = convertColor(color);
} }
override void gcircle(int page, int x, int y, int r, uint color) override void gcircle(int page, int x0, int y0, int r, uint color)
{ {
color = convertColor(color); color = convertColor(color);
/*== http://fussy.web.fc2.com/algo/algo2-1.htm ==*/
int x = r;
int y = 0;
int F = -2 * r + 3;
void pset(int x, int y, int color)
{
auto wa = writeArea[petitcom.displaynum];
int cx2 = wa.x + wa.w;
int cy2 = wa.y + wa.h;
if (x >= wa.x && y >= wa.y && x < cx2 && y < cy2)
{
buffer[y * width + x] = color;
}
}
while (x >= y)
{
pset(x0 + x, y0 + y, color);
pset(x0 - x, y0 + y, color);
pset(x0 + x, y0 - y, color);
pset(x0 - x, y0 - y, color);
pset(x0 + y, y0 + x, color);
pset(x0 - y, y0 + x, color);
pset(x0 + y, y0 - x, color);
pset(x0 - y, y0 - x, color);
if (F >= 0)
{
x--;
F -= 4 * x;
}
y++;
F += 4 * y + 2;
}
/*== http://fussy.web.fc2.com/algo/algo2-1.htm ==*/
df = true;
} }
override void gcircle(int page, int x, int y, int r, int startr, int endr, int flag, uint color) override void gcircle(int page, int x, int y, int r, int startr, int endr, int flag, uint color)