use crate::css::Css;
use crate::data_type::Length;
use crate::data_type_ext::Position;
use crate::keyword::{BackfaceVisibility, TransformBox, TransformStyle};
impl Css {
pub fn transform_origin(self, v: Position) -> Self {
self.push("transform-origin", v)
}
pub fn transform_box(self, v: TransformBox) -> Self {
self.push("transform-box", v)
}
pub fn transform_style(self, v: TransformStyle) -> Self {
self.push("transform-style", v)
}
pub fn backface_visibility(self, v: BackfaceVisibility) -> Self {
self.push("backface-visibility", v)
}
pub fn perspective(self, v: Length) -> Self {
self.push("perspective", v)
}
pub fn perspective_origin(self, v: Position) -> Self {
self.push("perspective-origin", v)
}
}
#[cfg(test)]
mod tests {
use crate::data_type_ext::{Position, PositionKeyword};
use crate::ext::*;
use crate::keyword::*;
use crate::Css;
#[test]
fn transform_origin_keywords() {
let s = Css::new().transform_origin(Position::Keyword(PositionKeyword::Center));
assert_eq!(s.to_string(), "transform-origin: center;");
}
#[test]
fn transform_box_styles() {
let s = Css::new()
.transform_box(TransformBox::BorderBox)
.transform_style(TransformStyle::Preserve3d)
.backface_visibility(BackfaceVisibility::Hidden);
assert_eq!(
s.to_string(),
"transform-box: border-box; transform-style: preserve-3d; backface-visibility: hidden;"
);
}
#[test]
fn perspective_props() {
let s = Css::new()
.perspective(500.px())
.perspective_origin(Position::Keyword(PositionKeyword::Center));
assert_eq!(
s.to_string(),
"perspective: 500px; perspective-origin: center;"
);
}
}