Специфікація BTRON3 (Український переклад) | Розділ 7: Графічна оболонка (GUI Shell)
Повернутися до змісту розділу Графічної оболонки
Попередня сторінка: 3.8 Менеджер Реальних та Віртуальних об'єктів (Повернутися)
Наступна сторінка: 3.10 Менеджер друку (Перейти)
Менеджер шрифтів (Font Manager) керує реєстрацією, вибором, масштабуванням, трансформацією
(нахил, товщина, поворот) та генерацією растрових бітових карт символів для всіх системних
і прикладних програм у середовищі BTRON3. Підтримуються растрові шрифти (фіксованого та змінного розміру),
векторні контурні шрифти та контури TrueType.
- Шрифтові дані (Font Data / FDEF)
- Окремий файл або блок пам'яті, що містить гліфи та метрики для певного набору символів і розміру.
- Сімейство шрифтів (Font Family)
- Сукупність шрифтових даних однакового стилю (наприклад, Mincho, Gothic).
- Набір шрифтів (Font Set / Font Descriptor)
- Динамічно створений екземпляр шрифту із заданим розміром, стилем, кутом повороту та атрибутами.
Ідентифікується цілим дескриптором шрифту (
fdesc).
- Фіксовані шрифти (
FT_MEM) : постійно розміщені в ROM або системній пам'яті.
- Динамічні шрифти (
FT_FILE) : завантажуються з файлів реальних об'єктів за потреби.
□ Заголовок визначення шрифту (FDEF)
typedef struct {
H fclass; /* Клас шрифту (FTC_MINCHO, FTC_DEFAULT тощо) */
H attr; /* Атрибути (нахил, напівжирний тощо) */
TC name[12]; /* Назва сімейства */
UB size; /* Висота базового растру */
UB width; /* Максимальна ширина символу */
UB base; /* Базова лінія (baseline) */
UB leading; /* Міжрядковий інтервал (leading) */
TC fullname[20]; /* Повна назва */
TC topcode; /* Перший код символу */
TC lastcode; /* Останній код символу */
UB imgform; /* Формат растру: 0=фікс. растр, 1=варіативний, 2=вектор, 3=TrueType */
UB widform; /* Формат ширини: 0=простий, 1=індексний, 2=з шириною образу */
W datasize; /* Розмір даних у байтах */
OFFSET offimage; /* Зсув до растрових образів */
OFFSET offwidth; /* Зсув до таблиці ширини */
OFFSET offnote; /* Зсув до анотації */
} FDEF;
□ Специфікація набору шрифтів (FSSPEC)
typedef struct {
TC name[12]; /* Назва сімейства (NULL = за замовчуванням) */
FCLASS fclass; /* Клас шрифту */
FATTR attr; /* Атрибути стилю */
SIZE size; /* Розмір символу (ширина, висота) */
H angle; /* Кут повороту (0..359 градусів) */
} FSSPEC;
□ Інформація про зображення символу (FDATA / FCDATA)
typedef struct {
RECT frame; /* Межі символу */
H width; /* Ширина символу */
H height; /* Висота символу */
PNT imgofs; /* Зсув зображення */
UH family; /* Сімейство */
UH fid; /* ID шрифту */
} FCDATA;
typedef struct {
UW attr; /* Атрибути */
UH height; /* Максимальна висота */
UH width; /* Максимальна ширина */
UH base; /* Базова лінія */
UH leading; /* Інтервал */
SIZE asize; /* Розмір символу */
UH aangle; /* Кут повороту */
UH pixbits; /* Глибина кольору бітової карти (1, 2, 4, 8) */
UB *image; /* Адреса растрової карти символу */
FCDATA ch[1]; /* Дані для кожного запитаного символу */
} FDATA;
| fdef_fnt |
| Define Font |
| Реєстрація шрифтових даних у системі |
|
【Синтаксис / Прототип】
WERR fdef_fnt(FLOC loc, W spec)
【Параметри】
FLOC loc Розміщення шрифту (вказівник на пам'ять або посилання на файл)
W spec Тип розміщення (FT_MEM | FT_FILE | FT_RES | FT_SYSTEM)
【Значення, що повертається】
>= 0 ID зареєстрованого шрифту (fid)
< 0 Помилка (Код помилки)
【Детальний опис】
Реєструє нові шрифтові дані в системному пулі шрифтів і повертає унікальний fid.
【Коди помилок】
EX_NOSPC: Нестача пам'яті.
EX_PAR : Неприпустимий формат даних або spec.
| fdel_fnt |
| Delete Font |
| Видалення шрифтових даних за ID |
|
【Синтаксис / Прототип】
ERR fdel_fnt(W fid)
【Параметри】
W fid ID шрифту
【Значення, що повертається】
= 0 Успішне виконання
< 0 Помилка (Код помилки)
【Детальний опис】
Видаляє зареєстрований шрифт із системної таблиці.
【Коди помилок】
EX_FTID : Шрифт fid не існує.
| fdel_loc |
| Delete Font by Location |
| Видалення шрифту за розміщенням |
|
【Синтаксис / Прототип】
ERR fdel_loc(FLOC loc, W spec)
【Параметри】
FLOC loc Розміщення шрифту
W spec Тип розміщення
【Значення, що повертається】
= 0 Успішне виконання
< 0 Помилка (Код помилки)
【Детальний опис】
Видаляє шрифти, пов'язані з указаним файлом або адресою пам'яті.
【Коди помилок】
EX_FTID : Шрифт не знайдено.
| fget_def |
| Get Font Definition Header |
| Отримання заголовка визначення шрифту |
|
【Синтаксис / Прототип】
ERR fget_def(W fid, FDEF *fdef)
【Параметри】
W fid ID шрифту
FDEF *fdef Буфер для структури FDEF
【Значення, що повертається】
= 0 Успішне виконання
< 0 Помилка (Код помилки)
【Детальний опис】
Зчитує структуру заголовка FDEF для зареєстрованого шрифту fid.
【Коди помилок】
EX_ADR : Недопустима адреса fdef.
EX_FTID : Шрифт fid не існує.
| fget_not |
| Get Font Note |
| Отримання текстової анотації шрифту |
|
【Синтаксис / Прототип】
WERR fget_not(W fid, TC *note, W size)
【Параметри】
W fid ID шрифту
TC *note Буфер для рядка анотації (TRON Code)
W size Розмір буфера у байтах
【Значення, що повертається】
>= 0 Довжина анотації у символах
< 0 Помилка (Код помилки)
【Детальний опис】
Отримує текст опису/копірайту шрифту.
【Коди помилок】
EX_ADR : Недопустима адреса note.
EX_FTID : Шрифт fid не існує.
| flst_fon |
| List Fonts |
| Отримання списку доступних шрифтів |
|
【Синтаксис / Прототип】
WERR flst_fon(W target, FLIST *list, W size)
【Параметри】
W target Критерій вибірки (FT_ALL, FT_FAMILY, FT_SCALL тощо)
FLIST *list Буфер для масиву структур FLIST
W size Розмір буфера у байтах
【Значення, що повертається】
>= 0 Кількість знайдених шрифтів
< 0 Помилка (Код помилки)
【Детальний опис】
Заповнює масив list переліком зареєстрованих шрифтів відповідно до target.
【Коди помилок】
EX_ADR : Недопустима адреса list.
| fopn_fon |
| Open Font Set |
| Створення дескриптора набору шрифтів (Font Set) |
|
【Синтаксис / Прототип】
WERR fopn_fon(void)
【Параметри】
Немає
【Значення, що повертається】
>= 0 Дескриптор набору шрифтів (fdesc)
< 0 Помилка (Код помилки)
【Детальний опис】
Створює новий екземпляр набору шрифтів зі значеннями за замовчуванням (16x16, кут 0).
【Коди помилок】
EX_NOMEM: Нестача пам'яті.
| fcls_fon |
| Close Font Set |
| Видалення набору шрифтів |
|
【Синтаксис / Прототип】
ERR fcls_fon(W fdesc)
【Параметри】
W fdesc Дескриптор набору шрифтів
【Значення, що повертається】
= 0 Успішне виконання
< 0 Помилка (Код помилки)
【Детальний опис】
Звільняє ресурси, виділені під дескриптор шрифту fdesc.
【Коди помилок】
EX_FTD : Дескриптор fdesc не існує.
| fset_fon |
| Set Font Set Parameters |
| Налаштування параметрів набору шрифтів |
|
【Синтаксис / Прототип】
ERR fset_fon(W fdesc, FSSPEC *spec)
【Параметри】
W fdesc Дескриптор набору шрифтів
FSSPEC *spec Параметри шрифту (сімейство, атрибути, розмір)
【Значення, що повертається】
= 0 Успішне виконання
< 0 Помилка (Код помилки)
【Детальний опис】
Призначає сімейство, розміри та атрибути для дескриптора fdesc.
【Коди помилок】
EX_ADR : Недопустима адреса spec.
EX_FTD : Дескриптор fdesc не існує.
EX_PAR : Некоректний розмір шрифту.
| fget_fon |
| Get Font Set Parameters |
| Отримання параметрів набору шрифтів |
|
【Синтаксис / Прототип】
ERR fget_fon(W fdesc, FSSPEC *spec)
【Параметри】
W fdesc Дескриптор набору шрифтів
FSSPEC *spec Буфер для структури FSSPEC
【Значення, що повертається】
= 0 Успішне виконання
< 0 Помилка (Код помилки)
【Детальний опис】
Зчитує поточні налаштування набору шрифтів fdesc.
【Коди помилок】
EX_ADR : Недопустима адреса spec.
EX_FTD : Дескриптор fdesc не існує.
| fset_ang |
| Set Font Rotation Angle |
| Встановлення кута повороту шрифту |
|
【Синтаксис / Прототип】
ERR fset_ang(W fdesc, W ang)
【Параметри】
W fdesc Дескриптор шрифту
W ang Кут повороту в градусах (0..359)
【Значення, що повертається】
= 0 Успішне виконання
< 0 Помилка (Код помилки)
【Детальний опис】
Встановлює кут повороту гліфів для дескриптора fdesc.
【Коди помилок】
EX_FTD : Дескриптор fdesc не існує.
EX_PAR : Неприпустимий кут ang.
| fget_ang |
| Get Font Rotation Angle |
| Отримання кута повороту шрифту |
|
【Синтаксис / Прототип】
WERR fget_ang(W fdesc)
【Параметри】
W fdesc Дескриптор шрифту
【Значення, що повертається】
>= 0 Кут повороту в градусах (0..359)
< 0 Помилка (Код помилки)
【Детальний опис】
Повертає поточний кут повороту гліфів дескриптора fdesc.
【Коди помилок】
EX_FTD : Дескриптор fdesc не існує.
| fget_fam |
| Get Font Family Information |
| Отримання метрик сімейства шрифтів |
|
【Синтаксис / Прототип】
WERR fget_fam(W fdesc, W script, FNTINFO *inf)
【Параметри】
W fdesc Дескриптор шрифту
W script Набір символів (скрипт)
FNTINFO *inf Буфер для метрик сімейства
【Значення, що повертається】
>= 0 ID шрифту (fid)
< 0 Помилка (Код помилки)
【Детальний опис】
Повертає метрики сімейства (базова лінія, інтерліньяж, максимальна ширина тощо),
масштабовані відповідно до налаштувань fdesc.
【Коди помилок】
EX_ADR : Недопустима адреса inf.
EX_FTD : Дескриптор fdesc не існує.
EX_FTID : Шрифт для зазначеного скрипту не знайдено.
| fget_img |
| Get Glyph Image |
| Отримання растрового зображення та метрик символу |
|
【Синтаксис / Прототип】
WERR fget_img(W fdesc, FDATA *cimg, W size, W script, TC ch, UW mode)
【Параметри】
W fdesc Дескриптор набору шрифтів
FDATA *cimg Буфер для структури FDATA та бітової карти символу
W size Розмір буфера cimg у байтах
W script Скрипт символу
TC ch Код символу TRON Code
UW mode Режим: FT_IMAGE (отримати растр), FT_SYS (у системну пам'ять)
【Значення, що повертається】
>= 0 Кількість оброблених символів (1)
< 0 Помилка (Код помилки)
【Детальний опис】
Генерує масштабовану й трансформовану растрову бітову карту символу ch
та повертає її метрики (розміри рамки, зсуви).
【Коди помилок】
EX_ADR : Недопустима адреса cimg.
EX_FTD : Дескриптор fdesc не існує.
EX_NOSPC: Недостатній розмір буфера size.
Повернутися до змісту розділу Графічної оболонки
Попередня сторінка: 3.8 Менеджер Реальних та Віртуальних об'єктів (Повернутися)
Наступна сторінка: 3.10 Менеджер друку (Перейти)