cvkg_render_gpu/
accessibility.rs1use crate::color_blindness::ColorBlindMode;
2use crate::kvasir::node::KvasirNode;
3use crate::kvasir::resource::ResourceId;
4
5#[derive(Debug, Clone)]
6pub enum AccessibilityTransform {
7 ColorBlind(ColorBlindMode),
8 HighContrast(f32),
9 MotionReduction,
10 Magnification { region: [f32; 4], scale: f32 },
11 FocusEnhancement { target: ResourceId },
12}
13
14pub struct AccessibilityService {
15 pub active_transforms: Vec<AccessibilityTransform>,
16}
17
18impl Default for AccessibilityService {
19 fn default() -> Self {
20 Self::new()
21 }
22}
23
24impl AccessibilityService {
25 pub fn new() -> Self {
26 Self {
27 active_transforms: Vec::new(),
28 }
29 }
30
31 pub fn graph_nodes(&self) -> Vec<Box<dyn KvasirNode>> {
32 let mut nodes: Vec<Box<dyn KvasirNode>> = Vec::new();
33 for transform in &self.active_transforms {
34 if let AccessibilityTransform::ColorBlind(_) = transform {
35 nodes.push(Box::new(
36 crate::passes::accessibility::AccessibilityNode::new(),
37 ));
38 }
39 }
40 nodes
41 }
42}