the aliasing svg renderer
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 30 |
1 files changed, 26 insertions, 4 deletions
diff --git a/src/main.rs b/src/main.rs index e85bc71..079bb37 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,8 +1,9 @@ -use std::{path::PathBuf, str::FromStr}; - use anyhow::{anyhow, Result}; use clap::Parser; +use log::Level as RLevel; use psvg::tree::Tree; +use std::{path::PathBuf, str::FromStr}; +mod logger; #[derive(Parser)] @@ -13,12 +14,32 @@ struct Args { /// If not supplied, will render at the svg's set width and height. /// Specify as: '144x124' size: Option<Size>, + /// Log level. + #[arg(default_value = "info", long = "log")] + log: Level, /// Svg to render. file: PathBuf, /// File to output rendered svg (png). out: PathBuf, } +#[repr(usize)] +#[derive(clap::ValueEnum, Clone, Copy)] +enum Level { + Error = 1, + Warn, + Info, + Debug, + Trace, +} + +impl From<Level> for RLevel { + fn from(value: Level) -> Self { + // SAFETY: same + unsafe { std::mem::transmute(value) } + } +} + #[derive(Copy, Clone, Debug, Default)] struct Size { w: u32, @@ -41,12 +62,13 @@ impl FromStr for Size { fn main() -> Result<()> { let args = Args::parse(); - let mut svg = Tree::new(&std::fs::read_to_string(args.file)?)?; + logger::init(args.log.into()); + let (mut svg, size) = Tree::new(&std::fs::read_to_string(args.file)?)?; match args.size { Some(Size { w, h }) => { svg.resize(w as f32, h as f32); } - None => svg.resize(svg.osize.width(), svg.osize.height()), + None => svg.resize(size.width(), size.height()), } svg.render().save(args.out); Ok(()) |