Haiku os: редагування відкомпільованих файлів ресурсів

Відео: Як редагувати PDF файл

Робота з ресурсами в Paladin IDE
Для компіляції програми в IDE Paladin з подальшим її зв`язуванням з файлом ресурсів досить включити останній в проект так, як ми це робили з файлами вихідних текстів програми. При цьому в проект може бути включений як заздалегідь відкомпільований файл ресурсів (* .rsrc), так і rdef-скрипт. В останньому випадку Paladin сам здійснить компіляцію і зв`язування ресурсів з програмою.

Редагування відкомпільованих файлів ресурсів

Включати джерельний код зображень в rdef-скрипти вручну, як було показано вище, не дуже зручно. Для операційної системи Haiku є кілька програм, що дозволяють редагувати відкомпілювалися файли ресурсів безпосередньо. Найбільш відомими з них є QuickRes і Resourcer. Я розгляну останню - на мій погляд, працювати з цією програмою зручніше. Втім, QuickRes варто також встановити в системі, оскільки в поставку цієї програми входить довідка, що описує мову rdef набагато докладніше, ніж це зроблено тут.

Отже, програму Resourcer можна завантажити на BeBits за наступним посиланням: https://bebits.com/bob/4874/Resourcer-x86.zip. QuickRes доступна на Haikuware: https://haikuware.com/directory/ start-download / utilities / system-system-information / quickres.

Встановимо Resourcer звичайним способом, розпакувати завантажений архів у каталог / boot. Тепер зробимо Resourcer програмою за замовчуванням для редагування бінарних файлів ресурсів (* .rsrc). Для цього клацнемо правою кнопкою миші по файлу Lucas.rsrc нашої програми і в контекстному меню виберемо Open with ... - FileTypes. У вікні FileTypes в групі «Бажаний додаток» натисніть кнопку «Вибрати ...», після чого в діалоговому вікні вибору файлу відзначте Resourcer і в діалоговому вікні натисніть кнопку «Встановити переважне додаток» (див. Рис. Нижче). Тепер при натисканні на бінарним файлу ресурсів останній буде відкриватися саме в програмі Resourcer.

Haiku OS: редагування відкомпільованих файлів ресурсів
Вибираємо програму за замовчуванням для редагування файлів ресурсів

Покажемо роботу з редактором ресурсів на прикладі нашої головоломки, трохи змінивши її код. Успадкуємо клас TChip немає від класу звичайної кнопки (BButton), а від класу BPictureButton. Як видно з назви, цей клас призначений для створення кнопок з картинками. Як параметри конструктор класу приймають два покажчика на об`єкт типу BPicture (див. Лістинг 2).
лістинг 2
BPictureButton (BRect frame, const char * name, BPicture * off, BPicture * on, BMessage * message,
uint32 behavior = B _ ONE _ STATE _ BUTTON,
uint32 resizingMode = B _ FOLLOW _ LEFT | B _ FOLLOW _ TOP,
uint32 flags = B _ WILL _ DRAW | B _ NAVIGABLE) -

Перепишемо клас TChip. Оголошення і реалізація класу наведені в лістингу 3.
лістинг 3
#ifndef _ TChip _ h _ #define _ TChip _ h _
#include #include #include
enum TChipColour {WhiteChip = 0, BlackChip = 1} - class TChip: public BPictureButton
{
public:
TChip (BRect ChipFrame, const char * psName, BPicture * pOffPicture, BPicture * pOnPicture, BMessage * pMessage);
int iCell- TChipColour Colour- int iMove;
};
#endif
#include "TChip.h"
TChip :: TChip (BRect ChipFrame, const char * psName, BPicture * pOffPicture,
BPicture * pOnPicture, BMessage * pMessage)
: BPictureButton (ChipFrame, psName, pOffPicture,
pOnPicture, pMessage,
B _ ONE _ STATE _ BUTTON, B _ FOLLOW _ LEFT, B _ WILL _ DRAW)
{



this-gt; Colour = WhiteChip;
}

Клас BPicture зберігає дані, скопійовані з будь-якого зображення, і відображає їх на кнопці. При цьому об`єкт off зберігає зображення кнопки, яка неактивна (не було натиснуто), а об`єкт on - тієї, яка активна (натиснута користувачем). Таким чином, якщо потрібно щось побачити на кнопці, треба або щось намалювати в об`єкті BPicture, або «намалювати» дані, скопійовані з зображення (BMP, PNG і т.п.), для чого в Haiku API існує інший клас - BBitmap. Останній може лише зберігати дані зображення, але не ма-ет методів його відображення. Зображення отрісовиваєт об`єкт класу BView (або об`єкт класу, від нього успадкованого) методом DrawBitmap.

На жаль, клас BBitmap не надає жодних методів для завантаження даних з файлу BMP. Для цього необхідно використовувати метод GetBitmapFile класу BTranslationUtils з набору TranslationKit. Для роботи з класом необхідно підключити бібліотеку libtranslation.so. Отже, завантаження зображення з файлу може виглядати наступним чином (див. Лістинг 4).

лістинг 4
BBitmap * pWhiteOffBitmap = J
BTranslationUtils:: GetBitmapFile ( "white-off.jpg") -

Після цього об`єкт класу BView повинен «намалювати» дані з об`єкта класу BBitmap в об`єкті класу BPicture.

Однак зручніше, коли зображення зберігаються не в зовнішніх файлах, а в самому додатку. Для цього запишемо картинки кнопок в файл ресурсів, після чого вони будуть завантажені в об`єкт класу BBitmap методом GetBitmap класу BTranslationUtils.

За допомогою GIMP я підготував 4 зображення кнопок:
- white-up.jpg - біла кнопка, не було натиснуто;
- white-down.jpg - біла кнопка, натиснута;



- black-up.jpg - чорна кнопка, не було натиснуто;
- black-down.jpg - чорна кнопка, натиснута.

Після цього відкрив відкомпільований файл ресурсу Lucas.rsrc в програмі Resourcer і відредагував його. Як додати об`єкт ресурсів в файл потрібно вибрати в меню Resource - Add Resource ... Для видалення ресурсу з файлу необхідно виділити його у вікні Resourcer і вибрати в меню Resource - Delete Resource. При виборі пункту меню Add Resource ... з`являється діалогове вікно New Resource Properties, в якому в випадаючому списку потрібно вибрати тип додається ресурсу. У нашому випадку це Translator Bitmap. Потім вказуємо номер - id ресурсу і рядок - його назва (див. Рис. Нижче). Назвемо об`єкти ресурсів відповідно файлам: white-up, white-down, black-up і black-down. Після натискання кнопки OK з`явиться діалогове вікно перегляду додається зображення. Натисніть кнопку Open ..., щоб вибрати файл картинки. Додавши всі зображення, виберіть у меню File - Save, щоб зберегти зміни у файлі ресурсів.

Haiku OS: редагування відкомпільованих файлів ресурсів
Додавання зображення в файл ресурсів

Тепер додамо в конструктор класу головної форми код завантаження зображень з ресурсів в об`єкт класу BBitmap (див. Лістинг 5).

лістинг 5
BBitmap * pWhiteUpBitmap = BTranslationUtils :: GetBitmap ( "white-up") - BBitmap * pWhiteDownBitmap = J
BTranslationUtils:: GetBitmap ( "white-down") - BBitmap * pBlackUpBitmap = BTranslationUtils :: GetBitmap ( "black-up") - BBitmap * pBlackDownBitmap = J
BTranslationUtils:: GetBitmap ( "black-down") -

Центральний віджет програми (TCentralWidget), успадкований від класу BView, повинен «намалювати» дані з об`єкта класу BBitmap в об`єкті класу BPicture (див. Лістинг 6).

лістинг 6
BPicture * pWhiteUpPicture- pCentralWidget-gt; BeginPicture (new BPicture);
pCentralWidget-gt; DrawBitmap (pWhiteUpBitmap) - pWhiteUpPicture = pCentralWidget-gt; EndPicture ();
// і т.п.

Тепер ми можемо переробити головоломку так, щоб на кнопках відображались картинки BPicture (див. Лістинг 7).

лістинг 7
fChipTop = MenuFrame.Height () - // Координати 1-й кнопки
BRect ButtonFrame = BRect (5, fChipTop, 80, 80) - pChip [0] = new TChip (ButtonFrame, "Button",
pWhiteUpPicture, pWhiteDownPicture, pChipMessage [0]);
pChip [0] -gt; iCell = 1;
int iX = 5;
int iY = 80;
for (int i = 1 i 3)
{
j-- // Середня осередок вільна Colour = BlackChip;
pChip [j] = new TChip (ButtonFrame, "Button", pBlackUpPicture, pBlackDownPicture, pChipMessage [j]);
}
else {
pChip [j] = new TChip (ButtonFrame, "Button", pWhiteUpPicture, pWhiteDownPicture, pChipMessage [j]);
}
pChip [j] -gt; iCell = i + 1;
pChip [j] -gt; Colour = Colour;
}
}

Haiku OS: редагування відкомпільованих файлів ресурсів
Підключаємо бібліотеку libtranslation до проекту Paladin

Зберемо проект головоломкі- при цьому необхідно у вікні системних бібліотек проекту підключити бібліотеку libtranslation.so (див. Рис. Вище). Запустимо програму і переконаємося, що кнопки обзавелися створеними нами зображеннями (див. Рис. Нижче).

Haiku OS: редагування відкомпільованих файлів ресурсів
Зовнішній вигляд головоломки, що використовує кнопки із зображеннями

Не можна не помітити, що програмування на Haiku API не дуже зручно, і багато розробників віддадуть перевагу більш звичні інструменти. Тому в заключній частині (наступний випуск «Open Source») ми розглянемо роботу з портований на Haiku бібліотекою Qt 4.7.



Ви не програміст, а будівельник і Вас набагато більше, ніж Haiku OS цікавить, де можна придбати пази лдсп (https://zveno-web.ru/raspil-ldsp/ugly-pazy-radiusy.html) хорошої якості і за невисокою ціною ? В такому випадку я настійно раджу Вам завітати на zveno-web.ru. Тут Ви зможете придбати такі вироби на максимально вигідних для себе умовах!

ІНШЕ

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 передбачає, що для…

Обробка подій в juce фото

Обробка подій в juce

Відео: Уроки javascript | Урок №13 - Події і обробник подій Переважна більшість тулкіта для С ++ (Gtk +, Qt,…

Ultimate ++: перша програма фото

Ultimate ++: перша програма

Відео: Уроки C # (C sharp) | # 3 - Перша програма на C # Перейдемо до реального прикладу. Напишемо просту марну…

» » Haiku os: редагування відкомпільованих файлів ресурсів