From 09f39c84fa03696b2d6165b9643d72024b1a2d7a Mon Sep 17 00:00:00 2001 From: maddiebaka Date: Wed, 21 Jun 2023 19:43:17 -0400 Subject: [PATCH] Add ttf rendering test code --- Cargo.lock | 56 +++++++++++++++++++++++ Cargo.toml | 5 ++- assets/handel_gothic_regular.ttf | Bin 0 -> 22620 bytes src/main.rs | 75 ++++++++++++++++++++++++++++++- 4 files changed, 133 insertions(+), 3 deletions(-) create mode 100644 assets/handel_gothic_regular.ttf diff --git a/Cargo.lock b/Cargo.lock index 230bd68..8853b8d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,62 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.146" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b" + +[[package]] +name = "sdl2" +version = "0.35.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7959277b623f1fb9e04aea73686c3ca52f01b2145f8ea16f4ff30d8b7623b1a" +dependencies = [ + "bitflags", + "lazy_static", + "libc", + "sdl2-sys", +] + +[[package]] +name = "sdl2-sys" +version = "0.35.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3586be2cf6c0a8099a79a12b4084357aa9b3e0b0d7980e3b67aaf7a9d55f9f0" +dependencies = [ + "cfg-if", + "libc", + "version-compare", +] + [[package]] name = "touchstone-ui" version = "0.1.0" +dependencies = [ + "sdl2", +] + +[[package]] +name = "version-compare" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29" diff --git a/Cargo.toml b/Cargo.toml index f2a8bf0..7687984 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,4 +5,7 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html -[dependencies] +[dependencies.sdl2] +sdl2 = "0.35.2" +default-features = false +features = ["ttf"] diff --git a/assets/handel_gothic_regular.ttf b/assets/handel_gothic_regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..437d0056e63c91825aa90353784d3789a07bdbbd GIT binary patch literal 22620 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 z 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 K!G|@;KmOlhmJlHT literal 0 HcmV?d00001 diff --git a/src/main.rs b/src/main.rs index e7a11a9..83ddede 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,74 @@ -fn main() { - println!("Hello, world!"); +extern crate sdl2; + +use sdl2::pixels::Color; +use sdl2::rect::Rect; +use sdl2::event::Event; +use sdl2::keyboard::Keycode; + +use std::time::Duration; +use std::path::Path; + +use sdl2::ttf::*; + +static SCREEN_WIDTH: u32 = 480; +static SCREEN_HEIGHT: u32 = 320; + +macro_rules! rect( + ($x:expr, $y:expr, $w:expr, $h:expr) => ( + Rect::new($x as i32, $y as i32, $w as u32, $h as u32) + ) +); + +pub fn main() { + let sdl_context = sdl2::init().unwrap(); + let video_subsystem = sdl_context.video().unwrap(); + + let window = video_subsystem.window("rust-sdl2 demo", 480, 320) + .position_centered() + .build() + .unwrap(); + + let mut canvas = window.into_canvas().build().unwrap(); + let texture_creator = canvas.texture_creator(); + + // Font stuff + let ttf_context = sdl2::ttf::init().map_err(|e| e.to_string()).unwrap(); + let font_path = Path::new("assets/handel_gothic_regular.ttf"); + let mut font = ttf_context.load_font(font_path, 128).unwrap(); + + let surface = font + .render("LIFE SUPPORT") + .blended(Color::RGBA(200, 200, 200, 255)) + .map_err(|e| e.to_string()).unwrap(); + + let texture = texture_creator + .create_texture_from_surface(&surface) + .map_err(|e| e.to_string()).unwrap(); + + let target = rect!(110, 20, 260, 24); + + canvas.set_draw_color(Color::RGB(0, 255, 255)); + canvas.clear(); + canvas.present(); + let mut event_pump = sdl_context.event_pump().unwrap(); + let mut i = 0; + 'running: loop { + i = (i + 1) % 255; + canvas.set_draw_color(Color::RGB(48, 39, 49)); + canvas.clear(); + canvas.copy(&texture, None, Some(target)).unwrap(); + for event in event_pump.poll_iter() { + match event { + Event::Quit {..} | + Event::KeyDown { keycode: Some(Keycode::Escape), .. } => { + break 'running + }, + _ => {} + } + } + // The rest of the game loop goes here... + + canvas.present(); + ::std::thread::sleep(Duration::new(0, 1_000_000_000u32 / 60)); + } }