From 5e8ff4850c4827125fe12788dd5b153c4f636f48 Mon Sep 17 00:00:00 2001 From: Ruben Beltran del Rio Date: Wed, 3 Feb 2021 23:53:12 +0100 Subject: Add code for first release --- Map/MapRenderComponents/MapVertices.swift | 49 +++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 Map/MapRenderComponents/MapVertices.swift (limited to 'Map/MapRenderComponents/MapVertices.swift') diff --git a/Map/MapRenderComponents/MapVertices.swift b/Map/MapRenderComponents/MapVertices.swift new file mode 100644 index 0000000..71f85be --- /dev/null +++ b/Map/MapRenderComponents/MapVertices.swift @@ -0,0 +1,49 @@ +import SwiftUI + +struct MapVertices: View { + + @Environment(\.colorScheme) var colorScheme + + let mapSize: CGSize + let vertexSize: CGSize + let vertices: [Vertex] + let padding = CGFloat(4.0) + + var color: MapColor { + MapColor.colorForScheme(colorScheme) + } + + 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) + Text(vertex.label).foregroundColor(color.secondary).offset( + CGSize( + width: w(vertex.position.x) + vertexSize.width + padding, + height: h(vertex.position.y))) + } + } + + func h(_ dimension: CGFloat) -> CGFloat { + max(0.0, min(mapSize.height, dimension * mapSize.height / 100.0)) + } + + func w(_ dimension: CGFloat) -> CGFloat { + max(0.0, min(mapSize.width, dimension * mapSize.width / 100.0)) + } +} + +struct MapVertices_Previews: PreviewProvider { + static var previews: some View { + MapVertices( + mapSize: CGSize(width: 400.0, height: 400.0), vertexSize: CGSize(width: 25.0, height: 25.0), + vertices: [ + Vertex(id: 0, label: "A", position: CGPoint(x: 50.0, y: 50.0)), + Vertex(id: 0, label: "A", position: CGPoint(x: 10.0, y: 20.0)), + ]) + } +} -- cgit