summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-03-04 20:42:37 +0100
committerLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-03-04 20:42:37 +0100
commitf4a4845ddbdced81ae4ff60bfa19f0e602d84709 (patch)
treeb532017384eb9e43e57bf73be372aea0d55af652 /core
parentdb92e1c942154bee474fee5e2c187f8a52a1bb96 (diff)
downloadiced-f4a4845ddbdced81ae4ff60bfa19f0e602d84709.tar.gz
iced-f4a4845ddbdced81ae4ff60bfa19f0e602d84709.tar.bz2
iced-f4a4845ddbdced81ae4ff60bfa19f0e602d84709.zip
Simplify theming for `Button` widget
Diffstat (limited to 'core')
-rw-r--r--core/src/background.rs13
-rw-r--r--core/src/color.rs8
-rw-r--r--core/src/gradient.rs4
3 files changed, 23 insertions, 2 deletions
diff --git a/core/src/background.rs b/core/src/background.rs
index 347c52c0..2e28e560 100644
--- a/core/src/background.rs
+++ b/core/src/background.rs
@@ -11,6 +11,19 @@ pub enum Background {
// TODO: Add image variant
}
+impl Background {
+ /// Increases the translucency of the [`Background`]
+ /// by the given factor.
+ pub fn transparentize(self, factor: f32) -> Self {
+ match self {
+ Self::Color(color) => Self::Color(color.transparentize(factor)),
+ Self::Gradient(gradient) => {
+ Self::Gradient(gradient.transparentize(factor))
+ }
+ }
+ }
+}
+
impl From<Color> for Background {
fn from(color: Color) -> Self {
Background::Color(color)
diff --git a/core/src/color.rs b/core/src/color.rs
index b8db322f..6526e220 100644
--- a/core/src/color.rs
+++ b/core/src/color.rs
@@ -151,6 +151,14 @@ impl Color {
pub fn inverse(self) -> Color {
Color::new(1.0f32 - self.r, 1.0f32 - self.g, 1.0f32 - self.b, self.a)
}
+
+ /// Transparentizes the [`Color`] by the given factor.
+ pub fn transparentize(self, factor: f32) -> Color {
+ Self {
+ a: self.a * factor,
+ ..self
+ }
+ }
}
impl From<[f32; 3]> for Color {
diff --git a/core/src/gradient.rs b/core/src/gradient.rs
index 4711b044..ecf7830f 100644
--- a/core/src/gradient.rs
+++ b/core/src/gradient.rs
@@ -13,11 +13,11 @@ pub enum Gradient {
impl Gradient {
/// Adjust the opacity of the gradient by a multiplier applied to each color stop.
- pub fn mul_alpha(mut self, alpha_multiplier: f32) -> Self {
+ pub fn transparentize(mut self, factor: f32) -> Self {
match &mut self {
Gradient::Linear(linear) => {
for stop in linear.stops.iter_mut().flatten() {
- stop.color.a *= alpha_multiplier;
+ stop.color.a *= factor;
}
}
}