persist BackendAttrib across sessions

This commit is contained in:
galister
2025-12-20 17:42:18 +09:00
parent 9381ebc700
commit 23df9228a9
19 changed files with 158 additions and 114 deletions

View File

@@ -1,13 +1,12 @@
use std::{collections::HashMap, sync::Arc};
use chrono::Offset;
use glam::Affine3A;
use idmap::IdMap;
use serde::{Deserialize, Serialize};
use crate::{
astr_containers::{AStrMap, AStrSet},
overlays::{ToastDisplayMethod, ToastTopic},
overlays::{BackendAttribValue, ToastDisplayMethod, ToastTopic},
windowing::OverlayWindowState,
};
@@ -92,11 +91,7 @@ const fn def_astrset_empty() -> AStrSet {
AStrSet::new()
}
const fn def_curve_values() -> AStrMap<f32> {
AStrMap::new()
}
const fn def_transforms() -> AStrMap<Affine3A> {
const fn def_attribs() -> AStrMap<Vec<BackendAttribValue>> {
AStrMap::new()
}
@@ -134,6 +129,9 @@ pub struct GeneralConfig {
pub color_faded: Option<String>,
pub default_keymap: Option<String>,
#[serde(default = "def_attribs")]
pub attribs: AStrMap<Vec<BackendAttribValue>>,
#[serde(default = "def_click_freeze_time_ms")]
pub click_freeze_time_ms: u32,
@@ -194,15 +192,6 @@ pub struct GeneralConfig {
#[serde(default = "def_astrset_empty")]
pub custom_panels: AStrSet,
#[serde(default = "def_astrset_empty")]
pub show_screens: AStrSet,
#[serde(default = "def_curve_values")]
pub curve_values: AStrMap<f32>,
#[serde(default = "def_transforms")]
pub transform_values: AStrMap<Affine3A>,
#[serde(default = "def_auto")]
pub capture_method: Arc<str>,

View File

@@ -15,3 +15,39 @@ pub enum ToastDisplayMethod {
Center,
Watch,
}
#[derive(Clone, Copy)]
pub enum BackendAttrib {
Stereo,
MouseTransform,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum BackendAttribValue {
Stereo(StereoMode),
MouseTransform(MouseTransform),
}
#[derive(Default, Debug, Clone, Copy, Serialize, Deserialize)]
pub enum StereoMode {
#[default]
None,
LeftRight,
RightLeft,
TopBottom,
BottomTop,
}
#[derive(Default, Debug, Clone, Copy, Serialize, Deserialize)]
pub enum MouseTransform {
#[default]
Default,
Normal,
Rotated90,
Rotated180,
Rotated270,
Flipped,
Flipped90,
Flipped180,
Flipped270,
}