1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
use windows::Graphics::Capture::GraphicsCaptureItem;
#[derive(Eq, PartialEq, Clone, Copy, Debug)]
pub enum ColorFormat {
Rgba16F = 10,
Rgba8 = 28,
Bgra8 = 87,
}
impl Default for ColorFormat {
fn default() -> Self {
Self::Rgba8
}
}
#[derive(Eq, PartialEq, Clone, Debug)]
pub enum CursorCaptureSettings {
Default,
WithCursor,
WithoutCursor,
}
#[derive(Eq, PartialEq, Clone, Debug)]
pub enum DrawBorderSettings {
Default,
WithBorder,
WithoutBorder,
}
#[derive(Eq, PartialEq, Clone, Debug)]
/// Represents the settings for screen capturing.
pub struct Settings<Flags, T: TryInto<GraphicsCaptureItem>> {
/// The graphics capture item to capture.
pub item: T,
/// Specifies whether to capture the cursor.
pub cursor_capture: CursorCaptureSettings,
/// Specifies whether to draw a border around the captured region.
pub draw_border: DrawBorderSettings,
/// The color format for the captured graphics.
pub color_format: ColorFormat,
/// Additional flags for capturing graphics.
pub flags: Flags,
}
impl<Flags, T: TryInto<GraphicsCaptureItem>> Settings<Flags, T> {
/// Create Capture Settings
///
/// # Arguments
///
/// * `item` - The graphics capture item.
/// * `capture_cursor` - Whether to capture the cursor or not.
/// * `draw_border` - Whether to draw a border around the captured region or not.
/// * `color_format` - The desired color format for the captured frame.
/// * `flags` - Additional flags for the capture settings that will be passed to user defined `new` function.
pub const fn new(
item: T,
cursor_capture: CursorCaptureSettings,
draw_border: DrawBorderSettings,
color_format: ColorFormat,
flags: Flags,
) -> Self {
Self {
item,
cursor_capture,
draw_border,
color_format,
flags,
}
}
}