Програмування для haiku os крок за кроком: робота з ресурсами додатки

Програмування для Haiku OS крок за кроком: робота з ресурсами додатки
У попередніх статтях на прикладі простої головоломки ми розібрали основи програмування з використанням Haiku API. Однак нашій програмі не вистачає однієї дрібниці - оригінальної піктограми (icon). Як значка в вийшла головоломці використовується стандартна для виконуваних і об`єктних файлів Haiku картинка у вигляді кубиків, складених пірамідою. З огляду на, що гру «Шість фішок» часто називають «Жаби», картинку з цією твариною ми і візьмемо за основу.

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

Файл ресурсу може містити найрізноманітніші об`єкти: рядки, інформацію про квіти, зображення (у вигляді байтових масивів), курсори і навіть елементи призначеного для користувача інтерфейсу (меню, діалогові вікна тощо). У найбільш типових випадках ресурси містять рядок-сигнатуру програми та його піктограму.

У BeOS за роботу з ресурсами відповідала середу BeIDE, якої - на жаль! - немає в Haiku. Щасливі власники старих дистрибутивів BeOS можуть скористатися інтегрованою середовищем розробки, взятої з цієї операційної системи (нагадаю, що Haiku і BeOS бінарному сумісні), але ми будемо працювати з ресурсами, використовуючи виключно некомерційні інструменти.

До речі, середовище програмування в Haiku OS легко дозволить створити навіть СКУД (https://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.jpg і main-16.jpg відповідно). Отримаємо вихідні тексти 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 крок за кроком: робота з ресурсами додатки
Піктограма програми у стартовому вікні його властивостей


ІНШЕ

Dokuwiki: можливості фото

Dokuwiki: можливості

Відео: [RUS] [snr93] kali linux - nmap + metasploit Всупереч існуючій думці, що DokuWiki повільніше, ніж MediaWiki,…

Qt 4 в haiku os: установка фото

Qt 4 в haiku os: установка

Відео: Haiku OS (hrev50767, 2016, Virtualbox) Install & ReviewДе взяти Наявні версії портів Qt можна знайти за…

Better open with фото

Better open with

Відео: Quick Tip to Sing Better: Open Up Your Voice With One Easy Action Стандартна модель Android передбачає, що для…

Sdl: збірка за допомогою make фото

Sdl: збірка за допомогою make

Відео: C. Урок 12. Компіляція і система збирання (gcc, make)Етап 4. Складання за допомогою make Наведу мінімальний…

Мова програмування vala фото

Мова програмування vala

Hello world! Розгляд будь-якої мови програмування традиційно належить починати з найпростішої програми «Hello…

Неясності з phonon фото

Неясності з phonon

Від труднощів збірки перейдемо до неясним місцях у використанні Phonon. Phonon підтримує ті мультимедійні формати, які…

» » Програмування для haiku os крок за кроком: робота з ресурсами додатки