aboutsummaryrefslogtreecommitdiff
path: root/Map/Data/MapDocument.swift
diff options
context:
space:
mode:
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
+ }
+}