use alloc::string::String;
use core::fmt;
pub use crate::css::PrintAsCssValue;
use crate::props::{
layout::{dimensions::*, spacing::*},
style::{
border::*,
border_radius::*,
},
};
pub trait FormatAsCssValue {
fn format_as_css_value(&self, f: &mut fmt::Formatter) -> fmt::Result;
}
macro_rules! impl_print_as_css_display {
($($t:ty),+ $(,)?) => {
$(impl PrintAsCssValue for $t {
fn print_as_css_value(&self) -> String {
format!("{}", self.inner)
}
})+
};
}
macro_rules! impl_print_as_css_hash {
($($t:ty),+ $(,)?) => {
$(impl PrintAsCssValue for $t {
fn print_as_css_value(&self) -> String {
self.inner.to_hash()
}
})+
};
}
impl_print_as_css_display!(
StyleBorderTopLeftRadius,
StyleBorderTopRightRadius,
StyleBorderBottomLeftRadius,
StyleBorderBottomRightRadius,
StyleBorderTopStyle,
StyleBorderRightStyle,
StyleBorderBottomStyle,
StyleBorderLeftStyle,
LayoutBorderTopWidth,
LayoutBorderRightWidth,
LayoutBorderBottomWidth,
LayoutBorderLeftWidth,
);
impl_print_as_css_hash!(
StyleBorderTopColor,
StyleBorderRightColor,
StyleBorderBottomColor,
StyleBorderLeftColor,
);
impl_print_as_css_display!(
LayoutPaddingTop,
LayoutPaddingLeft,
LayoutPaddingRight,
LayoutPaddingBottom,
LayoutPaddingInlineStart,
LayoutPaddingInlineEnd,
LayoutMarginTop,
LayoutMarginLeft,
LayoutMarginRight,
LayoutMarginBottom,
LayoutColumnGap,
LayoutRowGap,
);