warptrixy 0.1.3

Simple API Wrapper for the AWTRIX 3
Documentation
use serde::{Deserialize, Serialize};
use crate::ColorValue;
use crate::models::draw::Draw;

#[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq, Eq)]
#[repr(i8)]
pub enum TextCase {
    Global = 0,
    ForceUppercase = 1,
    AsIs = 2,
}

#[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq, Eq)]
#[repr(u8)]
pub enum PushIcon {
    Static = 0,
    ScrollOnce = 1,
    ScrollLoop = 2,
}

#[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq, Eq)]
#[repr(u8)]
pub enum LifetimeMode {
    Delete = 0,
    Stale = 1,
}

#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
#[serde(untagged)]
pub enum GradientValue {
    Hex(Vec<String>),
    Int(Vec<i32>),
}

#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
#[serde(untagged)]
pub enum TextValue {
    String(String),
    Colored(Vec<TextColorValue>),
}

#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct TextColorValue {
    #[serde(rename = "t")]
    pub text : String,
    #[serde(rename = "c")]
    pub color: String,
}

#[derive(Serialize, Deserialize, Debug, Default)]
pub struct CustomAppDto {
    #[serde(skip_serializing_if = "Option::is_none")]
    pub text: Option<TextValue>,

    #[serde(rename = "textCase", skip_serializing_if = "Option::is_none")]
    pub text_case: Option<TextCase>,

    #[serde(rename = "topText", skip_serializing_if = "Option::is_none")]
    pub top_text: Option<bool>,

    #[serde(rename = "textOffset", skip_serializing_if = "Option::is_none")]
    pub text_offset: Option<i32>,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub center: Option<bool>,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub color: Option<ColorValue>,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub gradient: Option<GradientValue>,

    #[serde(rename = "blinkText", skip_serializing_if = "Option::is_none")]
    pub blink_text: Option<i32>,

    #[serde(rename = "fadeText", skip_serializing_if = "Option::is_none")]
    pub fade_text: Option<i32>,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub background: Option<ColorValue>,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub rainbow: Option<bool>,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub icon: Option<String>,

    #[serde(rename = "pushIcon", skip_serializing_if = "Option::is_none")]
    pub push_icon: Option<PushIcon>,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub repeat: Option<i32>,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub duration: Option<i32>,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub hold: Option<bool>,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub sound: Option<String>,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub rtttl: Option<String>,

    #[serde(rename = "loopSound", skip_serializing_if = "Option::is_none")]
    pub loop_sound: Option<bool>,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub bar: Option<Vec<i32>>,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub line: Option<Vec<i32>>,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub autoscale: Option<bool>,

    #[serde(rename = "barBC", skip_serializing_if = "Option::is_none")]
    pub bar_bc: Option<ColorValue>,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub progress: Option<i32>,

    #[serde(rename = "progressC", skip_serializing_if = "Option::is_none")]
    pub progress_c: Option<ColorValue>,

    #[serde(rename = "progressBC", skip_serializing_if = "Option::is_none")]
    pub progress_bc: Option<ColorValue>,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub pos: Option<i32>,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub draw: Option<Vec<Draw>>,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub lifetime: Option<i32>,

    #[serde(rename = "lifetimeMode", skip_serializing_if = "Option::is_none")]
    pub lifetime_mode: Option<LifetimeMode>,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub stack: Option<bool>,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub wakeup: Option<bool>,

    #[serde(rename = "noScroll", skip_serializing_if = "Option::is_none")]
    pub no_scroll: Option<bool>,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub clients: Option<Vec<String>>,

    #[serde(rename = "scrollSpeed", skip_serializing_if = "Option::is_none")]
    pub scroll_speed: Option<i32>,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub effect: Option<String>,

    #[serde(rename = "effectSettings", skip_serializing_if = "Option::is_none")]
    pub effect_settings: Option<EffectSettings>,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub save: Option<bool>,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub overlay: Option<String>,
}

#[derive(Serialize, Deserialize, Debug, Default)]
pub struct EffectSettings {
    #[serde(skip_serializing_if = "Option::is_none")]
    pub speed: Option<i32>,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub palette: Option<String>,

    #[serde(skip_serializing_if = "Option::is_none")]
    pub blend: Option<bool>,
}