summaryrefslogtreecommitdiffstats
path: root/graphics/src/window/gl_compositor.rs
blob: 979d891eeeac55194254bf3b3889ff1e13c125c2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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;
}