Skip to main content

spice_client_glib/
display_monitor_config.rs

1// Take a look at the license at the top of the repository in the LICENSE file.
2
3use glib::translate::*;
4
5#[derive(Debug, Clone, Copy)]
6pub struct DisplayMonitorConfig(ffi::SpiceDisplayMonitorConfig);
7
8impl DisplayMonitorConfig {
9    pub fn id(&self) -> u32 {
10        self.0.id
11    }
12
13    pub fn surface_id(&self) -> u32 {
14        self.0.surface_id
15    }
16
17    pub fn geometry(&self) -> (usize, usize, usize, usize) {
18        (
19            self.0.x as _,
20            self.0.y as _,
21            self.0.width as _,
22            self.0.height as _,
23        )
24    }
25
26    pub fn as_ptr(&self) -> *const ffi::SpiceDisplayMonitorConfig {
27        &self.0
28    }
29}
30
31impl From<ffi::SpiceDisplayMonitorConfig> for DisplayMonitorConfig {
32    fn from(p: ffi::SpiceDisplayMonitorConfig) -> Self {
33        skip_assert_initialized!();
34        Self(p)
35    }
36}
37
38#[doc(hidden)]
39impl<'a> ToGlibPtr<'a, *const ffi::SpiceDisplayMonitorConfig> for DisplayMonitorConfig {
40    type Storage = &'a Self;
41
42    fn to_glib_none(&'a self) -> Stash<'a, *const ffi::SpiceDisplayMonitorConfig, Self> {
43        Stash(&self.0, self)
44    }
45}
46
47#[doc(hidden)]
48impl FromGlibPtrNone<*const ffi::SpiceDisplayMonitorConfig> for DisplayMonitorConfig {
49    #[inline]
50    unsafe fn from_glib_none(ptr: *const ffi::SpiceDisplayMonitorConfig) -> Self {
51        Self(*ptr)
52    }
53}