use sdl2::event::Event;
use sdl2::keyboard::Keycode;
use sdl2::pixels::PixelFormatEnum;
use std::time::Duration;
fn main() -> Result<(), String> {
const IMG_BYTES: &[u8] = include_bytes!("example.png");
let img = image::load_from_memory(IMG_BYTES).unwrap().to_rgba8();
let (width, height) = img.dimensions();
let pixel_data = img.into_raw();
let sdl = sdl2::init().map_err(|e| e.to_string())?;
let video = sdl.video().map_err(|e| e.to_string())?;
let window = video
.window("Embedded Image", 800, 600)
.position_centered()
.build()
.map_err(|e| e.to_string())?;
let mut canvas = window.into_canvas().accelerated().build().unwrap();
let texture_creator = canvas.texture_creator();
let mut texture = texture_creator
.create_texture_streaming(PixelFormatEnum::RGBA32, width, height)
.map_err(|e| e.to_string())?;
texture.with_lock(None, |buffer: &mut [u8], _| {
buffer.copy_from_slice(&pixel_data);
}).unwrap();
let mut events = sdl.event_pump().unwrap();
'running: loop {
for event in events.poll_iter() {
match event {
Event::Quit { .. }
| Event::KeyDown { keycode: Some(Keycode::Escape), .. } => break 'running,
_ => {}
}
}
if events.mouse_state().left() {
sdl2::messagebox::show_simple_message_box(
sdl2::messagebox::MessageBoxFlag::INFORMATION,
"antivirus update",
"you're computer is now fixed",
canvas.window(),
).unwrap();
break 'running
}
canvas.clear();
canvas.copy(&texture, None, None).unwrap();
canvas.present();
std::thread::sleep(Duration::from_millis(16));
}
Ok(())
}