use super::{
ErrorWrapper,
io::{read_mesh, read_segmentation, write_mesh, write_segmentation},
};
use clap::Subcommand;
#[derive(Subcommand)]
pub enum ConvertSubcommand {
Mesh(ConvertMeshArgs),
Segmentation(ConvertSegmentationArgs),
}
#[derive(clap::Args)]
pub struct ConvertMeshArgs {
#[arg(long, short, value_name = "FILE")]
pub input: String,
#[arg(long, short, value_name = "FILE")]
pub output: String,
}
#[derive(clap::Args)]
pub struct ConvertSegmentationArgs {
#[arg(long, short, value_name = "FILE")]
pub input: String,
#[arg(long, short, value_name = "FILE")]
pub output: String,
#[arg(long, short = 'x', value_name = "NEL")]
pub nelx: Option<usize>,
#[arg(long, short = 'y', value_name = "NEL")]
pub nely: Option<usize>,
#[arg(long, short = 'z', value_name = "NEL")]
pub nelz: Option<usize>,
}
pub fn convert_mesh(args: ConvertMeshArgs, quiet: bool) -> Result<(), ErrorWrapper> {
let mesh = read_mesh(&args.input, quiet, true)?;
write_mesh(&args.output, mesh, quiet)
}
pub fn convert_segmentation(
input: String,
output: String,
nelx: Option<usize>,
nely: Option<usize>,
nelz: Option<usize>,
quiet: bool,
) -> Result<(), ErrorWrapper> {
let voxels = read_segmentation(&input, nelx, nely, nelz, quiet, true)?;
write_segmentation(&output, &voxels, quiet)
}