devela/ui/back/cap/
definitions.rs

1// devela::ui::service::cap::definitions
2//
3//!
4//
5
6#[cfg(feature = "alloc")]
7use crate::String;
8
9/// The capabilities supported by a [`UiService`][crate::UiService].
10#[derive(Clone, Debug, Default, PartialEq, Eq)]
11pub struct UiCap {
12    /// Image capabilities.
13    pub image: Option<UiCapImage>,
14    /// Input capabilities.
15    pub input: Option<UiCapInput>,
16    /// Sound capabilities.
17    pub sound: Option<UiCapSound>,
18    /// System capabilities.
19    #[cfg(feature = "alloc")]
20    #[cfg_attr(feature = "nightly_doc", doc(cfg(feature = "alloc")))]
21    pub system: Option<UiCapSystem>,
22    /// Windowing capabilities.
23    pub window: Option<UiCapWindow>,
24}
25
26/// Image capabilities.
27#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
28pub struct UiCapImage {
29    /// Maximum bitmap size, in native pixels.
30    pub max_bitmap_size: Option<[usize; 2]>,
31    /// Whether pixel-accurate bitmaps are supported.
32    pub pixel_native: bool,
33
34    /// Whether it's possible to specify rgb values.
35    pub rgb: bool,
36    // ///
37    // pub palette: Option<u16>,
38    // ///
39    // pub palette_change: bool,
40    // ///
41    // pub palette_size: u16,
42}
43
44/// Input capabilities.
45#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
46pub struct UiCapInput {
47    /// Gamepad input capabilities.
48    pub gamepad: bool,
49    /// Keyboard input capabilities.
50    pub keyboard: bool,
51    /// Midi input capabilities
52    pub midi: bool,
53    /// Mouse input capabilities.
54    pub mouse: bool,
55    /// Touchscreen input capabilities.
56    pub touchscreen: bool,
57}
58
59/// Sound capabilities.
60#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
61pub struct UiCapSound {
62    /// Sound playback capabilities.
63    pub play: bool,
64}
65
66/// System capabilities.
67#[cfg(feature = "alloc")]
68#[cfg_attr(feature = "nightly_doc", doc(cfg(feature = "alloc")))]
69#[derive(Clone, Debug, Default, PartialEq, Eq)]
70pub struct UiCapSystem {
71    /// The name of the detected OS version.
72    pub os_version: Option<String>,
73    /// The name of the current user.
74    pub user_name: Option<String>,
75    /// The name of the current host.
76    pub host_name: Option<String>,
77}
78
79/// Window capabilities.
80#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
81pub struct UiCapWindow {
82    /// Whether multiple windows are supported.
83    pub multi: bool,
84}