charming_fork_zephyr/element/
padding.rs1use serde::{ser::SerializeSeq, Serialize};
2
3pub enum Padding {
5 Single(i64),
7 Double(i64, i64),
10 Quadruple(i64, i64, i64, i64),
12}
13
14impl Serialize for Padding {
15 fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
16 match self {
17 Padding::Single(padding) => serializer.serialize_i64(*padding),
18 Padding::Double(top_bottom, left_right) => {
19 let mut s = serializer.serialize_seq(Some(2))?;
20 s.serialize_element(top_bottom)?;
21 s.serialize_element(left_right)?;
22 s.end()
23 }
24 Padding::Quadruple(top, right, bottom, left) => {
25 let mut s = serializer.serialize_seq(Some(4))?;
26 s.serialize_element(top)?;
27 s.serialize_element(right)?;
28 s.serialize_element(bottom)?;
29 s.serialize_element(left)?;
30 s.end()
31 }
32 }
33 }
34}
35
36impl From<i64> for Padding {
37 fn from(padding: i64) -> Self {
38 Padding::Single(padding)
39 }
40}
41
42
43impl From<(i64, i64)> for Padding {
44 fn from(padding: (i64, i64)) -> Self {
45 Padding::Double(padding.0, padding.1)
46 }
47}
48
49impl From<(i64, i64, i64, i64)> for Padding {
50 fn from(padding: (i64, i64, i64, i64)) -> Self {
51 Padding::Quadruple(padding.0, padding.1, padding.2, padding.3)
52 }
53}