@@ -2,13 +2,14 @@ mod custom;
22
33use cssparser:: * ;
44use custom:: * ;
5- use crate :: values:: { image:: * , length:: * } ;
5+ use crate :: values:: { image:: * , length:: * , border:: * , rect:: * , color:: * } ;
6+ use super :: values:: traits:: Parse ;
67
78#[ derive( Debug ) ]
89pub enum Property {
9- BackgroundColor ( Color ) ,
10+ BackgroundColor ( CssColor ) ,
1011 BackgroundImage ( Vec < Image > ) ,
11- Color ( Color ) ,
12+ Color ( CssColor ) ,
1213 Custom ( CustomProperty ) ,
1314
1415 Width ( Size ) ,
@@ -31,7 +32,48 @@ pub enum Property {
3132 InsetBlockStart ( LengthPercentageOrAuto ) ,
3233 InsetBlockEnd ( LengthPercentageOrAuto ) ,
3334 InsetInlineStart ( LengthPercentageOrAuto ) ,
34- InsetInlineEnd ( LengthPercentageOrAuto )
35+ InsetInlineEnd ( LengthPercentageOrAuto ) ,
36+
37+ BorderTopColor ( CssColor ) ,
38+ BorderBottomColor ( CssColor ) ,
39+ BorderLeftColor ( CssColor ) ,
40+ BorderRightColor ( CssColor ) ,
41+ BorderBlockStartColor ( CssColor ) ,
42+ BorderBlockEndColor ( CssColor ) ,
43+ BorderInlineStartColor ( CssColor ) ,
44+ BorderInlineEndColor ( CssColor ) ,
45+
46+ BorderTopStyle ( BorderStyle ) ,
47+ BorderBottomStyle ( BorderStyle ) ,
48+ BorderLeftStyle ( BorderStyle ) ,
49+ BorderRightStyle ( BorderStyle ) ,
50+ BorderBlockStartStyle ( BorderStyle ) ,
51+ BorderBlockEndStyle ( BorderStyle ) ,
52+ BorderInlineStartStyle ( BorderStyle ) ,
53+ BorderInlineEndStyle ( BorderStyle ) ,
54+
55+ BorderTopWidth ( BorderSideWidth ) ,
56+ BorderBottomWidth ( BorderSideWidth ) ,
57+ BorderLeftWidth ( BorderSideWidth ) ,
58+ BorderRightWidth ( BorderSideWidth ) ,
59+ BorderBlockStartWidth ( BorderSideWidth ) ,
60+ BorderBlockEndWidth ( BorderSideWidth ) ,
61+ BorderInlineStartWidth ( BorderSideWidth ) ,
62+ BorderInlineEndWidth ( BorderSideWidth ) ,
63+
64+ BorderColor ( Rect < CssColor > ) ,
65+ BorderStyle ( Rect < BorderStyle > ) ,
66+ BorderWidth ( Rect < BorderSideWidth > ) ,
67+
68+ Border ( Border ) ,
69+ BorderTop ( Border ) ,
70+ BorderBottom ( Border ) ,
71+ BorderLeft ( Border ) ,
72+ BorderRight ( Border ) ,
73+ BorderBlockStart ( Border ) ,
74+ BorderBlockEnd ( Border ) ,
75+ BorderInlineStart ( Border ) ,
76+ BorderInlineEnd ( Border )
3577}
3678
3779impl Property {
@@ -51,9 +93,9 @@ impl Property {
5193
5294 let state = input. state ( ) ;
5395 match name. as_ref ( ) {
54- "background-color" => property ! ( BackgroundColor , Color ) ,
96+ "background-color" => property ! ( BackgroundColor , CssColor ) ,
5597 "background-image" => property ! ( BackgroundImage , Image , true ) ,
56- "color" => property ! ( Color , Color ) ,
98+ "color" => property ! ( Color , CssColor ) ,
5799 "width" => property ! ( Width , Size ) ,
58100 "height" => property ! ( Height , Size ) ,
59101 "min-width" => property ! ( MinWidth , MinMaxSize ) ,
@@ -74,6 +116,42 @@ impl Property {
74116 "inset-block-end" => property ! ( InsetBlockEnd , LengthPercentageOrAuto ) ,
75117 "inset-inline-start" => property ! ( InsetInlineStart , LengthPercentageOrAuto ) ,
76118 "inset-inline-end" => property ! ( InsetInlineEnd , LengthPercentageOrAuto ) ,
119+ "border-top-color" => property ! ( BorderTopColor , CssColor ) ,
120+ "border-bottom-color" => property ! ( BorderBottomColor , CssColor ) ,
121+ "border-left-color" => property ! ( BorderLeftColor , CssColor ) ,
122+ "border-right-color" => property ! ( BorderRightColor , CssColor ) ,
123+ "border-block-start-color" => property ! ( BorderBlockStartColor , CssColor ) ,
124+ "border-block-end-color" => property ! ( BorderBlockEndColor , CssColor ) ,
125+ "border-inline-start-color" => property ! ( BorderInlineStartColor , CssColor ) ,
126+ "border-inline-end-color" => property ! ( BorderInlineEndColor , CssColor ) ,
127+ "border-top-style" => property ! ( BorderTopStyle , BorderStyle ) ,
128+ "border-bottom-style" => property ! ( BorderBottomStyle , BorderStyle ) ,
129+ "border-left-style" => property ! ( BorderLeftStyle , BorderStyle ) ,
130+ "border-right-style" => property ! ( BorderRightStyle , BorderStyle ) ,
131+ "border-block-start-style" => property ! ( BorderBlockStartStyle , BorderStyle ) ,
132+ "border-block-end-style" => property ! ( BorderBlockEndStyle , BorderStyle ) ,
133+ "border-inline-start-style" => property ! ( BorderInlineStartStyle , BorderStyle ) ,
134+ "border-inline-end-style" => property ! ( BorderInlineEndStyle , BorderStyle ) ,
135+ "border-top-width" => property ! ( BorderTopWidth , BorderSideWidth ) ,
136+ "border-bottom-width" => property ! ( BorderBottomWidth , BorderSideWidth ) ,
137+ "border-left-width" => property ! ( BorderLeftWidth , BorderSideWidth ) ,
138+ "border-right-width" => property ! ( BorderRightWidth , BorderSideWidth ) ,
139+ "border-block-start-width" => property ! ( BorderBlockStartWidth , BorderSideWidth ) ,
140+ "border-block-end-width" => property ! ( BorderBlockEndWidth , BorderSideWidth ) ,
141+ "border-inline-start-width" => property ! ( BorderInlineStartWidth , BorderSideWidth ) ,
142+ "border-inline-end-width" => property ! ( BorderInlineEndWidth , BorderSideWidth ) ,
143+ "border-color" => property ! ( BorderColor , Rect ) ,
144+ "border-style" => property ! ( BorderStyle , Rect ) ,
145+ "border-width" => property ! ( BorderWidth , Rect ) ,
146+ "border" => property ! ( Border , Border ) ,
147+ "border-top" => property ! ( BorderTop , Border ) ,
148+ "border-bottom" => property ! ( BorderBottom , Border ) ,
149+ "border-left" => property ! ( BorderLeft , Border ) ,
150+ "border-right" => property ! ( BorderRight , Border ) ,
151+ "border-block-start" => property ! ( BorderBlockStart , Border ) ,
152+ "border-block-end" => property ! ( BorderBlockEnd , Border ) ,
153+ "border-inline-start" => property ! ( BorderInlineStart , Border ) ,
154+ "border-inline-end" => property ! ( BorderInlineEnd , Border ) ,
77155 _ => { }
78156 }
79157
@@ -130,6 +208,42 @@ impl Property {
130208 InsetBlockEnd ( val) => property ! ( "inset-block-end" , val) ,
131209 InsetInlineStart ( val) => property ! ( "inset-inline-start" , val) ,
132210 InsetInlineEnd ( val) => property ! ( "inset-inline-end" , val) ,
211+ BorderTopColor ( val) => property ! ( "border-top-color" , val) ,
212+ BorderBottomColor ( val) => property ! ( "border-bottom-color" , val) ,
213+ BorderLeftColor ( val) => property ! ( "border-left-color" , val) ,
214+ BorderRightColor ( val) => property ! ( "border-right-color" , val) ,
215+ BorderBlockStartColor ( val) => property ! ( "border-block-start-color" , val) ,
216+ BorderBlockEndColor ( val) => property ! ( "border-block-end-color" , val) ,
217+ BorderInlineStartColor ( val) => property ! ( "border-inline-start-color" , val) ,
218+ BorderInlineEndColor ( val) => property ! ( "border-inline-end-color" , val) ,
219+ BorderTopStyle ( val) => property ! ( "border-top-style" , val) ,
220+ BorderBottomStyle ( val) => property ! ( "border-bottom-style" , val) ,
221+ BorderLeftStyle ( val) => property ! ( "border-left-style" , val) ,
222+ BorderRightStyle ( val) => property ! ( "border-right-style" , val) ,
223+ BorderBlockStartStyle ( val) => property ! ( "border-block-start-style" , val) ,
224+ BorderBlockEndStyle ( val) => property ! ( "border-block-end-style" , val) ,
225+ BorderInlineStartStyle ( val) => property ! ( "border-inline-start-style" , val) ,
226+ BorderInlineEndStyle ( val) => property ! ( "border-inline-end-style" , val) ,
227+ BorderTopWidth ( val) => property ! ( "border-top-width" , val) ,
228+ BorderBottomWidth ( val) => property ! ( "border-bottom-width" , val) ,
229+ BorderLeftWidth ( val) => property ! ( "border-left-width" , val) ,
230+ BorderRightWidth ( val) => property ! ( "border-right-width" , val) ,
231+ BorderBlockStartWidth ( val) => property ! ( "border-block-start-width" , val) ,
232+ BorderBlockEndWidth ( val) => property ! ( "border-block-end-width" , val) ,
233+ BorderInlineStartWidth ( val) => property ! ( "border-inline-start-width" , val) ,
234+ BorderInlineEndWidth ( val) => property ! ( "border-inline-end-width" , val) ,
235+ BorderColor ( val) => property ! ( "border-color" , val) ,
236+ BorderStyle ( val) => property ! ( "border-style" , val) ,
237+ BorderWidth ( val) => property ! ( "border-width" , val) ,
238+ Border ( val) => property ! ( "border" , val) ,
239+ BorderTop ( val) => property ! ( "border-top" , val) ,
240+ BorderBottom ( val) => property ! ( "border-bottom" , val) ,
241+ BorderLeft ( val) => property ! ( "border-left" , val) ,
242+ BorderRight ( val) => property ! ( "border-right" , val) ,
243+ BorderBlockStart ( val) => property ! ( "border-block-start" , val) ,
244+ BorderBlockEnd ( val) => property ! ( "border-block-end" , val) ,
245+ BorderInlineStart ( val) => property ! ( "border-inline-start" , val) ,
246+ BorderInlineEnd ( val) => property ! ( "border-inline-end" , val) ,
133247 Custom ( custom) => {
134248 dest. write_str ( custom. name . as_ref ( ) ) ?;
135249 dest. write_str ( ": " ) ?;
0 commit comments