@@ -33,29 +33,29 @@ use crate::Size;
3333/// let widget = Widget::new().padding([10, 20]); // top/bottom, left/right
3434/// let widget = Widget::new().padding([5, 10, 15, 20]); // top, right, bottom, left
3535/// ```
36- #[ derive( Debug , Hash , Copy , Clone ) ]
36+ #[ derive( Debug , Copy , Clone ) ]
3737pub struct Padding {
3838 /// Top padding
39- pub top : u16 ,
39+ pub top : f32 ,
4040 /// Right padding
41- pub right : u16 ,
41+ pub right : f32 ,
4242 /// Bottom padding
43- pub bottom : u16 ,
43+ pub bottom : f32 ,
4444 /// Left padding
45- pub left : u16 ,
45+ pub left : f32 ,
4646}
4747
4848impl Padding {
4949 /// Padding of zero
5050 pub const ZERO : Padding = Padding {
51- top : 0 ,
52- right : 0 ,
53- bottom : 0 ,
54- left : 0 ,
51+ top : 0.0 ,
52+ right : 0.0 ,
53+ bottom : 0.0 ,
54+ left : 0.0 ,
5555 } ;
5656
5757 /// Create a Padding that is equal on all sides
58- pub const fn new ( padding : u16 ) -> Padding {
58+ pub const fn new ( padding : f32 ) -> Padding {
5959 Padding {
6060 top : padding,
6161 right : padding,
@@ -65,12 +65,12 @@ impl Padding {
6565 }
6666
6767 /// Returns the total amount of vertical [`Padding`].
68- pub fn vertical ( self ) -> u16 {
68+ pub fn vertical ( self ) -> f32 {
6969 self . top + self . bottom
7070 }
7171
7272 /// Returns the total amount of horizontal [`Padding`].
73- pub fn horizontal ( self ) -> u16 {
73+ pub fn horizontal ( self ) -> f32 {
7474 self . left + self . right
7575 }
7676
@@ -79,16 +79,49 @@ impl Padding {
7979 let available = ( outer - inner) . max ( Size :: ZERO ) ;
8080
8181 Padding {
82- top : self . top . min ( ( available. height as u16 ) / 2 ) ,
83- right : self . right . min ( ( available. width as u16 ) / 2 ) ,
84- bottom : self . bottom . min ( ( available. height as u16 ) / 2 ) ,
85- left : self . left . min ( ( available. width as u16 ) / 2 ) ,
82+ top : self . top . min ( available. height / 2.0 ) ,
83+ right : self . right . min ( available. width / 2.0 ) ,
84+ bottom : self . bottom . min ( available. height / 2.0 ) ,
85+ left : self . left . min ( available. width / 2.0 ) ,
8686 }
8787 }
8888}
8989
9090impl From < u16 > for Padding {
9191 fn from ( p : u16 ) -> Self {
92+ Padding {
93+ top : f32:: from ( p) ,
94+ right : f32:: from ( p) ,
95+ bottom : f32:: from ( p) ,
96+ left : f32:: from ( p) ,
97+ }
98+ }
99+ }
100+
101+ impl From < [ u16 ; 2 ] > for Padding {
102+ fn from ( p : [ u16 ; 2 ] ) -> Self {
103+ Padding {
104+ top : f32:: from ( p[ 0 ] ) ,
105+ right : f32:: from ( p[ 1 ] ) ,
106+ bottom : f32:: from ( p[ 0 ] ) ,
107+ left : f32:: from ( p[ 1 ] ) ,
108+ }
109+ }
110+ }
111+
112+ impl From < [ u16 ; 4 ] > for Padding {
113+ fn from ( p : [ u16 ; 4 ] ) -> Self {
114+ Padding {
115+ top : f32:: from ( p[ 0 ] ) ,
116+ right : f32:: from ( p[ 1 ] ) ,
117+ bottom : f32:: from ( p[ 2 ] ) ,
118+ left : f32:: from ( p[ 3 ] ) ,
119+ }
120+ }
121+ }
122+
123+ impl From < f32 > for Padding {
124+ fn from ( p : f32 ) -> Self {
92125 Padding {
93126 top : p,
94127 right : p,
@@ -98,8 +131,8 @@ impl From<u16> for Padding {
98131 }
99132}
100133
101- impl From < [ u16 ; 2 ] > for Padding {
102- fn from ( p : [ u16 ; 2 ] ) -> Self {
134+ impl From < [ f32 ; 2 ] > for Padding {
135+ fn from ( p : [ f32 ; 2 ] ) -> Self {
103136 Padding {
104137 top : p[ 0 ] ,
105138 right : p[ 1 ] ,
@@ -109,8 +142,8 @@ impl From<[u16; 2]> for Padding {
109142 }
110143}
111144
112- impl From < [ u16 ; 4 ] > for Padding {
113- fn from ( p : [ u16 ; 4 ] ) -> Self {
145+ impl From < [ f32 ; 4 ] > for Padding {
146+ fn from ( p : [ f32 ; 4 ] ) -> Self {
114147 Padding {
115148 top : p[ 0 ] ,
116149 right : p[ 1 ] ,
0 commit comments