FLTK: Difference between revisions
Citation bot (talk | contribs) Add: date, title. Changed bare reference to CS1/2. | Use this bot. Report bugs. | Suggested by BrownHairedGirl | Linked from User:BrownHairedGirl/Articles_with_bare_links | #UCB_webform_linked 750/998 |
Bunnypranav (talk | contribs) Adding local short description: "Widget library for GUIs", overriding Wikidata description "Widget toolkit" |
||
(23 intermediate revisions by 16 users not shown) | |||
Line 1: | Line 1: | ||
{{Short description|Widget library for GUIs}} |
|||
{{Infobox software |
{{Infobox software |
||
| name |
| name = FLTK |
||
| logo |
| logo = FLTK shadow.svg |
||
| screenshot |
| screenshot = |
||
| caption = |
|||
⚫ | |||
| caption = |
|||
⚫ | |||
⚫ | |||
| latest release version = 1.4.0-1 |
|||
⚫ | |||
| latest release date = {{Start date and age|2024|11|18}} |
|||
| programming language = [[C++]] |
| programming language = [[C++]] |
||
| operating system |
| operating system = [[Unix-like]] with [[X Window System|X11]] or [[Wayland (protocol)|Wayland]], [[macOS]], [[Microsoft Windows]], [[AmigaOS 4]] |
||
| genre |
| genre = [[Widget toolkit|User interface library]] |
||
| license |
| license = [[GNU Lesser General Public License]] version 2 with an exception to allow [[static linking]]<ref>{{cite web|url=https://www.fltk.org/COPYING.php|title=FLTK License Agreement|access-date=2020-01-30|archive-date=2001-12-18|archive-url=https://web.archive.org/web/20011218154953/https://www.fltk.org/COPYING.php|url-status=live}}</ref> |
||
| website = {{URL|https://www.fltk.org}} |
|||
| title = FLTK License Agreement}}</ref> |
|||
| website = {{URL|https://www.fltk.org}} |
|||
}} |
}} |
||
'''Fast Light Toolkit''' ('''FLTK' |
'''Fast Light Toolkit''' ('''FLTK''')<ref>{{Cite web|url=https://www.fltk.org/|title=Fast Light Toolkit - Fast Light Toolkit (FLTK)|website=www.fltk.org|access-date=2020-01-30|archive-date=2020-02-02|archive-url=https://web.archive.org/web/20200202212901/https://www.fltk.org/|url-status=live}}</ref> is a [[cross-platform]] [[Widget (GUI)|widget]] (graphical control element) library for [[graphical user interface]]s (GUIs), developed by Bill Spitzak and others. Made to accommodate [[3D computer graphics|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 system]]s. |
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]]s. |
||
Line 21: | Line 22: | ||
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. |
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 (software)|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|"Hello World" program]] is around 100 [[Kibibyte|KiB]]), and is usually [[Static library|statically linked]]. It also avoids complex macros, separate code preprocessors, and use of some advanced [[C++]] features: templates, [[exception handling|exceptions]], and [[run-time type information]] (RTTI) or, for FLTK 1.x, [[namespace]]s. Combined with the modest size of the package, this makes it relatively easy to learn for new users.<ref>{{cite web |url=http://www.cpplibs.com/libraries/fltk/ |title= |
In contrast to user interface libraries like [[GTK]], [[Qt (software)|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|"Hello World" program]] is around 100 [[Kibibyte|KiB]]), and is usually [[Static library|statically linked]]. It also avoids complex macros, separate code preprocessors, and use of some advanced [[C++]] features: templates, [[exception handling|exceptions]], and [[run-time type information]] (RTTI) or, for FLTK 1.x, [[namespace]]s. Combined with the modest size of the package, this makes it relatively easy to learn for new users.<ref>{{cite web |url=http://www.cpplibs.com/libraries/fltk/ |title=Fast Light ToolKit (FLTK) » CppLibs |access-date=2015-05-13 |archive-url=https://web.archive.org/web/20150518081826/http://www.cpplibs.com/libraries/fltk/ |archive-date=2015-05-18 |url-status=dead}}</ref> |
||
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. |
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== |
==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 (toolkit)|XForms]]'' is still used quite often). In that library, all functions and structures start with <code>fl_</code>. This naming was extended to all new methods and widgets in the C++ library, and this prefix <code>FL</code> 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).<ref>{{Cite web|url=https://www.fltk.org/articles.php?L363+I0+TFAQ+P1+Q|title=Article #363: What does "FLTK" mean? - Fast Light Toolkit (FLTK)}}</ref> |
FLTK was originally designed to be compatible with the Forms Library written for [[Silicon Graphics]] (SGI) machines (a derivative of this library called ''[[XForms (toolkit)|XForms]]'' is still used quite often). In that library, all functions and structures start with <code>fl_</code>. This naming was extended to all new methods and widgets in the C++ library, and this prefix <code>FL</code> 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).<ref>{{Cite web|url=https://www.fltk.org/articles.php?L363+I0+TFAQ+P1+Q|title=Article #363: What does "FLTK" mean? - Fast Light Toolkit (FLTK)|website=www.fltk.org|access-date=2020-01-30|archive-date=2020-07-31|archive-url=https://web.archive.org/web/20200731224107/https://www.fltk.org/articles.php?L363+I0+TFAQ+P1+Q|url-status=live}}</ref> |
||
==Architecture== |
==Architecture== |
||
FLTK is an [[object-oriented]] [[widget toolkit]] written in the programming language [[C++]]. While GTK is mainly for the [[X Window System]], FLTK works on other platforms, including [[Microsoft Windows]] (interfaced with the [[Windows API]]), and [[OS X]] (interfaced with [[Quartz (graphics layer)|Quartz]]). A [[Wayland (display server protocol)|Wayland]] back-end is |
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 (graphics layer)|Quartz]]). A [[Wayland (display server protocol)|Wayland]] back-end has been implemented and is available since release 1.4.0.<ref>{{Cite web|title=STR #3371: Wayland Display Server Protocol support - Fast Light Toolkit (FLTK)|url=https://www.fltk.org/str.php?L3371|access-date=2020-08-06|website=www.fltk.org|archive-date=2022-11-19|archive-url=https://web.archive.org/web/20221119023708/https://www.fltk.org/str.php?L3371|url-status=live}}</ref> FLTK2 has gained experimental support for optionally using the [[cairo (graphics)|cairo]] graphics library. |
||
===Language bindings=== |
===Language bindings=== |
||
A library written in one programming language may be used in another language if [[language binding]]s are written. FLTK has a range of bindings for various languages. |
A library written in one programming language may be used in another language if [[language binding]]s are written. FLTK has a range of bindings for various languages. |
||
| url = https://www.gtk.org/language-bindings.php |
|||
| title = GTK Language Bindings}}</ref> |
|||
FLTK was mainly designed for, and is written in, the [[programming language]] [[C++]]. However, bindings exist for other languages, for example [[Lua (programming language)|Lua]],<ref>{{ |
FLTK was mainly designed for, and is written in, the [[programming language]] [[C++]]. However, bindings exist for other languages, for example [[Lua (programming language)|Lua]],<ref>{{Cite web|url=http://www.murga-projects.com/murgaLua.html|title=murgaLua homepage|access-date=2008-12-18|archive-date=2012-07-07|archive-url=https://web.archive.org/web/20120707032113/http://www.murga-projects.com/murgaLua.html|url-status=dead}}</ref> [[Perl]],<ref>{{Cite web|url=https://www.fltk.org/links.php|title=Links: By Category - Links - Fast Light Toolkit (FLTK)|website=www.fltk.org|access-date=2023-04-07|archive-date=2023-03-15|archive-url=https://web.archive.org/web/20230315011216/https://www.fltk.org/links.php|url-status=live}}</ref> [[Python (programming language)|Python]],<ref>{{Cite web|url=https://pyfltk.sourceforge.io/|title=pyFLTK Home Page|website=pyfltk.sourceforge.io|access-date=2023-04-07|archive-date=2023-04-07|archive-url=https://web.archive.org/web/20230407223849/https://pyfltk.sourceforge.io/|url-status=live}}</ref> [[Ruby (programming language)|Ruby]],<ref>{{Cite web|url=https://ruby-fltk.sourceforge.net/|title=Ruby/FLTK|website=ruby-fltk.sourceforge.net|access-date=2023-04-07|archive-date=2023-04-13|archive-url=https://web.archive.org/web/20230413204411/https://ruby-fltk.sourceforge.net/|url-status=live}}</ref> [[Rust (programming language)|Rust]]<ref>{{Cite web|url=https://docs.rs/fltk/latest/fltk/|title=fltk - Rust|website=docs.rs|access-date=2023-04-07|archive-date=2023-04-07|archive-url=https://web.archive.org/web/20230407223850/https://docs.rs/fltk/latest/fltk/|url-status=live}}</ref> and [[Tcl]].<ref>{{Cite web|url=https://sourceforge.net/projects/fltkwish/|title=Tcl/Fltk dynamic extension for Tcl|website=SourceForge|date=3 April 2013|access-date=7 April 2023|archive-date=7 April 2023|archive-url=https://web.archive.org/web/20230407223850/https://sourceforge.net/projects/fltkwish/|url-status=live}}</ref> |
||
For FLTK 1.x, this example creates a window with an ''Okay'' [[button (computing)|button]]: |
For FLTK 1.x, this example creates a window with an ''Okay'' [[button (computing)|button]]: |
||
<syntaxhighlight lang="cpp"> |
<syntaxhighlight lang="cpp"> |
||
#include <FL/Fl.H> |
# include <FL/Fl.H> |
||
#include <FL/Fl_Window.H> |
# include <FL/Fl_Window.H> |
||
#include <FL/Fl_Button.H> |
# include <FL/Fl_Button.H> |
||
int main(int argc, char *argv[]) { |
int main(int argc, char *argv[]) { |
||
Line 60: | Line 59: | ||
Many programs and projects use FLTK, including: |
Many programs and projects use FLTK, including: |
||
* [[Nanolinux]], 14 MB Linux distribution<ref>{{ |
* [[Nanolinux]], 14 MB Linux distribution<ref>{{Cite web|url=https://sourceforge.net/projects/nanolinux/|title=Nanolinux|website=SourceForge|date=8 October 2016|access-date=15 April 2018|archive-date=11 November 2020|archive-url=https://web.archive.org/web/20201111214058/https://sourceforge.net/projects/nanolinux/|url-status=live}}</ref><ref>{{Cite web|url = https://eerielinux.wordpress.com/2014/11/30/tiny-to-the-extreme-nanolinux/|title = Tiny to the extreme: Nanolinux|date = 30 November 2014|access-date = 15 April 2018|archive-date = 16 April 2018|archive-url = https://web.archive.org/web/20180416134741/https://eerielinux.wordpress.com/2014/11/30/tiny-to-the-extreme-nanolinux/|url-status = live}}</ref><ref name="auto1">{{Cite web|url = https://eerielinux.wordpress.com/2014/12/30/an-interview-with-the-nanolinux-developer/|title = An interview with the Nanolinux developer|date = 30 December 2014|access-date = 15 April 2018|archive-date = 16 April 2018|archive-url = https://web.archive.org/web/20180416074135/https://eerielinux.wordpress.com/2014/12/30/an-interview-with-the-nanolinux-developer/|url-status = live}}</ref><ref name="auto2">{{cite web |url=http://tawny.cs.nott.ac.uk/~sbx/winnie/aim/overview.htm |title=Artificial Intelligence Methods |access-date=2019-08-15 |archive-url=https://web.archive.org/web/19990420083003/http://tawny.cs.nott.ac.uk/~sbx/winnie/aim/overview.htm |archive-date=1999-04-20 |url-status=live}}</ref><ref>{{Cite web|url=http://sites.utoronto.ca/webdocs/HTMLdocs/PCTOOLS/pc_editors.html|title=PC HTML Editors|access-date=2018-04-15|archive-date=2018-04-16|archive-url=https://web.archive.org/web/20180416073704/http://sites.utoronto.ca/webdocs/HTMLdocs/PCTOOLS/pc_editors.html|url-status=live}}</ref><ref name="auto">{{Cite web|url=http://www.georgpotthast.de/|title=Georg's Personal Homepage|website=www.georgpotthast.de|access-date=2018-04-15|archive-date=2018-08-17|archive-url=https://web.archive.org/web/20180817050742/http://www.georgpotthast.de/|url-status=live}}</ref> |
||
* XFDOS, a FreeDOS-based distribution with a [[GUI]], porting [[Nano-X]] and FLTK<ref>{{Cite web|url=https://eerielinux.wordpress.com/2012/10/12/an-extraordinary-tk-example/|title=An extraordinary TK example!|date=12 October 2012 |
* XFDOS, a FreeDOS-based distribution with a [[GUI]], porting [[Nano-X]] and FLTK<ref>{{Cite web|url=https://eerielinux.wordpress.com/2012/10/12/an-extraordinary-tk-example/|title=An extraordinary TK example!|date=12 October 2012|access-date=15 April 2018|archive-date=16 April 2018|archive-url=https://web.archive.org/web/20180416074037/https://eerielinux.wordpress.com/2012/10/12/an-extraordinary-tk-example/|url-status=live}}</ref><ref name="auto1"/><ref name="auto2"/><ref name="auto"/> |
||
* [[Agenda VR3]], a [[Linux]]-based [[personal digital assistant]] with software based on FLTK. |
* [[Agenda VR3]], a [[Linux]]-based [[personal digital assistant]] with software based on FLTK. |
||
** [[third-party developer|third-party]] '''Agenda VR3''' software |
** [[third-party developer|third-party]] '''Agenda VR3''' software |
||
* [[Amnesia: The Dark Descent]], by [[Frictional Games]] uses FLTK as its launcher application |
* [[Amnesia: The Dark Descent]], by [[Frictional Games]] uses FLTK as its launcher application |
||
* [[MwendanoWD]], [[Logic puzzle]] for personal computer by YPH.<ref> |
* [[MwendanoWD]], [[Logic puzzle]] for personal computer by YPH.<ref>{{Cite web|url=http://tehelimu.ezyro.com/Subsites/enl/tls.html|title=YPH|access-date=2018-10-27|archive-date=2018-10-27|archive-url=https://web.archive.org/web/20181027101449/http://tehelimu.ezyro.com/Subsites/enl/tls.html/|url-status=live}}</ref> |
||
* Audio: |
* Audio: |
||
** [[Fldigi]], [[amateur radio]] software, allows data transmission and text chat via digital modes such as [[PSK31]] |
** [[Fldigi]], [[amateur radio]] software, allows data transmission and text chat via digital modes such as [[PSK31]] |
||
** Giada, looper, micro-sequencer, sample player software, open-source<ref>{{cite web |url=http://www.monocasual.com/giada |title=Giada, hardcore loopmachine |access-date=2011-09-29 |archive-url=https://web.archive.org/web/20110925183623/http://www.monocasual.com/giada/ |archive-date=2011-09-25 |url-status=dead}}</ref> |
** Giada, looper, micro-sequencer, sample player software, open-source<ref>{{cite web |url=http://www.monocasual.com/giada |title=Giada, hardcore loopmachine |access-date=2011-09-29 |archive-url=https://web.archive.org/web/20110925183623/http://www.monocasual.com/giada/ |archive-date=2011-09-25 |url-status=dead}}</ref> |
||
** Prodatum, synthesizer preset editor, uses a lifelike interface design<ref> |
** Prodatum, synthesizer preset editor, uses a lifelike interface design<ref>{{Cite web|url=https://prodatum.sourceforge.net/|title=prodatum - official homepage|website=prodatum.sourceforge.net|access-date=2023-04-07|archive-date=2023-04-07|archive-url=https://web.archive.org/web/20230407223851/https://prodatum.sourceforge.net/|url-status=live}}</ref> |
||
** [[ZynAddSubFX]], an open-source [[software synthesizer]] |
** [[ZynAddSubFX]], an open-source [[software synthesizer]] |
||
* DiSTI GL Studio, human-machine interface development tool<ref> |
* [[DiSTI]] GL Studio, human-machine interface development tool<ref>{{Cite web |url=http://www.disti.com/ |title=DiSTI GL Studio |access-date=2010-07-29 |archive-date=2012-08-15 |archive-url=https://web.archive.org/web/20120815051039/http://www.disti.com/ |url-status=dead }}</ref> |
||
* Engineering: |
* Engineering: |
||
** ForcePAD, an intuitive tool to visualise the behavior of structures subject to loading and boundary conditions<ref> |
** ForcePAD, an intuitive tool to visualise the behavior of structures subject to loading and boundary conditions<ref>{{Cite web|url=https://forcepad.sourceforge.net/|title=ForcePAD|website=forcepad.sourceforge.net|access-date=2023-04-07|archive-date=2023-04-07|archive-url=https://web.archive.org/web/20230407223849/https://forcepad.sourceforge.net/|url-status=live}}</ref> |
||
** [[Gmsh]], an open-source [[finite element]] mesh generator |
** [[Gmsh]], an open-source [[finite element]] mesh generator |
||
** RoboCIM, software to simulate and control operation of a servo robot system and external devices<ref> |
** RoboCIM, software to simulate and control operation of a servo robot system and external devices<ref>{{Cite web|url=http://www.labvolt.com/products/automation-and-robotics/robotics/robocim-5250-software-5251|title=RoboCIM - Robotics software|access-date=2013-06-29|archive-date=2013-05-04|archive-url=https://web.archive.org/web/20130504071531/http://www.labvolt.com/products/automation-and-robotics/robotics/robocim-5250-software-5251|url-status=live}}</ref> |
||
* [[Equinox Desktop Environment]] (EDE) |
* [[Equinox Desktop Environment]] (EDE) |
||
* FlBurn optical disc burning software for Linux<ref> |
* FlBurn optical disc burning software for Linux<ref>{{Cite web|url=https://flburn.sourceforge.net/|title=Free | CD DVD burning software for Linux|website=flburn.sourceforge.net|access-date=2023-04-07|archive-date=2023-04-10|archive-url=https://web.archive.org/web/20230410111224/https://flburn.sourceforge.net/|url-status=live}}</ref> |
||
* Graphics: |
* Graphics: |
||
** [[Avimator]], a [[Biovision Hierarchy]] (BVH) editor |
|||
** [[CinePaint]], deep-paint software, migrating from [[GTK]] to FLTK, open-source |
** [[CinePaint]], deep-paint software, migrating from [[GTK]] to FLTK, open-source |
||
** [[ITK-SNAP]], software application for medical image segmentation, open-source |
** [[ITK-SNAP]], software application for medical image segmentation, open-source |
||
** [[Nuke (software)|Nuke]], a digital compositing program. Until version 5, now replaced by [[Qt (software)|Qt]] |
** [[Nuke (software)|Nuke]], a digital compositing program. Until version 5, now replaced by [[Qt (software)|Qt]] |
||
** Open Movie Editor<ref> |
** Open Movie Editor<ref>{{Cite web|url=http://www.openmovieeditor.org/|title=Open Movie Editor - Free and Open Source Video Editor|website=www.openmovieeditor.org|access-date=2008-04-12|archive-date=2012-05-18|archive-url=https://web.archive.org/web/20120518011331/http://www.openmovieeditor.org/|url-status=live}}</ref> |
||
** OpenVSP, NASA parametric aircraft |
** [[OpenVSP]], an open-source NASA parametric 3D CAD for aircraft desgign and analysing<ref>{{Cite web|url=https://openvsp.org/|title=OpenVSP|website=openvsp.org|access-date=2023-04-07|archive-date=2023-04-07|archive-url=https://web.archive.org/web/20230407223849/https://openvsp.org/|url-status=live}}</ref> |
||
** PosteRazor, open-source poster printing software for Windows, OS X, Linux<ref> |
** PosteRazor, open-source poster printing software for Windows, OS X, Linux<ref>{{Cite web|url=https://posterazor.sourceforge.io/|title=PosteRazor - Make your own poster!|website=posterazor.sourceforge.io|access-date=2023-04-07|archive-date=2023-04-07|archive-url=https://web.archive.org/web/20230407223850/https://posterazor.sourceforge.io/|url-status=live}}</ref> |
||
** Tilemap Studio, An open-source tilemap editor for Game Boy, Color, Advance, DS, and SNES projects<ref>{{Cite web|url=https://github.com/Rangi42/tilemap-studio|title = Tilemap Studio|date = 18 October 2021}}</ref> |
** Tilemap Studio, An open-source tilemap editor for Game Boy, Color, Advance, DS, and SNES projects<ref>{{Cite web|url = https://github.com/Rangi42/tilemap-studio|title = Tilemap Studio|website = [[GitHub]]|date = 18 October 2021|access-date = 8 September 2021|archive-date = 8 September 2021|archive-url = https://web.archive.org/web/20210908115111/https://github.com/Rangi42/tilemap-studio|url-status = live}}</ref> |
||
* [[SmallBASIC]], Windows port |
* [[SmallBASIC]], Windows port |
||
* Web browsers: |
* 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 |
** [[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 (web browser)|Opera]]<ref> |
** Fifth, replicates functioning of early [[Opera (web browser)|Opera]]<ref>{{Cite web|url=https://fifth-browser.sourceforge.net/|title=Fifth - Home|website=fifth-browser.sourceforge.net|access-date=2023-04-07|archive-date=2023-04-14|archive-url=https://web.archive.org/web/20230414051323/https://fifth-browser.sourceforge.net/|url-status=live}}</ref> |
||
** NetRider<ref>{{Cite web|url=https://sourceforge.net/projects/netrider/|title=NetRider|website=SourceForge|date=23 February 2016|access-date=7 April 2023|archive-date=7 April 2023|archive-url=https://web.archive.org/web/20230407223848/https://sourceforge.net/projects/netrider/|url-status=live}}</ref> |
|||
** NetRider<ref>[http://netrider.sourceforge.net/ NetRider]</ref> |
|||
* 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<ref>{{Cite web|url=https://github.com/roukaour/viz-brain-visualizer|title=Viz (Brain Visualizer)|date=25 August 2021}}</ref> |
* 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<ref>{{Cite web|url=https://github.com/roukaour/viz-brain-visualizer|title=Viz (Brain Visualizer)|website=[[GitHub]]|date=25 August 2021|access-date=8 September 2021|archive-date=8 September 2021|archive-url=https://web.archive.org/web/20210908115107/https://github.com/roukaour/viz-brain-visualizer|url-status=live}}</ref> |
||
* [[X window manager]]s: |
* [[X window manager]]s: |
||
** [[FLWM]] |
** [[FLWM]] |
||
Line 100: | Line 98: | ||
{{Expand section|date=July 2010}} |
{{Expand section|date=July 2010}} |
||
This version history is an example of the sometimes tumultuous nature of [[open-source software development|open-source development]].<ref>{{cite web|url=https://www.fltk.org/articles.php?L825+I0+T+P1+Q|title=What are the Versions of FLTK?|access-date=2010-07-23}}</ref> |
This version history is an example of the sometimes tumultuous nature of [[open-source software development|open-source development]].<ref>{{cite web|url=https://www.fltk.org/articles.php?L825+I0+T+P1+Q|title=What are the Versions of FLTK?|access-date=2010-07-23|archive-date=2010-06-28|archive-url=https://web.archive.org/web/20100628085355/http://www.fltk.org/articles.php?L825+I0+T+P1+Q|url-status=live}}</ref> |
||
===1.0.x=== |
===1.0.x=== |
||
Line 115: | Line 113: | ||
===1.3.x=== |
===1.3.x=== |
||
Current stable release.<ref>https://www.fltk.org/articles.php?L825 Taken 5 March 2017.</ref> Provides UTF-8 support. |
Current stable release.<ref name="auto3">https://www.fltk.org/articles.php?L825 {{Webarchive|url=https://web.archive.org/web/20190802225250/https://www.fltk.org/articles.php?L825 |date=2019-08-02 }} Taken 5 March 2017.</ref> Provides UTF-8 support. |
||
===1.4.x=== |
===1.4.x=== |
||
Current development branch. Adds more features to 1.3.<ref |
Current development branch. Adds more features to 1.3.<ref name="auto3"/> |
||
===3.0 branch=== |
===3.0 branch=== |
||
Line 131: | Line 129: | ||
* [[Juce]] |
* [[Juce]] |
||
* [[Qt (software)]] |
* [[Qt (software)]] |
||
* [[Visual Component Framework]] (VCF) |
|||
* [[Widget toolkit]] |
* [[Widget toolkit]] |
||
* [[wxWidgets]] - cross platform open source C++ widgets toolkit developed by community |
* [[wxWidgets]] - cross platform open source C++ widgets toolkit developed by community |
||
* [[Ultimate++]] |
* [[Ultimate++|U++]] |
||
* [[List of widget toolkits]] |
* [[List of widget toolkits]] |
||
Line 142: | Line 139: | ||
==External links== |
==External links== |
||
* {{Official website}} |
* {{Official website}} |
||
{{Widget toolkits}} |
{{Widget toolkits}} |
||
Line 150: | Line 146: | ||
[[Category:Free computer libraries]] |
[[Category:Free computer libraries]] |
||
[[Category:Free software programmed in C++]] |
[[Category:Free software programmed in C++]] |
||
[[Category:Software that uses Cairo]] |
[[Category:Software that uses Cairo (graphics)]] |
||
[[Category:Software using the LGPL license]] |
[[Category:Software using the LGPL license]] |
||
[[Category:Widget toolkits]] |
[[Category:Widget toolkits]] |
Latest revision as of 13:15, 22 November 2024
Initial release | 1998 |
---|---|
Stable release | 1.4.0-1
/ November 18, 2024 |
Preview release | experimental-2022-01 (January 23, 2022[±] | )
Repository | |
Written in | C++ |
Operating system | Unix-like with X11 or Wayland, macOS, Microsoft Windows, AmigaOS 4 |
Type | User interface library |
License | GNU Lesser General Public License version 2 with an exception to allow static linking[1] |
Website | www |
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
[edit]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
[edit]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 is available since release 1.4.0.[5] FLTK2 has gained experimental support for optionally using the cairo graphics library.
Language bindings
[edit]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:
# 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();
}
GUI designers
[edit]FLTK includes Fast Light User Interface Designer (FLUID), a graphical GUI designer that generates C++ source and header files.
Use
[edit]Many programs and projects use FLTK, including:
- Nanolinux, 14 MB Linux distribution[12][13][14][15][16][17]
- XFDOS, a FreeDOS-based distribution with a GUI, porting Nano-X and FLTK[18][14][15][17]
- Agenda VR3, a Linux-based personal digital assistant with software based on FLTK.
- third-party Agenda VR3 software
- Amnesia: The Dark Descent, by Frictional Games uses FLTK as its launcher application
- MwendanoWD, Logic puzzle for personal computer by YPH.[19]
- Audio:
- Fldigi, amateur radio software, allows data transmission and text chat via digital modes such as PSK31
- Giada, looper, micro-sequencer, sample player software, open-source[20]
- Prodatum, synthesizer preset editor, uses a lifelike interface design[21]
- ZynAddSubFX, an open-source software synthesizer
- DiSTI GL Studio, human-machine interface development tool[22]
- Engineering:
- ForcePAD, an intuitive tool to visualise the behavior of structures subject to loading and boundary conditions[23]
- Gmsh, an open-source finite element mesh generator
- RoboCIM, software to simulate and control operation of a servo robot system and external devices[24]
- Equinox Desktop Environment (EDE)
- FlBurn optical disc burning software for Linux[25]
- Graphics:
- CinePaint, deep-paint software, migrating from GTK to FLTK, open-source
- ITK-SNAP, software application for medical image segmentation, open-source
- Nuke, a digital compositing program. Until version 5, now replaced by Qt
- Open Movie Editor[26]
- OpenVSP, an open-source NASA parametric 3D CAD for aircraft desgign and analysing[27]
- PosteRazor, open-source poster printing software for Windows, OS X, Linux[28]
- Tilemap Studio, An open-source tilemap editor for Game Boy, Color, Advance, DS, and SNES projects[29]
- SmallBASIC, Windows port
- Web browsers:
- 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[32]
- X window managers:
- FLWM
- miwm
Versions
[edit]This section needs expansion. You can help by adding to it. (July 2010) |
This version history is an example of the sometimes tumultuous nature of open-source development.[33]
1.0.x
[edit]This is a prior stable version, now unmaintained.
1.1.x
[edit]This is a prior stable version, now unmaintained.
2.0 branch
[edit]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
[edit]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
[edit]Current stable release.[34] Provides UTF-8 support.
1.4.x
[edit]Current development branch. Adds more features to 1.3.[34]
3.0 branch
[edit]This branch is mostly a conceptual model for future work. Now inactive.
See also
[edit]- GTK
- gtkmm (C++ binding of GTK)
- FOX toolkit
- IUP (software) - a multi-platform toolkit to build native graphical user interfaces
- Juce
- Qt (software)
- Widget toolkit
- wxWidgets - cross platform open source C++ widgets toolkit developed by community
- U++
- List of widget toolkits
References
[edit]- ^ "FLTK License Agreement". Archived from the original on 2001-12-18. Retrieved 2020-01-30.
- ^ "Fast Light Toolkit - Fast Light Toolkit (FLTK)". www.fltk.org. Archived from the original on 2020-02-02. Retrieved 2020-01-30.
- ^ "Fast Light ToolKit (FLTK) » CppLibs". Archived from the original on 2015-05-18. Retrieved 2015-05-13.
- ^ "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.
- ^ "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.
- ^ "murgaLua homepage". Archived from the original on 2012-07-07. Retrieved 2008-12-18.
- ^ "Links: By Category - Links - Fast Light Toolkit (FLTK)". www.fltk.org. Archived from the original on 2023-03-15. Retrieved 2023-04-07.
- ^ "pyFLTK Home Page". pyfltk.sourceforge.io. Archived from the original on 2023-04-07. Retrieved 2023-04-07.
- ^ "Ruby/FLTK". ruby-fltk.sourceforge.net. Archived from the original on 2023-04-13. Retrieved 2023-04-07.
- ^ "fltk - Rust". docs.rs. Archived from the original on 2023-04-07. Retrieved 2023-04-07.
- ^ "Tcl/Fltk dynamic extension for Tcl". SourceForge. 3 April 2013. Archived from the original on 7 April 2023. Retrieved 7 April 2023.
- ^ "Nanolinux". SourceForge. 8 October 2016. Archived from the original on 11 November 2020. Retrieved 15 April 2018.
- ^ "Tiny to the extreme: Nanolinux". 30 November 2014. Archived from the original on 16 April 2018. Retrieved 15 April 2018.
- ^ a b "An interview with the Nanolinux developer". 30 December 2014. Archived from the original on 16 April 2018. Retrieved 15 April 2018.
- ^ a b "Artificial Intelligence Methods". Archived from the original on 1999-04-20. Retrieved 2019-08-15.
- ^ "PC HTML Editors". Archived from the original on 2018-04-16. Retrieved 2018-04-15.
- ^ a b "Georg's Personal Homepage". www.georgpotthast.de. Archived from the original on 2018-08-17. Retrieved 2018-04-15.
- ^ "An extraordinary TK example!". 12 October 2012. Archived from the original on 16 April 2018. Retrieved 15 April 2018.
- ^ "YPH". Archived from the original on 2018-10-27. Retrieved 2018-10-27.
- ^ "Giada, hardcore loopmachine". Archived from the original on 2011-09-25. Retrieved 2011-09-29.
- ^ "prodatum - official homepage". prodatum.sourceforge.net. Archived from the original on 2023-04-07. Retrieved 2023-04-07.
- ^ "DiSTI GL Studio". Archived from the original on 2012-08-15. Retrieved 2010-07-29.
- ^ "ForcePAD". forcepad.sourceforge.net. Archived from the original on 2023-04-07. Retrieved 2023-04-07.
- ^ "RoboCIM - Robotics software". Archived from the original on 2013-05-04. Retrieved 2013-06-29.
- ^ "Free | CD DVD burning software for Linux". flburn.sourceforge.net. Archived from the original on 2023-04-10. Retrieved 2023-04-07.
- ^ "Open Movie Editor - Free and Open Source Video Editor". www.openmovieeditor.org. Archived from the original on 2012-05-18. Retrieved 2008-04-12.
- ^ "OpenVSP". openvsp.org. Archived from the original on 2023-04-07. Retrieved 2023-04-07.
- ^ "PosteRazor - Make your own poster!". posterazor.sourceforge.io. Archived from the original on 2023-04-07. Retrieved 2023-04-07.
- ^ "Tilemap Studio". GitHub. 18 October 2021. Archived from the original on 8 September 2021. Retrieved 8 September 2021.
- ^ "Fifth - Home". fifth-browser.sourceforge.net. Archived from the original on 2023-04-14. Retrieved 2023-04-07.
- ^ "NetRider". SourceForge. 23 February 2016. Archived from the original on 7 April 2023. Retrieved 7 April 2023.
- ^ "Viz (Brain Visualizer)". GitHub. 25 August 2021. Archived from the original on 8 September 2021. Retrieved 8 September 2021.
- ^ "What are the Versions of FLTK?". Archived from the original on 2010-06-28. Retrieved 2010-07-23.
- ^ a b https://www.fltk.org/articles.php?L825 Archived 2019-08-02 at the Wayback Machine Taken 5 March 2017.