diff --git a/generator/src/color.rs b/generator/src/color.rs index 7d6daa2..8719830 100644 --- a/generator/src/color.rs +++ b/generator/src/color.rs @@ -13,9 +13,15 @@ impl Into for String { .chunks(2) .map(|chunk| i64::from_str_radix(&chunk.iter().collect::(), 16).unwrap()) .collect::>(); + + let alpha: i64; + match splits.get(3) { + Some(x) => alpha = *x, + None => alpha = 255, + } RgbaColor { - color: Color::from_rgba8(splits[0] as u8, splits[1] as u8, splits[2] as u8, 255), + color: Color::from_rgba8(splits[0] as u8, splits[1] as u8, splits[2] as u8, alpha as u8), } } } diff --git a/generator/src/components/background.rs b/generator/src/components/background.rs index 56c2b6e..325fb3b 100644 --- a/generator/src/components/background.rs +++ b/generator/src/components/background.rs @@ -11,6 +11,7 @@ use super::interface::{ }; const HEX_COLOR_LENGTH: usize = 7; +const HEX_COLOR_WITH_ALPHA_LENGTH: usize = 9; pub struct Background { children: Vec>, @@ -22,6 +23,11 @@ impl Background { } } +fn is_valid_hex_color(color: String) -> bool { + (color.len() == HEX_COLOR_LENGTH || color.len() == HEX_COLOR_WITH_ALPHA_LENGTH) + && color.starts_with("#") +} + impl Component for Background { fn children(&self) -> &Vec> { &self.children @@ -46,7 +52,7 @@ impl Component for Background { paint.anti_alias = false; match params.bg_color.as_ref() { Some(color) => { - if color.len() != HEX_COLOR_LENGTH || !color.starts_with("#") { + if ! is_valid_hex_color(color.to_string()){ return Err(RenderError::InvalidHexColor(color.to_string())); }