feat(cli): add --cell-size flag, route png through build_png
This commit is contained in:
@@ -65,6 +65,10 @@ struct Cli {
|
|||||||
/// Width in blocks inserted for a space character
|
/// Width in blocks inserted for a space character
|
||||||
#[arg(long, default_value_t = 4)]
|
#[arg(long, default_value_t = 4)]
|
||||||
word_spacing: u32,
|
word_spacing: u32,
|
||||||
|
|
||||||
|
/// Cell size in pixels for PNG export (8-64)
|
||||||
|
#[arg(long, default_value_t = 16, value_parser = clap::value_parser!(u32).range(8..=64))]
|
||||||
|
cell_size: u32,
|
||||||
}
|
}
|
||||||
|
|
||||||
fn palettes_dir() -> PathBuf {
|
fn palettes_dir() -> PathBuf {
|
||||||
@@ -160,12 +164,20 @@ pub fn run() -> anyhow::Result<()> {
|
|||||||
.filter(|&name| seen.insert(name))
|
.filter(|&name| seen.insert(name))
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
// Build and validate in one pass
|
// Build and validate in one pass; route "png" through build_png to honour --cell-size
|
||||||
let exporters_to_run = format_names
|
let exporters_to_run = format_names
|
||||||
.iter()
|
.iter()
|
||||||
.map(|&name| -> anyhow::Result<_> {
|
.map(|&name| -> anyhow::Result<Box<dyn lib::StructureExporter>> {
|
||||||
exporters::build(name, &palette)
|
if name == "png" {
|
||||||
.ok_or_else(|| anyhow::anyhow!("unknown format '{}'. Available: {}", name, all_names.join(", ")))
|
Ok(exporters::build_png(&palette, cli.cell_size))
|
||||||
|
} else {
|
||||||
|
exporters::build(name, &palette)
|
||||||
|
.ok_or_else(|| anyhow::anyhow!(
|
||||||
|
"unknown format '{}'. Available: {}",
|
||||||
|
name,
|
||||||
|
all_names.join(", ")
|
||||||
|
))
|
||||||
|
}
|
||||||
})
|
})
|
||||||
.collect::<anyhow::Result<Vec<_>>>()?;
|
.collect::<anyhow::Result<Vec<_>>>()?;
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ type ExporterFactory = fn(&BlockPalette) -> Box<dyn StructureExporter>;
|
|||||||
const REGISTRY: &[(&str, ExporterFactory)] = &[
|
const REGISTRY: &[(&str, ExporterFactory)] = &[
|
||||||
("mcfunction", |p| Box::new(McFunctionExporter::new(p))),
|
("mcfunction", |p| Box::new(McFunctionExporter::new(p))),
|
||||||
("litematica", |p| Box::new(LitematicaExporter::new(p))),
|
("litematica", |p| Box::new(LitematicaExporter::new(p))),
|
||||||
|
// cell_size=16 default; CLI uses build_png() to honour --cell-size
|
||||||
("png", |p| Box::new(PngExporter::new(p, 16))),
|
("png", |p| Box::new(PngExporter::new(p, 16))),
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user