World Library  
Flag as Inappropriate
Email this Article
 

Fltk

FLTK
Initial release 1998 (1998)
Stable release 1.3.3 (November 3, 2014 (2014-11-03)[1])
Preview release v1.3.x-r10740 (June 5, 2015 (2015-06-05))
Written in C++
Operating system Unix-like with X11, OS X, Windows, AmigaOS 4
Type user interface library
License GNU Lesser General Public License[2] (with an exception to allow static linking)
Website .org.fltkwww

The Fast, Light Toolkit (FLTK, pronounced fulltick)[3] is a cross-platform graphical control element (GUI) library 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 (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 and open-source software, licensed under GNU Lesser General Public License (LGPL) with an additional 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 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.[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.

Contents

  • Meaning of the name 1
  • Architecture 2
    • Language bindings 2.1
    • GUI designers 2.2
  • Usage 3
  • Versions 4
    • 1.0.x 4.1
    • 1.1.x 4.2
    • 2.0 branch 4.3
    • 1.2.x 4.4
    • 1.3.x 4.5
    • 1.4.x 4.6
    • 3.0 branch 4.7
  • See also 5
  • References 6
  • External links 7

Meaning of the name

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, 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 "FLTK", which stands for the "Fast Light Tool Kit".[5]

Architecture

FLTK is an object-oriented widget toolkit written in the C++ programming language. While GTK+ is primarily targeted at the X Window System, FLTK works on other platforms, including Microsoft Windows (interfaced with the Windows API), and OS X (interfaced with Quartz). HTML5 and Wayland back-ends are in development .

Language bindings

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

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

The following example for FLTK 1.x creates a window with an "Okay" button:

#include 
#include 
#include 

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

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

Usage

  • 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 digital compositing program. Until version 5, now replaced by Qt.
  • The Windows port of SmallBASIC
  • PosteRazor, an open-source poster printing software (Windows, Mac OS X, Linux).
  • Avimator, an BVH editor
  • Dillo, a web browser. Note that Dillo-2 was based on FLTK-2 and the abandonment of this branch, without an official release, has been a major factor in causing Dillo-3 to be started, using FLTK1.3.
  • Fifth, a web browser that replicates functionality of early Opera
  • NetRider, a web browser
  • Gmsh, an open-source Finite element mesh generator
  • EDE, the 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)
  • RoboCIM - Robotics software RoboCIM software simulates and controls the operation of a Servo Robot System and external devices
  • OpenVSP - NASA parametric aircraft sketching, recently open-sourced

Versions

The version history shows some of the tumultuous nature of open source development.[12]

1.0.x

This is a previous stable version, no longer maintained.

1.1.x

This is a previous stable version, no longer maintained.

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 development branch. Provides UTF-8 support.

1.4.x

Adds even more features to 1.3. Not active at present.

3.0 branch

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

See also

References

  1. ^ http://www.fltk.org/articles.php?L1392
  2. ^ "FLTK License Agreement". 
  3. ^ "FLTK home". 
  4. ^ http://www.cpplibs.com/libraries/fltk/
  5. ^ http://www.fltk.org/articles.php?L363+I0+TFAQ+P1+Q
  6. ^ "GTK+ Language Bindings". 
  7. ^ http://www.fltk.org/wiki.php?LC+P139+TC+Q
  8. ^ "pyFLTK homepage". 
  9. ^ "murgaLua homepage". 
  10. ^ "Ruby/FLTK homepage". 
  11. ^ "Tcl/Fltk homepage". 
  12. ^ "What are the Versions of FLTK?". Retrieved 2010-07-23. 

External links

  • Official website
  • Beginner FLTK Tutorial
  • FLTK 1.3.0 Tutorial
  • Erco's FLTK Cheat Page
This article was sourced from Creative Commons Attribution-ShareAlike License; additional terms may apply. World Heritage Encyclopedia content is assembled from numerous content providers, Open Access Publishing, and in compliance with The Fair Access to Science and Technology Research Act (FASTR), Wikimedia Foundation, Inc., Public Library of Science, The Encyclopedia of Life, Open Book Publishers (OBP), PubMed, U.S. National Library of Medicine, National Center for Biotechnology Information, U.S. National Library of Medicine, National Institutes of Health (NIH), U.S. Department of Health & Human Services, and USA.gov, which sources content from all federal, state, local, tribal, and territorial government publication portals (.gov, .mil, .edu). Funding for USA.gov and content contributors is made possible from the U.S. Congress, E-Government Act of 2002.
 
Crowd sourced content that is contributed to World Heritage Encyclopedia is peer reviewed and edited by our editorial staff to ensure quality scholarly research articles.
 
By using this site, you agree to the Terms of Use and Privacy Policy. World Heritage Encyclopedia™ is a registered trademark of the World Public Library Association, a non-profit organization.
 


Copyright © World Library Foundation. All rights reserved. eBooks from Project Gutenberg are sponsored by the World Library Foundation,
a 501c(4) Member's Support Non-Profit Organization, and is NOT affiliated with any governmental agency or department.