2019-11-02 19:58:49 +01:00
|
|
|
use crate::{Metrics, MouseCursor};
|
2019-10-09 05:36:49 +02:00
|
|
|
|
|
|
|
|
use raw_window_handle::HasRawWindowHandle;
|
|
|
|
|
|
2019-11-02 19:58:49 +01:00
|
|
|
pub trait Windowed: super::Renderer + Sized {
|
|
|
|
|
type Target: Target<Renderer = Self>;
|
2019-10-09 05:36:49 +02:00
|
|
|
|
2019-11-02 19:58:49 +01:00
|
|
|
fn new() -> Self;
|
2019-10-09 05:36:49 +02:00
|
|
|
|
|
|
|
|
fn draw(
|
|
|
|
|
&mut self,
|
2019-10-11 22:15:39 +02:00
|
|
|
output: &Self::Output,
|
2019-11-02 19:58:49 +01:00
|
|
|
metrics: Option<Metrics>,
|
2019-10-09 05:36:49 +02:00
|
|
|
target: &mut Self::Target,
|
|
|
|
|
) -> MouseCursor;
|
|
|
|
|
}
|
2019-11-02 19:58:49 +01:00
|
|
|
|
|
|
|
|
pub trait Target {
|
|
|
|
|
type Renderer;
|
|
|
|
|
|
|
|
|
|
fn new<W: HasRawWindowHandle>(
|
|
|
|
|
window: &W,
|
|
|
|
|
width: u16,
|
|
|
|
|
height: u16,
|
|
|
|
|
renderer: &Self::Renderer,
|
|
|
|
|
) -> Self;
|
|
|
|
|
|
|
|
|
|
fn resize(&mut self, width: u16, height: u16, renderer: &Self::Renderer);
|
|
|
|
|
}
|