1use std::fmt;
2use std::fmt::Display;
3
4#[derive(Debug, Copy, Clone)]
6pub struct SvgNumber(
7 f64,
9 usize,
11);
12
13impl Display for SvgNumber {
14 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
16 write!(f, "{0:.1$}", self.0, self.1)
17 }
18}
19
20impl SvgNumber {
21 pub fn new(value: f64, precision: usize) -> Self {
32 Self(value, precision)
33 }
34}
35
36impl From<u8> for SvgNumber {
37 fn from(value: u8) -> Self {
39 Self(value as f64, 0)
40 }
41}
42
43impl From<i8> for SvgNumber {
44 fn from(value: i8) -> Self {
46 Self(value as f64, 0)
47 }
48}
49
50impl From<u16> for SvgNumber {
51 fn from(value: u16) -> Self {
53 Self(value as f64, 0)
54 }
55}
56
57impl From<i16> for SvgNumber {
58 fn from(value: i16) -> Self {
60 Self(value as f64, 0)
61 }
62}
63
64impl From<u32> for SvgNumber {
65 fn from(value: u32) -> Self {
67 Self(value as f64, 0)
68 }
69}
70
71impl From<i32> for SvgNumber {
72 fn from(value: i32) -> Self {
74 Self(value as f64, 0)
75 }
76}
77
78impl From<u64> for SvgNumber {
79 fn from(value: u64) -> Self {
81 Self(value as f64, 0)
82 }
83}
84
85impl From<i64> for SvgNumber {
86 fn from(value: i64) -> Self {
88 Self(value as f64, 0)
89 }
90}
91
92impl From<f32> for SvgNumber {
93 fn from(value: f32) -> Self {
95 Self(value as f64, 0)
96 }
97}
98
99impl From<f64> for SvgNumber {
100 fn from(value: f64) -> Self {
102 Self(value, 0)
103 }
104}