use core::fmt;
use crate::to_css::ToCss;
#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
pub enum TransformBox {
ContentBox,
BorderBox,
FillBox,
StrokeBox,
ViewBox,
}
impl ToCss for TransformBox {
fn to_css(&self, dest: &mut dyn fmt::Write) -> fmt::Result {
dest.write_str(match self {
TransformBox::ContentBox => "content-box",
TransformBox::BorderBox => "border-box",
TransformBox::FillBox => "fill-box",
TransformBox::StrokeBox => "stroke-box",
TransformBox::ViewBox => "view-box",
})
}
}
#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
pub enum TransformStyle {
Flat,
Preserve3d,
}
impl ToCss for TransformStyle {
fn to_css(&self, dest: &mut dyn fmt::Write) -> fmt::Result {
dest.write_str(match self {
TransformStyle::Flat => "flat",
TransformStyle::Preserve3d => "preserve-3d",
})
}
}
#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
pub enum BackfaceVisibility {
Visible,
Hidden,
}
impl ToCss for BackfaceVisibility {
fn to_css(&self, dest: &mut dyn fmt::Write) -> fmt::Result {
dest.write_str(match self {
BackfaceVisibility::Visible => "visible",
BackfaceVisibility::Hidden => "hidden",
})
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn transform_box_all() {
let cases = [
(TransformBox::ContentBox, "content-box"),
(TransformBox::BorderBox, "border-box"),
(TransformBox::FillBox, "fill-box"),
(TransformBox::StrokeBox, "stroke-box"),
(TransformBox::ViewBox, "view-box"),
];
for (k, expected) in cases {
assert_eq!(k.to_css_string(), expected);
}
}
#[test]
fn transform_style_all() {
assert_eq!(TransformStyle::Flat.to_css_string(), "flat");
assert_eq!(TransformStyle::Preserve3d.to_css_string(), "preserve-3d");
}
#[test]
fn backface_visibility_all() {
assert_eq!(BackfaceVisibility::Visible.to_css_string(), "visible");
assert_eq!(BackfaceVisibility::Hidden.to_css_string(), "hidden");
}
}