#[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");
}
#[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)]
pub struct Border {
pub width: f32,
pub color: Color,
}
#[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 overflow: Overflow,
pub background: Option<Color>,
pub border: Option<Border>,
pub keep_with_next: bool,
}