diff options
| author | Ruben Beltran del Rio <git@r.bdr.sh> | 2024-09-16 11:10:32 +0200 |
|---|---|---|
| committer | Ruben Beltran del Rio <git@r.bdr.sh> | 2024-09-16 11:10:32 +0200 |
| commit | e2c37ac1dd2ad562e3d619d39b72a174a2212b67 (patch) | |
| tree | d4da2c0a12db0473eb4030014a92045eebe38834 /Map/Data/MapDocument.swift | |
| parent | fdb4633d3e9158e457d57e820df6e1efb4df39c2 (diff) | |
Map 3 first commit: files, groups and layout
Diffstat (limited to 'Map/Data/MapDocument.swift')
| -rw-r--r-- | Map/Data/MapDocument.swift | 42 |
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 + } +} |