Fast Light Toolkit ( FLTK ) [ 2 ]は、ビル・スピッツァックらが開発した、グラフィカルユーザーインターフェース(GUI)用のクロスプラットフォームウィジェット(グラフィカル制御要素) ライブラリです。3Dグラフィックスプログラミングに対応するように作られており、 OpenGLへのインターフェースを備えていますが、一般的な GUI プログラミングにも適しています。
独自のウィジェット、描画、イベントシステムを基盤となるシステム依存コードから抽象化することで、サポートされているすべてのオペレーティングシステムで同じように表示されるプログラムを作成できます。
FLTKは、 GNU Lesser General Public License (LGPL)に基づいてライセンスされた、無料のオープンソースソフトウェアです。ただし、互換性のないライセンスを持つアプリケーションからの静的リンクを許可する条項が追加されています。
GTK、Qt、wxWidgetsなどのユーザーインターフェースライブラリとは対照的に、FLTKはより軽量な設計を採用し、GUI機能に限定しています。そのため、ライブラリのサイズは非常に小さく(FLTKの「Hello World」プログラムは約100 KiB)、通常は静的にリンクされます。また、複雑なマクロ、個別のコードプリプロセッサ、テンプレート、例外、実行時型情報(RTTI)、FLTK 1.xの場合は名前空間といった高度なC++機能の使用も避けています。パッケージのサイズが控えめであることと相まって、新規ユーザーにとって学習しやすいものとなっています。[ 3 ]
これらの利点には、それに伴う欠点も存在します。FLTKは、ほとんどのGUIツールキットよりもウィジェットの種類が少なく、また、ネイティブではないウィジェットを使用しているため、どのプラットフォームでもネイティブなルックアンドフィールを実現できません。
FLTK は元々 、シリコン グラフィックス(SGI) マシン用に書かれた Forms ライブラリ(このライブラリの派生版であるXFormsは今でもよく使われています) と互換性を持つように設計されました。そのライブラリでは、すべての関数と構造体が で始まりますfl_。この命名規則は C++ ライブラリのすべての新しいメソッドとウィジェットに拡張され、この接頭辞がFLライブラリの名前として採用されました。FL がオープンソースとしてリリースされた後、インターネットで「FL」を検索すると、フロリダの略称でもあるため問題になることがわかりました。すでに何人かの人が使用していたツールキットの新しい名前について多くの議論と調査を行った結果、ビル スピッツァックがFast Light Tool Kit (FLTK) という名前を思いつきました。[ 4 ]
FLTK は、プログラミング言語C++で書かれたオブジェクト指向ウィジェットツールキットです。GTK は主にX Window Systemに最適化されていますが、FLTK はMicrosoft Windows ( Windows APIと連携) やOS X ( Quartzと連携) など、他のプラットフォームでも動作します。Waylandバックエンドが実装され、リリース 1.4.0 以降で利用可能です。[ 5 ] FLTK2 では、オプションでcairoグラフィックスライブラリを使用する実験的なサポートが追加されました。
あるプログラミング言語で書かれたライブラリは、言語バインディングを作成すれば、別の言語でも使用できます。FLTKには、さまざまな言語に対応したバインディングが用意されています。
FLTK は主にプログラミング言語C++用に設計され、C++ で記述されています。ただし、Lua [ 6 ] Perl [ 7 ] Python [ 8 ] Ruby [ 9 ] Rust [ 10 ]やTcl [ 11 ]など、他の言語用のバインディングも存在します。
FLTK 1.xの場合、この例では「OK」ボタン付きのウィンドウを作成します。
#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 (); }FLTKには、 C++ソースファイルとヘッダーファイルを生成するグラフィカルなGUIデザイナーであるFast Light User Interface Designer(FLUID )が含まれています。
FLTKを使用しているプログラムやプロジェクトは数多くあります。例えば、以下のようなものがあります。
このバージョン履歴は、オープンソース開発の時に激動する性質の一例である。[ 33 ]
これは以前の安定版であり、現在はメンテナンスされていません。
これは以前の安定版であり、現在はメンテナンスされていません。
これは開発ブランチであり、多くの新機能とより洗練されたプログラミングスタイルを備え、FLTKの進化における次のステップとして長らく期待されていました。しかし、安定性は得られず、開発はほぼ停止しました。現在、このブランチは活動していません。
これは、2.0の優れた機能をいくつか取り出し、より普及している1.1ブランチに統合しようとする試みでした。現在は開発が終了しており、すべての機能は1.3ブランチに組み込まれています。
以前の安定版リリース。[ 34 ] UTF-8 をサポートします。
現在の安定版ブランチ。1.3 に機能を追加します。[ 34 ]このブランチは、リリース 1.4.2 (2025 年 2 月 23 日) 以降、メンテナンス モードになっています。
現在の開発ブランチ。このブランチは開発初期段階です。FLTK 1.5以降、FLTKのビルドにはCMakeが必要です(configure/Makefileのサポートは廃止されました)。
FLTK 1.5 の開発は、FLTK 1.4.2 のリリース後、2025 年 3 月に開始されました。1.4 ブランチはメンテナンス モードに入り、1.5 がメインの開発ブランチになりました。計画されている作業には、最新の C++、タッチスクリーンとタブレット入力のサポート、テーマ機能、および CMake のみのビルド システムが含まれます。[ 34 ]
このブランチは、1.x ブランチと 2.0 ブランチを「フォーク解除」するという構想から生まれましたが、実現には至りませんでした。このブランチの開発に向けた取り組みはすべて放棄されました。現在は非アクティブです。