mirror of
https://github.com/Zenithsiz/zsw.git
synced 2026-02-03 17:52:15 +00:00
Slightly reworked serialized panel's format.
This commit is contained in:
parent
6fd8a70398
commit
1322d17148
@ -9,5 +9,6 @@ duration = 5.0
|
||||
fade_duration = 1.0
|
||||
|
||||
[shader]
|
||||
type = "fade-out"
|
||||
type = "fade"
|
||||
fade = "out"
|
||||
strength = 1.0
|
||||
|
||||
@ -6,5 +6,6 @@ duration = 5.0
|
||||
fade_duration = 1.0
|
||||
|
||||
[shader]
|
||||
type = "fade-white"
|
||||
type = "fade"
|
||||
fade = "white"
|
||||
strength = 1.0
|
||||
|
||||
@ -63,27 +63,20 @@ impl Panels {
|
||||
// Finally convert it
|
||||
let geometries = panel.geometries.into_iter().map(|geometry| geometry.geometry).collect();
|
||||
// TODO: Is this a good default?
|
||||
let panel_shader = panel.shader.unwrap_or(ser::PanelShader::FadeOut { strength: 1.5 });
|
||||
let panel_shader = panel
|
||||
.shader
|
||||
.unwrap_or(ser::PanelShader::Fade(ser::PanelShaderFade::Out { strength: 1.5 }));
|
||||
let state = match panel_shader {
|
||||
ser::PanelShader::None { background_color } =>
|
||||
PanelState::None(PanelNoneState::new(background_color)),
|
||||
ser::PanelShader::Fade |
|
||||
ser::PanelShader::FadeWhite { .. } |
|
||||
ser::PanelShader::FadeOut { .. } |
|
||||
ser::PanelShader::FadeIn { .. } => PanelState::Fade(PanelFadeState::new(
|
||||
ser::PanelShader::Fade(fade) => PanelState::Fade(PanelFadeState::new(
|
||||
panel.state.duration,
|
||||
panel.state.fade_duration,
|
||||
#[expect(
|
||||
clippy::match_wildcard_for_single_variants,
|
||||
reason = "We only care about the variants above"
|
||||
)]
|
||||
match panel_shader {
|
||||
ser::PanelShader::Fade => PanelShaderFade::Basic,
|
||||
ser::PanelShader::FadeWhite { strength } => PanelShaderFade::White { strength },
|
||||
ser::PanelShader::FadeOut { strength } => PanelShaderFade::Out { strength },
|
||||
ser::PanelShader::FadeIn { strength } => PanelShaderFade::In { strength },
|
||||
|
||||
_ => unreachable!(),
|
||||
match fade {
|
||||
ser::PanelShaderFade::Basic => PanelShaderFade::Basic,
|
||||
ser::PanelShaderFade::White { strength } => PanelShaderFade::White { strength },
|
||||
ser::PanelShaderFade::Out { strength } => PanelShaderFade::Out { strength },
|
||||
ser::PanelShaderFade::In { strength } => PanelShaderFade::In { strength },
|
||||
},
|
||||
)),
|
||||
};
|
||||
|
||||
@ -46,7 +46,6 @@ pub struct PanelState {
|
||||
#[derive(Debug)]
|
||||
#[derive(serde::Serialize, serde::Deserialize)]
|
||||
#[serde(tag = "type")]
|
||||
#[expect(variant_size_differences, reason = "16 bytes is still reasonable for this type")]
|
||||
pub enum PanelShader {
|
||||
#[serde(rename = "none")]
|
||||
None {
|
||||
@ -55,14 +54,23 @@ pub enum PanelShader {
|
||||
},
|
||||
|
||||
#[serde(rename = "fade")]
|
||||
Fade,
|
||||
|
||||
#[serde(rename = "fade-white")]
|
||||
FadeWhite { strength: f32 },
|
||||
|
||||
#[serde(rename = "fade-out")]
|
||||
FadeOut { strength: f32 },
|
||||
|
||||
#[serde(rename = "fade-in")]
|
||||
FadeIn { strength: f32 },
|
||||
Fade(PanelShaderFade),
|
||||
}
|
||||
|
||||
/// Configuration shader fade
|
||||
#[derive(Debug)]
|
||||
#[derive(serde::Serialize, serde::Deserialize)]
|
||||
#[serde(tag = "fade")]
|
||||
pub enum PanelShaderFade {
|
||||
#[serde(rename = "basic")]
|
||||
Basic,
|
||||
|
||||
#[serde(rename = "white")]
|
||||
White { strength: f32 },
|
||||
|
||||
#[serde(rename = "out")]
|
||||
Out { strength: f32 },
|
||||
|
||||
#[serde(rename = "in")]
|
||||
In { strength: f32 },
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user