Improve API and separate bin and lib

Reworked API, does not compile
This commit is contained in:
Steins7 2022-06-11 20:02:24 +02:00
parent 7ebd83a979
commit 282534c969
2 changed files with 118 additions and 45 deletions

46
src/lib.rs Normal file
View File

@ -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();
}
}

View File

@ -1,7 +1,5 @@
#[cfg(test)]
mod tests {
fn setup_logger() -> Result<(), fern::InitError> {
fn setup_logger() -> Result<(), fern::InitError> {
use fern::colors::{Color, ColoredLevelConfig};
let colors = ColoredLevelConfig::new()
@ -25,20 +23,18 @@ mod tests {
.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, |_| {}, |_| {})
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(())
}