use indicatrix::{geometry::meet_solver::SolvedTier, optics::materials::GemMaterial};
use indicatrix_cut_core::Design;
#[cfg(test)]
use indicatrix_editor::cut_sheet::cutting_sheet_document;
use indicatrix_editor::cut_sheet::{SheetDetails, cutting_sheet_document_with, diagram_export_png};
use std::path::Path;
#[cfg(test)]
pub fn write_cutting_sheet_html(
design: &Design,
solved: &[SolvedTier],
dest: &Path,
custom: &[GemMaterial],
) -> Result<(), String> {
let html = cutting_sheet_document(design, solved, custom);
write_text(dest, html)
}
pub fn write_cutting_sheet_html_with(
design: &Design,
solved: &[SolvedTier],
dest: &Path,
custom: &[GemMaterial],
details: &SheetDetails,
) -> Result<(), String> {
let html = cutting_sheet_document_with(design, solved, custom, details);
write_text(dest, html)
}
fn write_text(dest: &Path, html: String) -> Result<(), String> {
if let Some(parent) = dest.parent() {
let _ = std::fs::create_dir_all(parent);
}
std::fs::write(dest, html).map_err(|e| format!("Failed to write {}: {e}", dest.display()))
}
pub fn write_diagram_png(
design: &Design,
solved: &[SolvedTier],
dest: &Path,
) -> Result<(), String> {
let png_bytes = diagram_export_png(design, solved)?;
if let Some(parent) = dest.parent() {
let _ = std::fs::create_dir_all(parent);
}
std::fs::write(dest, &png_bytes).map_err(|e| format!("Failed to write {}: {e}", dest.display()))
}