diff options
author | 2019-10-09 05:36:49 +0200 | |
---|---|---|
committer | 2019-10-09 05:36:49 +0200 | |
commit | a92a0b73ed7ed935df762d06c4249894fd35b227 (patch) | |
tree | fe5f67c3b7c2cc84d29e5345e02463f0b4ef6913 /wgpu/src/renderer.rs | |
parent | 1a93f0ef4a669f37654efcf2102a9d59ada34f9e (diff) | |
download | iced-a92a0b73ed7ed935df762d06c4249894fd35b227.tar.gz iced-a92a0b73ed7ed935df762d06c4249894fd35b227.tar.bz2 iced-a92a0b73ed7ed935df762d06c4249894fd35b227.zip |
Move `winit` logic from `iced` to `iced_winit`
- Added new `renderer::Windowed` trait. This shoud allow users to easily
try different renderers by simply changing one line.
- Renamed `UserInterface` traits to `Application`, as the `run` method
takes total control of the current thread.
- Moved `MouseCursor` back to `iced_native`. The new
`renderer::Windowed` trait returns one on `draw`.
- Split `iced_native` renderer in multiple modules, for consistency.
Diffstat (limited to '')
-rw-r--r-- | wgpu/src/renderer.rs | 36 |
1 files changed, 31 insertions, 5 deletions
diff --git a/wgpu/src/renderer.rs b/wgpu/src/renderer.rs index ae5692e3..036efd27 100644 --- a/wgpu/src/renderer.rs +++ b/wgpu/src/renderer.rs @@ -1,6 +1,7 @@ use crate::{quad, Primitive, Quad, Transformation}; use iced_native::{ - renderer::Debugger, Background, Color, Layout, Point, Widget, + renderer::Debugger, renderer::Windowed, Background, Color, Layout, + MouseCursor, Point, Widget, }; use raw_window_handle::HasRawWindowHandle; @@ -41,7 +42,7 @@ pub struct Target { } impl Renderer { - pub fn new<W: HasRawWindowHandle>(window: &W) -> Self { + fn new<W: HasRawWindowHandle>(window: &W) -> Self { let adapter = Adapter::request(&RequestAdapterOptions { power_preference: PowerPreference::LowPower, backends: BackendBit::all(), @@ -79,7 +80,7 @@ impl Renderer { } } - pub fn target(&self, width: u16, height: u16) -> Target { + fn target(&self, width: u16, height: u16) -> Target { Target { width, height, @@ -97,7 +98,11 @@ impl Renderer { } } - pub fn draw(&mut self, target: &mut Target, primitive: &Primitive) { + fn draw( + &mut self, + target: &mut Target, + primitive: &Primitive, + ) -> MouseCursor { log::debug!("Drawing"); let frame = target.swap_chain.get_next_texture(); @@ -146,8 +151,9 @@ impl Renderer { .expect("Draw text"); self.queue.submit(&[encoder.finish()]); - } + MouseCursor::OutOfBounds + } fn draw_primitive(&mut self, primitive: &Primitive) { match primitive { Primitive::None => {} @@ -240,6 +246,26 @@ impl iced_native::Renderer for Renderer { type Primitive = Primitive; } +impl Windowed for Renderer { + type Target = Target; + + fn new<W: HasRawWindowHandle>(window: &W) -> Self { + Self::new(window) + } + + fn target(&self, width: u16, height: u16) -> Target { + self.target(width, height) + } + + fn draw( + &mut self, + target: &mut Target, + primitive: &Primitive, + ) -> MouseCursor { + self.draw(target, primitive) + } +} + impl Debugger for Renderer { fn explain<Message>( &mut self, |