/* Copyright (C) 2024 Rubén Beltrán del Río This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see https://map.tranquil.systems. */ 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 } }