diff options
| author | 2020-05-31 16:53:57 +0300 | |
|---|---|---|
| committer | 2020-06-01 21:31:19 +0300 | |
| commit | a65d6a11cb82719a649110a8deaeb8f87e1c374b (patch) | |
| tree | a18074ab0934028755038e6755ab37153718a5bf /src | |
| parent | 05750bf1863f8a6d2b797c4c482cd38dc45d7aeb (diff) | |
| download | iced-a65d6a11cb82719a649110a8deaeb8f87e1c374b.tar.gz iced-a65d6a11cb82719a649110a8deaeb8f87e1c374b.tar.bz2 iced-a65d6a11cb82719a649110a8deaeb8f87e1c374b.zip | |
Add custom window background/clear color (incl. transparency) support, fixes #272
wgpu would currently ignore the alpha: https://github.com/gfx-rs/wgpu/issues/687
glow (and naively patched wgpu) requires premultiplied alpha, so if you don't
multiply the RGB by the A right now, the semi-transparent color would be wrong
(too bright).
winit with_transparent doesn't seem necessary.
Diffstat (limited to '')
| -rw-r--r-- | src/application.rs | 1 | ||||
| -rw-r--r-- | src/settings.rs | 28 | 
2 files changed, 27 insertions, 2 deletions
| 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,          }      }  } | 
