msi-klc 1.1.0

MSI Keyboard Light Controller
Documentation
use msi_klc::*;

pub fn parse_color(color: &String) -> Color {
    match color.to_lowercase().to_string().as_str() {
        "off" => Color::Off,
        "red" => Color::Red,
        "orange" => Color::Orange,
        "yellow" => Color::Yellow,
        "green" => Color::Green,
        "sky" => Color::Sky,
        "blue" => Color::Blue,
        "purple" => Color::Purple,
        "white" => Color::White,
        _ => Color::Off,
    }
}

pub fn parse_region(region: &String) -> Region {
    match region.to_lowercase().as_str() {
        "left" => Region::Left,
        "middle" => Region::Middle,
        "right" => Region::Right,
        "all" => Region::All,
        _ => Region::All,
    }
}

pub fn parse_brightness(brightness: &String) -> Brightness {
    match brightness.to_lowercase().as_str() {
        "dark" => Brightness::Dark,
        "low" => Brightness::Low,
        "medium" => Brightness::Medium,
        "high" => Brightness::High,
        _ => Brightness::Medium,
    }
}

pub fn parse_mode(mode: &String) -> Mode {
    match mode.to_lowercase().as_str() {
        "normal" => Mode::Normal,
        "gaming" => Mode::Gaming,
        "rgb" => Mode::RGB,
        _ => Mode::Normal,
    }
}

pub fn parse_rgb_colors(color: &String) -> [u8; 3] {
    let mut rgb_colors: [u8; 3] = [0, 0, 0];
    let mut color = color.clone();
    if color.starts_with("0x") && color.len() == 8 {
        color = color.replace("0x", "#");
    }
    if color.starts_with("#") && color.len() == 7 {
        for i in 0..3 {
            let hex_code = color.chars().nth(i * 2 + 1).unwrap().to_string()
                + color.chars().nth(i * 2 + 2).unwrap().to_string().as_str();
            rgb_colors[i] = u8::from_str_radix(hex_code.as_str(), 16).unwrap_or(0);
        }
    } else {
        for (color_index, rgb_color) in color.split(";").enumerate() {
            if color_index < 3 {
                rgb_colors[color_index] = rgb_color.parse().unwrap_or(0);
            }
        }
    }
    rgb_colors
}