summaryrefslogtreecommitdiffstats
path: root/graphics/src/window/gl_compositor.rs
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/src/window/gl_compositor.rs')
-rw-r--r--graphics/src/window/gl_compositor.rs24
1 files changed, 24 insertions, 0 deletions
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;
+}