Go to file
Thomas Versteeg 52d42a7115 Update kernel32-sys to 0.2.2 on Windows (#46)
* Update kernel32-sys to 0.2.2 on Windows GNU

kernel32-sys 0.1.4 won't compile on my system:

rustc 1.24.0-nightly (8503b3ff8 2017-12-04)
binary: rustc
commit-hash: 8503b3ff822c1ed01c89773d30e4e10b886d77a5
commit-date: 2017-12-04
host: x86_64-pc-windows-gnu
release: 1.24.0-nightly
LLVM version: 4.0

* Bump kernel32-sys to 0.2.2 for MSVC as well
2018-01-08 12:26:06 +01:00
examples Implemented bounds checking for update_with_buffer 2017-08-11 12:41:24 +02:00
src Fix Redox build (#41) 2017-08-15 19:28:44 +02:00
.gitignore Initial version 2015-11-22 18:55:38 +01:00
.travis.yml Fix Travis-CI build (#43) 2017-10-04 06:45:19 +02:00
appveyor.yml Merge from mouse-support 2016-01-29 20:16:00 +01:00
appveyor_rust_install.ps1 Merge from mouse-support 2016-01-29 20:16:00 +01:00
build.rs Removed Windows part as it's fully in Rust now 2016-01-02 12:00:19 +01:00
Cargo.toml Update kernel32-sys to 0.2.2 on Windows (#46) 2018-01-08 12:26:06 +01:00
CHANGELOG.md Bump to 0.10.1 2017-08-15 22:09:31 +02:00
LICENSE Initial version 2015-11-22 18:55:38 +01:00
LICENSE-APACHE Re-licence under MIT/Apache-2.0 2016-01-10 18:36:57 +01:00
LICENSE-MIT Re-licence under MIT/Apache-2.0 2016-01-10 18:36:57 +01:00
README.md Bump to 0.10.3 2017-10-01 15:56:16 +02:00

Crates.io Build Status Build Status Documentation

minifb is a cross platform library written in Rust and that makes it easy to setup a window and to (optional) display a 32-bit pixel buffer. It also makes it easy to get input from keyboard and mouse. An example is the best way to show how it works:

Changelog

Usage

# Cargo.toml
[dependencies]
minifb = "0.10.3"

Example

extern crate minifb;

use minifb::{Key, WindowOptions, Window};

const WIDTH: usize = 640;
const HEIGHT: usize = 360;

fn main() {
    let mut buffer: Vec<u32> = vec![0; WIDTH * HEIGHT];

    let mut window = Window::new("Test - ESC to exit",
                                 WIDTH,
                                 HEIGHT,
                                 WindowOptions::default()).unwrap_or_else(|e| {
        panic!("{}", e);
    });

    while window.is_open() && !window.is_key_down(Key::Escape) {
        for i in buffer.iter_mut() {
            *i = 0; // write something more funny here!
        }

        // We unwrap here as we want this code to exit if it fails. Real applications may want to handle this in a different way
        window.update_with_buffer(&buffer).unwrap();
    }
}

Status

Currently Mac, Redox, Linux and Windows (64-bit and 32-bit) are the current supported platforms. X11 (Linux/FreeBSD/etc) support has been tested on Ubuntu (x64). Bug report(s) for other OSes/CPUs are welcome!

Build instructions

cargo build
cargo run --example noise

This will run the noise example which should look something like this (Mac screenshot)

mac_screenshot

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.