summaryrefslogtreecommitdiffstats
path: root/graphics
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2020-05-21 00:37:47 +0200
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2020-05-21 00:44:35 +0200
commite0e4ee73feead3f05730625c7e1917b63f0b384e (patch)
tree5cd934cc474a5aacc60359f6fe69a5b9d31fe45b /graphics
parenta1a5fcfd46622d5b18d1716aa2adb4659835ccf3 (diff)
downloadiced-e0e4ee73feead3f05730625c7e1917b63f0b384e.tar.gz
iced-e0e4ee73feead3f05730625c7e1917b63f0b384e.tar.bz2
iced-e0e4ee73feead3f05730625c7e1917b63f0b384e.zip
Implement `iced_glutin` :tada:
Diffstat (limited to 'graphics')
-rw-r--r--graphics/Cargo.toml1
-rw-r--r--graphics/src/layer.rs1
-rw-r--r--graphics/src/window.rs6
-rw-r--r--graphics/src/window/gl_compositor.rs24
4 files changed, 32 insertions, 0 deletions
diff --git a/graphics/Cargo.toml b/graphics/Cargo.toml
index 12ad3f14..675bcb60 100644
--- a/graphics/Cargo.toml
+++ b/graphics/Cargo.toml
@@ -9,6 +9,7 @@ canvas = ["lyon"]
font-source = ["font-kit"]
font-fallback = []
font-icons = []
+opengl = []
[dependencies]
bytemuck = "1.2"
diff --git a/graphics/src/layer.rs b/graphics/src/layer.rs
index 916b5c83..59b792f0 100644
--- a/graphics/src/layer.rs
+++ b/graphics/src/layer.rs
@@ -6,6 +6,7 @@ use crate::{
Vector, VerticalAlignment, Viewport,
};
+#[derive(Debug, Clone)]
pub struct Layer<'a> {
pub bounds: Rectangle,
pub quads: Vec<Quad>,
diff --git a/graphics/src/window.rs b/graphics/src/window.rs
index a7c8911b..380efb8c 100644
--- a/graphics/src/window.rs
+++ b/graphics/src/window.rs
@@ -1,3 +1,9 @@
mod compositor;
+#[cfg(feature = "opengl")]
+mod gl_compositor;
+
pub use compositor::Compositor;
+
+#[cfg(feature = "opengl")]
+pub use gl_compositor::GLCompositor;
diff --git a/graphics/src/window/gl_compositor.rs b/graphics/src/window/gl_compositor.rs
new file mode 100644
index 00000000..979d891e
--- /dev/null
+++ b/graphics/src/window/gl_compositor.rs
@@ -0,0 +1,24 @@
+use crate::{Size, Viewport};
+use iced_native::mouse;
+
+use core::ffi::c_void;
+
+pub trait GLCompositor: Sized {
+ type Renderer: iced_native::Renderer;
+ type Settings: Default;
+
+ unsafe fn new(
+ settings: Self::Settings,
+ loader_function: impl FnMut(&str) -> *const c_void,
+ ) -> (Self, Self::Renderer);
+
+ fn resize_viewport(&mut self, physical_size: Size<u32>);
+
+ fn draw<T: AsRef<str>>(
+ &mut self,
+ renderer: &mut Self::Renderer,
+ viewport: &Viewport,
+ output: &<Self::Renderer as iced_native::Renderer>::Output,
+ overlay: &[T],
+ ) -> mouse::Interaction;
+}