Введение

Fast Light Toolkit (FLTK) — это кроссплатформенная библиотека виджетов (графических элементов управления) для графических пользовательских интерфейсов (GUI), разработанная Биллом Спитцаком и другими. Созданная для поддержки 3D-графического программирования, она имеет интерфейс с OpenGL, но также подходит и для общего GUI-программирования. Используя собственные виджеты, подсистемы рисования и обработки событий, абстрагированные от платформенно-зависимого кода, она позволяет создавать программы, которые выглядят одинаково на всех поддерживаемых операционных системах. FLTK — это бесплатное программное обеспечение с открытым исходным кодом, распространяемое по лицензии GNU Lesser General Public License (LGPL) с дополнительным условием, разрешающим статическую компоновку с приложениями, использующими несовместимые лицензии. В отличие от библиотек пользовательского интерфейса, таких как GTK, Qt и wxWidgets, FLTK использует более легковесную архитектуру и ограничивается функциональностью GUI. Благодаря этому библиотека очень компактна (программа FLTK "Hello World" занимает около 100 КБ) и обычно статически компонуется. Она также избегает использования сложных макросов, отдельных препроцессоров кода и некоторых продвинутых возможностей C++: шаблонов, исключений и информации о типах во время выполнения (RTTI) или, для FLTK 1.x, пространств имен. В сочетании с небольшим размером пакета, это делает её относительно простой в освоении для начинающих пользователей. Эти преимущества имеют и обратную сторону. FLTK предлагает меньше виджетов, чем большинство GUI-инструментариев, и из-за использования несистемных виджетов не обеспечивает нативной визуализации на какой-либо платформе.

Значение имени

FLTK изначально разрабатывался с учетом совместимости с библиотекой форм, написанной для машин Silicon Graphics (SGI) (производная от этой библиотеки под названием XForms до сих пор довольно часто используется). В этой библиотеке все функции и структуры начинались с "fl". Это наименование было распространено на все новые методы и виджеты в библиотеке C++, и этот префикс "FL" был принят в качестве названия библиотеки. После того, как FL был выпущен под открытой лицензией, выяснилось, что поиск "FL" в интернете затруднен, поскольку это также аббревиатура для штата Флорида. После долгих обсуждений и поисков нового названия для инструментария, которое уже использовалось несколькими разработчиками, Билл Спитца предложил название Fast Light Tool Kit (FLTK).

Архитектура

FLTK — это объектно-ориентированный инструментарий виджетов, написанный на языке программирования C++. В отличие от GTK, который в основном оптимизирован для X Window System, FLTK работает и на других платформах, включая Microsoft Windows (с использованием API Windows) и OS X (с использованием Quartz). Бэкэнд Wayland был реализован и станет доступен в версии 1.4.0. FLTK2 получил экспериментальную поддержку опционального использования графической библиотеки Cairo.

Дизайнеры графических пользовательских интерфейсов

FLTK включает в себя Fast Light User Interface Designer (FLUID) — графический инструмент для разработки графического интерфейса, генерирующий исходные файлы и файлы заголовков C++.

Версии

Эта история версий – пример порой неспокойной природы разработки с открытым исходным кодом.

1.0.x

Это предыдущая стабильная версия, которая больше не поддерживается.

1.1.x

Это ранее стабильная версия, которая больше не поддерживается.

2.0 ветвь

Это была ветка разработки, долгое время считавшаяся следующим шагом в развитии FLTK, с множеством новых функций и более понятным стилем программирования. Она так и не достигла стабильности, и разработка в основном прекращена. Ветка сейчас неактивна.

1.2.x

Это была попытка взять некоторые из лучших возможностей версии 2.0 и включить их в более популярную ветку 1.1. Разработка прекращена.

1.3.x

Текущий стабильный выпуск. Поддерживает кодировку UTF-8.

1.4.x

Текущая ветка разработки. Добавляет новые функции в версию 1.3.

3.0 ветвь

Эта ветвь в основном представляет собой концептуальную модель для дальнейшей разработки. В настоящее время не поддерживается.