Crates.io | wfc-rs |
lib.rs | wfc-rs |
version | 0.6.1 |
source | src |
created_at | 2022-01-15 16:47:14.289498 |
updated_at | 2022-04-26 14:33:05.210662 |
description | Binding to the krychu/wfc C library |
homepage | https://github.com/nsmryan/wfc-rs |
repository | |
max_upload_size | |
id | 514410 |
size | 459,898 |
The wfc-rs crate is a wrapper for the krychu/wfc implementation of Wave Function Collapse.
The wfc library is manually wrapped with extern functions, and a small, more ideomatic Rust wrapper is provided.
Note that this is an early, but working version.
Once the crate has been added to Cargo.toml as:
wfc_rs = "0.5"
create a WfcImage with from_vec or from_file:
let image = WfcImage::from_file("data/cave.png")?;
This creates an optional NonNull, which contains a pointer to the underlying WfcImage structure. This structure is a repr(C) struct that matches the 'wfc.h' structure 'wfc_image'.
and then a Wfc structure from this image, as well as the configuration settings:
let mut wfc = Wfc::overlapping(32, 32, image, 3, 3, true, true, true, true)?;
With this Wfc, you can run an interation with 'run'
wfc.run();
and either export an input:
wfc.export("output.png");
or get the raw pixel data as a Vec
let bytes = wfc.vec();