pub mod parser;
pub mod converter;
pub mod svg_converter;
pub use parser::WmfParser;
pub use converter::{WmfConverter, WmfToRasterOptions};
pub use svg_converter::WmfSvgConverter;
use crate::common::error::Result;
use image::ImageFormat;
pub fn convert_wmf(
wmf_data: &[u8],
format: ImageFormat,
width: Option<u32>,
height: Option<u32>,
) -> Result<Vec<u8>> {
let parser = WmfParser::new(wmf_data)?;
let options = WmfToRasterOptions {
width,
height,
background_color: image::Rgba([255, 255, 255, 255]),
};
let converter = WmfConverter::new(parser, options);
converter.convert_to_format(format)
}
pub fn convert_wmf_to_png(
wmf_data: &[u8],
width: Option<u32>,
height: Option<u32>,
) -> Result<Vec<u8>> {
convert_wmf(wmf_data, ImageFormat::Png, width, height)
}
pub fn convert_wmf_to_jpeg(
wmf_data: &[u8],
width: Option<u32>,
height: Option<u32>,
) -> Result<Vec<u8>> {
convert_wmf(wmf_data, ImageFormat::Jpeg, width, height)
}
pub fn convert_wmf_to_webp(
wmf_data: &[u8],
width: Option<u32>,
height: Option<u32>,
) -> Result<Vec<u8>> {
convert_wmf(wmf_data, ImageFormat::WebP, width, height)
}
pub fn convert_wmf_to_svg(wmf_data: &[u8]) -> Result<String> {
let parser = WmfParser::new(wmf_data)?;
let converter = WmfSvgConverter::new(parser);
converter.convert_to_svg()
}
pub fn convert_wmf_to_svg_bytes(wmf_data: &[u8]) -> Result<Vec<u8>> {
Ok(convert_wmf_to_svg(wmf_data)?.into_bytes())
}