diff options
author | 2020-05-31 16:53:57 +0300 | |
---|---|---|
committer | 2020-06-01 21:31:19 +0300 | |
commit | a65d6a11cb82719a649110a8deaeb8f87e1c374b (patch) | |
tree | a18074ab0934028755038e6755ab37153718a5bf /glow | |
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 'glow')
-rw-r--r-- | glow/src/settings.rs | 7 | ||||
-rw-r--r-- | glow/src/window/compositor.rs | 7 |
2 files changed, 12 insertions, 2 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); |