diff options
Diffstat (limited to 'glow')
| -rw-r--r-- | glow/src/backend.rs | 19 | ||||
| -rw-r--r-- | glow/src/lib.rs | 4 | ||||
| -rw-r--r-- | glow/src/widget.rs | 9 | ||||
| -rw-r--r-- | glow/src/widget/button.rs | 5 | ||||
| -rw-r--r-- | glow/src/widget/checkbox.rs | 3 | ||||
| -rw-r--r-- | glow/src/widget/container.rs | 3 | ||||
| -rw-r--r-- | glow/src/widget/pane_grid.rs | 7 | ||||
| -rw-r--r-- | glow/src/widget/pick_list.rs | 4 | ||||
| -rw-r--r-- | glow/src/widget/progress_bar.rs | 9 | ||||
| -rw-r--r-- | glow/src/widget/radio.rs | 2 | ||||
| -rw-r--r-- | glow/src/widget/rule.rs | 9 | ||||
| -rw-r--r-- | glow/src/widget/scrollable.rs | 4 | ||||
| -rw-r--r-- | glow/src/widget/slider.rs | 10 | ||||
| -rw-r--r-- | glow/src/widget/text_input.rs | 5 | ||||
| -rw-r--r-- | glow/src/widget/toggler.rs | 3 | ||||
| -rw-r--r-- | glow/src/widget/tooltip.rs | 4 | ||||
| -rw-r--r-- | glow/src/window/compositor.rs | 10 | 
17 files changed, 48 insertions, 62 deletions
diff --git a/glow/src/backend.rs b/glow/src/backend.rs index 9a9457cf..5ab7f922 100644 --- a/glow/src/backend.rs +++ b/glow/src/backend.rs @@ -5,10 +5,8 @@ use crate::{Settings, Transformation, Viewport};  use iced_graphics::backend;  use iced_graphics::font; -use iced_graphics::Layer; -use iced_graphics::Primitive; +use iced_graphics::{Layer, Primitive};  use iced_native::alignment; -use iced_native::mouse;  use iced_native::{Font, Size};  /// A [`glow`] graphics backend for [`iced`]. @@ -47,18 +45,18 @@ impl Backend {      ///      /// The text provided as overlay will be rendered on top of the primitives.      /// This is useful for rendering debug information. -    pub fn draw<T: AsRef<str>>( +    pub fn present<T: AsRef<str>>(          &mut self,          gl: &glow::Context, +        primitives: &[Primitive],          viewport: &Viewport, -        (primitive, mouse_interaction): &(Primitive, mouse::Interaction),          overlay_text: &[T], -    ) -> mouse::Interaction { +    ) {          let viewport_size = viewport.physical_size();          let scale_factor = viewport.scale_factor() as f32;          let projection = viewport.projection(); -        let mut layers = Layer::generate(primitive, viewport); +        let mut layers = Layer::generate(primitives, viewport);          layers.push(Layer::overlay(overlay_text, viewport));          for layer in layers { @@ -70,8 +68,6 @@ impl Backend {                  viewport_size.height,              );          } - -        *mouse_interaction      }      fn flush( @@ -83,6 +79,11 @@ impl Backend {          target_height: u32,      ) {          let mut bounds = (layer.bounds * scale_factor).snap(); + +        if bounds.width < 1 || bounds.height < 1 { +            return; +        } +          bounds.height = bounds.height.min(target_height);          if !layer.quads.is_empty() { diff --git a/glow/src/lib.rs b/glow/src/lib.rs index 418f7e3d..c531169b 100644 --- a/glow/src/lib.rs +++ b/glow/src/lib.rs @@ -4,14 +4,14 @@  //!  //! [`glow`]: https://github.com/grovesNL/glow  //! [`iced_native`]: https://github.com/hecrj/iced/tree/master/native -//#![deny(missing_docs)] +#![deny(missing_docs)]  #![deny(missing_debug_implementations)]  #![deny(unused_results)]  #![forbid(rust_2018_idioms)]  #![cfg_attr(docsrs, feature(doc_cfg))]  mod backend; -pub mod program; +mod program;  mod quad;  mod text;  mod triangle; diff --git a/glow/src/widget.rs b/glow/src/widget.rs index a77511e8..ee2810f9 100644 --- a/glow/src/widget.rs +++ b/glow/src/widget.rs @@ -66,13 +66,14 @@ pub mod qr_code;  #[doc(no_inline)]  pub use qr_code::QRCode; -pub use iced_native::{Image, Space}; +pub use iced_native::widget::{Image, Space};  /// A container that distributes its contents vertically. -pub type Column<'a, Message> = iced_native::Column<'a, Message, Renderer>; +pub type Column<'a, Message> = +    iced_native::widget::Column<'a, Message, Renderer>;  /// A container that distributes its contents horizontally. -pub type Row<'a, Message> = iced_native::Row<'a, Message, Renderer>; +pub type Row<'a, Message> = iced_native::widget::Row<'a, Message, Renderer>;  /// A paragraph of text. -pub type Text = iced_native::Text<Renderer>; +pub type Text = iced_native::widget::Text<Renderer>; diff --git a/glow/src/widget/button.rs b/glow/src/widget/button.rs index fc729cd5..f11ff25e 100644 --- a/glow/src/widget/button.rs +++ b/glow/src/widget/button.rs @@ -4,9 +4,10 @@  use crate::Renderer;  pub use iced_graphics::button::{Style, StyleSheet}; -pub use iced_native::button::State; +pub use iced_native::widget::button::State;  /// A widget that produces a message when clicked.  ///  /// This is an alias of an `iced_native` button with an `iced_wgpu::Renderer`. -pub type Button<'a, Message> = iced_native::Button<'a, Message, Renderer>; +pub type Button<'a, Message> = +    iced_native::widget::Button<'a, Message, Renderer>; diff --git a/glow/src/widget/checkbox.rs b/glow/src/widget/checkbox.rs index d27d77cc..76d572d9 100644 --- a/glow/src/widget/checkbox.rs +++ b/glow/src/widget/checkbox.rs @@ -6,4 +6,5 @@ pub use iced_graphics::checkbox::{Style, StyleSheet};  /// A box that can be checked.  ///  /// This is an alias of an `iced_native` checkbox with an `iced_wgpu::Renderer`. -pub type Checkbox<Message> = iced_native::Checkbox<Message, Renderer>; +pub type Checkbox<'a, Message> = +    iced_native::widget::Checkbox<'a, Message, Renderer>; diff --git a/glow/src/widget/container.rs b/glow/src/widget/container.rs index bc26cef2..c16db50d 100644 --- a/glow/src/widget/container.rs +++ b/glow/src/widget/container.rs @@ -7,4 +7,5 @@ pub use iced_graphics::container::{Style, StyleSheet};  ///  /// This is an alias of an `iced_native` container with a default  /// `Renderer`. -pub type Container<'a, Message> = iced_native::Container<'a, Message, Renderer>; +pub type Container<'a, Message> = +    iced_native::widget::Container<'a, Message, Renderer>; diff --git a/glow/src/widget/pane_grid.rs b/glow/src/widget/pane_grid.rs index fc36862c..3c47acf0 100644 --- a/glow/src/widget/pane_grid.rs +++ b/glow/src/widget/pane_grid.rs @@ -20,12 +20,13 @@ pub use iced_graphics::pane_grid::{  /// [](https://gfycat.com/mixedflatjellyfish)  ///  /// This is an alias of an `iced_native` pane grid with an `iced_wgpu::Renderer`. -pub type PaneGrid<'a, Message> = iced_native::PaneGrid<'a, Message, Renderer>; +pub type PaneGrid<'a, Message> = +    iced_native::widget::PaneGrid<'a, Message, Renderer>;  /// The content of a [`Pane`].  pub type Content<'a, Message> = -    iced_native::pane_grid::Content<'a, Message, Renderer>; +    iced_native::widget::pane_grid::Content<'a, Message, Renderer>;  /// The title bar of a [`Pane`].  pub type TitleBar<'a, Message> = -    iced_native::pane_grid::TitleBar<'a, Message, Renderer>; +    iced_native::widget::pane_grid::TitleBar<'a, Message, Renderer>; diff --git a/glow/src/widget/pick_list.rs b/glow/src/widget/pick_list.rs index fccc68c9..4d93be68 100644 --- a/glow/src/widget/pick_list.rs +++ b/glow/src/widget/pick_list.rs @@ -1,9 +1,9 @@  //! Display a dropdown list of selectable values. -pub use iced_native::pick_list::State; +pub use iced_native::widget::pick_list::State;  pub use iced_graphics::overlay::menu::Style as Menu;  pub use iced_graphics::pick_list::{Style, StyleSheet};  /// A widget allowing the selection of a single value from a list of options.  pub type PickList<'a, T, Message> = -    iced_native::PickList<'a, T, Message, crate::Renderer>; +    iced_native::widget::PickList<'a, T, Message, crate::Renderer>; diff --git a/glow/src/widget/progress_bar.rs b/glow/src/widget/progress_bar.rs index 45a25d00..413e6fb7 100644 --- a/glow/src/widget/progress_bar.rs +++ b/glow/src/widget/progress_bar.rs @@ -2,12 +2,5 @@  //!  //! A [`ProgressBar`] has a range of possible values and a current value,  //! as well as a length, height and style. -use crate::Renderer; -pub use iced_graphics::progress_bar::{Style, StyleSheet}; - -/// A bar that displays progress. -/// -/// This is an alias of an `iced_native` progress bar with an -/// `iced_wgpu::Renderer`. -pub type ProgressBar = iced_native::ProgressBar<Renderer>; +pub use iced_graphics::progress_bar::*; diff --git a/glow/src/widget/radio.rs b/glow/src/widget/radio.rs index 0b843d1f..9ef1d7a5 100644 --- a/glow/src/widget/radio.rs +++ b/glow/src/widget/radio.rs @@ -7,4 +7,4 @@ pub use iced_graphics::radio::{Style, StyleSheet};  ///  /// This is an alias of an `iced_native` radio button with an  /// `iced_wgpu::Renderer`. -pub type Radio<Message> = iced_native::Radio<Message, Renderer>; +pub type Radio<'a, Message> = iced_native::widget::Radio<'a, Message, Renderer>; diff --git a/glow/src/widget/rule.rs b/glow/src/widget/rule.rs index faa2be86..40281773 100644 --- a/glow/src/widget/rule.rs +++ b/glow/src/widget/rule.rs @@ -1,10 +1,3 @@  //! Display a horizontal or vertical rule for dividing content. -use crate::Renderer; - -pub use iced_graphics::rule::{FillMode, Style, StyleSheet}; - -/// Display a horizontal or vertical rule for dividing content. -/// -/// This is an alias of an `iced_native` rule with an `iced_glow::Renderer`. -pub type Rule = iced_native::Rule<Renderer>; +pub use iced_graphics::rule::*; diff --git a/glow/src/widget/scrollable.rs b/glow/src/widget/scrollable.rs index fabb4318..d5635ec5 100644 --- a/glow/src/widget/scrollable.rs +++ b/glow/src/widget/scrollable.rs @@ -2,7 +2,7 @@  use crate::Renderer;  pub use iced_graphics::scrollable::{Scrollbar, Scroller, StyleSheet}; -pub use iced_native::scrollable::State; +pub use iced_native::widget::scrollable::State;  /// A widget that can vertically display an infinite amount of content  /// with a scrollbar. @@ -10,4 +10,4 @@ pub use iced_native::scrollable::State;  /// This is an alias of an `iced_native` scrollable with a default  /// `Renderer`.  pub type Scrollable<'a, Message> = -    iced_native::Scrollable<'a, Message, Renderer>; +    iced_native::widget::Scrollable<'a, Message, Renderer>; diff --git a/glow/src/widget/slider.rs b/glow/src/widget/slider.rs index 9a269858..2fb3d5d9 100644 --- a/glow/src/widget/slider.rs +++ b/glow/src/widget/slider.rs @@ -1,13 +1,5 @@  //! Display an interactive selector of a single value from a range of values.  //!  //! A [`Slider`] has some local [`State`]. -use crate::Renderer; -  pub use iced_graphics::slider::{Handle, HandleShape, Style, StyleSheet}; -pub use iced_native::slider::State; - -/// An horizontal bar and a handle that selects a single value from a range of -/// values. -/// -/// This is an alias of an `iced_native` slider with an `iced_wgpu::Renderer`. -pub type Slider<'a, T, Message> = iced_native::Slider<'a, T, Message, Renderer>; +pub use iced_native::widget::slider::{Slider, State}; diff --git a/glow/src/widget/text_input.rs b/glow/src/widget/text_input.rs index db18b1cc..5560e3e0 100644 --- a/glow/src/widget/text_input.rs +++ b/glow/src/widget/text_input.rs @@ -4,9 +4,10 @@  use crate::Renderer;  pub use iced_graphics::text_input::{Style, StyleSheet}; -pub use iced_native::text_input::State; +pub use iced_native::widget::text_input::State;  /// A field that can be filled with text.  ///  /// This is an alias of an `iced_native` text input with an `iced_wgpu::Renderer`. -pub type TextInput<'a, Message> = iced_native::TextInput<'a, Message, Renderer>; +pub type TextInput<'a, Message> = +    iced_native::widget::TextInput<'a, Message, Renderer>; diff --git a/glow/src/widget/toggler.rs b/glow/src/widget/toggler.rs index 1cd8711b..40379025 100644 --- a/glow/src/widget/toggler.rs +++ b/glow/src/widget/toggler.rs @@ -6,4 +6,5 @@ pub use iced_graphics::toggler::{Style, StyleSheet};  /// A toggler that can be toggled.  ///  /// This is an alias of an `iced_native` checkbox with an `iced_wgpu::Renderer`. -pub type Toggler<Message> = iced_native::Toggler<Message, Renderer>; +pub type Toggler<'a, Message> = +    iced_native::widget::Toggler<'a, Message, Renderer>; diff --git a/glow/src/widget/tooltip.rs b/glow/src/widget/tooltip.rs index 89ab3a15..c6af3903 100644 --- a/glow/src/widget/tooltip.rs +++ b/glow/src/widget/tooltip.rs @@ -1,6 +1,6 @@  //! Display a widget over another.  /// A widget allowing the selection of a single value from a list of options.  pub type Tooltip<'a, Message> = -    iced_native::Tooltip<'a, Message, crate::Renderer>; +    iced_native::widget::Tooltip<'a, Message, crate::Renderer>; -pub use iced_native::tooltip::Position; +pub use iced_native::widget::tooltip::Position; diff --git a/glow/src/window/compositor.rs b/glow/src/window/compositor.rs index b8157f78..a85a4560 100644 --- a/glow/src/window/compositor.rs +++ b/glow/src/window/compositor.rs @@ -3,7 +3,6 @@ use crate::{Backend, Color, Error, Renderer, Settings, Viewport};  use core::ffi::c_void;  use glow::HasContext;  use iced_graphics::{Antialiasing, Size}; -use iced_native::mouse;  /// A window graphics backend for iced powered by `glow`.  #[allow(missing_debug_implementations)] @@ -59,14 +58,13 @@ impl iced_graphics::window::GLCompositor for Compositor {          }      } -    fn draw<T: AsRef<str>>( +    fn present<T: AsRef<str>>(          &mut self,          renderer: &mut Self::Renderer,          viewport: &Viewport,          color: Color, -        output: &<Self::Renderer as iced_native::Renderer>::Output,          overlay: &[T], -    ) -> mouse::Interaction { +    ) {          let gl = &self.gl;          let [r, g, b, a] = color.into_linear(); @@ -76,6 +74,8 @@ impl iced_graphics::window::GLCompositor for Compositor {              gl.clear(glow::COLOR_BUFFER_BIT);          } -        renderer.backend_mut().draw(gl, viewport, output, overlay) +        renderer.with_primitives(|backend, primitive| { +            backend.present(gl, primitive, viewport, overlay); +        });      }  }  | 
