diff options
author | 2021-10-18 15:19:04 +0700 | |
---|---|---|
committer | 2021-10-18 15:19:04 +0700 | |
commit | edea093350e1b576e2b7db50c525e7fa5c3bea9f (patch) | |
tree | bcc93c11a804d04e5842cef6c2088911fd4ef822 | |
parent | 54a9a232f8110364972a8eef966b7b7477573f4f (diff) | |
download | iced-edea093350e1b576e2b7db50c525e7fa5c3bea9f.tar.gz iced-edea093350e1b576e2b7db50c525e7fa5c3bea9f.tar.bz2 iced-edea093350e1b576e2b7db50c525e7fa5c3bea9f.zip |
Move `Defaults` from `iced_graphics` to `iced_native`
39 files changed, 166 insertions, 192 deletions
diff --git a/examples/custom_widget/src/main.rs b/examples/custom_widget/src/main.rs index 648e7295..c8188f10 100644 --- a/examples/custom_widget/src/main.rs +++ b/examples/custom_widget/src/main.rs @@ -9,7 +9,8 @@ mod circle { // Of course, you can choose to make the implementation renderer-agnostic, // if you wish to, by creating your own `Renderer` trait, which could be // implemented by `iced_wgpu` and other renderers. - use iced_graphics::{Backend, Defaults, Primitive, Renderer}; + use iced_graphics::renderer::{self, Renderer}; + use iced_graphics::Backend; use iced_native::{ layout, Element, Hasher, Layout, Length, Point, Rectangle, Size, Widget, }; @@ -53,7 +54,7 @@ mod circle { fn draw( &self, _renderer: &mut Renderer<B>, - _defaults: &Defaults, + _style: &renderer::Style, _layout: Layout<'_>, _cursor_position: Point, _viewport: &Rectangle, diff --git a/examples/geometry/src/main.rs b/examples/geometry/src/main.rs index 0745739a..de157267 100644 --- a/examples/geometry/src/main.rs +++ b/examples/geometry/src/main.rs @@ -10,13 +10,11 @@ mod rainbow { // Of course, you can choose to make the implementation renderer-agnostic, // if you wish to, by creating your own `Renderer` trait, which could be // implemented by `iced_wgpu` and other renderers. - use iced_graphics::{ - triangle::{Mesh2D, Vertex2D}, - Backend, Defaults, Primitive, Renderer, - }; + use iced_graphics::renderer::{self, Renderer}; + use iced_graphics::Backend; + use iced_native::{ - layout, mouse, Element, Hasher, Layout, Length, Point, Rectangle, Size, - Vector, Widget, + layout, Element, Hasher, Layout, Length, Point, Rectangle, Size, Widget, }; pub struct Rainbow; @@ -54,11 +52,12 @@ mod rainbow { fn draw( &self, _renderer: &mut Renderer<B>, - _defaults: &Defaults, + _style: &renderer::Style, _layout: Layout<'_>, _cursor_position: Point, _viewport: &Rectangle, ) { + // use iced_graphics::triangle::{Mesh2D, Vertex2D}; // let b = layout.bounds(); // // R O Y G B I V diff --git a/graphics/src/defaults.rs b/graphics/src/defaults.rs deleted file mode 100644 index 11718a87..00000000 --- a/graphics/src/defaults.rs +++ /dev/null @@ -1,32 +0,0 @@ -//! Use default styling attributes to inherit styles. -use iced_native::Color; - -/// Some default styling attributes. -#[derive(Debug, Clone, Copy)] -pub struct Defaults { - /// Text styling - pub text: Text, -} - -impl Default for Defaults { - fn default() -> Defaults { - Defaults { - text: Text::default(), - } - } -} - -/// Some default text styling attributes. -#[derive(Debug, Clone, Copy)] -pub struct Text { - /// The default color of text - pub color: Color, -} - -impl Default for Text { - fn default() -> Text { - Text { - color: Color::BLACK, - } - } -} diff --git a/graphics/src/lib.rs b/graphics/src/lib.rs index 9c113da6..dbd94e99 100644 --- a/graphics/src/lib.rs +++ b/graphics/src/lib.rs @@ -13,15 +13,14 @@ mod antialiasing; mod error; mod primitive; -mod renderer; mod transformation; mod viewport; pub mod backend; -pub mod defaults; pub mod font; pub mod layer; pub mod overlay; +pub mod renderer; pub mod triangle; pub mod widget; pub mod window; @@ -31,7 +30,6 @@ pub use widget::*; pub use antialiasing::Antialiasing; pub use backend::Backend; -pub use defaults::Defaults; pub use error::Error; pub use layer::Layer; pub use primitive::Primitive; diff --git a/graphics/src/renderer.rs b/graphics/src/renderer.rs index 7ed06151..8d623868 100644 --- a/graphics/src/renderer.rs +++ b/graphics/src/renderer.rs @@ -1,8 +1,10 @@ use crate::backend::{self, Backend}; -use crate::{Defaults, Primitive, Vector}; +use crate::{Primitive, Vector}; use iced_native::layout; use iced_native::renderer; -use iced_native::{Color, Element, Font, Rectangle}; +use iced_native::{Element, Font, Rectangle}; + +pub use iced_native::renderer::Style; /// A backend-agnostic renderer that supports all the built-in widgets. #[derive(Debug)] @@ -33,8 +35,6 @@ impl<B> iced_native::Renderer for Renderer<B> where B: Backend, { - type Defaults = Defaults; - fn layout<'a, Message>( &mut self, element: &Element<'a, Message, Self>, @@ -97,8 +97,8 @@ where self.primitives.push(Primitive::Text { content: text.content.to_string(), bounds: text.bounds, - size: text.size.unwrap_or(f32::from(self.backend.default_size())), - color: text.color.unwrap_or(Color::BLACK), + size: text.size, + color: text.color, font: text.font, horizontal_alignment: text.horizontal_alignment, vertical_alignment: text.vertical_alignment, diff --git a/graphics/src/widget/canvas.rs b/graphics/src/widget/canvas.rs index 7bf00ca5..3990c2b9 100644 --- a/graphics/src/widget/canvas.rs +++ b/graphics/src/widget/canvas.rs @@ -3,7 +3,9 @@ //! A [`Canvas`] widget can be used to draw different kinds of 2D shapes in a //! [`Frame`]. It can be used for animation, data visualization, game graphics, //! and more! -use crate::{Backend, Defaults, Renderer}; +use crate::renderer::{self, Renderer}; +use crate::Backend; + use iced_native::layout; use iced_native::{ Clipboard, Element, Hasher, Layout, Length, Point, Rectangle, Size, Widget, @@ -187,7 +189,7 @@ where fn draw( &self, _renderer: &mut Renderer<B>, - _defaults: &Defaults, + _style: &renderer::Style, _layout: Layout<'_>, _cursor_position: Point, _viewport: &Rectangle, diff --git a/graphics/src/widget/qr_code.rs b/graphics/src/widget/qr_code.rs index a809d99f..364b636b 100644 --- a/graphics/src/widget/qr_code.rs +++ b/graphics/src/widget/qr_code.rs @@ -1,10 +1,11 @@ //! Encode and display information in a QR code. use crate::canvas; -use crate::{Backend, Defaults, Renderer}; +use crate::renderer::{self, Renderer}; +use crate::Backend; +use iced_native::layout; use iced_native::{ - layout, Color, Element, Hasher, Layout, Length, Point, Rectangle, Size, - Widget, + Color, Element, Hasher, Layout, Length, Point, Rectangle, Size, Widget, }; use thiserror::Error; @@ -81,7 +82,7 @@ where fn draw( &self, _renderer: &mut Renderer<B>, - _defaults: &Defaults, + _style: &renderer::Style, _layout: Layout<'_>, _cursor_position: Point, _viewport: &Rectangle, diff --git a/native/src/element.rs b/native/src/element.rs index 35e1b4f4..3ecd8e26 100644 --- a/native/src/element.rs +++ b/native/src/element.rs @@ -1,6 +1,7 @@ use crate::event::{self, Event}; use crate::layout; use crate::overlay; +use crate::renderer; use crate::{ Clipboard, Color, Hasher, Layout, Length, Point, Rectangle, Widget, }; @@ -241,13 +242,13 @@ where pub fn draw( &self, renderer: &mut Renderer, - defaults: &Renderer::Defaults, + style: &renderer::Style, layout: Layout<'_>, cursor_position: Point, viewport: &Rectangle, ) { self.widget - .draw(renderer, defaults, layout, cursor_position, viewport) + .draw(renderer, style, layout, cursor_position, viewport) } /// Computes the _layout_ hash of the [`Element`]. @@ -336,13 +337,13 @@ where fn draw( &self, renderer: &mut Renderer, - defaults: &Renderer::Defaults, + style: &renderer::Style, layout: Layout<'_>, cursor_position: Point, viewport: &Rectangle, ) { self.widget - .draw(renderer, defaults, layout, cursor_position, viewport) + .draw(renderer, style, layout, cursor_position, viewport) } fn hash_layout(&self, state: &mut Hasher) { @@ -418,7 +419,7 @@ where fn draw( &self, _renderer: &mut Renderer, - _defaults: &Renderer::Defaults, + style: &renderer::Style, _layout: Layout<'_>, _cursor_position: Point, _viewport: &Rectangle, diff --git a/native/src/overlay.rs b/native/src/overlay.rs index 7054ee69..25b49adf 100644 --- a/native/src/overlay.rs +++ b/native/src/overlay.rs @@ -8,6 +8,7 @@ pub use menu::Menu; use crate::event::{self, Event}; use crate::layout; +use crate::renderer; use crate::{Clipboard, Hasher, Layout, Point, Size}; /// An interactive component that can be displayed on top of other widgets. @@ -32,7 +33,7 @@ where fn draw( &self, renderer: &mut Renderer, - defaults: &Renderer::Defaults, + style: &renderer::Style, layout: Layout<'_>, cursor_position: Point, ); diff --git a/native/src/overlay/element.rs b/native/src/overlay/element.rs index 081b62ce..bf3fb3f0 100644 --- a/native/src/overlay/element.rs +++ b/native/src/overlay/element.rs @@ -2,6 +2,7 @@ pub use crate::Overlay; use crate::event::{self, Event}; use crate::layout; +use crate::renderer; use crate::{Clipboard, Hasher, Layout, Point, Size, Vector}; /// A generic [`Overlay`]. @@ -71,12 +72,11 @@ where pub fn draw( &self, renderer: &mut Renderer, - defaults: &Renderer::Defaults, + style: &renderer::Style, layout: Layout<'_>, cursor_position: Point, ) { - self.overlay - .draw(renderer, defaults, layout, cursor_position) + self.overlay.draw(renderer, style, layout, cursor_position) } /// Computes the _layout_ hash of the [`Element`]. @@ -142,12 +142,11 @@ where fn draw( &self, renderer: &mut Renderer, - defaults: &Renderer::Defaults, + style: &renderer::Style, layout: Layout<'_>, cursor_position: Point, ) { - self.content - .draw(renderer, defaults, layout, cursor_position) + self.content.draw(renderer, style, layout, cursor_position) } fn hash_layout(&self, state: &mut Hasher, position: Point) { diff --git a/native/src/overlay/menu.rs b/native/src/overlay/menu.rs index c4f64f85..f2367ae7 100644 --- a/native/src/overlay/menu.rs +++ b/native/src/overlay/menu.rs @@ -4,6 +4,7 @@ use crate::event::{self, Event}; use crate::layout; use crate::mouse; use crate::overlay; +use crate::renderer; use crate::scrollable; use crate::text; use crate::touch; @@ -236,7 +237,7 @@ where fn draw( &self, renderer: &mut Renderer, - defaults: &Renderer::Defaults, + style: &renderer::Style, layout: Layout<'_>, cursor_position: Point, ) { @@ -380,7 +381,7 @@ where fn draw( &self, _renderer: &mut Renderer, - _defaults: &Renderer::Defaults, + _style: &renderer::Style, _layout: Layout<'_>, _cursor_position: Point, _viewport: &Rectangle, diff --git a/native/src/renderer.rs b/native/src/renderer.rs index 382edb61..e48c701d 100644 --- a/native/src/renderer.rs +++ b/native/src/renderer.rs @@ -34,11 +34,6 @@ use crate::{Background, Color, Element, Rectangle, Vector}; /// A component that can take the state of a user interface and produce an /// output for its users. pub trait Renderer: Sized { - /// The default styling attributes of the [`Renderer`]. - /// - /// This type can be leveraged to implement style inheritance. - type Defaults: Default; - /// Lays out the elements of a user interface. /// /// You should override this if you need to perform any operations before or @@ -71,3 +66,18 @@ pub struct Quad { pub border_width: f32, pub border_color: Color, } + +/// The styling attributes of a [`Renderer`]. +#[derive(Debug, Clone, Copy, PartialEq)] +pub struct Style { + /// The text color + pub text_color: Color, +} + +impl Default for Style { + fn default() -> Self { + Style { + text_color: Color::BLACK, + } + } +} diff --git a/native/src/renderer/null.rs b/native/src/renderer/null.rs index 960a5727..268248fd 100644 --- a/native/src/renderer/null.rs +++ b/native/src/renderer/null.rs @@ -5,7 +5,6 @@ use crate::pane_grid; use crate::progress_bar; use crate::radio; use crate::renderer::{self, Renderer}; -use crate::scrollable; use crate::slider; use crate::text; use crate::text_input; @@ -26,8 +25,6 @@ impl Null { } impl Renderer for Null { - type Defaults = (); - fn with_layer( &mut self, _bounds: Rectangle, diff --git a/native/src/renderer/text.rs b/native/src/renderer/text.rs index 5c189d89..9234c587 100644 --- a/native/src/renderer/text.rs +++ b/native/src/renderer/text.rs @@ -12,8 +12,8 @@ pub trait Text: Renderer { pub struct Section<'a, Font> { pub content: &'a str, pub bounds: Rectangle, - pub size: Option<f32>, - pub color: Option<Color>, + pub size: f32, + pub color: Color, pub font: Font, pub horizontal_alignment: alignment::Horizontal, pub vertical_alignment: alignment::Vertical, diff --git a/native/src/user_interface.rs b/native/src/user_interface.rs index eb57670d..2f76c084 100644 --- a/native/src/user_interface.rs +++ b/native/src/user_interface.rs @@ -1,6 +1,7 @@ use crate::event::{self, Event}; use crate::layout; use crate::overlay; +use crate::renderer; use crate::{Clipboard, Element, Layout, Point, Rectangle, Size, Vector}; use std::hash::Hasher; @@ -353,7 +354,7 @@ where |renderer| { overlay.draw( renderer, - &Renderer::Defaults::default(), + &renderer::Style::default(), Layout::new(&layer.layout), cursor_position, ); @@ -376,7 +377,7 @@ where self.root.widget.draw( renderer, - &Renderer::Defaults::default(), + &renderer::Style::default(), Layout::new(&self.base.layout), base_cursor, &viewport, @@ -384,7 +385,7 @@ where } else { self.root.widget.draw( renderer, - &Renderer::Defaults::default(), + &renderer::Style::default(), Layout::new(&self.base.layout), cursor_position, &viewport, diff --git a/native/src/widget.rs b/native/src/widget.rs index 01c5bed3..9a494771 100644 --- a/native/src/widget.rs +++ b/native/src/widget.rs @@ -81,6 +81,7 @@ pub use tooltip::Tooltip; use crate::event::{self, Event}; use crate::layout; use crate::overlay; +use crate::renderer; use crate::{Clipboard, Hasher, Layout, Length, Point, Rectangle}; /// A component that displays information and allows interaction. @@ -131,7 +132,7 @@ where fn draw( &self, renderer: &mut Renderer, - defaults: &Renderer::Defaults, + style: &renderer::Style, layout: Layout<'_>, cursor_position: Point, viewport: &Rectangle, diff --git a/native/src/widget/button.rs b/native/src/widget/button.rs index 1c7f80ef..2aeffd03 100644 --- a/native/src/widget/button.rs +++ b/native/src/widget/button.rs @@ -5,6 +5,7 @@ use crate::event::{self, Event}; use crate::layout; use crate::mouse; use crate::overlay; +use crate::renderer; use crate::touch; use crate::{ Clipboard, Element, Hasher, Layout, Length, Padding, Point, Rectangle, @@ -244,7 +245,7 @@ where fn draw( &self, renderer: &mut Renderer, - defaults: &Renderer::Defaults, + style: &renderer::Style, layout: Layout<'_>, cursor_position: Point, _viewport: &Rectangle, diff --git a/native/src/widget/checkbox.rs b/native/src/widget/checkbox.rs index 579e4ee3..52113322 100644 --- a/native/src/widget/checkbox.rs +++ b/native/src/widget/checkbox.rs @@ -1,15 +1,15 @@ //! Show toggle controls using checkboxes. use std::hash::Hash; -use crate::alignment::{self, Alignment}; use crate::event::{self, Event}; use crate::layout; use crate::mouse; +use crate::renderer; use crate::text; use crate::touch; use crate::{ - Clipboard, Color, Element, Hasher, Layout, Length, Point, Rectangle, Row, - Text, Widget, + Alignment, Clipboard, Color, Element, Hasher, Layout, Length, Point, + Rectangle, Row, Text, Widget, }; /// A box that can be checked. @@ -182,7 +182,7 @@ where fn draw( &self, renderer: &mut Renderer, - defaults: &Renderer::Defaults, + style: &renderer::Style, layout: Layout<'_>, cursor_position: Point, _viewport: &Rectangle, diff --git a/native/src/widget/column.rs b/native/src/widget/column.rs index 7cf6d345..e7ce0041 100644 --- a/native/src/widget/column.rs +++ b/native/src/widget/column.rs @@ -4,6 +4,7 @@ use std::hash::Hash; use crate::event::{self, Event}; use crate::layout; use crate::overlay; +use crate::renderer; use crate::{ Alignment, Clipboard, Element, Hasher, Layout, Length, Padding, Point, Rectangle, Widget, @@ -165,13 +166,13 @@ where fn draw( &self, renderer: &mut Renderer, - defaults: &Renderer::Defaults, + style: &renderer::Style, layout: Layout<'_>, cursor_position: Point, viewport: &Rectangle, ) { for (child, layout) in self.children.iter().zip(layout.children()) { - child.draw(renderer, defaults, layout, cursor_position, viewport); + child.draw(renderer, style, layout, cursor_position, viewport); } } diff --git a/native/src/widget/container.rs b/native/src/widget/container.rs index af40f2ab..92869873 100644 --- a/native/src/widget/container.rs +++ b/native/src/widget/container.rs @@ -5,6 +5,7 @@ use crate::alignment::{self, Alignment}; use crate::event::{self, Event}; use crate::layout; use crate::overlay; +use crate::renderer; use crate::{ Clipboard, Element, Hasher, Layout, Length, Padding, Point, Rectangle, Widget, @@ -175,14 +176,14 @@ where fn draw( &self, renderer: &mut Renderer, - defaults: &Renderer::Defaults, + style: &renderer::Style, layout: Layout<'_>, cursor_position: Point, viewport: &Rectangle, ) { self.content.draw( renderer, - defaults, + style, layout.children().next().unwrap(), cursor_position, viewport, diff --git a/native/src/widget/image.rs b/native/src/widget/image.rs index 1607a596..b6b8dc1f 100644 --- a/native/src/widget/image.rs +++ b/native/src/widget/image.rs @@ -3,6 +3,7 @@ pub mod viewer; pub use viewer::Viewer; use crate::layout; +use crate::renderer; use crate::{Element, Hasher, Layout, Length, Point, Rectangle, Size, Widget}; use std::{ @@ -92,7 +93,7 @@ where fn draw( &self, renderer: &mut Renderer, - _defaults: &Renderer::Defaults, + _style: &renderer::Style, layout: Layout<'_>, _cursor_position: Point, _viewport: &Rectangle, diff --git a/native/src/widget/image/viewer.rs b/native/src/widget/image/viewer.rs index d483ed61..63087f5f 100644 --- a/native/src/widget/image/viewer.rs +++ b/native/src/widget/image/viewer.rs @@ -3,6 +3,7 @@ use crate::event::{self, Event}; use crate::image; use crate::layout; use crate::mouse; +use crate::renderer; use crate::{ Clipboard, Element, Hasher, Layout, Length, Point, Rectangle, Size, Vector, Widget, @@ -283,7 +284,7 @@ where fn draw( &self, renderer: &mut Renderer, - _defaults: &Renderer::Defaults, + style: &renderer::Style, layout: Layout<'_>, cursor_position: Point, _viewport: &Rectangle, diff --git a/native/src/widget/pane_grid.rs b/native/src/widget/pane_grid.rs index b4a8cdb1..1e63fdeb 100644 --- a/native/src/widget/pane_grid.rs +++ b/native/src/widget/pane_grid.rs @@ -32,6 +32,7 @@ use crate::event::{self, Event}; use crate::layout; use crate::mouse; use crate::overlay; +use crate::renderer; use crate::touch; use crate::{ Clipboard, Element, Hasher, Layout, Length, Point, Rectangle, Size, Vector, @@ -475,7 +476,7 @@ where fn draw( &self, renderer: &mut Renderer, - defaults: &Renderer::Defaults, + style: &renderer::Style, layout: Layout<'_>, cursor_position: Point, viewport: &Rectangle, diff --git a/native/src/widget/pane_grid/content.rs b/native/src/widget/pane_grid/content.rs index e94955f7..22b3a310 100644 --- a/native/src/widget/pane_grid/content.rs +++ b/native/src/widget/pane_grid/content.rs @@ -3,6 +3,7 @@ use crate::event::{self, Event}; use crate::layout; use crate::overlay; use crate::pane_grid::{self, TitleBar}; +use crate::renderer; use crate::{Clipboard, Element, Hasher, Layout, Point, Rectangle, Size}; /// The content of a [`Pane`]. @@ -57,7 +58,7 @@ where pub fn draw( &self, renderer: &mut Renderer, - defaults: &Renderer::Defaults, + style: &renderer::Style, layout: Layout<'_>, cursor_position: Point, viewport: &Rectangle, diff --git a/native/src/widget/pane_grid/title_bar.rs b/native/src/widget/pane_grid/title_bar.rs index 9b0b7c78..ce9249d2 100644 --- a/native/src/widget/pane_grid/title_bar.rs +++ b/native/src/widget/pane_grid/title_bar.rs @@ -3,6 +3,7 @@ use crate::event::{self, Event}; use crate::layout; use crate::overlay; use crate::pane_grid; +use crate::renderer; use crate::{ Clipboard, Element, Hasher, Layout, Padding, Point, Rectangle, Size, }; @@ -85,7 +86,7 @@ where pub fn draw( &self, renderer: &mut Renderer, - defaults: &Renderer::Defaults, + style: &renderer::Style, layout: Layout<'_>, cursor_position: Point, viewport: &Rectangle, diff --git a/native/src/widget/pick_list.rs b/native/src/widget/pick_list.rs index 73b01b01..ed688a61 100644 --- a/native/src/widget/pick_list.rs +++ b/native/src/widget/pick_list.rs @@ -5,6 +5,7 @@ use crate::layout; use crate::mouse; use crate::overlay; use crate::overlay::menu::{self, Menu}; +use crate::renderer; use crate::text; use crate::touch; use crate::{ @@ -322,7 +323,7 @@ where fn draw( &self, renderer: &mut Renderer, - _defaults: &Renderer::Defaults, + style: &renderer::Style, layout: Layout<'_>, cursor_position: Point, _viewport: &Rectangle, diff --git a/native/src/widget/progress_bar.rs b/native/src/widget/progress_bar.rs index d8cf5376..98dd9989 100644 --- a/native/src/widget/progress_bar.rs +++ b/native/src/widget/progress_bar.rs @@ -1,7 +1,7 @@ //! Provide progress feedback to your users. -use crate::{ - layout, Element, Hasher, Layout, Length, Point, Rectangle, Size, Widget, -}; +use crate::layout; +use crate::renderer; +use crate::{Element, Hasher, Layout, Length, Point, Rectangle, Size, Widget}; use std::{hash::Hash, ops::RangeInclusive}; @@ -93,7 +93,7 @@ where fn draw( &self, renderer: &mut Renderer, - _defaults: &Renderer::Defaults, + style: &renderer::Style, layout: Layout<'_>, _cursor_position: Point, _viewport: &Rectangle, diff --git a/native/src/widget/radio.rs b/native/src/widget/radio.rs index c6955079..ba9bd9aa 100644 --- a/native/src/widget/radio.rs +++ b/native/src/widget/radio.rs @@ -1,15 +1,15 @@ //! Create choices using radio buttons. use std::hash::Hash; -use crate::alignment::{self, Alignment}; use crate::event::{self, Event}; use crate::layout; use crate::mouse; +use crate::renderer; use crate::text; use crate::touch; use crate::{ - Clipboard, Color, Element, Hasher, Layout, Length, Point, Rectangle, Row, - Text, Widget, + Alignment, Clipboard, Color, Element, Hasher, Layout, Length, Point, + Rectangle, Row, Text, Widget, }; /// A circular button representing a choice. @@ -194,7 +194,7 @@ where fn draw( &self, renderer: &mut Renderer, - defaults: &Renderer::Defaults, + style: &renderer::Style, layout: Layout<'_>, cursor_position: Point, _viewport: &Rectangle, diff --git a/native/src/widget/row.rs b/native/src/widget/row.rs index 7eb5ab55..af63c7da 100644 --- a/native/src/widget/row.rs +++ b/native/src/widget/row.rs @@ -2,6 +2,7 @@ use crate::event::{self, Event}; use crate::layout; use crate::overlay; +use crate::renderer; use crate::{ Alignment, Clipboard, Element, Hasher, Layout, Length, Padding, Point, Rectangle, Widget, @@ -164,13 +165,13 @@ where fn draw( &self, renderer: &mut Renderer, - defaults: &Renderer::Defaults, + style: &renderer::Style, layout: Layout<'_>, cursor_position: Point, viewport: &Rectangle, ) { for (child, layout) in self.children.iter().zip(layout.children()) { - child.draw(renderer, defaults, layout, cursor_position, viewport); + child.draw(renderer, style, layout, cursor_position, viewport); } } diff --git a/native/src/widget/rule.rs b/native/src/widget/rule.rs index 1fab77bc..24c4a51a 100644 --- a/native/src/widget/rule.rs +++ b/native/src/widget/rule.rs @@ -1,11 +1,10 @@ //! Display a horizontal or vertical rule for dividing content. +use crate::layout; +use crate::renderer; +use crate::{Element, Hasher, Layout, Length, Point, Rectangle, Size, Widget}; use std::hash::Hash; -use crate::{ - layout, Element, Hasher, Layout, Length, Point, Rectangle, Size, Widget, -}; - /// Display a horizontal or vertical rule for dividing content. #[derive(Debug, Copy, Clone)] pub struct Rule<Renderer: self::Renderer> { @@ -68,7 +67,7 @@ where fn draw( &self, renderer: &mut Renderer, - _defaults: &Renderer::Defaults, + style: &renderer::Style, layout: Layout<'_>, _cursor_position: Point, _viewport: &Rectangle, diff --git a/native/src/widget/scrollable.rs b/native/src/widget/scrollable.rs index 98357928..63da539f 100644 --- a/native/src/widget/scrollable.rs +++ b/native/src/widget/scrollable.rs @@ -425,7 +425,7 @@ where fn draw( &self, renderer: &mut Renderer, - defaults: &Renderer::Defaults, + style: &renderer::Style, layout: Layout<'_>, cursor_position: Point, _viewport: &Rectangle, @@ -452,7 +452,7 @@ where renderer.with_layer(bounds, Vector::new(0, offset), |renderer| { self.content.draw( renderer, - defaults, + style, content_layout, cursor_position, &Rectangle { @@ -502,7 +502,7 @@ where } else { self.content.draw( renderer, - defaults, + style, content_layout, cursor_position, &Rectangle { diff --git a/native/src/widget/slider.rs b/native/src/widget/slider.rs index bcf811fe..7bdb72af 100644 --- a/native/src/widget/slider.rs +++ b/native/src/widget/slider.rs @@ -4,12 +4,14 @@ use crate::event::{self, Event}; use crate::layout; use crate::mouse; +use crate::renderer; use crate::touch; use crate::{ Clipboard, Element, Hasher, Layout, Length, Point, Rectangle, Size, Widget, }; -use std::{hash::Hash, ops::RangeInclusive}; +use std::hash::Hash; +use std::ops::RangeInclusive; /// An horizontal bar and a handle that selects a single value from a range of /// values. @@ -246,7 +248,7 @@ where fn draw( &self, renderer: &mut Renderer, - _defaults: &Renderer::Defaults, + style: &renderer::Style, layout: Layout<'_>, cursor_position: Point, _viewport: &Rectangle, diff --git a/native/src/widget/space.rs b/native/src/widget/space.rs index 9a70dab1..1bf8cd68 100644 --- a/native/src/widget/space.rs +++ b/native/src/widget/space.rs @@ -1,9 +1,9 @@ //! Distribute content vertically. -use std::hash::Hash; +use crate::layout; +use crate::renderer; +use crate::{Element, Hasher, Layout, Length, Point, Rectangle, Size, Widget}; -use crate::{ - layout, Element, Hasher, Layout, Length, Point, Rectangle, Size, Widget, -}; +use std::hash::Hash; /// An amount of empty space. /// @@ -62,7 +62,7 @@ where fn draw( &self, renderer: &mut Renderer, - _defaults: &Renderer::Defaults, + style: &renderer::Style, layout: Layout<'_>, _cursor_position: Point, _viewport: &Rectangle, diff --git a/native/src/widget/svg.rs b/native/src/widget/svg.rs index 737dd8d4..cce560cb 100644 --- a/native/src/widget/svg.rs +++ b/native/src/widget/svg.rs @@ -1,12 +1,11 @@ //! Display vector graphics in your application. use crate::layout; +use crate::renderer; use crate::{Element, Hasher, Layout, Length, Point, Rectangle, Size, Widget}; -use std::{ - hash::{Hash, Hasher as _}, - path::PathBuf, - sync::Arc, -}; +use std::hash::{Hash, Hasher as _}; +use std::path::PathBuf; +use std::sync::Arc; /// A vector graphics image. /// @@ -90,7 +89,7 @@ where fn draw( &self, renderer: &mut Renderer, - _defaults: &Renderer::Defaults, + style: &renderer::Style, layout: Layout<'_>, _cursor_position: Point, _viewport: &Rectangle, diff --git a/native/src/widget/text.rs b/native/src/widget/text.rs index ea1ba7ac..a2438d9c 100644 --- a/native/src/widget/text.rs +++ b/native/src/widget/text.rs @@ -135,7 +135,7 @@ where fn draw( &self, renderer: &mut Renderer, - _defaults: &Renderer::Defaults, + style: &renderer::Style, layout: Layout<'_>, _cursor_position: Point, _viewport: &Rectangle, @@ -156,9 +156,9 @@ where renderer.fill_text(renderer::text::Section { content: &self.content, - size: self.size.map(f32::from), + size: f32::from(self.size.unwrap_or(renderer.default_size())), bounds: Rectangle { x, y, ..bounds }, - color: self.color, + color: self.color.unwrap_or(style.text_color), font: self.font, horizontal_alignment: self.horizontal_alignment, vertical_alignment: self.vertical_alignment, diff --git a/native/src/widget/text_input.rs b/native/src/widget/text_input.rs index fe95eb95..93af04d1 100644 --- a/native/src/widget/text_input.rs +++ b/native/src/widget/text_input.rs @@ -15,6 +15,7 @@ use crate::event::{self, Event}; use crate::keyboard; use crate::layout; use crate::mouse::{self, click}; +use crate::renderer; use crate::text; use crate::touch; use crate::{ @@ -158,54 +159,6 @@ where } } -impl<'a, Message, Renderer> TextInput<'a, Message, Renderer> -where - Renderer: self::Renderer, -{ - /// Draws the [`TextInput`] with the given [`Renderer`], overriding its - /// [`Value`] if provided. - pub fn draw( - &self, - renderer: &mut Renderer, - layout: Layout<'_>, - cursor_position: Point, - value: Option<&Value>, - ) { - // TODO - // let value = value.unwrap_or(&self.value); - // let bounds = layout.bounds(); - // let text_bounds = layout.children().next().unwrap().bounds(); - - // if self.is_secure { - // self::Renderer::draw( - // renderer, - // bounds, - // text_bounds, - // cursor_position, - // self.font, - // self.size.unwrap_or(renderer.default_size()), - // &self.placeholder, - // &value.secure(), - // &self.state, - // &self.style, - // ) - // } else { - // self::Renderer::draw( - // renderer, - // bounds, - // text_bounds, - // cursor_position, - // self.font, - // self.size.unwrap_or(renderer.default_size()), - // &self.placeholder, - // value, - // &self.state, - // &self.style, - // ) - // } - } -} - impl<'a, Message, Renderer> Widget<Message, Renderer> for TextInput<'a, Message, Renderer> where @@ -627,12 +580,44 @@ where fn draw( &self, renderer: &mut Renderer, - _defaults: &Renderer::Defaults, + _style: &renderer::Style, layout: Layout<'_>, cursor_position: Point, _viewport: &Rectangle, ) { - self.draw(renderer, layout, cursor_position, None) + + // TODO + // let value = value.unwrap_or(&self.value); + // let bounds = layout.bounds(); + // let text_bounds = layout.children().next().unwrap().bounds(); + + // if self.is_secure { + // self::Renderer::draw( + // renderer, + // bounds, + // text_bounds, + // cursor_position, + // self.font, + // self.size.unwrap_or(renderer.default_size()), + // &self.placeholder, + // &value.secure(), + // &self.state, + // &self.style, + // ) + // } else { + // self::Renderer::draw( + // renderer, + // bounds, + // text_bounds, + // cursor_position, + // self.font, + // self.size.unwrap_or(renderer.default_size()), + // &self.placeholder, + // value, + // &self.state, + // &self.style, + // ) + // } } fn hash_layout(&self, state: &mut Hasher) { diff --git a/native/src/widget/toggler.rs b/native/src/widget/toggler.rs index 4a1f1f5d..6c7fa97b 100644 --- a/native/src/widget/toggler.rs +++ b/native/src/widget/toggler.rs @@ -5,6 +5,7 @@ use crate::alignment; use crate::event; use crate::layout; use crate::mouse; +use crate::renderer; use crate::text; use crate::{ Alignment, Clipboard, Element, Event, Hasher, Layout, Length, Point, @@ -185,7 +186,7 @@ where fn draw( &self, renderer: &mut Renderer, - defaults: &Renderer::Defaults, + style: &renderer::Style, layout: Layout<'_>, cursor_position: Point, _viewport: &Rectangle, diff --git a/native/src/widget/tooltip.rs b/native/src/widget/tooltip.rs index 83d04675..496cd41e 100644 --- a/native/src/widget/tooltip.rs +++ b/native/src/widget/tooltip.rs @@ -3,12 +3,12 @@ use std::hash::Hash; use iced_core::Rectangle; +use crate::event; +use crate::layout; +use crate::renderer; use crate::widget::container; use crate::widget::text::{self, Text}; -use crate::{ - event, layout, Clipboard, Element, Event, Hasher, Layout, Length, Point, - Widget, -}; +use crate::{Clipboard, Element, Event, Hasher, Layout, Length, Point, Widget}; /// An element to display a widget over another. #[allow(missing_debug_implementations)] @@ -137,7 +137,7 @@ where fn draw( &self, _renderer: &mut Renderer, - _defaults: &Renderer::Defaults, + style: &renderer::Style, _layout: Layout<'_>, _cursor_position: Point, _viewport: &Rectangle, diff --git a/wgpu/src/lib.rs b/wgpu/src/lib.rs index e868a655..ed99b126 100644 --- a/wgpu/src/lib.rs +++ b/wgpu/src/lib.rs @@ -36,9 +36,7 @@ mod backend; mod quad; mod text; -pub use iced_graphics::{ - Antialiasing, Color, Defaults, Error, Primitive, Viewport, -}; +pub use iced_graphics::{Antialiasing, Color, Error, Primitive, Viewport}; pub use wgpu; pub use backend::Backend; |