mod private
{
use crate::*;
use clap::Parser;
use commands::InputOutput;
pub use commands::raster::
{
vectorize::PathSimplifyMode,
common::color_parser
};
#[ derive ( Debug, Parser ) ]
pub struct CLIArgs
{
#[ clap( flatten ) ]
pub io : InputOutput,
#[ clap( flatten ) ]
pub config : Config,
}
#[ derive ( Debug, Parser ) ]
pub struct Config
{
#[ arg( long, short = 'p', default_value = "8" ) ]
pub color_precision : u8,
#[ arg( long, short, default_value = "4" ) ]
pub filter_speckle : usize,
#[ arg( long, short, default_value = "16" ) ]
pub gradient_step : usize,
#[ arg( long, short, value_enum, default_value_t = PathSimplifyMode::Spline ) ]
pub mode : PathSimplifyMode,
#[ arg( long, default_value = "60.0" ) ]
pub corner_threshold : f64,
#[ arg( long, default_value = "4.0" ) ]
pub segment_length : f64,
#[ arg( long, default_value = "45.0" ) ]
pub splice_threshold : f64,
#[ arg( long, value_enum, default_value_t = Hierarchical::Cutout ) ]
pub hierarchical : Hierarchical,
#[ arg( long, default_value = "false", verbatim_doc_comment ) ]
pub remove_background : bool,
#[ arg( long, value_parser = color_parser, verbatim_doc_comment ) ]
pub background_color : Option< [ u8; 3 ] >,
#[ arg( long, default_value = "10.0", verbatim_doc_comment ) ]
pub background_similarity : f32,
}
impl Default for Config
{
fn default() -> Self
{
Self
{
color_precision : 8,
filter_speckle : 4,
gradient_step : 16,
corner_threshold : 60.0,
segment_length : 4.0,
splice_threshold : 45.0,
hierarchical : Default::default(),
mode : Default::default(),
remove_background : false,
background_color : None,
background_similarity : 10.0
}
}
}
#[ derive( Copy, Clone, Debug, clap::ValueEnum, PartialEq ) ]
pub enum Hierarchical
{
Stacked,
Cutout
}
impl Default for Hierarchical
{
fn default() -> Self
{
Self::Cutout
}
}
pub async fn command( args : CLIArgs )
{
let result = actions::clusters::action( args ).await;
match result
{
Err ( error ) => println!( "{}", error ),
Ok ( report ) => println!( "{}", report )
}
}
}
crate::mod_interface!
{
own use
{
command,
Config,
CLIArgs,
PathSimplifyMode,
Hierarchical
};
}