diff options
| -rw-r--r-- | glow/src/settings.rs | 7 | ||||
| -rw-r--r-- | glow/src/window/compositor.rs | 7 | ||||
| -rw-r--r-- | src/application.rs | 1 | ||||
| -rw-r--r-- | src/settings.rs | 28 | ||||
| -rw-r--r-- | wgpu/src/settings.rs | 7 | ||||
| -rw-r--r-- | wgpu/src/window/compositor.rs | 8 | 
6 files changed, 49 insertions, 9 deletions
diff --git a/glow/src/settings.rs b/glow/src/settings.rs index dce30029..68fde714 100644 --- a/glow/src/settings.rs +++ b/glow/src/settings.rs @@ -1,10 +1,11 @@  //! Configure a renderer.  pub use iced_graphics::Antialiasing; +pub use iced_native::Color;  /// The settings of a [`Renderer`].  ///  /// [`Renderer`]: ../struct.Renderer.html -#[derive(Debug, Clone, Copy, PartialEq, Eq)] +#[derive(Debug, Clone, Copy, PartialEq)]  pub struct Settings {      /// The bytes of the font that will be used by default.      /// @@ -13,6 +14,9 @@ pub struct Settings {      /// The antialiasing strategy that will be used for triangle primitives.      pub antialiasing: Option<Antialiasing>, + +    /// The color that will be used to clear the window surface. +    pub background_color: Color,  }  impl Default for Settings { @@ -20,6 +24,7 @@ impl Default for Settings {          Settings {              default_font: None,              antialiasing: None, +            background_color: Color::WHITE,          }      }  } diff --git a/glow/src/window/compositor.rs b/glow/src/window/compositor.rs index 2f504ff7..c93191b0 100644 --- a/glow/src/window/compositor.rs +++ b/glow/src/window/compositor.rs @@ -21,7 +21,12 @@ impl iced_graphics::window::GLCompositor for Compositor {      ) -> (Self, Self::Renderer) {          let gl = glow::Context::from_loader_function(loader_function); -        gl.clear_color(1.0, 1.0, 1.0, 1.0); +        gl.clear_color( +            settings.background_color.r, +            settings.background_color.g, +            settings.background_color.b, +            settings.background_color.a, +        );          // Enable auto-conversion from/to sRGB          gl.enable(glow::FRAMEBUFFER_SRGB); diff --git a/src/application.rs b/src/application.rs index 19cab7da..a529580e 100644 --- a/src/application.rs +++ b/src/application.rs @@ -195,6 +195,7 @@ pub trait Application: Sized {                  } else {                      None                  }, +                background_color: settings.background_color,                  ..crate::renderer::Settings::default()              }; diff --git a/src/settings.rs b/src/settings.rs index 01ad0ee0..1aa17571 100644 --- a/src/settings.rs +++ b/src/settings.rs @@ -1,8 +1,8 @@  //! Configure your application. -use crate::window; +use crate::{window, Color};  /// The settings of an application. -#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)] +#[derive(Debug, Clone, Copy, PartialEq)]  pub struct Settings<Flags> {      /// The window settings.      /// @@ -32,6 +32,29 @@ pub struct Settings<Flags> {      ///      /// [`Canvas`]: ../widget/canvas/struct.Canvas.html      pub antialiasing: bool, + +    /// The background color of the window. +    /// +    /// On supported backends, this makes it possible to have +    /// (semi-)transparent windows. +    /// +    /// By default, it is white. +    pub background_color: Color, +} + +impl<Flags> Default for Settings<Flags> +where +    Flags: Default, +{ +    fn default() -> Self { +        Self { +            flags: Default::default(), +            antialiasing: Default::default(), +            default_font: Default::default(), +            window: Default::default(), +            background_color: Color::WHITE, +        } +    }  }  impl<Flags> Settings<Flags> { @@ -46,6 +69,7 @@ impl<Flags> Settings<Flags> {              antialiasing: Default::default(),              default_font: Default::default(),              window: Default::default(), +            background_color: Color::WHITE,          }      }  } diff --git a/wgpu/src/settings.rs b/wgpu/src/settings.rs index 4655e64f..16294ba3 100644 --- a/wgpu/src/settings.rs +++ b/wgpu/src/settings.rs @@ -1,10 +1,11 @@  //! Configure a renderer.  pub use crate::Antialiasing; +pub use iced_native::Color;  /// The settings of a [`Renderer`].  ///  /// [`Renderer`]: ../struct.Renderer.html -#[derive(Debug, Clone, Copy, PartialEq, Eq)] +#[derive(Debug, Clone, Copy, PartialEq)]  pub struct Settings {      /// The output format of the [`Renderer`].      /// @@ -18,6 +19,9 @@ pub struct Settings {      /// The antialiasing strategy that will be used for triangle primitives.      pub antialiasing: Option<Antialiasing>, + +    /// The color that will be used to clear the window surface. +    pub background_color: Color,  }  impl Default for Settings { @@ -26,6 +30,7 @@ impl Default for Settings {              format: wgpu::TextureFormat::Bgra8UnormSrgb,              default_font: None,              antialiasing: None, +            background_color: Color::WHITE,          }      }  } diff --git a/wgpu/src/window/compositor.rs b/wgpu/src/window/compositor.rs index 8345679a..f85986f0 100644 --- a/wgpu/src/window/compositor.rs +++ b/wgpu/src/window/compositor.rs @@ -119,10 +119,10 @@ impl iced_graphics::window::Compositor for Compositor {                  load_op: wgpu::LoadOp::Clear,                  store_op: wgpu::StoreOp::Store,                  clear_color: wgpu::Color { -                    r: 1.0, -                    g: 1.0, -                    b: 1.0, -                    a: 1.0, +                    r: self.settings.background_color.r.into(), +                    g: self.settings.background_color.g.into(), +                    b: self.settings.background_color.b.into(), +                    a: self.settings.background_color.a.into(),                  },              }],              depth_stencil_attachment: None,  | 
