feat(exporters): scaffold PngExporter

This commit is contained in:
2026-03-23 02:30:11 +01:00
parent 4e742d9ebc
commit 0d0627b223
4 changed files with 31 additions and 0 deletions

View File

@@ -1,8 +1,10 @@
mod image_export;
mod litematica;
mod mcfunction;
use lib::{BlockPalette, StructureExporter};
pub use image_export::PngExporter;
pub use litematica::LitematicaExporter;
pub use mcfunction::McFunctionExporter;
@@ -11,12 +13,17 @@ type ExporterFactory = fn(&BlockPalette) -> Box<dyn StructureExporter>;
const REGISTRY: &[(&str, ExporterFactory)] = &[
("mcfunction", |p| Box::new(McFunctionExporter::new(p))),
("litematica", |p| Box::new(LitematicaExporter::new(p))),
("png", |p| Box::new(PngExporter::new(p, 16))),
];
pub fn available_names() -> Vec<&'static str> {
REGISTRY.iter().map(|(name, _)| *name).collect()
}
pub fn build_png(palette: &BlockPalette, cell_size: u32) -> Box<dyn StructureExporter> {
Box::new(PngExporter::new(palette, cell_size))
}
pub fn build(name: &str, palette: &BlockPalette) -> Option<Box<dyn StructureExporter>> {
REGISTRY.iter()
.find(|(n, _)| *n == name)