среда, 14 ноября 2007 г.

Стоит рассказать о замечательной кроссплатформенной библиотеки для построения графического интерфейса программы IUP. Эта библиотека разработана в Pontifical Catholic University of Rio de Janeiro в Бразилии. Как и много других продуктов разработчиков из этого университета она написана на С и может работать в системах:

  • UNIX (SunOS, IRIX, and AIX) using Motif 2.x
  • UNIX (FreeBSD and Linux) using GTK+
  • Microsoft Windows 2000/XP/2003 using Win32
Библиотека использует концепции событий, системы атрибутов и функций обратного вызова (callback functions), систему слоёв. Самое главное отличие от других библиотек виджетов является система атрибутов, на которой построено всё взаимодействие с графическими элементами.
Именно развитая система атрибутов позволяет иметь совсем небольшое количество функций, что делает библиотеку небольшой. Это отлично вписывается в идеологию разработчков:
  • Предпочитать множество маленьких библиотек, вместо одной большой.
  • Использовать для каждой платформы "родные" графические компоненты.
  • Позиционировать элементы не используя точные координаты, используя механизм привязок и слоёв. Что делает интерфейс менее зависимым от разрешения пользователя.
  • Возможность использовать эту графическую библиотеку совместно с другими
Библиотека отлично подходит для написания небольших утилит и промышленных приложений. Это обусловлено в первую очередь небольшим количеством стандартных виджетов (к слову, там есть все стандартные виджеты Win32). Но библиотека свободно расширяется и есть специальное API (в IUP оно называется CPI) для добавления новых виджетов.
Для изучения возможностей библиотеки не требуется много времени, что делает её привлекательно для программистов, которые сразу хотят приступить к написанию кода, не штудируя огромное количество мануалов. На английском языке доступен мануал по адресу http://www.tecgraf.puc-rio.br/iup/, где описание концепций библиотеки чередуется с полным описанием функций, эти концепции реализующих. Мануал достаточно полный и удобный, но в нём присутствуют некоторые неточности в параметрах функций. Однако, это лечится простой сверкой параметров функций с определениями в главном заголовочном файле iup.h.

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

Исходные тексты библиотеки, документация на английском, скомпилированные для разных платформ библиотеки лежат по этому адресу.

3 комментария:

n0p комментирует...

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

Oleg комментирует...

Идея плохая, так как портировать код курсового в Linux не придётся, а разбираться с библиотекой, которая на практике почти не используется, - не самое лучшее времяпрепровождение. Уж лучше использовать Qt - широко распространена, хорошо документирована, очень гибкая, но C++. :)

n0p комментирует...

oleg, для программиста на С (не на С++) существует очень мало достойных разработок кросплатформенных GUI библиотек. Я знаю 2: GTK+ и IUP.
Причём, заметь, IUP написан на С не потому что люди предпочитают С, а потому, что их идеи было проще реализовать именно на С. В их случае, возможности С++ никак бы не помогли в реализации.
А с QT он и не тягается ;) У него другая идеология.