[feat] support RGBA values as background color
parent
6c753177e3
commit
8a05bddadb
|
@ -14,8 +14,14 @@ impl Into<RgbaColor> for String {
|
||||||
.map(|chunk| i64::from_str_radix(&chunk.iter().collect::<String>(), 16).unwrap())
|
.map(|chunk| i64::from_str_radix(&chunk.iter().collect::<String>(), 16).unwrap())
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
|
let alpha: i64;
|
||||||
|
match splits.get(3) {
|
||||||
|
Some(x) => alpha = *x,
|
||||||
|
None => alpha = 255,
|
||||||
|
}
|
||||||
|
|
||||||
RgbaColor {
|
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),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,7 @@ use super::interface::{
|
||||||
};
|
};
|
||||||
|
|
||||||
const HEX_COLOR_LENGTH: usize = 7;
|
const HEX_COLOR_LENGTH: usize = 7;
|
||||||
|
const HEX_COLOR_WITH_ALPHA_LENGTH: usize = 9;
|
||||||
|
|
||||||
pub struct Background {
|
pub struct Background {
|
||||||
children: Vec<Box<dyn Component>>,
|
children: Vec<Box<dyn Component>>,
|
||||||
|
@ -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 {
|
impl Component for Background {
|
||||||
fn children(&self) -> &Vec<Box<dyn Component>> {
|
fn children(&self) -> &Vec<Box<dyn Component>> {
|
||||||
&self.children
|
&self.children
|
||||||
|
@ -46,7 +52,7 @@ impl Component for Background {
|
||||||
paint.anti_alias = false;
|
paint.anti_alias = false;
|
||||||
match params.bg_color.as_ref() {
|
match params.bg_color.as_ref() {
|
||||||
Some(color) => {
|
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()));
|
return Err(RenderError::InvalidHexColor(color.to_string()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue