diff options
author | 2020-05-21 00:37:47 +0200 | |
---|---|---|
committer | 2020-05-21 00:44:35 +0200 | |
commit | e0e4ee73feead3f05730625c7e1917b63f0b384e (patch) | |
tree | 5cd934cc474a5aacc60359f6fe69a5b9d31fe45b /graphics | |
parent | a1a5fcfd46622d5b18d1716aa2adb4659835ccf3 (diff) | |
download | iced-e0e4ee73feead3f05730625c7e1917b63f0b384e.tar.gz iced-e0e4ee73feead3f05730625c7e1917b63f0b384e.tar.bz2 iced-e0e4ee73feead3f05730625c7e1917b63f0b384e.zip |
Implement `iced_glutin` :tada:
Diffstat (limited to 'graphics')
-rw-r--r-- | graphics/Cargo.toml | 1 | ||||
-rw-r--r-- | graphics/src/layer.rs | 1 | ||||
-rw-r--r-- | graphics/src/window.rs | 6 | ||||
-rw-r--r-- | graphics/src/window/gl_compositor.rs | 24 |
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; +} |