296 releases (123 stable)
1.4.36 | Nov 13, 2024 |
---|---|
1.4.34 | Sep 24, 2024 |
1.4.33 | Jul 30, 2024 |
1.4.27 | Mar 31, 2024 |
0.1.22 | Mar 31, 2020 |
#1386 in GUI
33,592 downloads per month
Used in 58 crates
(2 directly)
11MB
257K
SLoC
Contains (obscure autoconf code, 64KB) cfltk/fltk/configure.ac
fltk-sys
Raw bindings for FLTK. These are generated using bindgen on the cfltk headers.
Usage
[dependencies]
fltk-sys = "1.4"
Example code:
use fltk_sys::*;
use std::os::raw::*;
unsafe extern "C" fn cb(_wid: *mut button::Fl_Widget, data: *mut c_void) {
let frame = data as *mut frame::Fl_Box;
frame::Fl_Box_set_label(frame, "Hello World\0".as_ptr() as *const _);
}
fn main() {
unsafe {
fl::Fl_init_all();
image::Fl_register_images();
fl::Fl_lock();
let win = window::Fl_Window_new(100, 100, 400, 300, "Window\0".as_ptr() as *const _);
let frame = frame::Fl_Box_new(0, 0, 400, 200, std::ptr::null());
let but = button::Fl_Button_new(160, 220, 80, 40, "Click\0".as_ptr() as *const _);
window::Fl_Window_end(win);
window::Fl_Window_show(win);
button::Fl_Button_set_callback(but, Some(cb), frame as *mut _);
fl::Fl_run();
}
}
Dependencies
CMake > 3.14, git and a C++17 compiler. The dev dependencies are basically the same as for fltk-rs.
Why you might want to use fltk-sys directly
- If you need an abi stable cdylib that you can call into (as a plugin system for example).
- To create your own wrapper around certain elements if you don't need the whole fltk crate.
- fltk-sys, although memory and thread unsafe, is panic-safe.
- You need a no-std gui library, in such case, you can replace the
std::
prefix with thelibc
via bindgen (requires adding libc as a dependency). - Wrapping a 3rd-party widget like in fltk-flow.