@@ -2,6 +2,7 @@ use crate::*;
22
33/// Convert between colors
44#[ derive( Clone , Copy , Default , Debug ) ]
5+ #[ cfg_attr( feature = "serde" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
56struct Convert < T : Color > ( std:: marker:: PhantomData < T > ) ;
67
78/// Create new color conversion filter
@@ -16,6 +17,7 @@ impl<T: Type, C: Color, U: Type, D: Color> Filter<T, C, U, D> for Convert<D> {
1617}
1718
1819#[ derive( Debug , Default ) ]
20+ #[ cfg_attr( feature = "serde" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
1921struct Saturation ( pub f64 ) ;
2022
2123/// Adjust saturation
@@ -33,6 +35,7 @@ impl<T: Type, C: Color, U: Type, D: Color> Filter<T, C, U, D> for Saturation {
3335}
3436
3537#[ derive( Debug ) ]
38+ #[ cfg_attr( feature = "serde" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
3639struct Brightness ( f64 ) ;
3740
3841/// Adjust image brightness
@@ -49,6 +52,7 @@ impl<T: Type, C: Color, U: Type, D: Color> Filter<T, C, U, D> for Brightness {
4952}
5053
5154#[ derive( Debug ) ]
55+ #[ cfg_attr( feature = "serde" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
5256struct Exposure ( f64 ) ;
5357
5458/// Adjust image exposure, the argument is the number of stops to increase or decrease exposure by
@@ -65,6 +69,7 @@ impl<T: Type, C: Color, U: Type, D: Color> Filter<T, C, U, D> for Exposure {
6569}
6670
6771#[ derive( Debug ) ]
72+ #[ cfg_attr( feature = "serde" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
6873struct Contrast ( pub f64 ) ;
6974
7075/// Adjust image contrast
@@ -81,6 +86,7 @@ impl<T: Type, C: Color, U: Type, D: Color> Filter<T, C, U, D> for Contrast {
8186}
8287
8388#[ derive( Debug ) ]
89+ #[ cfg_attr( feature = "serde" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
8490struct Crop ( Region ) ;
8591
8692/// Crop an image
@@ -107,6 +113,7 @@ impl<T: Type, C: Color, U: Type, D: Color> Filter<T, C, U, D> for Crop {
107113}
108114
109115#[ derive( Debug ) ]
116+ #[ cfg_attr( feature = "serde" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
110117struct Invert ;
111118
112119/// Invert an image
@@ -123,6 +130,7 @@ impl<T: Type, C: Color, U: Type, D: Color> Filter<T, C, U, D> for Invert {
123130}
124131
125132#[ derive( Debug ) ]
133+ #[ cfg_attr( feature = "serde" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
126134struct Blend ;
127135
128136/// Average two images
@@ -139,6 +147,7 @@ impl<T: Type, C: Color, U: Type, D: Color> Filter<T, C, U, D> for Blend {
139147}
140148
141149#[ derive( Debug ) ]
150+ #[ cfg_attr( feature = "serde" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
142151struct GammaLog ( f64 ) ;
143152
144153/// Convert to log gamma
@@ -157,6 +166,7 @@ impl<T: Type, C: Color, U: Type, D: Color> Filter<T, C, U, D> for GammaLog {
157166}
158167
159168#[ derive( Debug ) ]
169+ #[ cfg_attr( feature = "serde" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
160170struct GammaLin ( f64 ) ;
161171
162172/// Convert to linear gamma
@@ -259,6 +269,7 @@ impl<
259269}
260270
261271#[ derive( Debug ) ]
272+ #[ cfg_attr( feature = "serde" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
262273struct Clamp ;
263274
264275/// Clamp pixel values
@@ -273,6 +284,7 @@ impl<T: Type, C: Color, U: Type, D: Color> Filter<T, C, U, D> for Clamp {
273284}
274285
275286#[ derive( Debug ) ]
287+ #[ cfg_attr( feature = "serde" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
276288struct Normalize {
277289 min : f64 ,
278290 max : f64 ,
@@ -308,6 +320,7 @@ impl<T: Type, C: Color, U: Type, D: Color> Filter<T, C, U, D> for Normalize {
308320}
309321
310322#[ derive( Debug ) ]
323+ #[ cfg_attr( feature = "serde" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
311324struct Noop ;
312325
313326/// Filter that does nothing
0 commit comments