use crate::color::Color;
use crate::input_profile::InputProfile;
#[derive(Debug, Clone, Copy)]
pub struct Style {
pub panel_bg: Color,
pub panel_top_border: Color,
pub panel_padding_horizontal: f64,
pub panel_padding_top: f64,
pub panel_padding_bottom: f64,
pub row_height: f64,
pub key_h_gap: f64,
pub key_v_gap: f64,
pub key_corner_radius: f64,
pub key_face_bg: Color,
pub key_face_bg_pressed: Color,
pub key_face_text: Color,
pub key_face_text_pressed: Color,
pub key_shadow: Color,
pub key_shadow_offset_y: f64,
pub letter_font_size: f64,
pub utility_font_size: f64,
pub util_key_bg: Color,
pub util_key_bg_pressed: Color,
pub util_key_text: Color,
pub return_key_bg: Color,
pub return_key_text: Color,
pub return_key_bg_pressed: Color,
}
impl Style {
pub fn for_profile(profile: InputProfile) -> Self {
match profile {
InputProfile::MobileIOS => ios(),
InputProfile::MobileAndroid => android(),
InputProfile::Desktop | InputProfile::MobileOther => neutral(),
}
}
}
fn ios() -> Style {
Style {
panel_bg: Color::from_rgb8(0xD1, 0xD5, 0xDB), panel_top_border: Color::from_rgba8(0, 0, 0, 0x33),
panel_padding_horizontal: 4.0,
panel_padding_top: 8.0,
panel_padding_bottom: 18.0, row_height: 44.0,
key_h_gap: 6.0,
key_v_gap: 10.0,
key_corner_radius: 5.0,
key_face_bg: Color::from_rgb8(0xFE, 0xFE, 0xFE),
key_face_bg_pressed: Color::from_rgb8(0xBC, 0xC0, 0xC9),
key_face_text: Color::from_rgb8(0x10, 0x10, 0x18),
key_face_text_pressed: Color::from_rgb8(0x10, 0x10, 0x18),
key_shadow: Color::from_rgba8(0, 0, 0, 0x4D),
key_shadow_offset_y: -1.0, letter_font_size: 22.0,
utility_font_size: 15.0,
util_key_bg: Color::from_rgb8(0xAB, 0xB0, 0xBC),
util_key_bg_pressed: Color::from_rgb8(0xFE, 0xFE, 0xFE),
util_key_text: Color::from_rgb8(0x10, 0x10, 0x18),
return_key_bg: Color::from_rgb8(0x00, 0x7A, 0xFF), return_key_text: Color::from_rgb8(0xFF, 0xFF, 0xFF),
return_key_bg_pressed: Color::from_rgb8(0x00, 0x57, 0xBE),
}
}
fn android() -> Style {
Style {
panel_bg: Color::from_rgb8(0x20, 0x20, 0x24), panel_top_border: Color::from_rgba8(0xFF, 0xFF, 0xFF, 0x14),
panel_padding_horizontal: 4.0,
panel_padding_top: 6.0,
panel_padding_bottom: 14.0,
row_height: 48.0,
key_h_gap: 4.0,
key_v_gap: 6.0,
key_corner_radius: 6.0,
key_face_bg: Color::from_rgb8(0x2C, 0x2C, 0x32), key_face_bg_pressed: Color::from_rgb8(0x43, 0x47, 0x55),
key_face_text: Color::from_rgb8(0xE8, 0xEA, 0xF0),
key_face_text_pressed: Color::from_rgb8(0xFF, 0xFF, 0xFF),
key_shadow: Color::from_rgba8(0, 0, 0, 0x60),
key_shadow_offset_y: -1.0,
letter_font_size: 20.0,
utility_font_size: 14.0,
util_key_bg: Color::from_rgb8(0x1A, 0x1A, 0x1E),
util_key_bg_pressed: Color::from_rgb8(0x33, 0x36, 0x3E),
util_key_text: Color::from_rgb8(0xC4, 0xCB, 0xDB),
return_key_bg: Color::from_rgb8(0x1A, 0x73, 0xE8), return_key_text: Color::from_rgb8(0xFF, 0xFF, 0xFF),
return_key_bg_pressed: Color::from_rgb8(0x12, 0x5A, 0xC0),
}
}
fn neutral() -> Style {
Style {
panel_bg: Color::from_rgb8(0x18, 0x18, 0x22),
panel_top_border: Color::from_rgba8(0xFF, 0xFF, 0xFF, 0x33),
panel_padding_horizontal: 4.0,
panel_padding_top: 8.0,
panel_padding_bottom: 12.0,
row_height: 46.0,
key_h_gap: 5.0,
key_v_gap: 8.0,
key_corner_radius: 6.0,
key_face_bg: Color::from_rgb8(0x2A, 0x2B, 0x36),
key_face_bg_pressed: Color::from_rgb8(0x44, 0x46, 0x55),
key_face_text: Color::from_rgb8(0xE7, 0xE8, 0xF0),
key_face_text_pressed: Color::from_rgb8(0xFF, 0xFF, 0xFF),
key_shadow: Color::from_rgba8(0, 0, 0, 0x55),
key_shadow_offset_y: -1.0,
letter_font_size: 20.0,
utility_font_size: 14.0,
util_key_bg: Color::from_rgb8(0x1F, 0x20, 0x2A),
util_key_bg_pressed: Color::from_rgb8(0x33, 0x36, 0x44),
util_key_text: Color::from_rgb8(0xC4, 0xC7, 0xD5),
return_key_bg: Color::from_rgb8(0x3B, 0x82, 0xF6),
return_key_text: Color::from_rgb8(0xFF, 0xFF, 0xFF),
return_key_bg_pressed: Color::from_rgb8(0x2B, 0x66, 0xD0),
}
}