diff options
Diffstat (limited to '')
| -rw-r--r-- | graphics/src/renderer/widget.rs (renamed from wgpu/src/renderer/widget.rs) | 8 | ||||
| -rw-r--r-- | graphics/src/renderer/widget/button.rs (renamed from wgpu/src/renderer/widget/button.rs) | 9 | ||||
| -rw-r--r-- | graphics/src/renderer/widget/checkbox.rs (renamed from wgpu/src/renderer/widget/checkbox.rs) | 13 | ||||
| -rw-r--r-- | graphics/src/renderer/widget/column.rs (renamed from glow/src/renderer/widget/column.rs) | 11 | ||||
| -rw-r--r-- | graphics/src/renderer/widget/container.rs (renamed from glow/src/renderer/widget/container.rs) | 9 | ||||
| -rw-r--r-- | graphics/src/renderer/widget/image.rs (renamed from wgpu/src/renderer/widget/image.rs) | 12 | ||||
| -rw-r--r-- | graphics/src/renderer/widget/pane_grid.rs (renamed from glow/src/renderer/widget/pane_grid.rs) | 15 | ||||
| -rw-r--r-- | graphics/src/renderer/widget/progress_bar.rs (renamed from glow/src/renderer/widget/progress_bar.rs) | 8 | ||||
| -rw-r--r-- | graphics/src/renderer/widget/radio.rs (renamed from glow/src/renderer/widget/radio.rs) | 7 | ||||
| -rw-r--r-- | graphics/src/renderer/widget/row.rs (renamed from wgpu/src/renderer/widget/row.rs) | 11 | ||||
| -rw-r--r-- | graphics/src/renderer/widget/scrollable.rs (renamed from glow/src/renderer/widget/scrollable.rs) | 11 | ||||
| -rw-r--r-- | graphics/src/renderer/widget/slider.rs (renamed from wgpu/src/renderer/widget/slider.rs) | 15 | ||||
| -rw-r--r-- | graphics/src/renderer/widget/space.rs | 13 | ||||
| -rw-r--r-- | graphics/src/renderer/widget/svg.rs (renamed from wgpu/src/renderer/widget/svg.rs) | 8 | ||||
| -rw-r--r-- | graphics/src/renderer/widget/text.rs (renamed from glow/src/renderer/widget/text.rs) | 8 | ||||
| -rw-r--r-- | graphics/src/renderer/widget/text_input.rs (renamed from wgpu/src/renderer/widget/text_input.rs) | 30 | 
16 files changed, 129 insertions, 59 deletions
| diff --git a/wgpu/src/renderer/widget.rs b/graphics/src/renderer/widget.rs index 37421fbe..b652fdcf 100644 --- a/wgpu/src/renderer/widget.rs +++ b/graphics/src/renderer/widget.rs @@ -2,6 +2,7 @@ mod button;  mod checkbox;  mod column;  mod container; +mod image;  mod pane_grid;  mod progress_bar;  mod radio; @@ -9,11 +10,6 @@ mod row;  mod scrollable;  mod slider;  mod space; +mod svg;  mod text;  mod text_input; - -#[cfg(feature = "svg")] -mod svg; - -#[cfg(feature = "image")] -mod image; diff --git a/wgpu/src/renderer/widget/button.rs b/graphics/src/renderer/widget/button.rs index eb225038..6ee60df4 100644 --- a/wgpu/src/renderer/widget/button.rs +++ b/graphics/src/renderer/widget/button.rs @@ -1,9 +1,14 @@ -use crate::{button::StyleSheet, defaults, Defaults, Primitive, Renderer}; +use crate::{ +    button::StyleSheet, defaults, Backend, Defaults, Primitive, Renderer, +};  use iced_native::{      mouse, Background, Color, Element, Layout, Point, Rectangle, Vector,  }; -impl iced_native::button::Renderer for Renderer { +impl<B> iced_native::button::Renderer for Renderer<B> +where +    B: Backend, +{      const DEFAULT_PADDING: u16 = 5;      type Style = Box<dyn StyleSheet>; diff --git a/wgpu/src/renderer/widget/checkbox.rs b/graphics/src/renderer/widget/checkbox.rs index 0340bf62..75168629 100644 --- a/wgpu/src/renderer/widget/checkbox.rs +++ b/graphics/src/renderer/widget/checkbox.rs @@ -1,9 +1,14 @@ -use crate::{checkbox::StyleSheet, Primitive, Renderer}; +use crate::backend::{self, Backend}; +use crate::checkbox::StyleSheet; +use crate::{Primitive, Renderer};  use iced_native::{      checkbox, mouse, HorizontalAlignment, Rectangle, VerticalAlignment,  }; -impl checkbox::Renderer for Renderer { +impl<B> checkbox::Renderer for Renderer<B> +where +    B: Backend + backend::Text, +{      type Style = Box<dyn StyleSheet>;      const DEFAULT_SIZE: u16 = 20; @@ -35,8 +40,8 @@ impl checkbox::Renderer for Renderer {              Primitive::Group {                  primitives: if is_checked {                      let check = Primitive::Text { -                        content: crate::text::CHECKMARK_ICON.to_string(), -                        font: crate::text::BUILTIN_ICONS, +                        content: B::CHECKMARK_ICON.to_string(), +                        font: B::ICON_FONT,                          size: bounds.height * 0.7,                          bounds: Rectangle {                              x: bounds.center_x(), diff --git a/glow/src/renderer/widget/column.rs b/graphics/src/renderer/widget/column.rs index b853276d..b70d2338 100644 --- a/glow/src/renderer/widget/column.rs +++ b/graphics/src/renderer/widget/column.rs @@ -1,7 +1,12 @@ -use crate::{Primitive, Renderer}; -use iced_native::{column, mouse, Element, Layout, Point}; +use crate::{Backend, Primitive, Renderer}; +use iced_native::column; +use iced_native::mouse; +use iced_native::{Element, Layout, Point}; -impl column::Renderer for Renderer { +impl<B> column::Renderer for Renderer<B> +where +    B: Backend, +{      fn draw<Message>(          &mut self,          defaults: &Self::Defaults, diff --git a/glow/src/renderer/widget/container.rs b/graphics/src/renderer/widget/container.rs index 30cc3f07..a1f6a211 100644 --- a/glow/src/renderer/widget/container.rs +++ b/graphics/src/renderer/widget/container.rs @@ -1,7 +1,12 @@ -use crate::{container, defaults, Defaults, Primitive, Renderer}; +use crate::container; +use crate::defaults::{self, Defaults}; +use crate::{Backend, Primitive, Renderer};  use iced_native::{Background, Color, Element, Layout, Point, Rectangle}; -impl iced_native::container::Renderer for Renderer { +impl<B> iced_native::container::Renderer for Renderer<B> +where +    B: Backend, +{      type Style = Box<dyn container::StyleSheet>;      fn draw<Message>( diff --git a/wgpu/src/renderer/widget/image.rs b/graphics/src/renderer/widget/image.rs index c4c04984..3092237f 100644 --- a/wgpu/src/renderer/widget/image.rs +++ b/graphics/src/renderer/widget/image.rs @@ -1,9 +1,15 @@ +use crate::backend::{self, Backend};  use crate::{Primitive, Renderer}; -use iced_native::{image, mouse, Layout}; +use iced_native::image; +use iced_native::mouse; +use iced_native::Layout; -impl image::Renderer for Renderer { +impl<B> image::Renderer for Renderer<B> +where +    B: Backend + backend::Image, +{      fn dimensions(&self, handle: &image::Handle) -> (u32, u32) { -        self.image_pipeline.dimensions(handle) +        self.backend().dimensions(handle)      }      fn draw( diff --git a/glow/src/renderer/widget/pane_grid.rs b/graphics/src/renderer/widget/pane_grid.rs index 2253e4af..3fa171f5 100644 --- a/glow/src/renderer/widget/pane_grid.rs +++ b/graphics/src/renderer/widget/pane_grid.rs @@ -1,11 +1,12 @@ -use crate::{Primitive, Renderer}; -use iced_native::{ -    mouse, -    pane_grid::{self, Axis, Pane}, -    Element, Layout, Point, Rectangle, Vector, -}; +use crate::{Backend, Primitive, Renderer}; +use iced_native::mouse; +use iced_native::pane_grid::{self, Axis, Pane}; +use iced_native::{Element, Layout, Point, Rectangle, Vector}; -impl pane_grid::Renderer for Renderer { +impl<B> pane_grid::Renderer for Renderer<B> +where +    B: Backend, +{      fn draw<Message>(          &mut self,          defaults: &Self::Defaults, diff --git a/glow/src/renderer/widget/progress_bar.rs b/graphics/src/renderer/widget/progress_bar.rs index 2baeeb14..d8a145a4 100644 --- a/glow/src/renderer/widget/progress_bar.rs +++ b/graphics/src/renderer/widget/progress_bar.rs @@ -1,7 +1,11 @@ -use crate::{progress_bar::StyleSheet, Primitive, Renderer}; +use crate::progress_bar::StyleSheet; +use crate::{Backend, Primitive, Renderer};  use iced_native::{mouse, progress_bar, Color, Rectangle}; -impl progress_bar::Renderer for Renderer { +impl<B> progress_bar::Renderer for Renderer<B> +where +    B: Backend, +{      type Style = Box<dyn StyleSheet>;      const DEFAULT_HEIGHT: u16 = 30; diff --git a/glow/src/renderer/widget/radio.rs b/graphics/src/renderer/widget/radio.rs index cee0deb6..4da2b60a 100644 --- a/glow/src/renderer/widget/radio.rs +++ b/graphics/src/renderer/widget/radio.rs @@ -1,10 +1,13 @@ -use crate::{radio::StyleSheet, Primitive, Renderer}; +use crate::{radio::StyleSheet, Backend, Primitive, Renderer};  use iced_native::{mouse, radio, Background, Color, Rectangle};  const SIZE: f32 = 28.0;  const DOT_SIZE: f32 = SIZE / 2.0; -impl radio::Renderer for Renderer { +impl<B> radio::Renderer for Renderer<B> +where +    B: Backend, +{      type Style = Box<dyn StyleSheet>;      const DEFAULT_SIZE: u16 = SIZE as u16; diff --git a/wgpu/src/renderer/widget/row.rs b/graphics/src/renderer/widget/row.rs index d0b7ef09..b0bb0d2e 100644 --- a/wgpu/src/renderer/widget/row.rs +++ b/graphics/src/renderer/widget/row.rs @@ -1,7 +1,12 @@ -use crate::{Primitive, Renderer}; -use iced_native::{mouse, row, Element, Layout, Point}; +use crate::{Backend, Primitive, Renderer}; +use iced_native::mouse; +use iced_native::row; +use iced_native::{Element, Layout, Point}; -impl row::Renderer for Renderer { +impl<B> row::Renderer for Renderer<B> +where +    B: Backend, +{      fn draw<Message>(          &mut self,          defaults: &Self::Defaults, diff --git a/glow/src/renderer/widget/scrollable.rs b/graphics/src/renderer/widget/scrollable.rs index 8a400b82..8db17bec 100644 --- a/glow/src/renderer/widget/scrollable.rs +++ b/graphics/src/renderer/widget/scrollable.rs @@ -1,10 +1,15 @@ -use crate::{Primitive, Renderer}; -use iced_native::{mouse, scrollable, Background, Color, Rectangle, Vector}; +use crate::{Backend, Primitive, Renderer}; +use iced_native::mouse; +use iced_native::scrollable; +use iced_native::{Background, Color, Rectangle, Vector};  const SCROLLBAR_WIDTH: u16 = 10;  const SCROLLBAR_MARGIN: u16 = 2; -impl scrollable::Renderer for Renderer { +impl<B> scrollable::Renderer for Renderer<B> +where +    B: Backend, +{      type Style = Box<dyn iced_style::scrollable::StyleSheet>;      fn scrollbar( diff --git a/wgpu/src/renderer/widget/slider.rs b/graphics/src/renderer/widget/slider.rs index 220feace..95c843d0 100644 --- a/wgpu/src/renderer/widget/slider.rs +++ b/graphics/src/renderer/widget/slider.rs @@ -1,12 +1,15 @@ -use crate::{ -    slider::{HandleShape, StyleSheet}, -    Primitive, Renderer, -}; -use iced_native::{mouse, slider, Background, Color, Point, Rectangle}; +use crate::slider::{HandleShape, StyleSheet}; +use crate::{Backend, Primitive, Renderer}; +use iced_native::mouse; +use iced_native::slider; +use iced_native::{Background, Color, Point, Rectangle};  const HANDLE_HEIGHT: f32 = 22.0; -impl slider::Renderer for Renderer { +impl<B> slider::Renderer for Renderer<B> +where +    B: Backend, +{      type Style = Box<dyn StyleSheet>;      fn height(&self) -> u32 { diff --git a/graphics/src/renderer/widget/space.rs b/graphics/src/renderer/widget/space.rs new file mode 100644 index 00000000..d0e82f8d --- /dev/null +++ b/graphics/src/renderer/widget/space.rs @@ -0,0 +1,13 @@ +use crate::{Backend, Primitive, Renderer}; +use iced_native::mouse; +use iced_native::space; +use iced_native::Rectangle; + +impl<B> space::Renderer for Renderer<B> +where +    B: Backend, +{ +    fn draw(&mut self, _bounds: Rectangle) -> Self::Output { +        (Primitive::None, mouse::Interaction::default()) +    } +} diff --git a/wgpu/src/renderer/widget/svg.rs b/graphics/src/renderer/widget/svg.rs index f6d6d0ba..4d80869e 100644 --- a/wgpu/src/renderer/widget/svg.rs +++ b/graphics/src/renderer/widget/svg.rs @@ -1,9 +1,13 @@ +use crate::backend::{self, Backend};  use crate::{Primitive, Renderer};  use iced_native::{mouse, svg, Layout}; -impl svg::Renderer for Renderer { +impl<B> svg::Renderer for Renderer<B> +where +    B: Backend + backend::Svg, +{      fn dimensions(&self, handle: &svg::Handle) -> (u32, u32) { -        self.image_pipeline.viewport_dimensions(handle) +        self.backend().viewport_dimensions(handle)      }      fn draw( diff --git a/glow/src/renderer/widget/text.rs b/graphics/src/renderer/widget/text.rs index 4605ed06..45cb1be2 100644 --- a/glow/src/renderer/widget/text.rs +++ b/graphics/src/renderer/widget/text.rs @@ -1,3 +1,4 @@ +use crate::backend::{self, Backend};  use crate::{Primitive, Renderer};  use iced_native::{      mouse, text, Color, Font, HorizontalAlignment, Rectangle, Size, @@ -6,7 +7,10 @@ use iced_native::{  use std::f32; -impl text::Renderer for Renderer { +impl<B> text::Renderer for Renderer<B> +where +    B: Backend + backend::Text, +{      type Font = Font;      const DEFAULT_SIZE: u16 = 20; @@ -18,7 +22,7 @@ impl text::Renderer for Renderer {          font: Font,          bounds: Size,      ) -> (f32, f32) { -        self.text_pipeline +        self.backend()              .measure(content, f32::from(size), font, bounds)      } diff --git a/wgpu/src/renderer/widget/text_input.rs b/graphics/src/renderer/widget/text_input.rs index 57be6692..33807b0f 100644 --- a/wgpu/src/renderer/widget/text_input.rs +++ b/graphics/src/renderer/widget/text_input.rs @@ -1,4 +1,6 @@ -use crate::{text_input::StyleSheet, Primitive, Renderer}; +use crate::backend::{self, Backend}; +use crate::text_input::StyleSheet; +use crate::{Primitive, Renderer};  use iced_native::{      mouse, @@ -8,7 +10,10 @@ use iced_native::{  };  use std::f32; -impl text_input::Renderer for Renderer { +impl<B> text_input::Renderer for Renderer<B> +where +    B: Backend + backend::Text, +{      type Style = Box<dyn StyleSheet>;      fn default_size(&self) -> u16 { @@ -17,17 +22,15 @@ impl text_input::Renderer for Renderer {      }      fn measure_value(&self, value: &str, size: u16, font: Font) -> f32 { -        let (mut width, _) = self.text_pipeline.measure( -            value, -            f32::from(size), -            font, -            Size::INFINITY, -        ); +        let backend = self.backend(); + +        let (mut width, _) = +            backend.measure(value, f32::from(size), font, Size::INFINITY);          let spaces_around = value.len() - value.trim().len();          if spaces_around > 0 { -            let space_width = self.text_pipeline.space_width(size as f32); +            let space_width = backend.space_width(size as f32);              width += spaces_around as f32 * space_width;          } @@ -241,14 +244,17 @@ impl text_input::Renderer for Renderer {      }  } -fn measure_cursor_and_scroll_offset( -    renderer: &Renderer, +fn measure_cursor_and_scroll_offset<B>( +    renderer: &Renderer<B>,      text_bounds: Rectangle,      value: &text_input::Value,      size: u16,      cursor_index: usize,      font: Font, -) -> (f32, f32) { +) -> (f32, f32) +where +    B: Backend + backend::Text, +{      use iced_native::text_input::Renderer;      let text_before_cursor = value.until(cursor_index).to_string(); | 
