@@ -6,10 +6,11 @@ use std::fmt;
66
77use super :: { Token , Parser , ToCss } ;
88
9+ #[ cfg( feature = "serde" ) ]
10+ use serde:: { Deserialize , Deserializer , Serialize , Serializer } ;
911
1012/// A color with red, green, blue, and alpha components.
1113#[ derive( Clone , Copy , PartialEq , Debug ) ]
12- #[ cfg_attr( feature = "serde-serialization" , derive( Deserialize , Serialize ) ) ]
1314pub struct RGBA {
1415 /// The red channel. Nominally in 0.0 ... 1.0.
1516 pub red : f32 ,
@@ -21,6 +22,31 @@ pub struct RGBA {
2122 pub alpha : f32 ,
2223}
2324
25+ #[ cfg( feature = "serde" ) ]
26+ impl Serialize for RGBA {
27+ fn serialize < S > ( & self , serializer : & mut S ) -> Result < ( ) , S :: Error >
28+ where S : Serializer
29+ {
30+ ( self . red , self . green , self . blue , self . alpha ) . serialize ( serializer)
31+ }
32+ }
33+
34+ #[ cfg( feature = "serde" ) ]
35+ impl Deserialize for RGBA {
36+ fn deserialize < D > ( deserializer : & mut D ) -> Result < Self , D :: Error >
37+ where D : Deserializer
38+ {
39+ let ( red, green, blue, alpha) =
40+ try!( Deserialize :: deserialize ( deserializer) ) ;
41+ Ok ( RGBA {
42+ red : red,
43+ green : green,
44+ blue : blue,
45+ alpha : alpha,
46+ } )
47+ }
48+ }
49+
2450#[ cfg( feature = "heapsize" ) ]
2551known_heap_size ! ( 0 , RGBA ) ;
2652
0 commit comments