use crate::{Axis, Brightness, Clip, TextDirection};
use incular_core::{Color, Size};
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
pub enum TransparencyMode {
#[default]
Opaque,
Transparent,
}
impl TransparencyMode {
#[must_use]
pub const fn is_transparent(self) -> bool {
matches!(self, Self::Transparent)
}
}
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
pub enum WindowSizePolicy {
#[default]
Viewport,
Content,
}
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct ApplicationDefaults {
pub window_title: &'static str,
pub initial_window_size: Size,
pub window_size_policy: WindowSizePolicy,
pub resizable: bool,
pub visible: bool,
pub decorations: bool,
pub transparency_mode: TransparencyMode,
pub background_color: Color,
pub maximized: bool,
pub scale_factor: f64,
pub text_scale: f32,
pub brightness: Brightness,
pub text_direction: TextDirection,
pub reduced_motion: bool,
}
impl ApplicationDefaults {
pub const DEFAULT: Self = Self {
window_title: "Incular",
initial_window_size: Size {
width: 800.0,
height: 600.0,
},
window_size_policy: WindowSizePolicy::Viewport,
resizable: true,
visible: true,
decorations: true,
transparency_mode: TransparencyMode::Opaque,
background_color: Color::BLACK,
maximized: false,
scale_factor: 1.0,
text_scale: 1.0,
brightness: Brightness::Light,
text_direction: TextDirection::Ltr,
reduced_motion: false,
};
}
impl Default for ApplicationDefaults {
fn default() -> Self {
Self::DEFAULT
}
}
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct WidgetDefaults {
pub text_size: f32,
pub lazy_item_extent: f32,
pub sliver_cache_extent: f32,
pub sliver_fill_viewport_extent: f32,
pub scroll_direction: Axis,
pub page_scroll_direction: Axis,
pub scroll_clip_behavior: Clip,
pub grid_cross_axis_count: usize,
}
impl WidgetDefaults {
pub const DEFAULT: Self = Self {
text_size: 14.0,
lazy_item_extent: 48.0,
sliver_cache_extent: 250.0,
sliver_fill_viewport_extent: 600.0,
scroll_direction: Axis::Vertical,
page_scroll_direction: Axis::Horizontal,
scroll_clip_behavior: Clip::HardEdge,
grid_cross_axis_count: 1,
};
}
impl Default for WidgetDefaults {
fn default() -> Self {
Self::DEFAULT
}
}