mirror of
git://git.tartarus.org/simon/puzzles.git
synced 2025-04-21 08:01:30 -07:00
Introduce a front-end function to draw circles.
[originally from svn r5991]
This commit is contained in:
9
gtk.c
9
gtk.c
@ -334,6 +334,15 @@ void draw_polygon(frontend *fe, int *coords, int npoints,
|
||||
sfree(points);
|
||||
}
|
||||
|
||||
void draw_circle(frontend *fe, int cx, int cy, int radius,
|
||||
int fill, int colour)
|
||||
{
|
||||
gdk_gc_set_foreground(fe->gc, &fe->colours[colour]);
|
||||
gdk_draw_arc(fe->pixmap, fe->gc, fill,
|
||||
cx - radius, cy - radius,
|
||||
2 * radius, 2 * radius, 0, 360 * 64);
|
||||
}
|
||||
|
||||
struct blitter {
|
||||
GdkPixmap *pixmap;
|
||||
int w, h, x, y;
|
||||
|
20
osx.m
20
osx.m
@ -1172,6 +1172,26 @@ void draw_polygon(frontend *fe, int *coords, int npoints,
|
||||
else
|
||||
[path stroke];
|
||||
}
|
||||
void draw_circle(frontend *fe, int cx, int cy, int radius,
|
||||
int fill, int colour)
|
||||
{
|
||||
NSBezierPath *path = [NSBezierPath bezierPath];
|
||||
|
||||
[[NSGraphicsContext currentContext] setShouldAntialias:YES];
|
||||
|
||||
assert(colour >= 0 && colour < fe->ncolours);
|
||||
[fe->colours[colour] set];
|
||||
|
||||
[path appendBezierPathWithArcWithCenter:NSMakePoint(cx + 0.5, cy + 0.5)
|
||||
radius:radius startAngle:0.0 endAngle:360.0];
|
||||
|
||||
[path closePath];
|
||||
|
||||
if (fill)
|
||||
[path fill];
|
||||
else
|
||||
[path stroke];
|
||||
}
|
||||
void draw_line(frontend *fe, int x1, int y1, int x2, int y2, int colour)
|
||||
{
|
||||
NSBezierPath *path = [NSBezierPath bezierPath];
|
||||
|
@ -137,6 +137,8 @@ void draw_rect(frontend *fe, int x, int y, int w, int h, int colour);
|
||||
void draw_line(frontend *fe, int x1, int y1, int x2, int y2, int colour);
|
||||
void draw_polygon(frontend *fe, int *coords, int npoints,
|
||||
int fill, int colour);
|
||||
void draw_circle(frontend *fe, int cx, int cy, int radius,
|
||||
int fill, int colour);
|
||||
void clip(frontend *fe, int x, int y, int w, int h);
|
||||
void unclip(frontend *fe);
|
||||
void start_draw(frontend *fe);
|
||||
|
18
windows.c
18
windows.c
@ -330,6 +330,24 @@ void draw_line(frontend *fe, int x1, int y1, int x2, int y2, int colour)
|
||||
SelectObject(fe->hdc_bm, oldpen);
|
||||
}
|
||||
|
||||
void draw_circle(frontend *fe, int cx, int cy, int radius,
|
||||
int fill, int colour)
|
||||
{
|
||||
if (fill) {
|
||||
HBRUSH oldbrush = SelectObject(fe->hdc_bm, fe->brushes[colour]);
|
||||
HPEN oldpen = SelectObject(fe->hdc_bm, fe->pens[colour]);
|
||||
Ellipse(fe->hdc_bm, cx - radius, cy - radius,
|
||||
cx + radius + 1, cy + radius + 1);
|
||||
SelectObject(fe->hdc_bm, oldbrush);
|
||||
SelectObject(fe->hdc_bm, oldpen);
|
||||
} else {
|
||||
HPEN oldpen = SelectObject(fe->hdc_bm, fe->pens[colour]);
|
||||
MoveToEx(fe->hdc_bm, cx + radius, cy, NULL);
|
||||
AngleArc(fe->hdc_bm, cx, cy, radius, 0.0F, 360.0F);
|
||||
SelectObject(fe->hdc_bm, oldpen);
|
||||
}
|
||||
}
|
||||
|
||||
void draw_polygon(frontend *fe, int *coords, int npoints,
|
||||
int fill, int colour)
|
||||
{
|
||||
|
Reference in New Issue
Block a user