From 282534c969fe617cb8f73ddc61ea28b909db3383 Mon Sep 17 00:00:00 2001 From: Steins7 Date: Sat, 11 Jun 2022 20:02:24 +0200 Subject: [PATCH] Improve API and separate bin and lib Reworked API, does not compile --- src/lib.rs | 46 +++++++++++++++++++++ src/main.rs | 117 ++++++++++++++++++++++++++++++++-------------------- 2 files changed, 118 insertions(+), 45 deletions(-) create mode 100644 src/lib.rs diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..d6bf42e --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,46 @@ +#[cfg(test)] +mod tests { + + fn setup_logger() -> Result<(), fern::InitError> { + use fern::colors::{Color, ColoredLevelConfig}; + + let colors = ColoredLevelConfig::new() + .info(Color::Green) + .debug(Color::Magenta) + .warn(Color::Yellow) + .error(Color::Red); + + fern::Dispatch::new() + .format(move |out, message, record| { + out.finish(format_args!( + "{}[{}][{}] {}", + chrono::Local::now().format("[%H:%M:%S]"), + colors.color(record.level()), + record.target(), + message + )) + }) + .level(log::LevelFilter::Trace) + .chain(std::io::stdout()) + .chain(fern::log_file("output.log")?) + .apply()?; + Ok(()) + } + + #[test] + fn vk_create() { + let canvas = crate::create_vk_canvas("vk_create", 1280, 720) + .unwrap(); + } + + #[test] + fn vk_run() { + + let canvas = crate::create_vk_canvas("vk_run", 1280, 720) + .unwrap(); + + canvas.update(); + canvas.destroy(); + } +} + diff --git a/src/main.rs b/src/main.rs index 9165ae0..9a42fdd 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,44 +1,40 @@ -#[cfg(test)] -mod tests { - fn setup_logger() -> Result<(), fern::InitError> { - use fern::colors::{Color, ColoredLevelConfig}; +fn setup_logger() -> Result<(), fern::InitError> { + use fern::colors::{Color, ColoredLevelConfig}; - let colors = ColoredLevelConfig::new() - .info(Color::Green) - .debug(Color::Magenta) - .warn(Color::Yellow) - .error(Color::Red); + let colors = ColoredLevelConfig::new() + .info(Color::Green) + .debug(Color::Magenta) + .warn(Color::Yellow) + .error(Color::Red); - fern::Dispatch::new() - .format(move |out, message, record| { - out.finish(format_args!( - "{}[{}][{}] {}", - chrono::Local::now().format("[%H:%M:%S]"), - colors.color(record.level()), - record.target(), - message - )) - }) - .level(log::LevelFilter::Trace) - .chain(std::io::stdout()) - .chain(fern::log_file("output.log")?) - .apply()?; - Ok(()) - } + fern::Dispatch::new() + .format(move |out, message, record| { + out.finish(format_args!( + "{}[{}][{}] {}", + chrono::Local::now().format("[%H:%M:%S]"), + colors.color(record.level()), + record.target(), + message + )) + }) + .level(log::LevelFilter::Trace) + .chain(std::io::stdout()) + .chain(fern::log_file("output.log")?) + .apply()?; + Ok(()) +} - #[test] - fn vk_create() { - let canvas = crate::create_vk_canvas("vk_create", 1280, 720, |_| {}, |_| {}) - .unwrap(); - } +fn main() -> Result<(), &'static str> { - #[test] - fn vk_run() { + setup_logger() + .map_err(|_| "Failed to setup logger")?; - let canvas = crate::create_vk_canvas("vk_run", 1280, 720, |_| {}, |_| {}) - .unwrap(); + let canvas = crate::create_vk_canvas("vk_example", 1280, 720) + .unwrap(); + while canvas.should_exit() == false { + // inputs if canvas.key_pressed(Key::A) { unimplemented!(); } @@ -54,19 +50,50 @@ mod tests { let mouse = canvas.get_mouse(); - let sprite = canvas.create_sprite(Size {w: 20, h: 20}, 1.0); - sprite.draw(&[[0u8, 0u8, 0u8, 225u8]; 20 * 20]); - sprite.clear_color(Color::black); - sprite.draw_rectangle(Position {x: 0, y: 0}, Size {w: 10, h: 10}, Color::black); - sprite.draw_text(Position {x: 0, y: 0}, 5, Color::black, "text"); - sprite.move_to(Position {x: 0, y: 0}); - sprite.rotate(50); - sprite.set_alpha(255); - sprite.hide(); - sprite.show(); + // outputs + canvas.set_clear_color(Color::black); + + // white rectangle inset by one in the sprite + let bas_sprite = canvas.create_basic_sprite(Size {w: 40, h: 40}, 1.0); + bas_sprite.set_shape( + Shape::Rectangle (Position {x: 1, y: 1}, + Size {w: 38, h: 38}, + Color::White, + )); + canvas.draw(bas_sprite); + + // 20 x 20 sprite of a picture + let texture = canvas.create_texture_from_file( + Position {x: 0, y: 0}, + Some("texture.png"), + Some(Color::White) + ); + pix_sprite = canvas.create_texture_sprite(Size {w: 20, h: 20}, 1.0); + pix_sprite.set_texture(texture, Some(Position {w: 0, h: 0})); + canvas.draw(pix_sprite); + + // scaled sprite of a manually drawed texture + let texture = canvas.create_texture(Size {w: 20, h: 20}, Some(Color::White)); + texture.set_pixel(Position {x: 0, y: 0}, Pixel::rgb(0, 255, 0)); + let _ = texture.pixels(); + pix_sprite = canvas.create_texture_sprite(Size {w: 20, h: 20}, 2.0); + pix_sprite.set_texture(texture, None); + canvas.draw(pix_sprite); + + // floating text + let txt_sprite = canvas.create_text_sprite(Size {w: 10, h: 10}, 5.0); + txt_sprite.set_text("text", None); + + // generic operations + txt_sprite.set_position(Position {x: 0, y: 0}); + txt_sprite.set_rotation(50); + txt_sprite.set_alpha(255); + canvas.draw(txt_sprite); canvas.update(); - canvas.destroy(); } + + canvas.destroy(); + Ok(()) }