FLTK

Last updated
FLTK
Initial release1998;26 years ago (1998)
Stable release 1.3.8 (November 20, 2021;2 years ago (2021-11-20) [1] ) [±]
Preview release experimental-2022-01 (January 23, 2022;2 years ago (2022-01-23)) [±]
Repository
Written in C++
Operating system Unix-like with X11, macOS, Microsoft Windows, AmigaOS 4
Type User interface library
License GNU Lesser General Public License version 2 with an exception to allow static linking [2]
Website www.fltk.org

Fast Light Toolkit (FLTK) [3] is a cross-platform widget (graphical control element) library for graphical user interfaces (GUIs), developed by Bill Spitzak and others. Made to accommodate 3D graphics programming, it has an interface to OpenGL, but it is also suitable for general GUI programming.

Contents

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 systems.

FLTK is free and open-source software, licensed under GNU Lesser General Public License (LGPL) with an added clause permitting static linking from applications with incompatible licenses.

In contrast to user interface libraries like GTK, 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 complex macros, separate code preprocessors, and use of some advanced C++ features: templates, exceptions, and run-time type information (RTTI) or, for FLTK 1.x, namespaces. Combined with the modest size of the package, this makes it relatively easy to learn for new users. [4]

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 (SGI) machines (a derivative of this library called XForms 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. 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). [5]

Architecture

FLTK is an object-oriented widget toolkit written in the programming language C++. While GTK is mainly optimized for the X Window System, FLTK works on other platforms, including Microsoft Windows (interfaced with the Windows API), and OS X (interfaced with Quartz). A Wayland back-end has been implemented and will be available in release 1.4.0. [6] FLTK2 has gained experimental support for optionally using the cairo graphics library.

Language bindings

A library written in one programming language may be used in another language if language bindings are written. FLTK has a range of bindings for various languages.

FLTK was mainly designed for, and is written in, the programming language C++. However, bindings exist for other languages, for example Lua, [7] Perl, [8] Python, [9] Ruby, [10] Rust [11] and Tcl. [12]

For FLTK 1.x, this example creates a window with an Okay button:

#include<FL/Fl.H>#include<FL/Fl_Window.H>#include<FL/Fl_Button.H>intmain(intargc,char*argv[]){Fl_Window*w=newFl_Window(330,190);newFl_Button(110,130,100,35,"Okay");w->end();w->show(argc,argv);returnFl::run();}

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:

Versions

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

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.

1.3.x

Current stable release. [35] Provides UTF-8 support.

1.4.x

Current development branch. Adds more features to 1.3. [35]

3.0 branch

This branch is mostly a conceptual model for future work. Now inactive.

See also

Related Research Articles

In computing, a desktop environment (DE) is an implementation of the desktop metaphor made of a bundle of programs running on top of a computer operating system that share a common graphical user interface (GUI), sometimes described as a graphical shell. The desktop environment was seen mostly on personal computers until the rise of mobile computing. Desktop GUIs help the user to easily access and edit files, while they usually do not provide access to all of the features found in the underlying operating system. Instead, the traditional command-line interface (CLI) is still used when full control over the operating system is required.

<span class="mw-page-title-main">Gambas</span> Integrated development environment

Gambas is the name of an object-oriented dialect of the BASIC programming language, as well as the integrated development environment that accompanies it. Designed to run on Linux and other Unix-like computer operating systems, its name is a recursive acronym for Gambas Almost Means Basic. Gambas is also the word for prawns in the Spanish, French, and Portuguese languages, from which the project's logos are derived.

wxWidgets Widget toolkit

wxWidgets 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 minimal or no code changes. A wide choice of compilers and other tools to use with wxWidgets facilitates development of sophisticated applications. wxWidgets supports a comprehensive range of popular operating systems and graphical libraries, both proprietary and free, and is widely deployed in prominent organizations.

<span class="mw-page-title-main">Standard Widget Toolkit</span> Graphical widget toolkit for use with the Java platform

The Standard Widget Toolkit (SWT) is a graphical widget toolkit for use with the Java platform. It was originally developed by Stephen Northover at IBM and is now maintained by the Eclipse Foundation in tandem with the Eclipse IDE. It is an alternative to the Abstract Window Toolkit (AWT) and Swing Java graphical user interface (GUI) toolkits provided by Sun Microsystems as part of the Java Platform, Standard Edition (J2SE).

<span class="mw-page-title-main">PyQt</span> Python GUI library

PyQt is a Python binding of the cross-platform GUI toolkit Qt, implemented as a Python plug-in. PyQt is free software developed by the British firm Riverbank Computing. It is available under similar terms to Qt versions older than 4.5; this means a variety of licenses including GNU General Public License (GPL) and commercial license, but not the GNU Lesser General Public License (LGPL). PyQt supports Microsoft Windows as well as various kinds of UNIX, including Linux and MacOS.

<span class="mw-page-title-main">Fox toolkit</span>

The FOX toolkit is an open-source, cross-platform widget toolkit, i.e. a library of basic elements for building a graphical user interface (GUI). FOX stands for Free Objects for X.

<span class="mw-page-title-main">FLUID</span> Graphical editor and GUI builder

FLUID is a graphical editor and GUI builder that is used to produce FLTK source code. FLUID edits and saves its state in text .fl files, which can be edited in a text editor for finer control over display and behavior.

<span class="mw-page-title-main">Graphical user interface builder</span> Software development tool

A graphical user interface builder, also known as GUI designer or sometimes RAD IDE, is a software development tool that simplifies the creation of GUIs by allowing the designer to arrange graphical control elements using a drag-and-drop WYSIWYG editor. Without a GUI builder, a GUI must be built by manually specifying each widget's parameters in the source code, with no visual feedback until the program is run. Such tools are usually called the term RAD IDE.

<span class="mw-page-title-main">Magic User Interface</span> Widget toolkit for AmigaOS

The Magic User Interface is an object-oriented system by Stefan Stuntz to generate and maintain graphical user interfaces. With the aid of a preferences program, the user of an application has the ability to customize the system according to personal taste.

<span class="mw-page-title-main">X Athena Widgets</span>

X Athena Widgets or Xaw is a GUI widget library for the X Window System. Developed as part of Project Athena, Xaw was written under the auspices of the MIT X Consortium as a sample widget set built on X Toolkit Intrinsics (Xt); Xt and Xaw are collectively known as the X Toolkit. Xaw has been largely superseded by more sophisticated toolkits like Motif, and later toolkits such as GTK, and Qt, but it is still maintained and is available as part of most X Window System installations. The library, like other core parts of X, is licensed under the MIT License.

gtkmm is the official C++ interface for the popular GUI library GTK. gtkmm is free software distributed under the GNU Lesser General Public License (LGPL).

A graphics library is a program library designed to aid in rendering computer graphics to a monitor. This typically involves providing optimized versions of functions that handle common rendering tasks. This can be done purely in software and running on the CPU, common in embedded systems, or being hardware accelerated by a GPU, more common in PCs. By employing these functions, a program can assemble an image to be output to a monitor. This relieves the programmer of the task of creating and optimizing these functions, and allows them to focus on building the graphics program. Graphics libraries are mainly used in video games and simulations.

<span class="mw-page-title-main">Newt (programming library)</span>

Newt is a programming library for color text mode, widget-based user interfaces. Newt can be used to add stacked windows, entry widgets, checkboxes, radio buttons, labels, plain text fields, scrollbars, etc., to text user interfaces. This package also contains the shared library needed by programs built with newt, as well as a CLI application whiptail, which provides the most commonly used features of dialog. Newt is based on the slang library. It abbreviates from Not Erik's Windowing Toolkit.

fpGUI Graphical user interface toolkit in Object Pascal

fpGUI, the Free Pascal GUI toolkit, is a cross-platform graphical user interface toolkit developed by Graeme Geldenhuys. fpGUI is open source and free software, licensed under a Modified LGPL license. The toolkit has been implemented using the Free Pascal compiler, meaning it is written in the Object Pascal language.

java-gnome is a set of language bindings for the Java programming language for use in the GNOME desktop environment. It is part of the official GNOME language bindings suite and provides a set of libraries allowing developers to write computer programs for GNOME using the Java programming language and the GTK cross-platform widget toolkit.

The GTK-server project aims to bring graphical user interface (GUI) programming to any interpreted language using the GNU Image Manipulation Program (GIMP) ToolKit (GTK) or XForms. It releases free and open-source software under the GNU General Public License.

<span class="mw-page-title-main">GTK</span> Free and open-source cross-platform widget toolkit for creating graphical user interfaces

GTK is a free and open-source 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 and proprietary software to use it. It is one of the most popular toolkits for the Wayland and X11 windowing systems.

mpv (media player) Free and open-source media player software

mpv is free and open-source media player software based on MPlayer, mplayer2 and FFmpeg. It runs on several operating systems, including Unix-like operating systems and Microsoft Windows, along with having an Android port called mpv-android. It is cross-platform, running on ARM, PowerPC, x86/IA-32, x86-64, and MIPS architecture.

<span class="mw-page-title-main">Nanolinux</span> Lightweight Linux distribution

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 Linux distribution and uses Busybox, Nano-X instead of X.Org, FLTK 1.3.x as the default GUI toolkit, and SLWM. The included applications are mainly based on FLTK.

References

  1. https://www.fltk.org/articles.php?L1782+I0+T+P1+Q
  2. "FLTK License Agreement". Archived from the original on 2001-12-18. Retrieved 2020-01-30.
  3. "Fast Light Toolkit - Fast Light Toolkit (FLTK)". www.fltk.org. Archived from the original on 2020-02-02. Retrieved 2020-01-30.
  4. "Fast Light ToolKit (FLTK) » CppLibs". Archived from the original on 2015-05-18. Retrieved 2015-05-13.
  5. "Article #363: What does "FLTK" mean? - Fast Light Toolkit (FLTK)". www.fltk.org. Archived from the original on 2020-07-31. Retrieved 2020-01-30.
  6. "STR #3371: Wayland Display Server Protocol support - Fast Light Toolkit (FLTK)". www.fltk.org. Archived from the original on 2022-11-19. Retrieved 2020-08-06.
  7. "murgaLua homepage". Archived from the original on 2012-07-07. Retrieved 2008-12-18.
  8. "Links: By Category - Links - Fast Light Toolkit (FLTK)". www.fltk.org. Archived from the original on 2023-03-15. Retrieved 2023-04-07.
  9. "pyFLTK Home Page". pyfltk.sourceforge.io. Archived from the original on 2023-04-07. Retrieved 2023-04-07.
  10. "Ruby/FLTK". ruby-fltk.sourceforge.net. Archived from the original on 2023-04-13. Retrieved 2023-04-07.
  11. "fltk - Rust". docs.rs. Archived from the original on 2023-04-07. Retrieved 2023-04-07.
  12. "Tcl/Fltk dynamic extension for Tcl". SourceForge. 3 April 2013. Archived from the original on 7 April 2023. Retrieved 7 April 2023.
  13. "Nanolinux". SourceForge. 8 October 2016. Archived from the original on 11 November 2020. Retrieved 15 April 2018.
  14. "Tiny to the extreme: Nanolinux". 30 November 2014. Archived from the original on 16 April 2018. Retrieved 15 April 2018.
  15. 1 2 "An interview with the Nanolinux developer". 30 December 2014. Archived from the original on 16 April 2018. Retrieved 15 April 2018.
  16. 1 2 "Artificial Intelligence Methods". Archived from the original on 1999-04-20. Retrieved 2019-08-15.
  17. "PC HTML Editors". Archived from the original on 2018-04-16. Retrieved 2018-04-15.
  18. 1 2 "Georg's Personal Homepage". www.georgpotthast.de. Archived from the original on 2018-08-17. Retrieved 2018-04-15.
  19. "An extraordinary TK example!". 12 October 2012. Archived from the original on 16 April 2018. Retrieved 15 April 2018.
  20. "YPH". Archived from the original on 2018-10-27. Retrieved 2018-10-27.
  21. "Giada, hardcore loopmachine". Archived from the original on 2011-09-25. Retrieved 2011-09-29.
  22. "prodatum - official homepage". prodatum.sourceforge.net. Archived from the original on 2023-04-07. Retrieved 2023-04-07.
  23. "DiSTI GL Studio". Archived from the original on 2012-08-15. Retrieved 2010-07-29.
  24. "ForcePAD". forcepad.sourceforge.net. Archived from the original on 2023-04-07. Retrieved 2023-04-07.
  25. "RoboCIM - Robotics software". Archived from the original on 2013-05-04. Retrieved 2013-06-29.
  26. "Free | CD DVD burning software for Linux". flburn.sourceforge.net. Archived from the original on 2023-04-10. Retrieved 2023-04-07.
  27. "Open Movie Editor - Free and Open Source Video Editor". www.openmovieeditor.org. Archived from the original on 2012-05-18. Retrieved 2008-04-12.
  28. "OpenVSP". openvsp.org. Archived from the original on 2023-04-07. Retrieved 2023-04-07.
  29. "PosteRazor - Make your own poster!". posterazor.sourceforge.io. Archived from the original on 2023-04-07. Retrieved 2023-04-07.
  30. "Tilemap Studio". GitHub . 18 October 2021. Archived from the original on 8 September 2021. Retrieved 8 September 2021.
  31. "Fifth - Home". fifth-browser.sourceforge.net. Archived from the original on 2023-04-14. Retrieved 2023-04-07.
  32. "NetRider". SourceForge. 23 February 2016. Archived from the original on 7 April 2023. Retrieved 7 April 2023.
  33. "Viz (Brain Visualizer)". GitHub . 25 August 2021. Archived from the original on 8 September 2021. Retrieved 8 September 2021.
  34. "What are the Versions of FLTK?". Archived from the original on 2010-06-28. Retrieved 2010-07-23.
  35. 1 2 https://www.fltk.org/articles.php?L825 Archived 2019-08-02 at the Wayback Machine Taken 5 March 2017.