# drawCircle function

Image drawCircle (
1. Image image,
2. int x0,
3. int y0,
5. int color
)

Draw a circle into the `image` with a center of `x0`,`y0` and the given `radius` and `color`.

## Implementation

``````Image drawCircle(Image image, int x0, int y0, int radius, int color) {
x0 - radius >= image.width ||
y0 + radius < 0 ||
y0 - radius >= image.height) {
return image;
}

return drawPixel(image, x0, y0, color);
}

drawPixel(image, x0 - radius, y0, color);
drawPixel(image, x0 + radius, y0, color);
drawPixel(image, x0, y0 - radius, color);
drawPixel(image, x0, y0 + radius, color);

return image;
}

for (int f = 1 - radius, ddFx = 0, ddFy = -(radius << 1), x = 0, y = radius;
x < y;) {
if (f >= 0) {
f += (ddFy += 2);
--y;
}
++x;
ddFx += 2;
f += ddFx + 1;

if (x != y + 1) {
int x1 = x0 - y;
int x2 = x0 + y;
int y1 = y0 - x;
int y2 = y0 + x;
int x3 = x0 - x;
int x4 = x0 + x;
int y3 = y0 - y;
int y4 = y0 + y;

drawPixel(image, x1, y1, color);
drawPixel(image, x1, y2, color);
drawPixel(image, x2, y1, color);
drawPixel(image, x2, y2, color);

if (x != y) {
drawPixel(image, x3, y3, color);
drawPixel(image, x4, y4, color);
drawPixel(image, x4, y3, color);
drawPixel(image, x3, y4, color);
}
}
}

return image;
}``````