use verdant::{Renderer, RendererResult, WindowEvent, canvas::RenderSurface, rgb, types::{Color, WindowProperties}, view::ViewMode, window::Window};
fn main() -> RendererResult<()> {
let mut renderer = Renderer::new()?;
let stretch = renderer.create_window_ext(WindowProperties {
title: "views, stretched".into(),
width: 500,
height: 500,
resizable: true,
..Default::default()
});
let letterbox = renderer.create_window_ext(WindowProperties {
title: "views, letterboxed".into(),
width: 500,
height: 500,
resizable: true,
..Default::default()
});
let crop = renderer.create_window_ext(WindowProperties {
title: "views, crop".into(),
width: 500,
height: 500,
resizable: true,
..Default::default()
});
let content = |window: &mut Window| {
window.fill(rgb(0.1, 0.1, 0.1));
window.rect(0., 0., 500., 500.);
window.fill(Color::SALMON);
window.ellipse(150., 150., 150., 150.);
window.fill(Color::FOREST_GREEN);
window.rect(250., 250., 250., 250.);
};
while renderer.is_running() {
for (id, event) in renderer.poll() {
if event == WindowEvent::CloseRequested {
renderer.close_window(id);
}
}
if let Some(window) = renderer.get_window(stretch) {
window.background(Color::BLACK);
window.set_view(500., 500., ViewMode::Stretch);
content(window);
}
if let Some(window) = renderer.get_window(letterbox) {
window.background(Color::BLACK);
window.set_view(500., 500., ViewMode::Letterbox);
content(window);
}
if let Some(window) = renderer.get_window(crop) {
window.background(Color::BLACK);
window.set_view(500., 500., ViewMode::Crop);
content(window);
}
renderer.flush()?;
}
Ok(())
}