diff options
author | 2024-03-08 00:59:33 +0100 | |
---|---|---|
committer | 2024-03-08 00:59:33 +0100 | |
commit | 5075d41623099f1091373f51b2bb7097f00e0738 (patch) | |
tree | a61aae3b680a9eedd8336fcef621159dfd253fa6 /examples | |
parent | 8a98d1e7974a7709fc2dfc59f08b05a05e537c1d (diff) | |
download | iced-5075d41623099f1091373f51b2bb7097f00e0738.tar.gz iced-5075d41623099f1091373f51b2bb7097f00e0738.tar.bz2 iced-5075d41623099f1091373f51b2bb7097f00e0738.zip |
Use generated palette as `Theme` in `color_palette` example
Diffstat (limited to 'examples')
-rw-r--r-- | examples/color_palette/src/main.rs | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/examples/color_palette/src/main.rs b/examples/color_palette/src/main.rs index a5fd46e0..4150c641 100644 --- a/examples/color_palette/src/main.rs +++ b/examples/color_palette/src/main.rs @@ -3,7 +3,7 @@ use iced::mouse; use iced::widget::canvas::{self, Canvas, Frame, Geometry, Path}; use iced::widget::{column, row, text, Slider}; use iced::{ - Color, Element, Length, Pixels, Point, Rectangle, Renderer, Sandbox, + Color, Element, Font, Length, Pixels, Point, Rectangle, Renderer, Sandbox, Settings, Size, Vector, }; use palette::{ @@ -15,6 +15,7 @@ use std::ops::RangeInclusive; pub fn main() -> iced::Result { ColorPalette::run(Settings { antialiasing: true, + default_font: Font::MONOSPACE, ..Settings::default() }) } @@ -87,6 +88,19 @@ impl Sandbox for ColorPalette { .spacing(10) .into() } + + fn theme(&self) -> iced::Theme { + iced::Theme::custom( + String::from("Custom"), + iced::theme::Palette { + background: self.theme.base, + primary: *self.theme.lower.first().unwrap(), + text: *self.theme.higher.last().unwrap(), + success: *self.theme.lower.last().unwrap(), + danger: *self.theme.higher.last().unwrap(), + }, + ) + } } #[derive(Debug)] @@ -150,7 +164,7 @@ impl Theme { .into() } - fn draw(&self, frame: &mut Frame) { + fn draw(&self, frame: &mut Frame, text_color: Color) { let pad = 20.0; let box_size = Size { @@ -169,6 +183,7 @@ impl Theme { horizontal_alignment: alignment::Horizontal::Center, vertical_alignment: alignment::Vertical::Top, size: Pixels(15.0), + color: text_color, ..canvas::Text::default() }; @@ -246,12 +261,14 @@ impl<Message> canvas::Program<Message> for Theme { &self, _state: &Self::State, renderer: &Renderer, - _theme: &iced::Theme, + theme: &iced::Theme, bounds: Rectangle, _cursor: mouse::Cursor, ) -> Vec<Geometry> { let theme = self.canvas_cache.draw(renderer, bounds.size(), |frame| { - self.draw(frame); + let palette = theme.extended_palette(); + + self.draw(frame, palette.background.base.text); }); vec![theme] @@ -308,7 +325,7 @@ impl<C: ColorSpace + Copy> ColorPicker<C> { slider(cr1, c1, move |v| C::new(v, c2, c3)), slider(cr2, c2, move |v| C::new(c1, v, c3)), slider(cr3, c3, move |v| C::new(c1, c2, v)), - text(color.to_string()).width(185).size(14), + text(color.to_string()).width(185).size(12), ] .spacing(10) .align_items(Alignment::Center) |