summaryrefslogtreecommitdiffstats
path: root/src/settings.rs
diff options
context:
space:
mode:
authorLibravatar Greg V <greg@unrelenting.technology>2020-05-31 16:53:57 +0300
committerLibravatar Greg V <greg@unrelenting.technology>2020-06-01 21:31:19 +0300
commita65d6a11cb82719a649110a8deaeb8f87e1c374b (patch)
treea18074ab0934028755038e6755ab37153718a5bf /src/settings.rs
parent05750bf1863f8a6d2b797c4c482cd38dc45d7aeb (diff)
downloadiced-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 'src/settings.rs')
-rw-r--r--src/settings.rs28
1 files changed, 26 insertions, 2 deletions
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,
}
}
}