1use std::cell::RefCell;
2use std::rc::Rc;
3
4use copypasta::ClipboardProvider;
5
6use crate::platform::PlatformWindow;
7use crate::{AnyWindowHandle, CursorStyle, DisplayId, PlatformDisplay, WindowParams};
8
9pub trait Client {
10 fn displays(&self) -> Vec<Rc<dyn PlatformDisplay>>;
11 fn primary_display(&self) -> Option<Rc<dyn PlatformDisplay>>;
12 fn display(&self, id: DisplayId) -> Option<Rc<dyn PlatformDisplay>>;
13 fn open_window(
14 &self,
15 handle: AnyWindowHandle,
16 options: WindowParams,
17 ) -> Box<dyn PlatformWindow>;
18 fn set_cursor_style(&self, style: CursorStyle);
19 fn get_clipboard(&self) -> Rc<RefCell<dyn ClipboardProvider>>;
20 fn get_primary(&self) -> Rc<RefCell<dyn ClipboardProvider>>;
21}