Arcs & Wedges
Arcs & Wedges
Draw arcs, wedges, and ring sectors.

Usage
from std.math import pi
from canvas.color import Color
from canvas.buffer import Canvas
from canvas.shapes.arcs import (
draw_arc_aa,
fill_arc_aa,
fill_ring_sector_aa,
)
from canvas.io.bmp import write_bmp
from canvas.io.png import write_png
def main() raises:
var c = Canvas(2100, 780, Color(255, 255, 255))
# A simple 3-wedge pie chart.
var pie_cx = 390.0
var pie_cy = 390.0
var pie_r = 300.0
fill_arc_aa(
c, pie_cx, pie_cy, pie_r, 0.0, 2.0 * pi / 3.0, Color(220, 70, 70)
)
fill_arc_aa(
c,
pie_cx,
pie_cy,
pie_r,
2.0 * pi / 3.0,
4.0 * pi / 3.0,
Color(70, 140, 220),
)
fill_arc_aa(
c, pie_cx, pie_cy, pie_r, 4.0 * pi / 3.0, 2.0 * pi, Color(90, 190, 110)
)
# A wedge spanning the atan2 +/-pi discontinuity (centered on
# angle=-pi/2, i.e. straight up) plus an outline arc around it,
# showing draw_arc_aa alongside a fill.
var wedge_cx = 1110.0
var wedge_cy = 390.0
fill_arc_aa(
c,
wedge_cx,
wedge_cy,
270.0,
5.0 * pi / 4.0,
7.0 * pi / 4.0,
Color(150, 60, 200),
)
draw_arc_aa(
c, wedge_cx, wedge_cy, 285.0, 0.0, 2.0 * pi, Color(180, 180, 180)
)
# A 2-segment donut chart.
var donut_cx = 1740.0
var donut_cy = 390.0
fill_ring_sector_aa(
c,
donut_cx,
donut_cy,
150.0,
285.0,
-pi / 2.0,
pi / 2.0,
Color(230, 150, 40),
)
fill_ring_sector_aa(
c,
donut_cx,
donut_cy,
150.0,
285.0,
pi / 2.0,
3.0 * pi / 2.0,
Color(60, 130, 190),
)
write_bmp(c, "examples/out_arc.bmp")
write_png(c, "examples/out_arc.png")
print("wrote examples/out_arc.bmp and .png")