#[cfg(target_arch = "wasm32")]
use wasm_bindgen::prelude::*;
#[derive(Clone, Copy)]
#[cfg_attr(target_arch = "wasm32", derive(Serialize, Deserialize))]
#[cfg_attr(target_arch = "wasm32", wasm_bindgen)]
pub enum SvgScaleMode {
Contain,
Cover,
Stretch,
None,
}
pub trait SvgData {
fn data(&self) -> &[u8];
fn scale(&self) -> &SvgScaleMode;
}
#[derive(bon::Builder, Clone, Copy)]
#[builder(
const,
builder_type(doc {
/// Builder for the [Svg] struct.
})
)]
pub struct Svg<'a> {
#[builder(start_fn)]
data: &'a [u8],
#[builder(default = SvgScaleMode::Contain)]
scale: SvgScaleMode,
}
impl<'a> super::SvgData for Svg<'a> {
fn data(&self) -> &[u8] {
self.data
}
fn scale(&self) -> &SvgScaleMode {
&self.scale
}
}