FLTK
![]() |
|
| Initial release | 1998 |
|---|---|
| Stable release | 1.3.0 (June 16, 2011) [±] |
| Preview release | v2.0.x-r7513 [±] |
| Written in | C++ |
| Operating system | Unix/Linux/BSD (X11), Mac OS X, Windows, AmigaOS 4.0 |
| Type | Widget toolkit |
| License | GNU Lesser General Public License (with an exception that allows static linking) |
| Website | http://www.fltk.org/ |
FLTK (the Fast, Light Toolkit, pronounced "fulltick")[1] is a cross-platform GUI library developed by Bill Spitzak and others. Made with 3D graphics programming in mind, it has an interface to OpenGL, but it is also suitable for general GUI programming.
Using its own widget, drawing and event systems (though FLTK2 has gained experimental support for optionally using the cairo graphics library) abstracted from the underlying system-dependent code, it allows for writing programs which look the same on all supported operating systems.
FLTK is free software, licensed under LGPL with an additional clause permitting static linking from applications with incompatible licenses. It includes FLUID (FLTK User Interface Designer), a graphical GUI designer that generates C++ source and header files.
In contrast to libraries like Qt and wxWidgets, FLTK uses a more lightweight design and restricts itself to GUI functionality. Because of this, the library is very small (the FLTK "Hello World" program is around 100 KiB), and is usually statically linked. It also avoids complicated macros and separate code preprocessors, and does not use the following advanced C++ features: templates, exceptions, RTTI or, for FLTK 1.x, namespaces. Combined with the modest size of the package, this leads to a relatively short learning curve for new users.[citation needed]
These advantages come with corresponding disadvantages. FLTK offers fewer widgets than most GUI toolkits and, because of its use of non-native widgets, does not have native look-and-feel on any platform.
Contents |
[edit] What Does "FLTK" Mean?
FLTK was originally designed to be compatible with the Forms Library written for SGI machines (a derivative of this library called "XForms" is still used quite often). In that library all the functions and structures started with "fl_". This naming was extended to all new methods and widgets in the C++ library, and this prefix "FL" was taken as the name of the library. After FL was released as open source, it was discovered it was impossible to search "FL" on the Internet, due to the fact that it is also the abbreviation for Florida. After much debating and searching for a new name for the toolkit, which was already in use by several people, Bill Spitzak came up with "FLTK", which stands for the "Fast Light Tool Kit".[2]
[edit] Using FLTK in programming languages
FLTK was primarily designed for, and is written in, the C++ programming language. However, bindings exist for other languages, for example Python,[3] Lua[4] and Ruby.[5]
The following example for FLTK 1.x creates a window with an "Okay" button:
#include <FL/Fl.H> #include <FL/Fl_Window.H> #include <FL/Fl_Button.H> int main(int argc, char *argv[]) { Fl_Window* w = new Fl_Window(330, 190); new Fl_Button(110, 130, 100, 35, "Okay"); w->end(); w->show(argc, argv); return Fl::run(); }
[edit] Software built on FLTK
- TorApp.Info Online Security Printing Platform which is a google native client based on fltk.
- Prodatum synthesizer preset editor (uses a lifelike interface design)
- ITK-SNAP which is an open-source software application for medical image segmentation.
- The open-source deep-paint software CinePaint is migrating from GTK+ to FLTK.
- FLWM, an X window manager
- miwm, an X window manager
- Nuke, a piece of high-end digital compositing software. (Until version 5, now replaced by Qt (toolkit))
- The Windows port of SmallBASIC
- The open-source poster printing software PosteRazor (Windows, Mac OS X, Linux).
- The BVH editor Avimator
- Dillo web browser. Note that Dillo-2 was based on FLTK-2 and the abandonment of this branch, without an official release, has ben a major factor in causing Dillo-3 to be started, using FLTK1.3.
- Gmsh, an open-source Finite element mesh generator
- EDE - Equinox Desktop Environment
- Open Movie Editor
- ZynAddSubFX, an open-source software synthesizer
- The Agenda VR3 Linux-based Personal Digital Assistant's software was based on FLTK, as was much of the software developed for it by third-parties
- ForcePAD an intuitive tool for visualising the behavior of structures subjected to loading and boundary conditions
- FlBurn optical disc burning software for Linux.
- DiSTI's GL Studio Human-Machine Interface Development tool.
- Amnesia: The Dark Descent a game by Frictional Games uses FLTK for its launcher application.
- Fldigi, Amateur radio software that allows data transmission and text chat via digital modes such as PSK31.
- Giada - Your Hardcore Loopmachine, a looper/micro-sequencer/sample player software (open-source).
[edit] Versions
| This section requires expansion. |
The version history shows some of the tumultuous nature of open source development.[6]
[edit] 1.0.x
This is a previous stable version, no longer maintained.
[edit] 1.1.x
This is the long-established and stable version, currently maintained.
[edit] 2.0 branch
This was a development branch, long thought to be the next step in FLTK's evolution, with many new features and a cleaner programming style. It never achieved stability, and development has largely ceased.
[edit] 1.2.x
This was an attempt to take some of the best features of 2.0 and merge them back into the more popular 1.1 branch. It is no longer developed.
[edit] 1.3.x
This is where active development on the next major edition of FLTK is taking place. It is somewhat less ambitious than 2.0 was, more like 1.1 but still willing to break APIs to add new features.
[edit] 3.0 branch
This branch is mostly a conceptual model for future work.
[edit] See also
- Widget toolkit
- List of widget toolkits
- Qt
- wxWidgets - cross platform open source C++ widgets toolkit developed by community
- GTK+
- gtkmm (C++ version of GTK+)
- FOX toolkit
- VCF
- Juce
- Ultimate++
[edit] References
[edit] External links
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
