gled-model 2.31.0

The data model of gled: projects, scenes, effects, animations, curves and assets
Documentation
use serde::{Deserialize, Serialize};
use strum::{Display, EnumIter, EnumString};

/// A scene's colour. It reads as its lowercase name ("pink"), as OSC sends
/// it, and parses from its name in any case.
#[derive(
    Debug,
    Clone,
    Default,
    Copy,
    PartialEq,
    Eq,
    Serialize,
    Deserialize,
    Display,
    EnumString,
    EnumIter,
)]
#[strum(serialize_all = "lowercase", ascii_case_insensitive)]
pub enum SceneInstanceColor {
    Red,
    Green,
    Blue,
    White,
    Orange,
    Yellow,
    Purple,
    #[default]
    Pink,
    Black,
}

impl SceneInstanceColor {
    /// 8 bit RGB, as the UI shows it.
    pub fn rgb8(self) -> [u8; 3] {
        match self {
            Self::Red => [139, 0, 0],       // Dark Red
            Self::Green => [0, 100, 0],     // Dark Green
            Self::Blue => [0, 0, 139],      // Dark Blue
            Self::White => [169, 169, 169], // Dark Gray (instead of white)
            Self::Orange => [255, 140, 0],  // Dark Orange
            Self::Yellow => [204, 204, 0],  // Dark Yellow
            Self::Purple => [75, 0, 130],   // Dark Purple (Indigo)
            Self::Pink => [231, 84, 128],   // Dark Pink
            Self::Black => [0, 0, 0],       // Black
        }
    }
}