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); fn draw>( &mut self, renderer: &mut Self::Renderer, viewport: &Viewport, output: &::Output, overlay: &[T], ) -> mouse::Interaction; }