azul_css/props/
formatter.rs1use alloc::string::String;
8use core::fmt;
9
10pub use crate::css::PrintAsCssValue;
12#[allow(clippy::wildcard_imports)]
15use crate::props::{
16 layout::{dimensions::*, spacing::*},
17 style::{border::*, border_radius::*},
18};
19
20pub trait FormatAsCssValue {
25 fn format_as_css_value(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result;
29}
30
31macro_rules! impl_print_as_css_display {
32 ($($t:ty),+ $(,)?) => {
33 $(impl PrintAsCssValue for $t {
34 fn print_as_css_value(&self) -> String {
35 format!("{}", self.inner)
36 }
37 })+
38 };
39}
40
41macro_rules! impl_print_as_css_hash {
42 ($($t:ty),+ $(,)?) => {
43 $(impl PrintAsCssValue for $t {
44 fn print_as_css_value(&self) -> String {
45 self.inner.to_hash()
46 }
47 })+
48 };
49}
50
51impl_print_as_css_display!(
54 StyleBorderTopLeftRadius,
55 StyleBorderTopRightRadius,
56 StyleBorderBottomLeftRadius,
57 StyleBorderBottomRightRadius,
58 StyleBorderTopStyle,
59 StyleBorderRightStyle,
60 StyleBorderBottomStyle,
61 StyleBorderLeftStyle,
62 LayoutBorderTopWidth,
63 LayoutBorderRightWidth,
64 LayoutBorderBottomWidth,
65 LayoutBorderLeftWidth,
66);
67
68impl_print_as_css_hash!(
69 StyleBorderTopColor,
70 StyleBorderRightColor,
71 StyleBorderBottomColor,
72 StyleBorderLeftColor,
73);
74
75impl_print_as_css_display!(
78 LayoutPaddingTop,
79 LayoutPaddingLeft,
80 LayoutPaddingRight,
81 LayoutPaddingBottom,
82 LayoutPaddingInlineStart,
83 LayoutPaddingInlineEnd,
84 LayoutMarginTop,
85 LayoutMarginLeft,
86 LayoutMarginRight,
87 LayoutMarginBottom,
88 LayoutColumnGap,
89 LayoutRowGap,
90);