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::{
18 border::*,
19 border_radius::*,
20 },
21};
22
23pub trait FormatAsCssValue {
28 fn format_as_css_value(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result;
32}
33
34macro_rules! impl_print_as_css_display {
35 ($($t:ty),+ $(,)?) => {
36 $(impl PrintAsCssValue for $t {
37 fn print_as_css_value(&self) -> String {
38 format!("{}", self.inner)
39 }
40 })+
41 };
42}
43
44macro_rules! impl_print_as_css_hash {
45 ($($t:ty),+ $(,)?) => {
46 $(impl PrintAsCssValue for $t {
47 fn print_as_css_value(&self) -> String {
48 self.inner.to_hash()
49 }
50 })+
51 };
52}
53
54impl_print_as_css_display!(
57 StyleBorderTopLeftRadius,
58 StyleBorderTopRightRadius,
59 StyleBorderBottomLeftRadius,
60 StyleBorderBottomRightRadius,
61 StyleBorderTopStyle,
62 StyleBorderRightStyle,
63 StyleBorderBottomStyle,
64 StyleBorderLeftStyle,
65 LayoutBorderTopWidth,
66 LayoutBorderRightWidth,
67 LayoutBorderBottomWidth,
68 LayoutBorderLeftWidth,
69);
70
71impl_print_as_css_hash!(
72 StyleBorderTopColor,
73 StyleBorderRightColor,
74 StyleBorderBottomColor,
75 StyleBorderLeftColor,
76);
77
78impl_print_as_css_display!(
81 LayoutPaddingTop,
82 LayoutPaddingLeft,
83 LayoutPaddingRight,
84 LayoutPaddingBottom,
85 LayoutPaddingInlineStart,
86 LayoutPaddingInlineEnd,
87 LayoutMarginTop,
88 LayoutMarginLeft,
89 LayoutMarginRight,
90 LayoutMarginBottom,
91 LayoutColumnGap,
92 LayoutRowGap,
93);