FLTK
FLTK (Fast, Light Toolkit) は、クロスプラットフォームのGUIライブラリであり、Bill Spitzakらが1998年に開発した。3次元コンピュータグラフィックスとの親和性を考慮し、OpenGLとのインタフェースも持っているが、一般的GUIプログラミングにも適している。
開発元 | Bill Spitzak |
---|---|
リポジトリ | |
対応OS | UNIX / Linux / BSD (X11), macOS, Windows |
種別 | ウィジェット・ツールキット |
ライセンス | LGPL |
公式サイト | www.fltk.org |
独自のウィジェット、描画、イベントシステムを使って、基盤となっている各システム固有のコードを抽象化している(なお、FLTK2では実験的にcairoもサポートしている)。これによって、どのオペレーティングシステムでも同じ見た目のプログラムを書くことができる。
FLTKはフリーソフトウェアであり、LGPLに非互換なライセンスのアプリケーションとの静的リンクを許すという条項を加えたライセンスとなっている。ライブラリだけなくFLUID (FLTK User Interface Designer) というグラフィカルなGUI設計ツールが含まれ、C++のソースファイルとヘッダファイルを生成する。
QtやwxWidgetsに比べると、FLTKはより軽量に設計されていて、機能もGUI機能に限定されている。このためライブラリは非常に小さく(FLTKによる "Hello World" プログラムは約100KiB)、静的リンクされることが多い。また、複雑なマクロやプリプロセッサもなく、C++ の最新機能(テンプレート、例外、RTTI、FLTK 1.x では名前空間)も使っていない。従って、習熟が比較的容易である。
長所は短所にもなる。FLTKは多くのウィジェット・ツールキットよりも提供するウィジェットの種類が少ない。また、ネイティブでないウィジェットであるため、そのプラットフォームのネイティブなルック・アンド・フィールとは異なる。
名称の由来
編集FLTKは当初、シリコングラフィックスのマシン向けのForms Library互換となるよう設計された。このライブラリでは、全ての関数や構造体の名前に "fl_" というプレフィックスが付いていた。FLTKでもこの命名規則がそのまま適用され、そこから "FL" という名称とされた。しかし、リリースして見ると "FL" という名称をインターネット上で検索するのが困難だったため(例えばフロリダ州も "FL" と略記される)、盛んに議論と調査を行った上で "FLTK" という名称が選ばれ、後付けで "Fast Light Tool Kit" の略とされた。
プログラミング言語での使用
編集FLTKはC++で書かれているので、C++での利用に適している。しかし、他のオブジェクト指向プログラミング言語向けのバインディングもあり、例えば、Python向けバインディング[1]やRuby向けバインディング[2]やLua向けバインディング[3]がある。
以下のコード例は、FLTK 1.xを使って "Okay" ボタンのあるウィンドウを生成するものである。
#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を使っているソフトウェア
編集- CinePaintはGTK+からFLTKに移行中
- flwm[※ 1] - ウィンドウマネージャ
- Nuke - ハイエンドデジタル合成ソフトウェア
- SmallBASICのWindows版
- PosteRazor[※ 2] - オープンソースのポスター印刷ソフトウェア (Windows, macOS, Linux)
- en:Avimator - Biovision Hierarchyエディタ
- Dillo - ウェブブラウザ
- Gmsh - オープンソースの有限要素法用メッシュ生成
- en:EDE - Equinox Desktop Environment
- Open Movie Editor[※ 3]
- en:ZynAddSubFX - オープンソースのソフトウェア・シンセサイザー
- en:Agenda VR3 - Linux搭載携帯情報端末用ソフトウェア
- GNU Octave - MATLAB互換の数値解析ソフトウェア