libui-ffi

Autogenerated bindings to libui-ng for use in the high-level rust version of libui. It is not meant to be used directly. Compared to other bindings, the goal is to cut down on the buildtool dependencies to ease installation and compilation.

Prerequisits & Building

Required are compiler, linker, git and the UI platform SDK. No CMake, no Python, no Meson.

Linux: * libgtk-3-dev (debian package) - UI platform headers * libclang (debian package) - for generating the libui-ng bindings.

Windows: * MSVC (via Windows SDK or Visual Studio) - Platform headers, compiler and linker. * LLVM - for generating the libui-ng bindings.

Why libclang / LLVM?

Bindgen relies on libclang, but doesn't ship it.

Does MinGW work instead of MSVC?

Not sure. MinGW-64 instead of MSVC does compile and link. libui applications compiled with MinGW-64 versions <= 4.X won't start due to MinGW missing TaskDialog(). Later versions should work properly.

Patches

This crate applies some patches to libui-ng to provide a better experience. Please see the patches directory. * fix_container_performance.patch - libui-ng suffers from horrible performance under Windows due to some custom drawing related to container controls. The patch fixes that, with the drawback that now only solid color backgrounds are rendered correctly. Fortunately all default Windows themes since Vista have solid color backgrounds on their controls. * allow_small_pbar.patch - The progress bar minimum width is reduced for Windows to better match the behaviour of GTK and Cocoa progress bars.