Новость из категории: Информация

Программирование для Haiku OS шаг за шагом: работа с ресурсами приложения

Содержание:
1. Вступление (Вы читаете данный раздел);
2. Редактирование откомпилированных файлов ресурсов.
Программирование для Haiku OS шаг за шагом: работа с ресурсами приложения

В прошлых статьях на примере простой головоломки мы разобрали основы программирования с использованием Haiku API. Однако нашей программе не хватает одной мелочи - оригинальной пиктограммы (icon). В качестве значка в получившейся головоломке используется стандартная для исполняемых и объектных файлов Haiku картинка в виде кубиков, сложенных пирамидой. Учитывая, что игру «Шесть фишек» часто называют «Жабы», картинку с этим животным мы и возьмём за основу.

Загружать пиктограмму будем из файла ресурсов, который представляет собой откомпилированный (бинарный) файл, динамически либо статически связываемый с исполняемым модулем программы.

Файл ресурса может содержать самые различные объекты: строки, информацию о цветах, изображения (в виде байтовых массивов), курсоры и даже элементы пользовательского интерфейса (меню, диалоговые окна и т.п.). В наиболее типичных случаях ресурсы содержат строку-сигнатуру приложения и его пиктограмму.

В BeOS за работу с ресурсами отвечала среда BeIDE, которой - увы! - нет в Haiku. Счастливые владельцы старых дистрибутивов BeOS могут воспользоваться интегрированной средой разработки, взятой из этой операционной системы (напомню, что Haiku и BeOS бинарно совместимы), но мы будем работать с ресурсами, используя исключительно некоммерческие инструменты.

Кстати, среда программирования в Haiku OS легко позволит создать даже скуд (http://novhol.ru/sistemi-skud/sistemi-kontrolja-dostupom.html/) (систему контроля доступом), но зачем, если есть уже готовые решения, стоимость которых вряд ли будет ощутимой как для крупных предприятий, так и для небольших компаний!
Создание файла ресурсов с помощью rdef-скриптов

Компилятором ресурсов в Haiku является консольная утилита rc (resource compiler). Для своей работы она требует скрипт, написанный на языке rdef. Синтаксис языка довольно прост и несколько напоминает таковой у языка C++. Помимо директив скрипт может содержать комментарии в стиле C и C++. Каждая директива rdef начинается с ключевого слова resource, и в случае однострочного выражения завершается точкой с запятой. Многострочные директивы заключаются в фигурные скобки, и в конце закрывающей скобки также ставится точка с запятой. После ключевого слова resource могут (необязательно) идти круглые скобки, в которых указывается число - индекс ресурса и название ресурса, по которому к объекту ресурса можно обращаться в исходном тексте программы. После ключевого слова resource указывается тип объекта ресурса. Перечислим не-которые из таких типов:
- app_signature - строка, сигнатура приложения;
- app_flags - флаги запуска приложения, целые числа типа uint32;
- app_version - информация о версии приложения, целые числа типа uint32;
- large_icon - пиктограмма размером 32 х 32 пиксела, массив из 1024 байт;
- mini_icon - пиктограмма размером 16 х 16 пикселов, массив из 256 байт;
- rgb_color - информация о цвете, целые типа uint8 (red, green, blue, alpha).

Шестнадцатеричные данные неопределённого типа предваряются знаком доллара и заключаются в кавычки. Например, так:
resource(1) $"0123456789ABCDEF";

Согласно принятому соглашению текстовый файл скрипта должен иметь расширение *.rdef. Итак, заменим стандартную пиктограмму приложения Haiku (Be Application icon) на собственную. Вначале подготовим заготовку скрипта. Как уже упоминалось ранее, каждое приложение Haiku/BeOS имеет т.н. сигнатуру (подпись) - уникальную строку, характеризующую приложение в операционной системе. Строки сигнатур в исходном тексте программы (в нашем случае это сигнатура из файла TProgramme.h) и в её ресурсе должны совпадать.

Откроем текстовый редактор Pe, запишем в новый документ строчку:
resource app _ signature "application/x-vnd.linmedsoft-lucas";

и сохраним последний под именем Lucas.rdef в папке программы. Заготовка скрипта готова.

Подготовим две картинки в формате PNG (впрочем, можно использовать и другие графические форматы, например, BMP) размеров 32 х 32 и 16 х 16 пикселов (подразумевается, что они называются main-32.png и main-16.png соответственно). Получим исходные тексты rdef для изображений. Для этого откроем каждую из картинок в программе WonderBrush (выбрав в контекстном меню Open with... -- WonderBrush), выберем в меню File -Export as... и в выпадающем списке Format диалогового окна -RDef Source Code (см. рис. ниже). В диалоговом окне Save canvas as icon resource? выберем Icon.

Программирование для Haiku OS шаг за шагом: работа с ресурсами приложения
Получение исходного текста rdef для изображения

Откроем файл Lucas.rdef и после строки сигнатуры запишем туда следующие заготовки кода:
Листинг 1
resource large _ icon
{
};
resource mini _icon
{
};

Откроем файл main-32.rdef и скопируем текст между фигурными скобками. Внесём его в первую заготовку кода в файле Lucas.rdef. Аналогично поступим с маленькой пиктограммой (main-16.rdef), только код внесём во вторую заготовку. Сохраним изменения.

Откроем терминал в каталоге приложения и наберём:
rc -o Lucas Lucas.rdef

Будет создан файл ресурса Lucas. rsrc. Присоединим ресурс к исполняемому файлу программы с помощью консольной утилиты xres:
xres -o "./Lucas" Lucas.rsrc

После сборки программа имеет оригинальную пиктограмму (см. рис. ниже).

Программирование для Haiku OS шаг за шагом: работа с ресурсами приложения
Пиктограмма приложения в окне его свойств

Рейтинг статьи

Оценка
0/5
голосов: 0
Ваша оценка статье по пятибальной шкале:
 
 
   

Поделиться

Похожие новости

Комментарии

^ Наверх