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