use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
#[serde(rename_all = "snake_case")]
pub enum ExternalDragPositionQuality {
None,
BestEffort,
#[default]
Continuous,
}
impl ExternalDragPositionQuality {
pub fn as_str(self) -> &'static str {
match self {
Self::None => "none",
Self::BestEffort => "best_effort",
Self::Continuous => "continuous",
}
}
pub fn clamp_to_available(self, available: Self) -> Self {
use ExternalDragPositionQuality::*;
match (self, available) {
(None, _) => None,
(_, None) => None,
(BestEffort, BestEffort | Continuous) => BestEffort,
(Continuous, Continuous) => Continuous,
(Continuous, BestEffort) => BestEffort,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
#[serde(rename_all = "snake_case")]
pub enum WindowHoverDetectionQuality {
None,
BestEffort,
#[default]
Reliable,
}
impl WindowHoverDetectionQuality {
pub fn as_str(self) -> &'static str {
match self {
Self::None => "none",
Self::BestEffort => "best_effort",
Self::Reliable => "reliable",
}
}
pub fn clamp_to_available(self, available: Self) -> Self {
use WindowHoverDetectionQuality::*;
match (self, available) {
(None, _) => None,
(_, None) => None,
(BestEffort, BestEffort | Reliable) => BestEffort,
(Reliable, Reliable) => Reliable,
(Reliable, BestEffort) => BestEffort,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
#[serde(rename_all = "snake_case")]
pub enum WindowSetOuterPositionQuality {
None,
BestEffort,
#[default]
Reliable,
}
impl WindowSetOuterPositionQuality {
pub fn as_str(self) -> &'static str {
match self {
Self::None => "none",
Self::BestEffort => "best_effort",
Self::Reliable => "reliable",
}
}
pub fn clamp_to_available(self, available: Self) -> Self {
use WindowSetOuterPositionQuality::*;
match (self, available) {
(None, _) => None,
(_, None) => None,
(BestEffort, BestEffort | Reliable) => BestEffort,
(Reliable, Reliable) => Reliable,
(Reliable, BestEffort) => BestEffort,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
#[serde(rename_all = "snake_case")]
pub enum WindowZLevelQuality {
None,
BestEffort,
#[default]
Reliable,
}
impl WindowZLevelQuality {
pub fn as_str(self) -> &'static str {
match self {
Self::None => "none",
Self::BestEffort => "best_effort",
Self::Reliable => "reliable",
}
}
pub fn clamp_to_available(self, available: Self) -> Self {
use WindowZLevelQuality::*;
match (self, available) {
(None, _) => None,
(_, None) => None,
(BestEffort, BestEffort | Reliable) => BestEffort,
(Reliable, Reliable) => Reliable,
(Reliable, BestEffort) => BestEffort,
}
}
}