/// A set of drawings. struct OwnedLineDrawing[TPoint] { field drawing: LineDrawing[TPoint]; field owner: String; } /// A 2D drawing made up of straight lines. struct LineDrawing2D { field lines: List[Line[Point2D]]; } /// A drawing made up of straight lines. struct LineDrawing[TPoint] { field lines: List[Line[TPoint]]; } /// A cubic Bezier curve. struct BezierCurve[TPoint] { field start: Line[TPoint]; field end: Line[TPoint]; } /// A straight line from one point to another. struct Line[TPoint] { field start: TPoint; field end: TPoint; } /// A 2D point. struct Point2D { field x: Int32; field y: Int32; }