Стили виджетов
Стили классов виджетов позволяют Вам на лету подстраивать под себя или модифицировать внешний вид виджетов, их размеры и поведение. Они также обеспечивают различный внешний вид одного и того же типа виджета, существующие одновременно. В сущности, стиль класса виджета представляет из себя набор методов и данных, определяющих внешний вид и реакции экземпляров класса виджета.
Каждый класс виджета имеет принимаемый по умолчанию стиль, но Вы можете в любой момент добавить или модифицировать неограниченное количество дополнительных стилей. Вы можете даже модифицировать принимаемый по умолчанию для данного класса стиль, изменив внешний вид и реакцию любых экземпляров этого класса, которые используют принимаемый по умолчанию стиль.
Каждый экземпляр виджета может ссылаться на определённый стиль, обеспечиваемый его классом. Вы можете изменить стиль, которым какой-либо виджет сможет воспользоваться в любой момент, когда это Вам понадобится.
Каждый стиль имеет набор членов, включающих имя стиля и функции, которые заменяют или расширяют какие-либо методы класса виджета. Методы являются функциями уровня класса, определяющими, как виджет инициализирует себя, прорисовывает себя, вычисляет свои размеры и прочая. Для получения более полной информации о методах см. руководство "Построение подстраиваемых виджетов". Члены стиля определены следующими декларациями:
Pt_STYLE_DRAW Адрес функции, вызываемой всякий раз виджетом, использующим этот стиль, когда ему требуется перерисовать себя.
Pt_STYLE_EXTENT или Pt_STYLE_SIZING Адрес функции, вызываемой всякий раз виджетом, использующим этот стиль, когда происходит перемещение, изменение размеров или модификация такого рода, которая может потребовать перемещения виджета или изменения его размеров (изменение в данных виджета). Эта функция отвечает за установку размеров виджета в соответствующие значения.
Pt_STYLE_ACTIVATE Адрес функции, вызываемой всякий раз виджетом, создаваемым со стилем, принятым по умолчанию, и всякий раз, когда стиль виджета изменяется с одного стили на другой. Эта функция является тем местом, где размещается манипулирование плоскостями управления виджета, дополнения к ответным реакциям или установки ресурсов (для перезаписи принятых для виджета по умолчанию).
Pt_STYLE_CALC_BORDER Адрес функции, отвечающей за оповещение как много пространства требуется для представления отделки и границ краёв виджета.
Pt_STYLE_CALC_OPAQUE Адрес функции, отвечающей за вычисление списка
"черепицы", представляющий затенённые области виджета. Этот список используется для определения того, что должно быть повреждено под этим виджетом, когда он модифицируется.
Pt_STYLE_DEACTIVATE Адрес функции, вызываемой всякий раз виджетом,
использующим этот стиль, когда виджет уничтожается либо переключается на другой стиль.
Pt_STYLE_NAME Имя стиля
Pt_STYLE_DATA Указатель на произвольный блок данных для использования стилем.
Более детально описание этих членов см. в описании библиотечной функции Photon'a PtSetStyleMembor().
Следующие функции позволяют Вам создавать и манипулировать стилями класса виджета:
PtAddClassStyle() | Добавляет стиль к классу виджета |
PtCreateClassStyle() | Создаёт стиль класса |
PtDupClassStyle() | Получает копию стиля класса виджета |
PtFindClassStyle() | Отыскивает стиль с заданным именем |
PtGetStyleMember() | Получает член стиля |
PtGetWidgetStyle() | Получает стиль, который виджет использует в текущий момент |
PtSetStyleMember() | Устанавливает член стиля |
PtSetStyleMembers() | Устанавливает множество членов стиля из списка аргументов переменной длины |
PtSetWidgetStyle() | Устанавливает текущий стиль для виджета |
Некоторые из этих функций требуют или возвращают указатель на структуру PtWidgetClassStyle_t. Не обращайтесь к членам этой структуры напрямую, а используйте для этого функцию PtGetStyleMember().
Вы можете также установить стиль экземпляра виджета, установив его ресурс Pt_ARG_STYLE (см. описание виджета PtBasic в книге "Справочник виджетов"). Установка этого ресурса имеет тот же эффект, что и вызов функции PtSetWidgetStyle().
Этот пример создаёт стиль, названный blue, и несколько кнопок. Заметьте, что Ваши виджеты могут использовать стиль до того, как Вы добавили стиль к классу или даже перед тем, как Вы создали стиль. Когда Вы создаёте стиль и добавляете его, все виджеты, использующие стиль, немедленно обновляются.
#include <Pt.h>
PtWidget_t *win, *but;
PtWidgetClassStyle_t *b;
void blue_draw (PtWidget_t *widget, PhTile_t *damage)
{
/* Это функция прорисовки для стиля blue.
Она рисует голубой прямоугольник (без надписи)
для виджета.
*/
PgSetFillColor( Pg_BLUE);
PgDrawRect( PtWidgetExtent (widget,NULL), Pg_DRAW_FILL);
}
int use_blue_style( PtWidget_t *widget, void *data, PtCallbackInfo_t *cbinfo)
{
/* Эта ответная реакция устанавливает текущий стиль для данного
экземпляра виджета. Если Вы не прикрепили стиль blue
к классу, никаких изменений во внешнем виде виджета нет.
*/
PtSetWidgetStyle (widget, "blue");
return Pt_CONTINUE;
}
int attach_blue_style( PtWidget_t *widget, void *data,
PtCallbackInfo_t *cbinfo)
{
/* Эта ответная реакция добавляет стиль к классу виджета.
Если Вы щёлкнули на одной из кнопок "использование стиля blue",
изменится стильвсех кнопок.
*/
PtAddClassStyle (PtButton, b);
return Pt_CONTINUE;
}
int main()
{
PhArea_t area = {{0,50},{100,100}};
PtArg_t argt[10];
PtStyleMethods_t meth;
PtCallback_t cb = {use_blue_style, NULL};
PtCallback_t cb2 = {attach_blue_style, NULL};
int unsigned n;
/* Инициализация методов для стиля. */
meth.method_index = Pt_STYLE_DRAW;
meth.func = blue_draw;
PtInit(NULL);
/* Создание окна. */
PtSetArg (&argt[0], Pt_ARG_DIM, &area.size, 0);
win = PtCreateWidget (PtWindow, NULL, 1, argt);
/* Создание нескольких кнопок. Когда Вы щёлкаете по одной из этих
кнопок, ответная реакция делает экземпляр виджета
использующим стиль blue. */
n = 0;
PtSetArg (&argt[n++], Pt_ARG_TEXT_STRING, "Use blue style", 0);
PtSetArg (&argt[n++], Pt_CB_ACTIVATE, &cb, 1);
but = PtCreateWidget (PtButton, NULL, n, argt);
PtSetArg (&argt[0], Pt_ARG_TEXT_STRING, "Use blue style also", 0);
PtSetArg (&argt[n++], Pt_ARG_POS, &area.pos, 0);
but = PtCreateWidget (PtButton, NULL, n, argt);
/* Создание другой кнопки. Когда Вы щёлкаете на ней,
ответная реакция прикрепляет стиль blue к классу виджета. */
n = 0;
PtSetArg (&argt[n++], Pt_ARG_TEXT_STRING, "Attach blue style", 0);
PtSetArg (&argt[n++], Pt_CB_ACTIVATE, &cb2, 1);
PtSetArg (&argt[n++], Pt_ARG_POS, &area.pos, 0);
area.pos.y = 85;
but = PtCreateWidget (PtButton, NULL, n, argt);
/* Копирование принимаемого по умолчанию стиля, чтобы создать стиль blue.
Замена рисуемого члена новым стилем. */
b = PtDupClassStyle (PtButton, NULL, "blue");
PtSetClassStyleMethods (b,1,&meth);
PtRealizeWidget (win);
PtMainLoop();
return EXIT_SUCCESS;
}
- Руководство программиста в Photon
- Перевод выполнен Владимиром Зайцевым, г.Харьков Редактирование текста выполнено Михаилом Поспеловым, г.Калуга
- Глава 1. Уроки 34
- Глава 2. Окружение PhAb 63
- Глава 3. Работа с приложениями 75
- Глава 4. Работа с модулями 83
- Глава 5. Создание виджетов в PhAb 98
- Глава 6. Редактирование ресурсов и ответных реакций в PhAb 114
- Глава 7. Управление геометрией 134
- Глава 8. Генерирование, компилирование и запуск программного кода на исполнение 146
- Глава 9. Работа с программным кодом 158
- Глава 10. Манипулирование ресурсами в коде приложения 175
- Глава 11. Управление виджетами в исходном коде приложения 186
- Глава 12. Поверхности управления 196
- Глава 13. Доступ к модулям PhAb из программного кода 202
- Глава 14. Поддержка международных языков 209
- Глава 15. Контекстно-чувствительная помощь 219
- Глава 16. Межпроцессные связи 224
- Глава 17. Параллельные операции 239
- Глава 18. Необработанное рисование и мультипликация 249
- Глава 19. Шрифты 286
- Глава 20. Печать 297
- Глава 21. "Тащить и бросать" 306
- Глава 22. Регионы 319
- Глава 23. События 328
- Глава 24. Управление окнами 340
- Глава 25. Программирование в Photon'е без PhAb'а 350
- Небольшое пояснение переводчика
- Введение
- Обзор архитектурыPhoton'а
- Построитель Photon'овских приложений – PhAb
- Получение немедленных результатов
- Концентрация на функциональности
- Создание прототипов без написания кода
- Сокращение размера кода
- Создание последовательных приложений
- Создание всех разновидностей приложений
- Концепции виджетов
- Жизненный цикл виджета
- Геометрия виджета
- Парадигма (система понятий) программирования
- Приложение текстового режима
- PhAb приложение
- БиблиотекиPhoton'а
- Обзор построения приложений подPhAb
- Шаг 1. Создание модулей
- Шаг 2. Добавление виджетов
- Шаг 3. Прикрепление ответных реакций
- Шаг 4. Генерация кода
- Шаг 5. Запуск Вашего приложения на выполнение
- Шаг 6. Повторение любого предыдущего шага
- Написание приложений без PhAb
- Глава 1. Уроки
- Перед тем как Вам начать...
- Урок 1 – Привет, мир
- Создание приложения
- Генерирование кода
- Хотите больше информации?
- Урок 2. Редактирование ресурсов
- Добавление виджета "Кнопка"
- Изменение ширины фаски
- Изменение шрифта
- Изменение выравнивания текста
- Установка флагов
- Изменение цвета заполнения
- Редактирование пиксельной карты
- Редактирование многострочного текста
- Редактирование списка текстовых параграфов
- Создание шаблона
- Желаете узнать побольше?
- Урок 3. Создание меню и панелей меню
- О присоединении ответных реакций
- Об именах экземпляров
- Создание панели меню
- Создание модуля меню "File"
- Добавление пунктов меню
- Создание модуля меню "Help"
- Присоединение ответных реакций
- Присоединение ответной реакции модульного типа
- Присоединение ответной реакции кодового типа
- Подготовка кода
- Хотите узнать больше?
- Урок 4. Создание диалогов
- О диалогах
- Ещё об именах экземпляров
- Прикрепление модуля диалога
- Добавление виджетов в диалог
- Добавление ответной реакции к кнопке Done
- Модификация сгенерированного кода функции
- Компиляция и запуск на выполнение
- Желаете узнать больше?
- Урок 5. Создание окон
- Создание окна
- Прикрепление ответной реакции
- Добавление виджетов
- Генерирование и модификация кода
- Генерирование кода
- Модификация функции установки
- Модификация функции изменения цвета
- Модификация функции закрытия окна
- Компиляция и запуск
- Хотите узнать больше?
- Глава 2. Окружение PhAb
- Меню "File"
- Меню "Edit"
- Меню "View"
- Меню "Options"
- Меню "Application"
- Меню "Window"
- Меню "Help"
- Панели инструментов
- Инструмент корректировки положения
- Панели управления
- Палитра виджетов
- Режимы (создание или выбор)
- Панель ответных реакций
- Панель дерева модулей
- Панель связей модуля
- Панель поиска
- Подгонка Вашего окружения PhAb
- Общие предпочтения ("General preferences")
- Предпочтение цвета ("Color preferences")
- Предпочтение по перетаскиванию (Dragging preferences)
- Предпочтения сетки
- Глава 3. Работа с приложениями
- Создание приложения
- Открытие приложения
- Сохранение приложения
- Именование и переименование приложения
- Сохранение существующего приложения
- Переписывание существующего приложения
- Закрытие приложения
- Задание стартовой информации приложения
- Задание глобального заголовочного файла
- Функция инициализации
- Опции командной строки
- Включение имён экземпляров
- Окна запуска
- Добавление окна запуска
- Модификация окна запуска
- Удаление окна запуска
- Импортирование файлов
- Импортирование модулей PhAb из других приложений
- Импортирование графических образов
- Глава 4. Работа с модулями
- Типы модулей
- Анатомия модуля
- Выбор модуля
- Как сохраняются модули
- Изменение ресурсов модуля
- Использование селектора модулей
- Создание нового модуля
- Просмотр модулей
- Открытие модулей
- Удаление модуля
- Сворачивание модулей в иконки
- Закрытие модуля
- Отображение модулей в реальном времени
- Позиционирование модуля
- Нахождение потерянных модулей и иконок
- Модули окон
- Изменение размера модуля окна
- Модули диалога
- Изменение размеров модуля диалога
- Предопределённые диалоги
- Модули меню
- Открытие редактора меню
- Задание имён экземпляров
- Создание "горячих клавиш" и "кнопок быстрого доступа" (hotkeys and shortcuts)
- Изменение размеров модуля меню
- Создание командных пунктов меню
- Создание пунктов подменю
- Создание разделителей пунктов
- Создание пунктов-переключателей
- Создание пунктов-функций
- Перемещение пунктов меню
- Использование модуля меню
- Модули картинок
- Отображение картинки
- Использование картинок как баз данных виджетов
- Изменение размера модуля картинки
- Модули иконок
- Задание размеров и имён экземпляров
- Глава 5. Создание виджетов в PhAb
- Типы виджетов
- Имена экземпляров
- Принимаемое по умолчанию имя экземпляра
- Когда назначать уникальное имя
- Имена экземпляров и переводы
- Дублированные имена
- Создание виджета
- Создание нескольких виджетов
- Несколько виджетов
- Использование охватывающего прямоугольника
- Использование панелей управления
- Виджеты внутри группы
- Использование панели "Module Tree"
- Использование кнопок "Следующая" и "Предыдущая"
- Скрытые виджеты
- Выравнивание виджетов
- По другому виджету
- По родительскому контейнеру
- Общепользовательский доступ (сиа) и управление фокусом
- Изменение фокусировки через клавиатуру
- Управление фокусом
- Ответные реакции фокусировки
- Функции обработки фокусировки
- Упорядочивание виджетов
- Перетаскивание виджетов
- Предустановки перетаскивания
- Установка координатxиyвиджетов
- Перемещение виджетов между контейнерами
- Изменение размеров виджетов и модулей
- Буфер обмена
- Вырезание и копирование
- Вклеивание
- Просмотр буфера обмена
- Редактирование буфера обмена
- Дублирование виджетов и контейнеров
- Удаление виджетов
- Импортирование графических файлов
- Изменение класса виджета
- Шаблоны
- Создание шаблонов
- Добавление подогнанного виджета
- Редактирование шаблонов
- Удаление шаблонов
- Глава 6. Редактирование ресурсов и ответных реакций в PhAb
- Редактирование ресурсов виджета
- Попиксельный редактор
- Установка размеров попиксельного образа
- Рисование линий, прямоугольников и кругов
- Заполнение замкнутой области
- Выбор области
- "Подталкивание" области
- Использование панели инструментов попиксельного образа
- Другие средства управления попиксельным образом
- Редактор цвета
- Полный редактор цвета
- Быстрый редактор цвета
- Редактор списка
- Редактирование существующих пунктов списка
- Удаление пунктов списка
- Редактор чисел
- Текстовые редакторы
- Редактор функций
- Ответные реакции
- Редактирование ответных реакций:
- Модульные ответные реакции
- Предреализационная установочная функция
- Постреализационная установочная функция
- Установочные функции хранятся в заготовочных файлах
- Ответные реакции кодового типа
- Функции ответных реакций хрянятся в заготовочных файлах
- Ответные реакции горячих клавиш
- Горячие клавиши – основы
- Задание метки горячей клавиши
- Задание ответной реакции
- Где должен появиться модуль
- Какой виджет Вам нужен в функции ответной реакции
- Куда идти пользователю, чтобы нажать горячую клавишу
- Обработка горячих клавиш
- Отключение горячих клавиш
- Обработчики событий – необработанные и отфильтрованные ответные реакции
- Глава 7. Управление геометрией
- Контейнер виджетов
- Согласование геометрии
- Политика изменения размеров
- Установка политики изменения размеров в PhAb
- Установка политики изменения размеров в программном коде приложения
- Абсолютное позиционирование
- Выравнивание виджетов с использованием групп
- Объединение виджетов в группу
- Получение доступа к виджетам в группе
- Горизонтальное или вертикальное выравнивание виджетов
- Использование флагов групп
- Расщепление группы на составляющие
- Управление привязкой с использованием анкеров – средств привязки
- Ресурсы анкеров
- Установка флагов анкеров в PhAb
- Установка флагов анкеров в программном коде Вашего приложения
- Установка ограничений по размерам или позиционированию без анкеров
- Глава 8. Генерирование, компилирование и запуск программного кода на исполнение
- Генерирование программного кода приложения
- Что генерирует PhAb
- Управление версиями
- Некоторые рекомендации по использованию cvs
- Прототипы функций
- Потенциальные проблемы с генерированием proto.H
- Как организовать файлы приложения
- Многоплатформенные приложения
- Одноплатформенные приложения
- Преобразование к мультиплатформенности
- Редактирование исходного кода
- Выбор редактора или броузера
- Создание модуля с исходным кодом
- Изменение отображения файлов
- Компилирование и линковка
- Выбор библиотек
- Запуск команды make
- Модифицирование команды make
- Запуск приложения на исполнение
- Отладка
- Модифицирование команды отладчика
- Включение в Ваше приложение не-PhABфайлов
- Мультиплатформенные приложения
- Одноплатформенные приложения
- Добавление библиотек
- Создание результирующей dll как приложения PhAb
- Компилирование и линковка
- Инициализация dll
- Выгрузка Вашей dll
- Глава 9. Работа с программным кодом
- Переменные и декларации
- Переменные и декларации виджетов
- Использование глобальной переменной и декларация виджета
- Обработка множества экземпляров окна
- Декларация внутренних связей
- Декларации иконок
- Глобальный хеадер-файл
- Имена функций и имена файлов
- Функция инициализации
- Обработка опций командной строки
- Установочные функции модуля
- Функции ответных реакций кодового типа
- Типы данных геометрии
- Таймеры
- Использование PtTimer
- Функции RtTimer*
- Меню инициализации
- Включение, отключение или переключение пунктов меню
- Изменение текста пунктов меню
- Генерирование пунктов меню
- Создание подменю
- Задержка и принудительное обновление изображения на экране
- Глобально
- Для конкретного контейнера
- Принудительное обновление
- Глава 10. Манипулирование ресурсами в коде приложения
- Список аргументов
- Установка ресурсов
- Списки аргументов для установки ресурсов
- Ресурсы scalar и color
- Ресурсы string
- Ресурсы alloc
- Ресурсы image
- Ресурсы array
- Ресурсы flag
- Ресурсы function
- Ресурсы pointer
- Ресурсы Link
- Ресурсы struct
- Ресурсы boolean
- Вызов PtSetResources()
- Установка одного ресурса
- Получение ресурсов
- Не используя указатели
- Ресурсы scalar и flags (безуказательный метод)
- Ресурс string (безуказательный метод)
- Ресурс boolean (безуказательный метод)
- Использование указателей
- Ресурсы scalar и flag (указательный метод)
- Ресурсы string (указательный метод)
- Ресурсы alloc (указательный метод)
- Ресурсы image (указательный метод)
- Ресурсы array (указательный метод)
- Ресурсы pointer (указательный метод)
- Ресурсы link (указательный метод)
- Ресурсы struct (указательный метод)
- Ресурсы boolean (указательный метод)
- Вызов функции PtGetResources()
- Получение одного ресурса
- Глава 11. Управление виджетами в исходном коде приложения
- Создание виджетов
- Задание порядка виджетов
- Работа с семейством виджетов
- Ответные реакции
- Добавление ответных реакций
- Вызов ответной реакции
- Удаление ответных реакций
- Просмотр ответных реакций
- Обработчики событий
- Добавление обработчиков событий
- Удаление обработчиков событий
- Запуск обработчика событий
- Стили виджетов
- Глава 12. Поверхности управления
- Что такое поверхности управления?
- Ограничения
- Привязка действий к поверхностям управления
- Ссылка на поверхности управления
- ApIповерхностей управления
- Создание и уничтожение поверхностей управления
- Нахождения идентификаторов для поверхностей управления
- Вычисление геометрии для поверхностей управления
- Прорисовка поверхностей управления
- Активация поверхностей управления
- Включение и отключение поверхностей управления
- Нахождение поверхностей управления
- Скрытие и демонстрирование поверхностей управления
- Установление порядка поверхностей управления
- Размещение пользовательских данных вместе с поверхностями управления
- Глава 13. Доступ к модулям PhAb из программного кода
- Создание внутренних связей
- Использование внутренних связей в Вашем программном коде
- Декларации
- Функции внутренней связи
- Пример – отображение меню
- Использование базы данных виджетов
- Создание базы данных
- Предварительно прикреплённые ответные реакции
- Назначение уникального имени экземпляра
- Создание динамической базы данных
- Функции базы данных виджетов
- Глава 14. Поддержка международных языков
- Соображения о проектировании приложения
- Размер виджетов, основанных на тексте
- Выравнивание
- Высота шрифта
- Жёстко закодированные строки
- Использование символа "@" в именах экземпляров
- Двуязычные приложения
- Общие строки
- Генерация языковой базы данных
- Базы данных сообщений
- Редактор языка
- Запуск языкового редактора из PhAb
- Запуск языкового редактора как автономного приложения
- Создание нового файла перевода
- Редактирование существующего файла перевода
- Перевод текста
- Горячие клавиши
- Ресурсы help'a
- Функции перевода
- Запуск Вашего приложения на исполнение
- Распространение Вашего приложения
- Глава 15. Контекстно-чувствительная помощь
- Создание текста помощи
- Файлы помощи
- Файлы таблиц содержания
- Ссылки на темы помощи
- Унифицированный указатель информационного ресурса (url)
- Маршрут тем
- Связывание помощи с виджетами
- Отображение помощи в просмотрщике помощи
- Отображение помощи во всплывающем баллоне
- Помощь без иконки "?"
- Получение доступа к помощи из Вашего программного кода
- Глава 16. Межпроцессные связи
- Коннекции
- Создание коннектора
- Асинхронные клиентские вызовы
- Соглашения по именам
- ОтсылкаQnx-сообщений
- Приём qnx-сообщений
- Добавление обработчика ввода
- Функции name_attach и PtAppAddInput()
- Удаление обработчика ввода
- Размер буфера сообщений
- Пример – регистрация сообщений об ошибках
- ИмпульсыPhoton'а
- Приложение Photon'а, получающее импульсы
- Создание импульса
- Взведение импульса
- Пересылка сообщения импульса испускателю импульсов
- Регистрация обработчика ввода
- Посылка импульса самому себе
- Удаление импульса
- Пример – очередь сообщений
- Приложение Photon, отправляющее импульсы
- Обработка сигналов
- Добавление функции обработки сигналов
- Удаление функции обработки сигналов
- Другие механизмы ввода/вывода
- Глава 17. Параллельные операции
- Фоновое исполнение
- Рабочие процедуры
- Запирание библиотеки Photon'а
- Несколько потоков, обрабатывающих события
- Потоки реального времени
- Модальные операции и потоки
- Завершение многопоточной программы
- Потоки и рабочие процедуры
- Глава 18. Необработанное рисование и мультипликация
- ВиджетPtRaw
- Функция необработанного рисования
- Определение холста необработанного виджета
- Преобразование координат
- Отсечение
- Использование повреждённых черепиц (tiles)
- Использование модели для более сложного рисования
- Примеры простых функций прорисовки PtRaw
- Атрибуты рисования
- Общие атрибуты
- Текстовые атрибуты
- Атрибуты заполнения
- Атрибуты черты (линии)
- Дуги, эллипсы, многоугольники и прямоугольники
- Прямоугольники
- Прямоугольники со скруглёнными углами
- Прямоугольники с фасками, прямоугольники и стрелки
- Многоугольники
- Перекрытие многоугольников
- Дуги, круги, хорды и сектора
- Спэны – сложные кривые
- Линии, пиксели и массивы пикселей
- Побитовые образы (bitmaps)
- Образы (images)
- Образы на основе палитры
- Образы в непосредственных цветах
- Образы в градиентных цветах
- Создание образов
- Кэширование образов
- Прозрачность в образах
- Использование хромоключа
- Использование маски прозрачности
- Отображение образов
- Управление образами
- Освобождение образов
- Мультипликация
- Создание серии кадров
- Использование базы данных виджетов
- Использование файла
- Циклическая прокрутка кадров
- Исключение мерцания в мультипликации
- Функции контекста памяти
- Режим рисования с прямым доступом
- Внеэкранная видеопамять
- Внеэкранные замки
- Поддержка альфа-сопряжения
- Поддержка хроматического ключа
- Операции расширенного растра
- Видеорежимы
- Градиенты
- Градиенты уровня драйвера
- Градиенты уровня приложения
- Видеоверлей
- Поверхности
- Окна просмотра
- Api слоев
- Глава 19. Шрифты
- Метрики символа
- Имена шрифтов
- Запрос доступных шрифтов
- Структура FontDetails
- Генерирование имён шрифтов
- Написание текста в прямоугольной области
- Исправление повреждений в случае пропорционального шрифта текста
- Глава 20. Печать
- Контекст печати
- Создание контекста печати
- Модифицирование контекста печати
- Запуск процесса печати
- Печать требуемых виджетов
- Печать новой страницы
- Печать скроллирующихся виджетов
- Приостановка и возобновление работы печати
- Завершение работы печати
- Освобождение контекста печати
- Глава 21. "Тащить и бросать"
- Механизм транспортировки
- Использование "тащи и бросай"
- Запуск операции "тащи и бросай"
- Получение событий "тащи и бросай"
- Виджет-источник
- Виджет-адресат
- Отмена операции "тащи и бросай"
- Регистрация новых транспортных типов
- Простая структура данных
- Более сложная структура
- Список ссылок на очистку
- Эндиан-список
- Fixup-список
- Элемент реестра
- Транспортные функции
- Оба приложения
- Приложение-источник
- Приложение-адресат
- Глава 22. Регионы
- Координатное пространствоPhoton'а
- Координаты региона
- Начало координат региона
- Начальные размеры и расположение
- Начало координат в (0,0) и начальный прямоугольник в (0,0)
- Начало координат в (0,0) и начальный прямоугольник не в (0,0)
- Начало координат не в (0,0) и начальный прямоугольник не в (0,0)
- О регионах потомка
- Регионы и отсечение событий
- Месторасположение и иерархия Иерархия регионов:
- Родительский регион
- Братские регионы
- Месторасположение по умолчанию
- ФлагPh_force_front
- Задаваемое месторасположение
- Использование регионов
- Открытие региона
- Размещение регионов
- Изменение месторасположения региона
- Изменение родителя
- Задаваемые братья
- Системная информация
- Глава 23. События
- События мыши
- Нажатие кнопки
- Отпускание кнопки
- Несколько щелчков
- Клавиши-модификаторы
- Генерирование событий
- Нацеливание на определённые регионы
- Неисключительное событие
- Направленное событие
- Нацеливание на определённые виджеты
- События, генерируемые клавиатурными клавишами
- Координаты события
- Обработчики события – необработанные и отфильтрованные ответные реакции
- Накопление событий
- Сжатие событий
- Перетаскивание
- Инициализация перетаскивания
- Контурное перетаскивание
- Непрозрачное перетаскивание
- Обработка событий перетаскивания
- Контурное перетаскивание
- Непрозрачное перетаскивание
- Глава 24. Управление окнами
- Флаги управления окнами
- Флаги отображения окна
- Флаги управления окном
- Оконные флаги уведомления
- Ответная реакция уведомления
- Пример: проверка закрытия окна
- Получение и установка состояния окна
- Управление несколькими окнами
- Функции управления окнами
- Запуск самостоятельного приложения
- Модальные диалоги
- Глава 25. Программирование в Photon'е без PhAb'а
- Основные шаги
- Компилирование и линковка неPhAb'овского приложения
- Образец приложения
- Что происходит
- PtCreateWidget() – первый вызов
- PtCreateWidget() – второй вызов
- Подсоединение программного кода приложения к виджету
- Ответные реакции
- Обработка событий
- Полный пример приложения
- Приложение 1. Архитектура Photon'а
- Пространство событий
- Регионы и события
- События
- Начальный набор прямоугольников
- Накопленный набор прямоугольников
- Регионы
- Чувствительность
- Непрозрачность
- Краткая сводка атрибутов
- Регистрация событий (event logging)
- Типы событий
- Как владельцы регионов уведомляются о событиях
- Упорядоченный опрос
- Синхронное уведомление
- Асинхронное уведомление
- Регион устройств
- Фокусировка указателя
- Фокусировка клавиатуры
- События перетаскивания
- Событие "тащи и бросай"
- Драйверы фотона
- Драйверы ввода
- Драйвер мыши
- Драйвер клавиатуры
- Драйверы вывода
- Графический драйвер
- Несколько графических драйверов
- Драйверы, использующие отдельные регионы
- Драйверы, использующие перекрывающиеся регионы
- Инкапсуляция драйверов
- Оконный менеджерPhoton'а
- Регионы оконных рамок
- Регион фокусировки
- Регион рабочей области
- Регион фона
- Приложение 2. Обзор виджетов
- Приложение 3. Поддержка многоязычности Unicode
- Широкие и многобайтовые символы
- Функции преобразования
- Другие кодировки
- Драйверы клавиатуры
- Пример: текстовые виджеты
- Слепые клавиши (deadkeys) и скомпонованные последовательности
- Скомпонованные последовательностиPhoton'а
- Приложение 4. Photon во встроенных системах
- Принимаемые допущения
- Введение
- Шаги по загрузке Photon'а
- Шаг 1. Экспорт переменной окруженияPhoton_path
- Шаг 2. Запуск сервераPhoton'а
- Шаг 3. Запуск драйверов ввода
- Шаг 4. Запуск менеджера шрифтов
- Конфигурирование шрифтов
- Запуск сервера шрифтов
- Шаг 5. Переключение в графический режим
- Установка карты в правильный режим
- Шаг 6. Запуск графического драйвера
- Шаг 7. Запуск оконного менеджера
- Необходимые файлы
- Графика
- Требуемые бинарные файлы
- Требующиеся библиотеки
- Требуемые шрифты
- Службы шрифтов
- Сборка всего этого в единое целое
- Полезные советы
- Приложение 5. Использование PhAb под Microsoft Windows
- Photonв одиночном окне
- ЗавершениеPhAb
- Дополнительные опции
- Файловые имена с буквами в обоих регистрах
- Строка запуска отладчика
- Функциональность панели управления ресурсами
- Разработка индивидуальных виджетов иPhAb
- Статическое линкование Ваших индивидуальных виджетов
- Глоссарий
- Ненеобходимое послесловие переводчика.