1pub use crate::ffi::J_COLOR_SPACE as ColorSpace;
2
3pub trait ColorSpaceExt {
4 fn num_components(&self) -> usize;
6}
7
8impl ColorSpaceExt for ColorSpace {
9 fn num_components(&self) -> usize {
10 match *self {
11 ColorSpace::JCS_UNKNOWN => 0,
12 ColorSpace::JCS_GRAYSCALE => 1,
13 ColorSpace::JCS_RGB => 3,
14 ColorSpace::JCS_YCbCr => 3,
15 ColorSpace::JCS_CMYK => 4,
16 ColorSpace::JCS_YCCK => 4,
17 ColorSpace::JCS_EXT_RGB => 3,
18 ColorSpace::JCS_EXT_RGBX => 4,
19 ColorSpace::JCS_EXT_BGR => 3,
20 ColorSpace::JCS_EXT_BGRX => 4,
21 ColorSpace::JCS_EXT_XBGR => 4,
22 ColorSpace::JCS_EXT_XRGB => 4,
23 ColorSpace::JCS_EXT_RGBA => 4,
24 ColorSpace::JCS_EXT_BGRA => 4,
25 ColorSpace::JCS_EXT_ABGR => 4,
26 ColorSpace::JCS_EXT_ARGB => 4,
27 ColorSpace::JCS_RGB565 => 3,
28 }
29 }
30}
31
32#[test]
33fn test() {
34 use crate::ffi;
35 assert_eq!(3, ffi::J_COLOR_SPACE::JCS_YCbCr.num_components());
36 assert_eq!(3, ffi::J_COLOR_SPACE::JCS_RGB.num_components());
37 assert_eq!(1, ffi::J_COLOR_SPACE::JCS_GRAYSCALE.num_components());
38}