use crate::border::Border;
use crate::style::{properties::*, Style};
use crate::utils::which_sides_bool;
impl Style {
pub fn border(mut self, b: Border) -> Self {
self.border_style = b;
self.set_prop(BORDER_STYLE_KEY);
self.set_attr(ATTR_BORDER_TOP, true);
self.set_attr(ATTR_BORDER_RIGHT, true);
self.set_attr(ATTR_BORDER_BOTTOM, true);
self.set_attr(ATTR_BORDER_LEFT, true);
self.set_prop(BORDER_TOP_KEY);
self.set_prop(BORDER_RIGHT_KEY);
self.set_prop(BORDER_BOTTOM_KEY);
self.set_prop(BORDER_LEFT_KEY);
self
}
pub fn border_style(self, b: Border) -> Self {
let mut s = self;
s.border_style = b;
s.set_prop(BORDER_STYLE_KEY);
s
}
pub fn border_top(mut self, v: bool) -> Self {
self.set_attr(ATTR_BORDER_TOP, v);
self.set_prop(BORDER_TOP_KEY);
self
}
pub fn border_right(mut self, v: bool) -> Self {
self.set_attr(ATTR_BORDER_RIGHT, v);
self.set_prop(BORDER_RIGHT_KEY);
self
}
pub fn border_bottom(mut self, v: bool) -> Self {
self.set_attr(ATTR_BORDER_BOTTOM, v);
self.set_prop(BORDER_BOTTOM_KEY);
self
}
pub fn border_left(mut self, v: bool) -> Self {
self.set_attr(ATTR_BORDER_LEFT, v);
self.set_prop(BORDER_LEFT_KEY);
self
}
pub fn border_with_sides(mut self, border: Border, sides: &[bool]) -> Self {
self.border_style = border;
self.set_prop(BORDER_STYLE_KEY);
let (top, right, bottom, left, ok) = which_sides_bool(sides);
let (top, right, bottom, left) = if ok {
(top, right, bottom, left)
} else {
(true, true, true, true)
};
self.set_attr(ATTR_BORDER_TOP, top);
self.set_attr(ATTR_BORDER_RIGHT, right);
self.set_attr(ATTR_BORDER_BOTTOM, bottom);
self.set_attr(ATTR_BORDER_LEFT, left);
self.set_prop(BORDER_TOP_KEY);
self.set_prop(BORDER_RIGHT_KEY);
self.set_prop(BORDER_BOTTOM_KEY);
self.set_prop(BORDER_LEFT_KEY);
self
}
}