FLTK explained

FLTK
Programming Language:C++
Operating System:Unix-like with X11, macOS, Microsoft Windows, AmigaOS 4
Genre:User interface library
License:GNU Lesser General Public License version 2 with an exception to allow static linking[1]

Fast Light Toolkit (FLTK)[2] 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.

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.[3]

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).[4]

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.[5] 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,[6] Perl,[7] Python,[8] Ruby,[9] Rust[10] and Tcl.[11]

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

  1. include
  2. include
  3. 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:

Versions

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

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.[34] Provides UTF-8 support.

1.4.x

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

3.0 branch

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

See also

Notes and References

  1. Web site: FLTK License Agreement. 2020-01-30. 2001-12-18. https://web.archive.org/web/20011218154953/https://www.fltk.org/COPYING.php. live.
  2. Web site: Fast Light Toolkit - Fast Light Toolkit (FLTK). www.fltk.org. 2020-01-30. 2020-02-02. https://web.archive.org/web/20200202212901/https://www.fltk.org/. live.
  3. Web site: Fast Light ToolKit (FLTK) » CppLibs . 2015-05-13 . https://web.archive.org/web/20150518081826/http://www.cpplibs.com/libraries/fltk/ . 2015-05-18 . dead.
  4. Web site: Article #363: What does "FLTK" mean? - Fast Light Toolkit (FLTK). www.fltk.org. 2020-01-30. 2020-07-31. https://web.archive.org/web/20200731224107/https://www.fltk.org/articles.php?L363+I0+TFAQ+P1+Q. live.
  5. Web site: STR #3371: Wayland Display Server Protocol support - Fast Light Toolkit (FLTK). 2020-08-06. www.fltk.org. 2022-11-19. https://web.archive.org/web/20221119023708/https://www.fltk.org/str.php?L3371. live.
  6. Web site: murgaLua homepage. 2008-12-18. 2012-07-07. https://web.archive.org/web/20120707032113/http://www.murga-projects.com/murgaLua.html. dead.
  7. Web site: Links: By Category - Links - Fast Light Toolkit (FLTK). www.fltk.org. 2023-04-07. 2023-03-15. https://web.archive.org/web/20230315011216/https://www.fltk.org/links.php. live.
  8. Web site: pyFLTK Home Page. pyfltk.sourceforge.io. 2023-04-07. 2023-04-07. https://web.archive.org/web/20230407223849/https://pyfltk.sourceforge.io/. live.
  9. Web site: Ruby/FLTK. ruby-fltk.sourceforge.net. 2023-04-07. 2023-04-13. https://web.archive.org/web/20230413204411/https://ruby-fltk.sourceforge.net/. live.
  10. Web site: fltk - Rust. docs.rs. 2023-04-07. 2023-04-07. https://web.archive.org/web/20230407223850/https://docs.rs/fltk/latest/fltk/. live.
  11. Web site: Tcl/Fltk dynamic extension for Tcl. SourceForge. 3 April 2013. 7 April 2023. 7 April 2023. https://web.archive.org/web/20230407223850/https://sourceforge.net/projects/fltkwish/. live.
  12. Web site: Nanolinux. SourceForge. 8 October 2016. 15 April 2018. 11 November 2020. https://web.archive.org/web/20201111214058/https://sourceforge.net/projects/nanolinux/. live.
  13. Web site: Tiny to the extreme: Nanolinux. 30 November 2014. 15 April 2018. 16 April 2018. https://web.archive.org/web/20180416134741/https://eerielinux.wordpress.com/2014/11/30/tiny-to-the-extreme-nanolinux/. live.
  14. Web site: An interview with the Nanolinux developer. 30 December 2014. 15 April 2018. 16 April 2018. https://web.archive.org/web/20180416074135/https://eerielinux.wordpress.com/2014/12/30/an-interview-with-the-nanolinux-developer/. live.
  15. Web site: Artificial Intelligence Methods . 2019-08-15 . https://web.archive.org/web/19990420083003/http://tawny.cs.nott.ac.uk/~sbx/winnie/aim/overview.htm . 1999-04-20 . live.
  16. Web site: PC HTML Editors. 2018-04-15. 2018-04-16. https://web.archive.org/web/20180416073704/http://sites.utoronto.ca/webdocs/HTMLdocs/PCTOOLS/pc_editors.html. live.
  17. Web site: Georg's Personal Homepage. www.georgpotthast.de. 2018-04-15. 2018-08-17. https://web.archive.org/web/20180817050742/http://www.georgpotthast.de/. live.
  18. Web site: An extraordinary TK example!. 12 October 2012. 15 April 2018. 16 April 2018. https://web.archive.org/web/20180416074037/https://eerielinux.wordpress.com/2012/10/12/an-extraordinary-tk-example/. live.
  19. Web site: YPH. 2018-10-27. 2018-10-27. https://web.archive.org/web/20181027101449/http://tehelimu.ezyro.com/Subsites/enl/tls.html/. live.
  20. Web site: Giada, hardcore loopmachine . 2011-09-29 . https://web.archive.org/web/20110925183623/http://www.monocasual.com/giada/ . 2011-09-25 . dead.
  21. Web site: prodatum - official homepage. prodatum.sourceforge.net. 2023-04-07. 2023-04-07. https://web.archive.org/web/20230407223851/https://prodatum.sourceforge.net/. live.
  22. Web site: DiSTI GL Studio . 2010-07-29 . 2012-08-15 . https://web.archive.org/web/20120815051039/http://www.disti.com/ . dead .
  23. Web site: ForcePAD. forcepad.sourceforge.net. 2023-04-07. 2023-04-07. https://web.archive.org/web/20230407223849/https://forcepad.sourceforge.net/. live.
  24. Web site: RoboCIM - Robotics software. 2013-06-29. 2013-05-04. https://web.archive.org/web/20130504071531/http://www.labvolt.com/products/automation-and-robotics/robotics/robocim-5250-software-5251. live.
  25. Web site: Free | CD DVD burning software for Linux. flburn.sourceforge.net. 2023-04-07. 2023-04-10. https://web.archive.org/web/20230410111224/https://flburn.sourceforge.net/. live.
  26. Web site: Open Movie Editor - Free and Open Source Video Editor. www.openmovieeditor.org. 2008-04-12. 2012-05-18. https://web.archive.org/web/20120518011331/http://www.openmovieeditor.org/. live.
  27. Web site: OpenVSP. openvsp.org. 2023-04-07. 2023-04-07. https://web.archive.org/web/20230407223849/https://openvsp.org/. live.
  28. Web site: PosteRazor - Make your own poster!. posterazor.sourceforge.io. 2023-04-07. 2023-04-07. https://web.archive.org/web/20230407223850/https://posterazor.sourceforge.io/. live.
  29. Web site: Tilemap Studio. GitHub. 18 October 2021. 8 September 2021. 8 September 2021. https://web.archive.org/web/20210908115111/https://github.com/Rangi42/tilemap-studio. live.
  30. Web site: Fifth - Home. fifth-browser.sourceforge.net. 2023-04-07. 2023-04-14. https://web.archive.org/web/20230414051323/https://fifth-browser.sourceforge.net/. live.
  31. Web site: NetRider. SourceForge. 23 February 2016. 7 April 2023. 7 April 2023. https://web.archive.org/web/20230407223848/https://sourceforge.net/projects/netrider/. live.
  32. Web site: Viz (Brain Visualizer). GitHub. 25 August 2021. 8 September 2021. 8 September 2021. https://web.archive.org/web/20210908115107/https://github.com/roukaour/viz-brain-visualizer. live.
  33. Web site: What are the Versions of FLTK?. 2010-07-23. 2010-06-28. https://web.archive.org/web/20100628085355/http://www.fltk.org/articles.php?L825+I0+T+P1+Q. live.
  34. https://www.fltk.org/articles.php?L825 Taken 5 March 2017.