aboutsummaryrefslogtreecommitdiff
path: root/Map/Presentation/Base Components/MapRender/MapNotes.swift
diff options
context:
space:
mode:
authorRuben Beltran del Rio <ruben@unlimited.pizza>2023-05-07 15:22:54 +0200
committerRuben Beltran del Rio <ruben@unlimited.pizza>2023-05-07 15:22:54 +0200
commitfdb4633d3e9158e457d57e820df6e1efb4df39c2 (patch)
tree176cad99cb9befc0a65a7af02561019e811814de /Map/Presentation/Base Components/MapRender/MapNotes.swift
parent75a0e4509a70055851b085f3f7293ae1cf48164c (diff)
Update to support notes + new style2.0.0
Diffstat (limited to 'Map/Presentation/Base Components/MapRender/MapNotes.swift')
-rw-r--r--Map/Presentation/Base Components/MapRender/MapNotes.swift46
1 files changed, 46 insertions, 0 deletions
diff --git a/Map/Presentation/Base Components/MapRender/MapNotes.swift b/Map/Presentation/Base Components/MapRender/MapNotes.swift
new file mode 100644
index 0000000..f35b3fe
--- /dev/null
+++ b/Map/Presentation/Base Components/MapRender/MapNotes.swift
@@ -0,0 +1,46 @@
+import SwiftUI
+
+struct MapNotes: View {
+
+ let mapSize: CGSize
+ let lineWidth: CGFloat
+ let notes: [Note]
+
+ let maxWidth = 400.0
+
+
+ var body: some View {
+ ForEach(notes, id: \.id) { note in
+ Text(note.text.replacingOccurrences(of: "\\n", with: "\n")).font(.theme.axisLabel)
+ .padding(2.0)
+ .background(.white)
+ .foregroundColor(.map.labelColor)
+ .border(Color.map.vertexColor, width: lineWidth)
+ .frame(minWidth: 16.0, maxWidth: maxWidth, alignment: .topLeading)
+ .offset(
+ CGSize(
+ width: w(note.position.x),
+ height: h(note.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 MapNotes_Previews: PreviewProvider {
+ static var previews: some View {
+ MapNotes(
+ mapSize: CGSize(width: 400.0, height: 400.0), lineWidth: 1.0,
+ notes: [
+ Note(id: 0, position: CGPoint(x: 50.0, y: 50.0), text: "Notes can have a lot more text, so we need to make sure that they're resized correctly"),
+ ])
+ }
+}