1 // Copyright 2022 The ChromiumOS Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 use serde::Deserialize; 6 use serde::Serialize; 7 use serde_keyvalue::FromKeyValues; 8 9 use crate::gpu::DisplayModeTrait; 10 11 #[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize, FromKeyValues)] 12 #[serde(rename_all = "snake_case")] 13 pub enum UnixMouseMode { 14 /// Sends multi-touch events to the guest. 15 Touchscreen, 16 } 17 18 #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] 19 #[serde(rename_all = "snake_case")] 20 pub enum UnixDisplayMode { 21 Windowed(u32, u32), 22 } 23 24 impl DisplayModeTrait for UnixDisplayMode { get_window_size(&self) -> (u32, u32)25 fn get_window_size(&self) -> (u32, u32) { 26 match self { 27 Self::Windowed(width, height) => (*width, *height), 28 } 29 } 30 get_virtual_display_size(&self) -> (u32, u32)31 fn get_virtual_display_size(&self) -> (u32, u32) { 32 self.get_window_size() 33 } 34 get_virtual_display_size_4k_uhd(&self, _is_4k_uhd_enabled: bool) -> (u32, u32)35 fn get_virtual_display_size_4k_uhd(&self, _is_4k_uhd_enabled: bool) -> (u32, u32) { 36 self.get_virtual_display_size() 37 } 38 } 39