freya_core/accessibility/
screen_reader.rs1use std::sync::{
2 Arc,
3 atomic::{
4 AtomicBool,
5 Ordering,
6 },
7};
8
9use crate::prelude::consume_root_context;
10
11#[derive(Clone)]
12pub struct ScreenReader {
13 is_on: Arc<AtomicBool>,
14}
15
16impl Default for ScreenReader {
17 fn default() -> Self {
18 Self::new()
19 }
20}
21
22impl ScreenReader {
23 pub fn new() -> Self {
24 Self {
25 is_on: Arc::default(),
26 }
27 }
28
29 pub fn get() -> Self {
30 consume_root_context::<Self>()
31 }
32
33 pub fn set(&self, on: bool) {
34 self.is_on.store(on, Ordering::Relaxed);
35 }
36
37 pub fn is_on(&self) -> bool {
39 self.is_on.load(Ordering::Relaxed)
40 }
41}