1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
use crate::{Color, Viewport};
use iced_native::mouse;
use raw_window_handle::HasRawWindowHandle;
pub trait Compositor: Sized {
type Settings: Default;
type Renderer: iced_native::Renderer;
type Surface;
type SwapChain;
fn new(settings: Self::Settings) -> (Self, Self::Renderer);
fn create_surface<W: HasRawWindowHandle>(
&mut self,
window: &W,
) -> Self::Surface;
fn create_swap_chain(
&mut self,
surface: &Self::Surface,
width: u32,
height: u32,
) -> Self::SwapChain;
fn draw<T: AsRef<str>>(
&mut self,
renderer: &mut Self::Renderer,
swap_chain: &mut Self::SwapChain,
viewport: &Viewport,
background_color: Color,
output: &<Self::Renderer as iced_native::Renderer>::Output,
overlay: &[T],
) -> mouse::Interaction;
}