use crate::core::{MediaType, TransformError, TransformRequest, TransformResult};
pub mod raster;
#[cfg(feature = "svg")]
pub mod svg;
#[must_use = "this function returns the transform result without side effects"]
pub fn transform(request: TransformRequest) -> Result<TransformResult, TransformError> {
if request.input.media_type == MediaType::Svg {
#[cfg(feature = "svg")]
{
return svg::transform_svg(request);
}
#[cfg(not(feature = "svg"))]
{
let _ = request;
return Err(TransformError::CapabilityMissing(
"SVG processing is not enabled in this build".to_string(),
));
}
}
if request.options.format == Some(MediaType::Svg) {
return Err(TransformError::UnsupportedOutputMediaType(MediaType::Svg));
}
raster::transform_raster(request)
}