aboutsummaryrefslogtreecommitdiff
path: root/QuickLook/MapPreviewView.swift
diff options
context:
space:
mode:
authorRuben Beltran del Rio <jj@r.bdr.sh>2025-12-18 15:13:52 +0100
committerRuben Beltran del Rio <jj@r.bdr.sh>2025-12-18 17:07:20 +0100
commit1b55fdad5984841334e864db942693cfef10e645 (patch)
tree656a0aaf4058e54cd20d423b150cc82907c1e12b /QuickLook/MapPreviewView.swift
parent86e296f3b194979de41715ddffe8af262c23c4ba (diff)
Add sharing
Diffstat (limited to 'QuickLook/MapPreviewView.swift')
-rw-r--r--QuickLook/MapPreviewView.swift41
1 files changed, 41 insertions, 0 deletions
diff --git a/QuickLook/MapPreviewView.swift b/QuickLook/MapPreviewView.swift
new file mode 100644
index 0000000..cd63130
--- /dev/null
+++ b/QuickLook/MapPreviewView.swift
@@ -0,0 +1,41 @@
+import SwiftUI
+import WmapParser
+
+struct MapPreviewView: View {
+ let parsedMap: WmapParser.Map
+ @State private var selectedEvolution: StageType = .general
+
+ var body: some View {
+ GeometryReader { geometry in
+ let mapSize = Dimensions.Map.size
+ let padding = Dimensions.Map.padding
+ let totalWidth = mapSize.width + 2 * padding
+ let totalHeight = mapSize.height + 2 * padding
+
+ // Calculate scale to fit the available space
+ let scaleX = geometry.size.width / totalWidth
+ let scaleY = geometry.size.height / totalHeight
+ let scale = min(scaleX, scaleY, 1.0) // Don't scale up, only down
+
+ ScrollView([.horizontal, .vertical]) {
+ MapRenderView(
+ parsedMap: parsedMap,
+ evolution: $selectedEvolution
+ )
+ .drawingGroup(opaque: false)
+ .scaleEffect(scale)
+ .frame(
+ width: totalWidth * scale,
+ height: totalHeight * scale
+ )
+ }
+ .frame(maxWidth: .infinity, maxHeight: .infinity)
+ .background(Color.white)
+ }
+ }
+}
+
+#Preview {
+ let parsedMap = WmapParser.parse("Hello (20, 20)")
+ MapPreviewView(parsedMap: parsedMap)
+}