From 2b4eb454ccdb18b607462f9a3f45f19b9942c9a5 Mon Sep 17 00:00:00 2001 From: Ralf Zerres Date: Wed, 10 Mar 2021 09:19:14 +0100 Subject: [PATCH] examples: insert sdl2_demo Signed-off-by: Ralf Zerres --- crates/advotracker_client/Cargo.toml | 1 + .../advotracker_client/examples/sdl2_demo.rs | 45 +++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 crates/advotracker_client/examples/sdl2_demo.rs diff --git a/crates/advotracker_client/Cargo.toml b/crates/advotracker_client/Cargo.toml index 1faa621..344b5cf 100644 --- a/crates/advotracker_client/Cargo.toml +++ b/crates/advotracker_client/Cargo.toml @@ -34,6 +34,7 @@ maud = { version = "~0.22.1" } #orbtk = { git = "https://github.com/redox-os/orbtk.git", branch = "develop" } orbtk = { path = "../../../orbtk" } serde = { version = "~1.0", features = ["derive"] } +sdl2 = { version = "~0.34" } substring = { version = "~1" } #tokio = { version = "~0.2", features = ["macros", "rt-threaded", "stream", "time"] } tracing = { version = "~0.1" } diff --git a/crates/advotracker_client/examples/sdl2_demo.rs b/crates/advotracker_client/examples/sdl2_demo.rs new file mode 100644 index 0000000..7521fa9 --- /dev/null +++ b/crates/advotracker_client/examples/sdl2_demo.rs @@ -0,0 +1,45 @@ +extern crate sdl2; + +use sdl2::event::Event; +use sdl2::keyboard::Keycode; +use sdl2::pixels::Color; +use std::time::Duration; + +pub fn main() -> Result<(), String> { + let sdl_context = sdl2::init()?; + let video_subsystem = sdl_context.video()?; + + let window = video_subsystem + .window("rust-sdl2 demo: Video", 800, 600) + .position_centered() + .opengl() + .build() + .map_err(|e| e.to_string())?; + + let mut canvas = window.into_canvas().build().map_err(|e| e.to_string())?; + + canvas.set_draw_color(Color::RGB(255, 0, 0)); + canvas.clear(); + canvas.present(); + let mut event_pump = sdl_context.event_pump()?; + + 'running: loop { + for event in event_pump.poll_iter() { + match event { + Event::Quit { .. } + | Event::KeyDown { + keycode: Some(Keycode::Escape), + .. + } => break 'running, + _ => {} + } + } + + canvas.clear(); + canvas.present(); + ::std::thread::sleep(Duration::new(0, 1_000_000_000u32 / 30)); + // The rest of the game loop goes here... + } + + Ok(()) +}