diff --git a/src/gl/mod.rs b/src/gl/mod.rs index 488cfd7f..b9dbc53b 100644 --- a/src/gl/mod.rs +++ b/src/gl/mod.rs @@ -21,7 +21,7 @@ mod macos; #[cfg(target_os = "macos")] use macos as platform; -#[derive(Clone, Debug)] +#[derive(Clone, Debug, PartialEq)] pub struct GlConfig { pub version: (u8, u8), pub profile: Profile, diff --git a/src/window_open_options.rs b/src/window_open_options.rs index 7c5cd192..807a0028 100644 --- a/src/window_open_options.rs +++ b/src/window_open_options.rs @@ -1,15 +1,20 @@ use crate::Size; +#[cfg(feature = "opengl")] +use crate::gl::GlConfig; + /// The dpi scaling policy of the window -#[derive(Debug, Clone, Copy, PartialEq)] +#[derive(Default, Debug, Clone, Copy, PartialEq)] pub enum WindowScalePolicy { /// Use the system's dpi scale factor + #[default] SystemScaleFactor, /// Use the given dpi scale factor (e.g. `1.0` = 96 dpi) ScaleFactor(f64), } /// The options for opening a new window +#[derive(Debug, Clone, PartialEq)] pub struct WindowOpenOptions { pub title: String, @@ -24,6 +29,32 @@ pub struct WindowOpenOptions { /// If provided, then an OpenGL context will be created for this window. You'll be able to /// access this context through [crate::Window::gl_context]. + /// + /// By default this is set to `Some(GlConfig::default())`. #[cfg(feature = "opengl")] - pub gl_config: Option, + pub gl_config: Option, +} + +impl WindowOpenOptions { + pub fn default_no_opengl() -> Self { + Self { + title: String::from("baseview window"), + size: Size { width: 500.0, height: 400.0 }, + scale: WindowScalePolicy::default(), + #[cfg(feature = "opengl")] + gl_config: None, + } + } +} + +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: Some(GlConfig::default()), + } + } }