ferroui_linuxframebuffer/input/ev_dev/
ev_dev_touch_screen_device_description.rs1use ferroui_base::Matrix;
5use std::collections::HashMap;
6
7#[derive(Clone, Debug, PartialEq)]
8pub struct EvDevTouchScreenDeviceDescription {
9 pub path: Option<String>,
10 pub calibration_matrix: Matrix,
11}
12
13impl Default for EvDevTouchScreenDeviceDescription {
14 fn default() -> Self {
15 Self { path: None, calibration_matrix: Matrix::IDENTITY }
16 }
17}
18
19impl EvDevTouchScreenDeviceDescription {
20 pub(crate) fn parse_from_env(path: &str, options: &HashMap<String, String>) -> Result<Self, String> {
21 let mut calibration_matrix = Matrix::IDENTITY;
22 if let Some(calibration) = options.get("calibration") {
23 calibration_matrix =
24 Matrix::parse(calibration).map_err(|error| format!("Invalid calibration matrix: {error}"))?;
25 }
26 Ok(Self { path: Some(path.to_owned()), calibration_matrix })
27 }
28}