summaryrefslogtreecommitdiffstats
path: root/widget/src
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-07-11 04:33:19 +0200
committerLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-07-11 04:33:19 +0200
commit5e6c9eeb7e6f9ee985257853a140c19ec7ca1de0 (patch)
treeef2cc74dd64df8df899105f4fa5c82431fa5a02d /widget/src
parent70f44a6e264f7307531935bf0fb9e33a5ebd81c1 (diff)
downloadiced-5e6c9eeb7e6f9ee985257853a140c19ec7ca1de0.tar.gz
iced-5e6c9eeb7e6f9ee985257853a140c19ec7ca1de0.tar.bz2
iced-5e6c9eeb7e6f9ee985257853a140c19ec7ca1de0.zip
Add `iced` widget helper to display the iced logo :comet:
Diffstat (limited to 'widget/src')
-rw-r--r--widget/src/helpers.rs35
-rw-r--r--widget/src/slider.rs2
-rw-r--r--widget/src/vertical_slider.rs2
3 files changed, 37 insertions, 2 deletions
diff --git a/widget/src/helpers.rs b/widget/src/helpers.rs
index 9056d191..d7631959 100644
--- a/widget/src/helpers.rs
+++ b/widget/src/helpers.rs
@@ -890,6 +890,41 @@ where
crate::Svg::new(handle)
}
+/// Creates an [`Element`] that displays the iced logo with the given `text_size`.
+///
+/// Useful for showing some love to your favorite GUI library in your "About" screen,
+/// for instance.
+#[cfg(feature = "svg")]
+pub fn iced<'a, Message, Theme, Renderer>(
+ text_size: impl Into<Pixels>,
+) -> Element<'a, Message, Theme, Renderer>
+where
+ Message: 'a,
+ Renderer: core::Renderer
+ + core::text::Renderer<Font = core::Font>
+ + core::svg::Renderer
+ + 'a,
+ Theme: text::Catalog + crate::svg::Catalog + 'a,
+{
+ use crate::core::{Alignment, Font};
+ use crate::svg;
+ use once_cell::sync::Lazy;
+
+ static LOGO: Lazy<svg::Handle> = Lazy::new(|| {
+ svg::Handle::from_memory(include_bytes!("../assets/iced-logo.svg"))
+ });
+
+ let text_size = text_size.into();
+
+ row![
+ svg(LOGO.clone()).width(text_size * 1.3),
+ text("iced").size(text_size).font(Font::MONOSPACE)
+ ]
+ .spacing(text_size.0 / 3.0)
+ .align_items(Alignment::Center)
+ .into()
+}
+
/// Creates a new [`Canvas`].
///
/// [`Canvas`]: crate::Canvas
diff --git a/widget/src/slider.rs b/widget/src/slider.rs
index a8f1d192..74e6f8d3 100644
--- a/widget/src/slider.rs
+++ b/widget/src/slider.rs
@@ -237,7 +237,7 @@ where
let steps = (percent * (end - start) / step).round();
let value = steps * step + start;
- T::from_f64(value)
+ T::from_f64(value.min(end))
};
new_value
diff --git a/widget/src/vertical_slider.rs b/widget/src/vertical_slider.rs
index defb442f..33c591f5 100644
--- a/widget/src/vertical_slider.rs
+++ b/widget/src/vertical_slider.rs
@@ -239,7 +239,7 @@ where
let steps = (percent * (end - start) / step).round();
let value = steps * step + start;
- T::from_f64(value)
+ T::from_f64(value.min(end))
};
new_value