// Map, wardley map editor for linux // Copyright (C) 2026 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 Affero 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 Affero General Public License for more details. // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . use std::path::PathBuf; use crate::AppModel; use crate::actions::ImageFormat; use crate::dialogs; use crate::stages::LocalizedStageType; use crate::tr; use wmap_renderer::{render_to_png, render_to_svg}; /// Exports the map to an image file in the specified format. pub fn export_to_file(model: &AppModel, path: &PathBuf, format: ImageFormat) { let result: Result<(), String> = match format { ImageFormat::Png => render_to_png( &model.map, &model.stage_type.to_localized(), &model.render_configuration, ) .map_err(|e| e.to_string()) .and_then(|data| std::fs::write(path, data).map_err(|e| e.to_string())), ImageFormat::Svg => render_to_svg( &model.map, &model.stage_type.to_localized(), &model.render_configuration, ) .map_err(|e| e.to_string()) .and_then(|data| std::fs::write(path, data).map_err(|e| e.to_string())), }; if let Err(error) = result { dialogs::show_error( &model.window, &tr!("Could not export image. Please make sure the destination is writable."), &error, ); } }