use crate::dirty::{DirtyRegion, PlatformCapabilities};
use crate::event::InputEvent;
use crate::renderer::{RenderError, Renderer};
use embedded_graphics::{pixelcolor::PixelColor, prelude::*};
pub trait Platform {
type Color: PixelColor;
type Error;
#[allow(async_fn_in_trait)]
async fn next_event(&mut self) -> Option<InputEvent>;
#[allow(async_fn_in_trait)]
async fn render_with<F>(&mut self, draw: F) -> Result<(), Self::Error>
where
F: FnOnce(&mut dyn Renderer<Self::Color>) -> Result<(), RenderError>;
#[allow(async_fn_in_trait)]
async fn render_with_dirty<F>(
&mut self,
dirty: &DirtyRegion,
draw: F,
) -> Result<(), Self::Error>
where
F: FnOnce(&mut dyn Renderer<Self::Color>) -> Result<(), RenderError>,
{
let _ = dirty;
self.render_with(draw).await
}
fn viewport(&self) -> Size;
fn capabilities(&self) -> PlatformCapabilities {
PlatformCapabilities::default()
}
}