#[derive(Clone, Copy, PartialEq, Eq, Hash, Debug)]
pub struct FontKey(pub &'static str);
impl FontKey {
pub const SANS_REGULAR: FontKey = FontKey("sans-regular");
pub const SANS_BOLD: FontKey = FontKey("sans-bold");
pub const SANS_ITALIC: FontKey = FontKey("sans-italic");
pub const SANS_BOLD_ITALIC: FontKey = FontKey("sans-bold-italic");
pub const fn custom(name: &'static str) -> Self {
FontKey(name)
}
}
#[derive(Clone, Copy, PartialEq, Eq, Debug, Default)]
pub enum Align {
#[default]
Start,
Center,
End,
}
#[derive(Clone, Copy, PartialEq, Eq, Debug, Default)]
pub enum Overflow {
#[default]
Clip,
Ellipsis,
}
#[derive(Clone, Copy, PartialEq, Eq, Debug)]
pub struct Color(pub u8, pub u8, pub u8);
impl Color {
pub const BLACK: Color = Color(0, 0, 0);
pub const WHITE: Color = Color(255, 255, 255);
pub fn rgb(r: u8, g: u8, b: u8) -> Self {
Color(r, g, b)
}
}
impl Default for Color {
fn default() -> Self {
Color::BLACK
}
}
#[derive(Clone, Copy, PartialEq, Debug, Default)]
pub enum BorderStyle {
#[default]
Solid,
Dashed {
dash: f32,
gap: f32,
},
}
#[derive(Clone, Copy, PartialEq, Debug)]
pub struct Border {
pub width: f32,
pub color: Color,
pub style: BorderStyle,
}
impl Border {
pub fn solid(width: f32, color: Color) -> Self {
Border {
width,
color,
style: BorderStyle::Solid,
}
}
pub fn dashed(width: f32, color: Color, dash: f32, gap: f32) -> Self {
Border {
width,
color,
style: BorderStyle::Dashed { dash, gap },
}
}
}
#[derive(Clone, Copy, PartialEq, Debug)]
pub struct TextStyle {
pub font: FontKey,
pub size: f32,
pub color: Color,
pub align: Align,
pub line_height: f32,
}
impl Default for TextStyle {
fn default() -> Self {
TextStyle {
font: FontKey::SANS_REGULAR,
size: 12.0,
color: Color::BLACK,
align: Align::Start,
line_height: 1.2,
}
}
}
#[derive(Clone, Copy, PartialEq, Debug, Default)]
pub struct Common {
pub width: Option<f32>,
pub height: Option<f32>,
pub flex: Option<f32>,
pub padding: f32,
pub corner_radius: f32,
pub overflow: Overflow,
pub background: Option<Color>,
pub border: Option<Border>,
pub keep_with_next: bool,
}