Используя собственные системы виджетов, отрисовки и событий, абстрагированные от базового системно-зависимого кода, он позволяет писать программы, которые выглядят одинаково на всех поддерживаемых операционных системах .
В отличие от библиотек пользовательского интерфейса, таких как GTK , Qt и wxWidgets , FLTK использует более легкий дизайн и ограничивает себя функциональностью GUI. Из-за этого библиотека очень мала ( программа FLTK "Hello World" весит около 100 КБ ) и обычно статически связана . Она также избегает сложных макросов, отдельных препроцессоров кода и использования некоторых расширенных функций C++ : шаблонов, исключений и информации о типах во время выполнения (RTTI) или, для FLTK 1.x, пространств имен . В сочетании со скромным размером пакета это делает ее относительно простой в изучении для новых пользователей. [4]
Эти преимущества сопровождаются соответствующими недостатками. FLTK предлагает меньше виджетов, чем большинство наборов инструментов GUI, и из-за использования неродных виджетов не имеет собственного внешнего вида и поведения ни на одной платформе.
Значение имени
FLTK изначально был разработан для совместимости с библиотекой форм, написанной для машин Silicon Graphics (SGI) (производная этой библиотеки под названием XForms до сих пор используется довольно часто). В этой библиотеке все функции и структуры начинаются с fl_. Это наименование было распространено на все новые методы и виджеты в библиотеке C++, и этот префикс FLбыл взят в качестве имени библиотеки. После того, как FL был выпущен с открытым исходным кодом, было обнаружено, что поиск «FL» в Интернете был проблемой, поскольку это также аббревиатура от Florida . После долгих дебатов и поиска нового названия для набора инструментов, который уже использовался несколькими людьми, Билл Спицак придумал Fast Light Tool Kit (FLTK). [5]
Библиотека, написанная на одном языке программирования, может использоваться на другом языке, если написаны языковые привязки . FLTK имеет ряд привязок для различных языков.
Для FLTK 1.x этот пример создает окно с кнопкой «ОК» :
# включить <FL/Fl.H> # включить <FL/Fl_Window.H> # включить <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 включает в себя Fast Light User Interface Designer ( FLUID ) — графический конструктор GUI , который генерирует исходные и заголовочные файлы C++ .
Использовать
Многие программы и проекты используют FLTK, в том числе:
Fldigi — программное обеспечение для любительской радиосвязи , позволяющее передавать данные и вести текстовый чат с помощью цифровых режимов, таких как PSK31.
Giada, лупер, микросеквенсор, программное обеспечение для проигрывания сэмплов, с открытым исходным кодом [21]
Prodatum, редактор пресетов синтезатора, использует реалистичный дизайн интерфейса [22]
Dillo , Dillo-2 был основан на FLTK-2, отказ от этой ветки FLTK, без официального релиза, был основной причиной запуска Dillo-3, использующей FLTK1.3.
В-пятых, воспроизводит функционирование ранней Оперы [31]
НетРидер [32]
Brain Visualizer: интерактивный визуализатор с открытым исходным кодом для крупномасштабных 3D-моделей мозга. Часть Brain Organization Simulation System (BOSS), разработанной в Университете Стоуни-Брук [33]
Это предыдущая стабильная версия, которая в настоящее время не поддерживается.
1.1.х
Это предыдущая стабильная версия, которая в настоящее время не поддерживается.
2.0 ветвь
Это была ветка разработки, долгое время считавшаяся следующим шагом в эволюции FLTK, со множеством новых функций и более чистым стилем программирования. Она так и не достигла стабильности, и разработка в значительной степени прекратилась. Ветка сейчас неактивна.
1.2.х
Это была попытка взять некоторые из лучших функций 2.0 и объединить их обратно в более популярную ветку 1.1. Она больше не разрабатывается.
1.3.х
Текущая стабильная версия. [35] Обеспечивает поддержку UTF-8.
1.4.х
Текущая ветка разработки. Добавляет больше функций в 1.3. [35]
3.0 ветвь
Эта ветка в основном представляет собой концептуальную модель для будущей работы. Сейчас неактивна.