Fltk
   HOME

TheInfoList



OR:

Fast Light Toolkit (FLTK) is a
cross-platform Within computing, cross-platform software (also called multi-platform software, platform-agnostic software, or platform-independent software) is computer software that is designed to work in several Computing platform, computing platforms. Some ...
widget (graphical control element) library for
graphical user interface A graphical user interface, or GUI, is a form of user interface that allows user (computing), users to human–computer interaction, interact with electronic devices through Graphics, graphical icon (computing), icons and visual indicators such ...
s (GUIs), developed by Bill Spitzak and others. Made to accommodate
3D graphics 3D computer graphics, sometimes called CGI, 3D-CGI or three-dimensional computer graphics, are graphics that use a three-dimensional representation of geometric data (often Cartesian) that is stored in the computer for the purposes of perfor ...
programming, it has an interface to
OpenGL OpenGL (Open Graphics Library) is a Language-independent specification, cross-language, cross-platform application programming interface (API) for rendering 2D computer graphics, 2D and 3D computer graphics, 3D vector graphics. The API is typic ...
, but it is also suitable for general GUI programming. Using its own widget, drawing and event systems abstracted from the underlying system-dependent code, it allows for writing programs which look the same on all supported
operating system An operating system (OS) is system software that manages computer hardware and software resources, and provides common daemon (computing), services for computer programs. Time-sharing operating systems scheduler (computing), schedule tasks for ...
s. FLTK is
free and open-source software Free and open-source software (FOSS) is software available under a license that grants users the right to use, modify, and distribute the software modified or not to everyone free of charge. FOSS is an inclusive umbrella term encompassing free ...
, licensed under
GNU Lesser General Public License The GNU Lesser General Public License (LGPL) is a free-software license published by the Free Software Foundation (FSF). The license allows developers and companies to use and integrate a software component released under the LGPL into their own ...
(LGPL) with an added clause permitting static linking from applications with incompatible licenses. In contrast to user interface libraries like
GTK GTK (formerly GIMP ToolKit and GTK+) is a free software cross-platform widget toolkit for creating graphical user interfaces (GUIs). It is licensed under the terms of the GNU Lesser General Public License, allowing both Free software, free and ...
, Qt, and
wxWidgets wxWidgets (formerly wxWindows) is a widget toolkit and tools library for creating graphical user interfaces (GUIs) for cross-platform applications. wxWidgets enables a program's GUI code to compile and run on several computer platforms with no s ...
, 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 complex macros, separate code preprocessors, and use of some advanced C++ features: templates, exceptions, and
run-time type information In computer programming, run-time type information or run-time type identification (RTTI) is a feature of some programming languages (such as C++, Object Pascal, and Ada) that exposes information about an object's data type at runtime. Run-time ...
(RTTI) or, for FLTK 1.x,
namespace In computing, a namespace is a set of signs (''names'') that are used to identify and refer to objects of various kinds. A namespace ensures that all of a given set of objects have unique names so that they can be easily identified. Namespaces ...
s. Combined with the modest size of the package, this makes it relatively easy to learn for new users. 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.


Meaning of the name

FLTK was originally designed to be compatible with the Forms Library written for
Silicon Graphics Silicon Graphics, Inc. (stylized as SiliconGraphics before 1999, later rebranded SGI, historically known as Silicon Graphics Computer Systems or SGCS) was an American high-performance computing manufacturer, producing computer hardware and soft ...
(SGI) machines (a derivative of this library called ''
XForms XForms is an XML format used for collecting inputs from web forms. XForms was designed to be the next generation of HTML / XHTML forms, but is generic enough that it can also be used in a standalone manner or with presentation languages other tha ...
'' is still used quite often). In that library, all functions and structures start 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 that searching "FL" on the Internet was a problem, because it is also the abbreviation for
Florida Florida ( ; ) is a U.S. state, state in the Southeastern United States, Southeastern region of the United States. It borders the Gulf of Mexico to the west, Alabama to the northwest, Georgia (U.S. state), Georgia to the north, the Atlantic ...
. 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 ''Fast Light Tool Kit'' (FLTK).


Architecture

FLTK is an
object-oriented Object-oriented programming (OOP) is a programming paradigm based on the concept of '' objects''. Objects can contain data (called fields, attributes or properties) and have actions they can perform (called procedures or methods and impleme ...
widget toolkit A widget toolkit, widget library, GUI toolkit, or UX library is a library (computing), library or a collection of libraries containing a set of graphical control elements (called ''widgets'') used to construct the graphical user interface (GUI) of ...
written in the programming language C++. While GTK is mainly optimized for the
X Window System The X Window System (X11, or simply X) is a windowing system for bitmap displays, common on Unix-like operating systems. X originated as part of Project Athena at Massachusetts Institute of Technology (MIT) in 1984. The X protocol has been at ...
, FLTK works on other platforms, including
Microsoft Windows Windows is a Product lining, product line of Proprietary software, proprietary graphical user interface, graphical operating systems developed and marketed by Microsoft. It is grouped into families and subfamilies that cater to particular sec ...
(interfaced with the
Windows API The Windows API, informally WinAPI, is the foundational application programming interface (API) that allows a computer program to access the features of the Microsoft Windows operating system in which the program is running. Programs can acces ...
), and
OS X macOS, previously OS X and originally Mac OS X, is a Unix, Unix-based operating system developed and marketed by Apple Inc., Apple since 2001. It is the current operating system for Apple's Mac (computer), Mac computers. With ...
(interfaced with
Quartz Quartz is a hard, crystalline mineral composed of silica (silicon dioxide). The Atom, atoms are linked in a continuous framework of SiO4 silicon–oxygen Tetrahedral molecular geometry, tetrahedra, with each oxygen being shared between two tet ...
). A Wayland back-end has been implemented and is available since release 1.4.0. FLTK2 has gained experimental support for optionally using the
cairo Cairo ( ; , ) is the Capital city, capital and largest city of Egypt and the Cairo Governorate, being home to more than 10 million people. It is also part of the List of urban agglomerations in Africa, largest urban agglomeration in Africa, L ...
graphics library.


Language bindings

A library written in one programming language may be used in another language if
language binding In programming and software design, a binding is an application programming interface (API) that provides glue code specifically made to allow a programming language to use a foreign library or operating system service (one that is not native to ...
s are written. FLTK has a range of bindings for various languages. FLTK was mainly designed for, and is written in, the
programming language A programming language is a system of notation for writing computer programs. Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
C++. However, bindings exist for other languages, for example Lua,
Perl Perl is a high-level, general-purpose, interpreted, dynamic programming language. Though Perl is not officially an acronym, there are various backronyms in use, including "Practical Extraction and Reporting Language". Perl was developed ...
, Python,
Ruby Ruby is a pinkish-red-to-blood-red-colored gemstone, a variety of the mineral corundum ( aluminium oxide). Ruby is one of the most popular traditional jewelry gems and is very durable. Other varieties of gem-quality corundum are called sapph ...
,
Rust Rust is an iron oxide, a usually reddish-brown oxide formed by the reaction of iron and oxygen in the catalytic presence of water or air moisture. Rust consists of hydrous iron(III) oxides (Fe2O3·nH2O) and iron(III) oxide-hydroxide (FeO(OH) ...
and
Tcl TCL or Tcl or TCLs may refer to: Business * TCL Technology, a Chinese consumer electronics and appliance company ** TCL Electronics, a subsidiary of TCL Technology * Texas Collegiate League, a collegiate baseball league * Trade Centre Limited ...
. For FLTK 1.x, this example creates a window with an ''Okay''
button A button is a fastener that joins two pieces of fabric together by slipping through a loop or by sliding through a buttonhole. In modern clothing and fashion design, buttons are commonly made of plastic but also may be made of metal, wood, or ...
: # include # include # include int main(int argc, char *argv[])


GUI designers

FLTK includes ''Fast Light User Interface Designer'' (FLUID), a graphical GUI designer that generates C++ source and header files.


Use

Many programs and projects use FLTK, including: *
Nanolinux NanoLinux is an open source, free and very lightweight Linux distribution that requires only 14 MB of disk space including tiny versions of the most common desktop applications and several games. It is based on the Core version of the Tiny Core ...
, 14 MB Linux distribution * XFDOS, a FreeDOS-based distribution with a GUI, porting Nano-X and FLTK * Agenda VR3, a
Linux Linux ( ) is a family of open source Unix-like operating systems based on the Linux kernel, an kernel (operating system), operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically package manager, pac ...
-based
personal digital assistant A personal digital assistant (PDA) is a multi-purpose mobile device which functions as a personal information manager. Following a boom in the 1990s and 2000s, PDAs were mostly displaced by the widespread adoption of more highly capable smar ...
with software based on FLTK. **
third-party Third party may refer to: Business * Third-party source, a supplier company not owned by the buyer or seller * Third-party beneficiary, a person who could sue on a contract, despite not being an active party * Third-party insurance, such as a veh ...
Agenda VR3 software * Amnesia: The Dark Descent, by Frictional Games uses FLTK in its launcher application * MwendanoWD,
Logic puzzle A logic puzzle is a puzzle deriving from the mathematics, mathematical field of deductive reasoning, deduction. History The logic puzzle was first produced by Charles Lutwidge Dodgson, who is better known under his pen name Lewis Carroll, the a ...
for personal computer by YPH. * Audio: ** Fldigi,
amateur radio Amateur radio, also known as ham radio, is the use of the radio frequency radio spectrum, spectrum for purposes of non-commercial exchange of messages, wireless experimentation, self-training, private recreation, radiosport, contesting, and emer ...
software, allows data transmission and text chat via digital modes such as
PSK31 PSK31 or "Phase-shift keying, Phase Shift Keying, 31 Baud", also BPSK31 and QPSK31, is a popular computer-sound card-generated radioteletype mode, used primarily by amateur radio operators to conduct real-time keyboard-to-keyboard Synchronous co ...
** Giada, looper, micro-sequencer, sample player software, open-source ** Prodatum, synthesizer preset editor, uses a lifelike interface design ** ZynAddSubFX, an open-source
software synthesizer A software synthesizer or softsynth is a computer program that generates digital audio, usually for music. Computer software that can create sounds or music is not new, but advances in processing speed now allow softsynths to accomplish the same t ...
* DiSTI GL Studio, human-machine interface development tool * Engineering: ** ForcePAD, an intuitive tool to visualise the behavior of structures subject to loading and boundary conditions ** Gmsh, an open-source
finite element Finite element method (FEM) is a popular method for numerically solving differential equations arising in engineering and mathematical modeling. Typical problem areas of interest include the traditional fields of structural analysis, heat tran ...
mesh generator ** RoboCIM, software to simulate and control operation of a servo robot system and external devices * Equinox Desktop Environment (EDE) * FlBurn optical disc burning software for Linux * Graphics: **
CinePaint CinePaint is a free and open source computer program for painting and retouching bitmap frames of films. It is a fork of version 1.0.4 of the GNU Image Manipulation Program (GIMP). It enjoyed some success as one of the earliest open source ...
, deep-paint software, migrating from
GTK GTK (formerly GIMP ToolKit and GTK+) is a free software cross-platform widget toolkit for creating graphical user interfaces (GUIs). It is licensed under the terms of the GNU Lesser General Public License, allowing both Free software, free and ...
to FLTK, open-source **
ITK-SNAP ITK-SNAP is an interactive software application that allows users to navigate three-dimensional medical images, manually delineate anatomical regions of interest, and perform automatic image segmentation. The software was designed with the audien ...
, software application for medical image segmentation, open-source ** Nuke, a digital compositing program. Until version 5, now replaced by Qt ** Open Movie Editor ** OpenVSP, an open-source NASA parametric 3D CAD for aircraft design and analysing ** PosteRazor, open-source poster printing software for Windows, OS X, Linux ** Tilemap Studio, An open-source tilemap editor for Game Boy, Color, Advance, DS, and SNES projects * SmallBASIC, Windows port * Web browsers: ** Dillo, Dillo-2 was based on FLTK-2, abandoning this FLTK branch, with no official release, was a major cause of Dillo-3 being started, using FLTK1.3 ** Fifth, replicates functioning of early
Opera Opera is a form of History of theatre#European theatre, Western theatre in which music is a fundamental component and dramatic roles are taken by Singing, singers. Such a "work" (the literal translation of the Italian word "opera") is typically ...
** NetRider * Brain Visualizer: An open-source interactive visualizer for large-scale 3D brain models. Part of the Brain Organization Simulation System (BOSS) developed at Stony Brook University *
X window manager An X window manager is a window manager that runs on top of the X Window System, a windowing system mainly used on Unix-like systems. Unlike MacOS Classic, macOS, and Microsoft Windows platforms (excepting Microsoft Windows explorer.exe shel ...
s: ** FLWM ** miwm


Versions

This version history is an example of the sometimes tumultuous nature of open-source development.


1.0.x

This is a prior stable version, now unmaintained.


1.1.x

This is a prior stable version, now unmaintained.


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. The branch is inactive now.


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. All of its features have been incorporated in branch 1.3.


1.3.x

Previous stable release.https://www.fltk.org/articles.php?L825 Taken 5 March 2017. Provides UTF-8 support.


1.4.x

Current stable branch. Adds more features to 1.3. This branch is in maintenance mode since release 1.4.2 (Feb. 23, 2025).


1.5.x

Current development branch. This branch is in early development stage. Since FLTK 1.5 CMake is required to build FLTK (configure/Makefile support has been dropped).


3.0 branch

This branch resulted from a vision to "unfork" branches 1.x and 2.0, but it was never completed. All efforts to develop this branch have been abandoned. Now inactive.


See also

*
GTK GTK (formerly GIMP ToolKit and GTK+) is a free software cross-platform widget toolkit for creating graphical user interfaces (GUIs). It is licensed under the terms of the GNU Lesser General Public License, allowing both Free software, free and ...
* gtkmm (C++ binding of GTK) * FOX toolkit * IUP (software) - a multi-platform toolkit to build native graphical user interfaces *
Juce JUCE is an open-source software, open-source cross-platform C++ application framework, used for the development of desktop and mobile applications. JUCE is used in particular for its graphical user interface, GUI and Plug-in (computing), plug-in ...
*
Qt (software) Qt ( pronounced "cute") is a cross-platform application development framework for creating graphical user interfaces as well as Cross-platform software, cross-platform applications that run on various software and hardware platforms such as L ...
*
Widget toolkit A widget toolkit, widget library, GUI toolkit, or UX library is a library (computing), library or a collection of libraries containing a set of graphical control elements (called ''widgets'') used to construct the graphical user interface (GUI) of ...
*
wxWidgets wxWidgets (formerly wxWindows) is a widget toolkit and tools library for creating graphical user interfaces (GUIs) for cross-platform applications. wxWidgets enables a program's GUI code to compile and run on several computer platforms with no s ...
- cross platform open source C++ widgets toolkit developed by community * U++ *
List of widget toolkits This article provides a list of widget toolkits (also known as GUI frameworks), used to construct the graphical user interface (GUI) of programs, organized by their relationships with various operating systems. Low-level widget toolkits Integrat ...


References


External links

* {{Widget toolkits Cross-platform free software Free computer libraries Free software programmed in C++ Software that uses Cairo (graphics) Software using the GNU Lesser General Public License Widget toolkits X-based libraries