summaryrefslogtreecommitdiffstats
path: root/wgpu
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2019-10-09 05:36:49 +0200
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2019-10-09 05:36:49 +0200
commita92a0b73ed7ed935df762d06c4249894fd35b227 (patch)
treefe5f67c3b7c2cc84d29e5345e02463f0b4ef6913 /wgpu
parent1a93f0ef4a669f37654efcf2102a9d59ada34f9e (diff)
downloadiced-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 'wgpu')
-rw-r--r--wgpu/src/lib.rs2
-rw-r--r--wgpu/src/mouse_cursor.rs35
-rw-r--r--wgpu/src/renderer.rs36
3 files changed, 31 insertions, 42 deletions
diff --git a/wgpu/src/lib.rs b/wgpu/src/lib.rs
index 8f8d50e9..46849aab 100644
--- a/wgpu/src/lib.rs
+++ b/wgpu/src/lib.rs
@@ -1,4 +1,3 @@
-mod mouse_cursor;
mod primitive;
mod quad;
mod renderer;
@@ -7,6 +6,5 @@ mod transformation;
pub(crate) use quad::Quad;
pub(crate) use transformation::Transformation;
-pub use mouse_cursor::MouseCursor;
pub use primitive::Primitive;
pub use renderer::{Renderer, Target};
diff --git a/wgpu/src/mouse_cursor.rs b/wgpu/src/mouse_cursor.rs
deleted file mode 100644
index 4ef6361a..00000000
--- a/wgpu/src/mouse_cursor.rs
+++ /dev/null
@@ -1,35 +0,0 @@
-/// The state of the mouse cursor.
-#[derive(Debug, Eq, PartialEq, Clone, Copy)]
-pub enum MouseCursor {
- /// The cursor is out of the bounds of the user interface.
- OutOfBounds,
-
- /// The cursor is over a non-interactive widget.
- Idle,
-
- /// The cursor is over a clickable widget.
- Pointer,
-
- /// The cursor is over a busy widget.
- Working,
-
- /// The cursor is over a grabbable widget.
- Grab,
-
- /// The cursor is grabbing a widget.
- Grabbing,
-}
-
-#[cfg(feature = "winit")]
-impl From<MouseCursor> for winit::window::CursorIcon {
- fn from(mouse_cursor: MouseCursor) -> winit::window::CursorIcon {
- match mouse_cursor {
- MouseCursor::OutOfBounds => winit::window::CursorIcon::Default,
- MouseCursor::Idle => winit::window::CursorIcon::Default,
- MouseCursor::Pointer => winit::window::CursorIcon::Hand,
- MouseCursor::Working => winit::window::CursorIcon::Progress,
- MouseCursor::Grab => winit::window::CursorIcon::Grab,
- MouseCursor::Grabbing => winit::window::CursorIcon::Grabbing,
- }
- }
-}
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,