mm_client_common/
display_params.rs1use mm_protocol as protocol;
6
7use crate::{pixel_scale::PixelScale, validation::*};
8
9#[derive(Debug, Clone, PartialEq, Eq, uniffi::Record)]
10pub struct DisplayParams {
11 pub width: u32,
12 pub height: u32,
13 pub framerate: u32,
14 pub ui_scale: PixelScale,
15}
16
17impl TryFrom<protocol::VirtualDisplayParameters> for DisplayParams {
18 type Error = ValidationError;
19
20 fn try_from(msg: protocol::VirtualDisplayParameters) -> Result<Self, Self::Error> {
21 let res = required_field!(msg.resolution)?;
22
23 Ok(DisplayParams {
24 width: res.width,
25 height: res.height,
26 framerate: msg.framerate_hz,
27 ui_scale: required_field!(msg.ui_scale)?.try_into()?,
28 })
29 }
30}
31
32impl From<DisplayParams> for protocol::VirtualDisplayParameters {
33 fn from(value: DisplayParams) -> Self {
34 protocol::VirtualDisplayParameters {
35 resolution: Some(protocol::Size {
36 width: value.width,
37 height: value.height,
38 }),
39 framerate_hz: value.framerate,
40 ui_scale: Some(value.ui_scale.into()),
41 }
42 }
43}