2 Copyright (C) 2024 Rubén Beltrán del Río
4 This program is free software: you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation, either version 3 of the License, or
7 (at your option) any later version.
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with this program. If not, see https://map.tranquil.systems.
18 import UniformTypeIdentifiers
21 static var exampleText: UTType {
22 UTType(importedAs: "systems.tranquil.map.wmap")
26 struct MapDocument: FileDocument {
29 init(text: String = "Hello, world!") {
33 static var readableContentTypes: [UTType] { [.exampleText] }
35 init(configuration: ReadConfiguration) throws {
36 guard let data = configuration.file.regularFileContents,
37 let string = String(data: data, encoding: .utf8)
39 throw CocoaError(.fileReadCorruptFile)
44 func fileWrapper(configuration: WriteConfiguration) throws -> FileWrapper {
45 let data = text.data(using: .utf8)!
46 return .init(regularFileWithContents: data)
50 func exportAsImage(withEvolution selectedEvolution: StageType) -> NSImage? {
51 let renderView = MapRenderView(
52 document: .constant(self),
53 evolution: .constant(selectedEvolution))
54 let renderer = ImageRenderer(content: renderView)
56 return renderer.nsImage