summaryrefslogtreecommitdiffstats
path: root/native/src/window
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2020-01-10 01:58:55 +0100
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2020-01-10 01:58:55 +0100
commite45497dfd6d401d8da74a8167b876a20690ddcac (patch)
tree617ba841d32009092589a96516deb0dea10c656d /native/src/window
parentd15d1156bd0c7fa111d1c59bea11fd58b9cc63b1 (diff)
downloadiced-e45497dfd6d401d8da74a8167b876a20690ddcac.tar.gz
iced-e45497dfd6d401d8da74a8167b876a20690ddcac.tar.bz2
iced-e45497dfd6d401d8da74a8167b876a20690ddcac.zip
Move `Debugger` and `Windowed` to a better location
We move `renderer::Debugger` to `layout::Debugger` and `renderer::Windowed` to `window::Renderer`.
Diffstat (limited to 'native/src/window')
-rw-r--r--native/src/window/renderer.rs58
1 files changed, 58 insertions, 0 deletions
diff --git a/native/src/window/renderer.rs b/native/src/window/renderer.rs
new file mode 100644
index 00000000..be9765fa
--- /dev/null
+++ b/native/src/window/renderer.rs
@@ -0,0 +1,58 @@
+use crate::MouseCursor;
+
+use raw_window_handle::HasRawWindowHandle;
+
+/// A renderer that can target windows.
+pub trait Renderer: crate::Renderer + Sized {
+ /// The settings of the renderer.
+ type Settings: Default;
+
+ /// The type of target.
+ type Target: Target<Renderer = Self>;
+
+ /// Creates a new window [`Renderer`].
+ ///
+ /// [`Renderer`]: trait.Renderer.html
+ fn new(settings: Self::Settings) -> Self;
+
+ /// Performs the drawing operations described in the output on the given
+ /// target.
+ ///
+ /// The overlay can be a bunch of debug text logs. It should be rendered on
+ /// top of the GUI on most scenarios.
+ fn draw<T: AsRef<str>>(
+ &mut self,
+ output: &Self::Output,
+ overlay: &[T],
+ target: &mut Self::Target,
+ ) -> MouseCursor;
+}
+
+/// A rendering target.
+pub trait Target {
+ /// The renderer of this target.
+ type Renderer;
+
+ /// Creates a new rendering [`Target`] from the given window handle, width,
+ /// height and dpi factor.
+ ///
+ /// [`Target`]: trait.Target.html
+ fn new<W: HasRawWindowHandle>(
+ window: &W,
+ width: u16,
+ height: u16,
+ dpi: f32,
+ renderer: &Self::Renderer,
+ ) -> Self;
+
+ /// Resizes the current [`Target`].
+ ///
+ /// [`Target`]: trait.Target.html
+ fn resize(
+ &mut self,
+ width: u16,
+ height: u16,
+ dpi: f32,
+ renderer: &Self::Renderer,
+ );
+}