voirs_spatial/visual_audio/
config.rs1use super::mapping::{AudioVisualMapping, VisualDistanceAttenuation};
4use super::sync::VisualSyncSettings;
5use super::types::ColorRGBA;
6use serde::{Deserialize, Serialize};
7use std::collections::HashMap;
8
9#[derive(Debug, Clone, Serialize, Deserialize)]
11pub struct VisualAudioConfig {
12 pub enabled: bool,
14
15 pub master_intensity: f32,
17
18 pub audio_mapping: AudioVisualMapping,
20
21 pub sync_settings: VisualSyncSettings,
23
24 pub distance_attenuation: VisualDistanceAttenuation,
26
27 pub color_scheme: ColorScheme,
29
30 pub accessibility: VisualAccessibilitySettings,
32
33 pub performance: VisualPerformanceSettings,
35}
36
37#[derive(Debug, Clone, Serialize, Deserialize)]
39pub struct ColorScheme {
40 pub scheme_type: ColorSchemeType,
42
43 pub source_colors: HashMap<String, ColorRGBA>,
45
46 pub ambient_color: ColorRGBA,
48
49 pub color_temperature: f32,
51
52 pub saturation: f32,
54
55 pub brightness: f32,
57}
58
59#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
61pub enum ColorSchemeType {
62 Default,
64
65 HighContrast,
67
68 Warm,
70
71 Cool,
73
74 Monochromatic,
76
77 Custom,
79}
80
81#[derive(Debug, Clone, Serialize, Deserialize)]
83pub struct VisualAccessibilitySettings {
84 pub high_contrast: bool,
86
87 pub color_blind_friendly: bool,
89
90 pub reduced_motion: bool,
92
93 pub indicator_scaling: f32,
95
96 pub text_scaling: f32,
98
99 pub audio_description_mode: bool,
101
102 pub screen_reader_compatible: bool,
104}
105
106#[derive(Debug, Clone, Serialize, Deserialize)]
108pub struct VisualPerformanceSettings {
109 pub target_fps: f32,
111
112 pub quality_level: f32,
114
115 pub lod_enabled: bool,
117
118 pub culling_distance: f32,
120
121 pub max_particles: usize,
123
124 pub anti_aliasing: u8,
126
127 pub adaptive_quality: bool,
129}
130
131impl Default for VisualAudioConfig {
134 fn default() -> Self {
135 Self {
136 enabled: true,
137 master_intensity: 0.8,
138 audio_mapping: AudioVisualMapping::default(),
139 sync_settings: VisualSyncSettings::default(),
140 distance_attenuation: VisualDistanceAttenuation::default(),
141 color_scheme: ColorScheme::default(),
142 accessibility: VisualAccessibilitySettings::default(),
143 performance: VisualPerformanceSettings::default(),
144 }
145 }
146}
147
148impl Default for ColorScheme {
149 fn default() -> Self {
150 Self {
151 scheme_type: ColorSchemeType::Default,
152 source_colors: HashMap::new(),
153 ambient_color: ColorRGBA {
154 r: 0.1,
155 g: 0.1,
156 b: 0.2,
157 a: 1.0,
158 },
159 color_temperature: 6500.0, saturation: 0.8,
161 brightness: 0.7,
162 }
163 }
164}
165
166impl Default for VisualAccessibilitySettings {
167 fn default() -> Self {
168 Self {
169 high_contrast: false,
170 color_blind_friendly: false,
171 reduced_motion: false,
172 indicator_scaling: 1.0,
173 text_scaling: 1.0,
174 audio_description_mode: false,
175 screen_reader_compatible: false,
176 }
177 }
178}
179
180impl Default for VisualPerformanceSettings {
181 fn default() -> Self {
182 Self {
183 target_fps: 60.0,
184 quality_level: 0.8,
185 lod_enabled: true,
186 culling_distance: 50.0,
187 max_particles: 1000,
188 anti_aliasing: 4,
189 adaptive_quality: true,
190 }
191 }
192}