use crate::Size;
#[cfg(feature = "opengl")]
use crate::gl::GlConfig;
#[derive(Default, Debug, Clone, Copy, PartialEq)]
pub enum WindowScalePolicy {
#[default]
SystemScaleFactor,
ScaleFactor(f64),
}
#[derive(Debug, Clone, PartialEq)]
pub struct WindowOpenOptions {
pub title: String,
pub size: Size,
pub scale: WindowScalePolicy,
#[cfg(feature = "opengl")]
pub gl_config: Option<GlConfig>,
}
impl WindowOpenOptions {
#[inline]
pub fn new() -> Self {
Self::default()
}
#[inline]
pub fn with_title(mut self, title: impl Into<String>) -> Self {
self.title = title.into();
self
}
#[inline]
pub fn with_size(mut self, width: f64, height: f64) -> Self {
self.size = Size::new(width, height);
self
}
#[inline]
pub fn with_scale_policy(mut self, scale: WindowScalePolicy) -> Self {
self.scale = scale;
self
}
#[cfg(feature = "opengl")]
#[inline]
pub fn with_gl_config(mut self, gl_config: impl Into<Option<GlConfig>>) -> Self {
self.gl_config = gl_config.into();
self
}
}
impl Default for WindowOpenOptions {
fn default() -> Self {
Self {
title: String::from("baseview window"),
size: Size { width: 500.0, height: 400.0 },
scale: WindowScalePolicy::default(),
#[cfg(feature = "opengl")]
gl_config: None,
}
}
}