1 
2 
3 pub trait GeometryBuilder {
begin_geometry(&mut self)4     fn begin_geometry(&mut self);
end_geometry(&mut self) -> Count5     fn end_geometry(&mut self) -> Count;
abort_geometry(&mut self)6     fn abort_geometry(&mut self);
add_triangle(&mut self, a: VertexId, b: VertexId, c: VertexId)7     fn add_triangle(&mut self, a: VertexId, b: VertexId, c: VertexId);
8 }
9 
10 pub trait FillGeometryBuilder: GeometryBuilder {
add_vertex(&mut self, vertex: &FillVertex) -> Result<VertexId, GeometryBuilderError>11     fn add_vertex(&mut self, vertex: &FillVertex) -> Result<VertexId, GeometryBuilderError>;
12 }
13 
14 pub trait StrokeGeometryBuilder: GeometryBuilder {
add_vertex(&mut self, vertex: &StrokeVertex) -> Result<VertexId, GeometryBuilderError>15     fn add_vertex(&mut self, vertex: &StrokeVertex) -> Result<VertexId, GeometryBuilderError>;
16 }
17 
18 pub struct FillVertex<'l> {
19     position: Point,
20     src: &'l mut VertexSourceIterator,
21 }
22 
23 pub struct StrokeVertex {
24     src: VertexSource,
25     position: Point,
26     normal: Vector,
27     advancement: f32,
28     side: Side,
29 }
30 
31 
32