diff options
author | 2022-12-06 04:35:08 +0100 | |
---|---|---|
committer | 2022-12-06 04:36:00 +0100 | |
commit | 1220ce55bc882cc4fef891c8b2d0fdc22e18a015 (patch) | |
tree | 5b77a7be692dedd7e6203249a0b64278982f09e5 /examples | |
parent | c0ca1807d42b0ec58887df9926ff53a587104723 (diff) | |
download | iced-1220ce55bc882cc4fef891c8b2d0fdc22e18a015.tar.gz iced-1220ce55bc882cc4fef891c8b2d0fdc22e18a015.tar.bz2 iced-1220ce55bc882cc4fef891c8b2d0fdc22e18a015.zip |
Showcase color filtering in existing `svg` example
... and remove the `svg_style` example
Diffstat (limited to 'examples')
-rw-r--r-- | examples/svg/src/main.rs | 71 | ||||
-rw-r--r-- | examples/svg_style/Cargo.toml | 10 | ||||
-rw-r--r-- | examples/svg_style/resources/go-next-symbolic.svg | 1 | ||||
-rw-r--r-- | examples/svg_style/src/main.rs | 78 |
4 files changed, 54 insertions, 106 deletions
diff --git a/examples/svg/src/main.rs b/examples/svg/src/main.rs index 27d175da..4dc92416 100644 --- a/examples/svg/src/main.rs +++ b/examples/svg/src/main.rs @@ -1,39 +1,76 @@ -use iced::widget::{container, svg}; -use iced::{Element, Length, Sandbox, Settings}; +use iced::theme; +use iced::widget::{checkbox, column, container, svg}; +use iced::{color, Element, Length, Sandbox, Settings}; pub fn main() -> iced::Result { Tiger::run(Settings::default()) } -struct Tiger; +#[derive(Debug, Default)] +struct Tiger { + apply_color_filter: bool, +} + +#[derive(Debug, Clone, Copy)] +pub enum Message { + ToggleColorFilter(bool), +} impl Sandbox for Tiger { - type Message = (); + type Message = Message; fn new() -> Self { - Tiger + Tiger::default() } fn title(&self) -> String { String::from("SVG - Iced") } - fn update(&mut self, _message: ()) {} + fn update(&mut self, message: Self::Message) { + match message { + Message::ToggleColorFilter(apply_color_filter) => { + self.apply_color_filter = apply_color_filter; + } + } + } - fn view(&self) -> Element<()> { - let svg = svg(svg::Handle::from_path(format!( + fn view(&self) -> Element<Self::Message> { + let handle = svg::Handle::from_path(format!( "{}/resources/tiger.svg", env!("CARGO_MANIFEST_DIR") - ))) - .width(Length::Fill) - .height(Length::Fill); + )); + + let svg = svg(handle).width(Length::Fill).height(Length::Fill).style( + if self.apply_color_filter { + theme::Svg::custom_fn(|_theme| svg::Appearance { + color: Some(color!(0x0000ff)), + }) + } else { + theme::Svg::Default + }, + ); - container(svg) + let apply_color_filter = checkbox( + "Apply a color filter", + self.apply_color_filter, + Message::ToggleColorFilter, + ); + + container( + column![ + svg, + container(apply_color_filter).width(Length::Fill).center_x() + ] + .spacing(20) .width(Length::Fill) - .height(Length::Fill) - .padding(20) - .center_x() - .center_y() - .into() + .height(Length::Fill), + ) + .width(Length::Fill) + .height(Length::Fill) + .padding(20) + .center_x() + .center_y() + .into() } } diff --git a/examples/svg_style/Cargo.toml b/examples/svg_style/Cargo.toml deleted file mode 100644 index 9ecda7c4..00000000 --- a/examples/svg_style/Cargo.toml +++ /dev/null @@ -1,10 +0,0 @@ -[package] -name = "svg_style" -version = "0.1.0" -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -iced = { path = "../..", features = ["svg"] } -iced_style = { path = "../../style" }
\ No newline at end of file diff --git a/examples/svg_style/resources/go-next-symbolic.svg b/examples/svg_style/resources/go-next-symbolic.svg deleted file mode 100644 index 79c456b7..00000000 --- a/examples/svg_style/resources/go-next-symbolic.svg +++ /dev/null @@ -1 +0,0 @@ -<svg viewBox='0 0 16 16' xmlns='http://www.w3.org/2000/svg'><path color='#bebebe' d='M0 0h16v16H0z' fill='gray' fill-opacity='.01'/><path d='m7.94 1.94 6.062 6.063-6.062 6.063c-1.438 1.437-2.688-.063-1.625-1.125l4.937-4.938-4.937-4.937C5.502 2.253 6.752.753 7.94 1.94z' fill='#232323'/></svg> diff --git a/examples/svg_style/src/main.rs b/examples/svg_style/src/main.rs deleted file mode 100644 index 0a1fa039..00000000 --- a/examples/svg_style/src/main.rs +++ /dev/null @@ -1,78 +0,0 @@ -use iced::widget::{container, svg}; -use iced::{Color, Element, Length, Sandbox, Settings}; -use iced_style::svg::Appearance; -use iced_style::theme::{self, Theme}; - -pub fn main() -> iced::Result { - SvgStyleExample::run(Settings::default()) -} - -struct SvgStyleExample; - -impl Sandbox for SvgStyleExample { - type Message = (); - - fn new() -> Self { - SvgStyleExample - } - - fn theme(&self) -> Theme { - Theme::Light - } - - fn title(&self) -> String { - String::from("SVG - Iced") - } - - fn update(&mut self, _message: ()) {} - - fn view(&self) -> Element<()> { - let svg1: Element<_> = svg(svg::Handle::from_path(format!( - "{}/resources/go-next-symbolic.svg", - env!("CARGO_MANIFEST_DIR") - ))) - .width(Length::Fill) - .height(Length::Fill) - .into(); - - let svg2: Element<_> = svg(svg::Handle::from_path(format!( - "{}/resources/go-next-symbolic.svg", - env!("CARGO_MANIFEST_DIR") - ))) - .style(theme::Svg::custom_fn(|_theme| Appearance { - color: Some(Color { - r: 0.0, - g: 0.28627452, - b: 0.42745098, - a: 1.0, - }), - })) - .width(Length::Fill) - .height(Length::Fill) - .into(); - - let svg3: Element<_> = svg(svg::Handle::from_path(format!( - "{}/resources/go-next-symbolic.svg", - env!("CARGO_MANIFEST_DIR") - ))) - .style(theme::Svg::custom_fn(|_theme| Appearance { - color: Some(Color { - r: 0.5803922, - g: 0.92156863, - b: 0.92156863, - a: 1.0, - }), - })) - .width(Length::Fill) - .height(Length::Fill) - .into(); - - container(iced::widget::row!(svg1, svg2, svg3)) - .width(Length::Fill) - .height(Length::Fill) - .padding(20) - .center_x() - .center_y() - .into() - } -} |