diff options
| author | Ruben Beltran del Rio <ruben@unlimited.pizza> | 2021-02-04 23:46:55 +0100 |
|---|---|---|
| committer | Ruben Beltran del Rio <ruben@unlimited.pizza> | 2021-02-04 23:46:55 +0100 |
| commit | 77d0155b661e813a85a7312ed809fc7e5a9f7440 (patch) | |
| tree | e9b99a94e9b5937c70d9d768d56e8092686f01aa /Map/MapRenderComponents/MapVertices.swift | |
| parent | 491463f421c86d3a7a5482108b818aa5b5e441ea (diff) | |
Release 1.1.01.1.0
Diffstat (limited to 'Map/MapRenderComponents/MapVertices.swift')
| -rw-r--r-- | Map/MapRenderComponents/MapVertices.swift | 53 |
1 files changed, 47 insertions, 6 deletions
diff --git a/Map/MapRenderComponents/MapVertices.swift b/Map/MapRenderComponents/MapVertices.swift index 71f85be..24d49b8 100644 --- a/Map/MapRenderComponents/MapVertices.swift +++ b/Map/MapRenderComponents/MapVertices.swift @@ -15,12 +15,7 @@ struct MapVertices: View { var body: some View { ForEach(vertices, id: \.id) { vertex in - Path { path in - path.addEllipse( - in: CGRect( - origin: CGPoint(x: w(vertex.position.x), y: h(vertex.position.y)), size: vertexSize - )) - }.fill(color.foreground) + getVertexShape(vertex).fill(color.foreground) Text(vertex.label).foregroundColor(color.secondary).offset( CGSize( width: w(vertex.position.x) + vertexSize.width + padding, @@ -35,6 +30,52 @@ struct MapVertices: View { func w(_ dimension: CGFloat) -> CGFloat { max(0.0, min(mapSize.width, dimension * mapSize.width / 100.0)) } + + func getVertexShape(_ vertex: Vertex) -> Path { + switch vertex.shape { + case .circle: + return Path { path in + path.addEllipse( + in: CGRect( + origin: CGPoint(x: w(vertex.position.x), y: h(vertex.position.y)), size: vertexSize + )) + } + case .square: + return Path { path in + path.addRect( + CGRect( + x: w(vertex.position.x), y: h(vertex.position.y), width: vertexSize.width, + height: vertexSize.height + )) + } + case .triangle: + return Path { path in + path.move(to: CGPoint(x: w(vertex.position.x), y: h(vertex.position.y) + vertexSize.height)) + path.addLine( + to: CGPoint( + x: w(vertex.position.x) + vertexSize.width, y: h(vertex.position.y) + vertexSize.height) + ) + path.addLine( + to: CGPoint(x: w(vertex.position.x) + vertexSize.width / 2.0, y: h(vertex.position.y))) + path.addLine( + to: CGPoint(x: w(vertex.position.x), y: h(vertex.position.y) + vertexSize.height)) + path.closeSubpath() + } + case .x: + return Path { path in + path.move(to: CGPoint(x: w(vertex.position.x), y: h(vertex.position.y))) + path.addLine( + to: CGPoint( + x: w(vertex.position.x) + vertexSize.width, y: h(vertex.position.y) + vertexSize.height) + ) + path.closeSubpath() + path.move(to: CGPoint(x: w(vertex.position.x) + vertexSize.width, y: h(vertex.position.y))) + path.addLine( + to: CGPoint(x: w(vertex.position.x), y: h(vertex.position.y) + vertexSize.height)) + path.closeSubpath() + }.strokedPath(StrokeStyle(lineWidth: 5.0, lineCap: .butt)) + } + } } struct MapVertices_Previews: PreviewProvider { |