From 1305d3c00fabdf04af179d16135e4b5b1ff22740 Mon Sep 17 00:00:00 2001 From: edwloef Date: Fri, 25 Apr 2025 15:45:36 +0200 Subject: [PATCH] add iced logo to Iced-Icons.ttf --- core/src/renderer/null.rs | 1 + core/src/text.rs | 5 +++++ graphics/fonts/Iced-Icons.ttf | Bin 5108 -> 5296 bytes renderer/src/fallback.rs | 1 + tiny_skia/src/lib.rs | 1 + wgpu/src/lib.rs | 1 + widget/src/helpers.rs | 41 ++++++++++++++++++++++------------ 7 files changed, 36 insertions(+), 14 deletions(-) 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 e3273141c45fff98c2f411b421e2e3fd225668aa..b6ff8baa9b22c02661496256efcda7e3f7a4c6a5 100644 GIT binary patch delta 722 zcmYjPUr1A76hG&F?q0#U`4H}*bzVAEd_uaB*xg$$V zL`_)gh(e*!foDU-t3(GLgLU==&xNRyx`3yE+b@pDW2fAg%0zr0I2=psM$x;u0=x$s zjNO`ZtDmYk$sR!7Jz*r%4<0=nBNF{Y4MtL*HNZFFyf}P)a_UZY;_Iu-3v57w$5RPC ze)wagh}epPo)if6kGKLH1a3{G=jI#ogqTr7%~P3}PM_&I_QS}Q*5?f>5C-5BuzOlh zC(3s>mT>19niw)NvvXEjJdOt3$e%T4P9%)2GoA0S_YH`Jni>$}TicVRsQu&)xkL#( zeR=;gZ2IpE(?rDmE%OVX$Xci$t>lFbDUA-2 zi`p=`=J9LnVM~wSp=zq;@H;dIJGf2wdsrgSJg3`9-~+fsuiMK>$dwFfh2eh4{|;-@KcFLHGtxRL0%K)r~=&K?2C%0pu(A2kRTz zDFm!xU|{S3^23sI6AOOmKHd!Ee*t2zzUnD0#IgvqwApxi#sD^WDz6tQl=S`Ef`JZSsBE@dKeg(7}$X9VxX)ZgDglbP?g~1 z9>z>(pv^!Y2+Kg#x&V0~n`D5Yt^uUkfHWfm(+h?VJpcbQFhFPtX8s>g^$eRGm~?q3 z7xEw2d{&@@Ihqxy2dJKriIJHjCBHmRHzl)(DL)%1#t78U57q?=KmlOfF#%~7AO_J; Q-$7Xn_iye3sY3A`0HbkkrvLx| 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 ebc6cd64..347a4bb7 100644 --- a/widget/src/helpers.rs +++ b/widget/src/helpers.rs @@ -1836,7 +1836,6 @@ 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> @@ -1846,24 +1845,38 @@ where + core::text::Renderer + core::svg::Renderer + 'a, - Theme: text::Catalog + crate::svg::Catalog + '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::{ + Alignment, Color, Font, Radians, border, border::radius, color, + gradient::Linear, + }; 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( + Linear::new(Radians::PI / 4.0) + .add_stop(0.0, color!(0x3300ff)) + .add_stop(1.0, color!(0x00a3ff)) + .into() + ), + border: border::rounded(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)