pub mod optimizer;
pub mod svg;
use std::fs::File;
use anyhow::Result;
use optimizer::{Optimization, Optimizer};
use svg::Svg;
pub struct SvgOptimizer {
pub optimizer: Optimizer,
pub svg: Svg,
}
impl SvgOptimizer {
pub fn new(svg: Svg, optimizer: Optimizer) -> Self {
Self { optimizer, svg }
}
pub fn open(buf: File) -> Result<Self> {
let svg = Svg::open(buf)?;
let optimizer = Optimizer::default();
Ok(Self::new(svg, optimizer))
}
pub fn write<W: std::io::Write>(&self, write: W) -> Result<()> {
self.svg.write(write)
}
pub fn optimize(&mut self) -> Result<()> {
self.optimizer.apply(&mut self.svg)
}
pub fn add_optimization(&mut self, optim: Optimization) {
self.optimizer.append(optim);
}
}