boing
A safe, lightweight wrapper over libui-ng-sys.
Background
libui is a C library that provides a neutral interface to native GUI technologies (e.g., windows, widgets) on major OSes. libui-ng is the "next generation" of libui, developed and maintained separately. libui-ng-sys provides Rust bindings to libui-ng, and boing is a safe yet fairly unopinionated layer on top of libui-ng-sys.
Currently, boing only links with libui-ng—not the original libui. However, libui-ng-sys may be updated in the future to support a libui feature flag, in which case it should be trivial to update boing as well.
Features
Lightweight
boing allocates UI control data in a set of typed bump allocators—each a single heap allocation, reallocated as necessary and freed at the end of Ui::run. This reduces the number of allocations performed, saving time in the process.
Pitfalls
Design
See DESIGN.md for an explanation of how boing was designed.
Project Progress
| Feature | Docs? | Impl? |
|---|---|---|
Area |
☐ | ☐ |
UniBox |
☐ | ☑ |
BiBox |
☐ | ☐ |
Button |
☑ | ☑ |
Checkbox |
☑ | ☑ |
Combobox |
☐ | ☐ |
Grid |
☐ | ☐ |
Group |
☐ | ☑ |
Image |
☐ | ☑ |
Label |
☐ | ☑ |
Menu |
☐ | ☑ |
MenuItem |
☐ | ☐ |
ProgressBar |
☐ | ☐ |
Slider |
☐ | ☐ |
Spinbox |
☐ | ☐ |
Tab |
☐ | ☑ |
Table |
☐ | ☐ |
Window |
☐ | ☑ |