use std::error::Error;
use windows::Graphics::Capture::GraphicsCaptureItem;
#[derive(thiserror::Error, Eq, PartialEq, Clone, Copy, Debug)]
pub enum SettingsErrors {
#[error("Failed To Convert To GraphicsCaptureItem")]
ConvertFailed,
}
#[derive(Eq, PartialEq, Clone, Copy, Debug)]
pub enum ColorFormat {
Rgba8,
Bgra8,
}
#[derive(Eq, PartialEq, Clone, Debug)]
pub struct WindowsCaptureSettings<Flags> {
pub item: GraphicsCaptureItem,
pub capture_cursor: Option<bool>,
pub draw_border: Option<bool>,
pub color_format: ColorFormat,
pub flags: Flags,
}
impl<Flags> WindowsCaptureSettings<Flags> {
pub fn new<T: TryInto<GraphicsCaptureItem>>(
item: T,
capture_cursor: Option<bool>,
draw_border: Option<bool>,
color_format: ColorFormat,
flags: Flags,
) -> Result<Self, Box<dyn Error + Send + Sync>> {
Ok(Self {
item: match item.try_into() {
Ok(item) => item,
Err(_) => return Err(Box::new(SettingsErrors::ConvertFailed)),
},
capture_cursor,
draw_border,
color_format,
flags,
})
}
}