diff --git a/core/src/renderer/null.rs b/core/src/renderer/null.rs index 3c17265d..8c4b328a 100644 --- a/core/src/renderer/null.rs +++ b/core/src/renderer/null.rs @@ -45,6 +45,7 @@ impl text::Renderer for () { const ICON_FONT: Font = Font::DEFAULT; const CHECKMARK_ICON: char = '0'; const ARROW_DOWN_ICON: char = '0'; + const ICED_LOGO: char = '0'; fn default_font(&self) -> Self::Font { Font::default() diff --git a/core/src/text.rs b/core/src/text.rs index fdebd03a..eddc0532 100644 --- a/core/src/text.rs +++ b/core/src/text.rs @@ -312,6 +312,11 @@ pub trait Renderer: crate::Renderer { /// [`ICON_FONT`]: Self::ICON_FONT const ARROW_DOWN_ICON: char; + /// The 'char' representing the iced logo in the built-in ['ICON_FONT']. + /// + /// ['ICON_FONT']: Self::ICON_FONT + const ICED_LOGO: char; + /// Returns the default [`Self::Font`]. fn default_font(&self) -> Self::Font; diff --git a/graphics/fonts/Iced-Icons.ttf b/graphics/fonts/Iced-Icons.ttf index e3273141..494483b3 100644 Binary files a/graphics/fonts/Iced-Icons.ttf and b/graphics/fonts/Iced-Icons.ttf differ diff --git a/renderer/src/fallback.rs b/renderer/src/fallback.rs index b3d8f89f..907fe9b6 100644 --- a/renderer/src/fallback.rs +++ b/renderer/src/fallback.rs @@ -97,6 +97,7 @@ where const ICON_FONT: Self::Font = A::ICON_FONT; const CHECKMARK_ICON: char = A::CHECKMARK_ICON; const ARROW_DOWN_ICON: char = A::ARROW_DOWN_ICON; + const ICED_LOGO: char = A::ICED_LOGO; fn default_font(&self) -> Self::Font { delegate!(self, renderer, renderer.default_font()) diff --git a/tiny_skia/src/lib.rs b/tiny_skia/src/lib.rs index 725a0d74..c0bd78af 100644 --- a/tiny_skia/src/lib.rs +++ b/tiny_skia/src/lib.rs @@ -254,6 +254,7 @@ impl core::text::Renderer for Renderer { const ICON_FONT: Font = Font::with_name("Iced-Icons"); const CHECKMARK_ICON: char = '\u{f00c}'; const ARROW_DOWN_ICON: char = '\u{e800}'; + const ICED_LOGO: char = '\u{e801}'; fn default_font(&self) -> Self::Font { self.default_font diff --git a/wgpu/src/lib.rs b/wgpu/src/lib.rs index 977a3add..1726beac 100644 --- a/wgpu/src/lib.rs +++ b/wgpu/src/lib.rs @@ -721,6 +721,7 @@ impl core::text::Renderer for Renderer { const ICON_FONT: Font = Font::with_name("Iced-Icons"); const CHECKMARK_ICON: char = '\u{f00c}'; const ARROW_DOWN_ICON: char = '\u{e800}'; + const ICED_LOGO: char = '\u{e801}'; fn default_font(&self) -> Self::Font { self.default_font diff --git a/widget/src/helpers.rs b/widget/src/helpers.rs index 3ac126a7..7eea2016 100644 --- a/widget/src/helpers.rs +++ b/widget/src/helpers.rs @@ -1849,34 +1849,44 @@ where /// /// 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, ) -> Element<'a, Message, Theme, Renderer> where Message: 'a, - Renderer: core::Renderer - + core::text::Renderer - + core::svg::Renderer - + 'a, - Theme: text::Catalog + crate::svg::Catalog + 'a, + Renderer: core::Renderer + core::text::Renderer + 'a, + Theme: text::Catalog + container::Catalog + 'a, + ::Class<'a>: + From>, + ::Class<'a>: From>, { - use crate::core::{Alignment, Font}; - use crate::svg; - use std::sync::LazyLock; - - static LOGO: LazyLock = LazyLock::new(|| { - svg::Handle::from_memory(include_bytes!("../assets/iced-logo.svg")) - }); + use crate::core::border; + use crate::core::color; + use crate::core::gradient; + use crate::core::{Alignment, Color, Font, Radians}; let text_size = text_size.into(); row![ - svg(LOGO.clone()).width(text_size * 1.3), - text("iced") - .size(text_size) - .font(Font::MONOSPACE) - .shaping(text::Shaping::Advanced) + container( + text(Renderer::ICED_LOGO) + .line_height(1.0) + .size(text_size) + .font(Renderer::ICON_FONT) + .color(Color::WHITE) + ) + .padding(text_size * 0.15) + .style(move |_| container::Style { + background: Some( + gradient::Linear::new(Radians::PI / 4.0) + .add_stop(0.0, color!(0x0033ff)) + .add_stop(1.0, color!(0x1177ff)) + .into() + ), + border: border::rounded(border::radius(text_size * 0.4)), + ..container::Style::default() + }), + text("iced").size(text_size).font(Font::MONOSPACE) ] .spacing(text_size.0 / 3.0) .align_y(Alignment::Center)