use async_trait::async_trait;
use crate::error::{DisplayError, DisplayResult};
use crate::traits::{OutputEditable, UniversalTopology};
use crate::types::{DisplayId, DisplayRotation, Extent2D, HdrMode, HdrState, OutputState, Point2D};
pub struct StubTopology;
pub struct StubOutputEditor;
impl OutputEditable for StubOutputEditor {
fn set_rotation(
&mut self,
_rotation: DisplayRotation,
) -> DisplayResult<&mut dyn OutputEditable> {
Err(DisplayError::UnsupportedFeature(
"platform not supported".into(),
))
}
fn set_resolution(&mut self, _extent: Extent2D) -> DisplayResult<&mut dyn OutputEditable> {
Err(DisplayError::UnsupportedFeature(
"platform not supported".into(),
))
}
fn set_position(&mut self, _position: Point2D) -> DisplayResult<&mut dyn OutputEditable> {
Err(DisplayError::UnsupportedFeature(
"platform not supported".into(),
))
}
fn set_refresh_rate(&mut self, _rate: u32) -> DisplayResult<&mut dyn OutputEditable> {
Err(DisplayError::UnsupportedFeature(
"platform not supported".into(),
))
}
fn set_primary(&mut self) -> DisplayResult<&mut dyn OutputEditable> {
Err(DisplayError::UnsupportedFeature(
"platform not supported".into(),
))
}
fn set_hdr(
&mut self,
_state: HdrState,
_mode: HdrMode,
) -> DisplayResult<&mut dyn OutputEditable> {
Err(DisplayError::UnsupportedFeature(
"platform not supported".into(),
))
}
fn set_scale(&mut self, _scale: f64) -> DisplayResult<&mut dyn OutputEditable> {
Err(DisplayError::UnsupportedFeature(
"platform not supported".into(),
))
}
fn set_enabled(&mut self, _enabled: bool) -> DisplayResult<&mut dyn OutputEditable> {
Err(DisplayError::UnsupportedFeature(
"platform not supported".into(),
))
}
fn clone_from(&mut self, _source_id: &DisplayId) -> DisplayResult<&mut dyn OutputEditable> {
Err(DisplayError::UnsupportedFeature(
"platform not supported".into(),
))
}
fn get_state(&self) -> OutputState {
OutputState::default()
}
}
#[async_trait]
impl UniversalTopology for StubTopology {
fn acquire() -> DisplayResult<Self> {
Err(DisplayError::UnsupportedFeature(
"platform not supported".into(),
))
}
fn get_outputs(&self) -> Vec<OutputState> {
Vec::new()
}
fn edit_output(&mut self, _id: &DisplayId) -> DisplayResult<Box<dyn OutputEditable + '_>> {
Err(DisplayError::UnsupportedFeature(
"platform not supported".into(),
))
}
fn set_persistence(&mut self, _enabled: bool) -> &mut Self {
self
}
async fn validate(&self) -> DisplayResult<()> {
Err(DisplayError::UnsupportedFeature(
"platform not supported".into(),
))
}
async fn commit(&mut self) -> DisplayResult<()> {
Err(DisplayError::UnsupportedFeature(
"platform not supported".into(),
))
}
}