+ flush_color_t fc;
+
+ fc.c = *val;
+ i_render_init(&fc.r, im, rad * 2 + 1);
+
+ i_circle_aa_low(im, x, y, rad, scanline_flush_color, &fc);
+
+ i_render_done(&fc.r);
+}
+
+/*
+=item i_circle_aa_fill(im, x, y, rad, fill)
+
+=category Drawing
+=synopsis i_circle_aa_fill(im, 50, 50, 45, fill);
+
+Anti-alias fills a circle centered at (x,y) for radius I<rad> with
+fill.
+
+=cut
+*/
+
+void
+i_circle_aa_fill(i_img *im, double x, double y, double rad, i_fill_t *fill) {
+ flush_fill_t ff;
+
+ ff.fill = fill;
+ i_render_init(&ff.r, im, rad * 2 + 1);
+
+ i_circle_aa_low(im, x, y, rad, scanline_flush_fill, &ff);
+
+ i_render_done(&ff.r);
+}
+
+static void
+i_circle_aa_low(i_img *im, double x, double y, double rad, flush_render_t r,
+ void *ctx) {