diff options
Diffstat (limited to '')
| -rw-r--r-- | native/src/renderer.rs | 2 | ||||
| -rw-r--r-- | native/src/renderer/windowed.rs | 24 | 
2 files changed, 19 insertions, 7 deletions
diff --git a/native/src/renderer.rs b/native/src/renderer.rs index afe1b09a..5963d577 100644 --- a/native/src/renderer.rs +++ b/native/src/renderer.rs @@ -24,7 +24,7 @@ mod debugger;  mod windowed;  pub use debugger::Debugger; -pub use windowed::Windowed; +pub use windowed::{Target, Windowed};  pub trait Renderer {      type Output; diff --git a/native/src/renderer/windowed.rs b/native/src/renderer/windowed.rs index bcf37964..6e4ae611 100644 --- a/native/src/renderer/windowed.rs +++ b/native/src/renderer/windowed.rs @@ -2,16 +2,28 @@ use crate::MouseCursor;  use raw_window_handle::HasRawWindowHandle; -pub trait Windowed: super::Renderer { -    type Target; +pub trait Windowed: super::Renderer + Sized { +    type Target: Target<Renderer = Self>; -    fn new<W: HasRawWindowHandle>(window: &W) -> Self; +    fn new() -> Self; -    fn target(&self, width: u16, height: u16) -> Self::Target; - -    fn draw( +    fn draw<T: AsRef<str>>(          &mut self,          output: &Self::Output, +        overlay: &[T],          target: &mut Self::Target,      ) -> MouseCursor;  } + +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); +}  | 
