aboutsummaryrefslogtreecommitdiff
path: root/Map/Data/MapDocument.swift
diff options
context:
space:
mode:
authorRuben Beltran del Rio <git@r.bdr.sh>2024-09-16 11:10:32 +0200
committerRuben Beltran del Rio <git@r.bdr.sh>2024-09-16 11:10:32 +0200
commite2c37ac1dd2ad562e3d619d39b72a174a2212b67 (patch)
treed4da2c0a12db0473eb4030014a92045eebe38834 /Map/Data/MapDocument.swift
parentfdb4633d3e9158e457d57e820df6e1efb4df39c2 (diff)
Map 3 first commit: files, groups and layout
Diffstat (limited to 'Map/Data/MapDocument.swift')
-rw-r--r--Map/Data/MapDocument.swift42
1 files changed, 42 insertions, 0 deletions
diff --git a/Map/Data/MapDocument.swift b/Map/Data/MapDocument.swift
new file mode 100644
index 0000000..9340684
--- /dev/null
+++ b/Map/Data/MapDocument.swift
@@ -0,0 +1,42 @@
+import SwiftUI
+import UniformTypeIdentifiers
+
+extension UTType {
+ static var exampleText: UTType {
+ UTType(importedAs: "systems.tranquil.map.wmap")
+ }
+}
+
+struct MapDocument: FileDocument {
+ var text: String
+
+ init(text: String = "Hello, world!") {
+ self.text = text
+ }
+
+ static var readableContentTypes: [UTType] { [.exampleText] }
+
+ init(configuration: ReadConfiguration) throws {
+ guard let data = configuration.file.regularFileContents,
+ let string = String(data: data, encoding: .utf8)
+ else {
+ throw CocoaError(.fileReadCorruptFile)
+ }
+ text = string
+ }
+
+ func fileWrapper(configuration: WriteConfiguration) throws -> FileWrapper {
+ let data = text.data(using: .utf8)!
+ return .init(regularFileWithContents: data)
+ }
+
+ @MainActor
+ func exportAsImage(withEvolution selectedEvolution: StageType) -> NSImage? {
+ let renderView = MapRenderView(
+ document: .constant(self),
+ evolution: .constant(selectedEvolution))
+ let renderer = ImageRenderer(content: renderView)
+
+ return renderer.nsImage
+ }
+}