Go to file
phillvancejr 15bce84a4e
Added Topmost (always on top) functionality to Windows (#159)
* Added always on top functionality for Windows

* Added always on top functionality for Windows

* Made topmost method in Window public so that the topmost attribute can be defined either at or after creation time as opposed to just at creation time. This allows the topmost functionality to be toggled during the programs runtime as opposed to only at window creation
2020-08-28 21:14:49 +02:00
.github/workflows Wayland support (#141) 2020-04-05 06:49:25 +02:00
examples Support topmost functionality in Windows (#201) 2020-07-27 09:27:13 +02:00
resources Merge dev -> master (#119) 2019-12-16 08:24:48 +01:00
src Added Topmost (always on top) functionality to Windows (#159) 2020-08-28 21:14:49 +02:00
.gitignore add get_keys_released method to Window (#151) 2020-03-17 18:17:04 +01:00
build.rs Rename unixes to posix (#197) 2020-07-09 10:21:18 +02:00
Cargo.toml Remove xkbcommon-sys from x11 dependencies. (#209) 2020-08-23 14:26:06 +02:00
CHANGELOG.md Bump to 0.18 2020-08-14 11:56:29 +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 0.18 and made minifb usage a bit more clear. 2020-08-14 11:56:17 +02:00
rustfmt.toml Removed required version 2020-01-10 09:55:56 +01:00

Build Status Crates.io 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. Notice that minifb is primary designed for prototyping and may not include all the features found in full window handling libraries. An example is the best way to show how it works:

Changelog

Usage

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

Example

extern crate minifb;

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

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

    // Limit to max ~60 fps update rate
    window.limit_update_rate(Some(std::time::Duration::from_micros(16600)));

    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, WIDTH, HEIGHT)
            .unwrap();
    }
}

Status

Currently macOS, Linux and Windows (64-bit and 32-bit) are the current supported platforms. X11 (Linux/FreeBSD/etc) support has been tested on Ubuntu (x64). Linux Wayland support is also available. Bug report(s) for other OSes/CPUs are welcome! Notice: That after 0.13 Redox hasn't been updated and some work is required to get that working again. PR are welcome.

Build instructions

On Linux you may need to install these dependencies first:

sudo apt install libxkbcommon-dev libwayland-cursor0 libwayland-dev
cargo build
cargo run --example noise

This will run the noise example

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.