Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
51
Добавлен:
02.04.2015
Размер:
8.79 Mб
Скачать
    1. Типы данных геометрии

Вот структура данных, которую Вы будете использовать при задании позиции, размеров или областей:

PhPoint_t

Координаты x и y одиночной точки. Вы будете использовать это при задании расположения на экране, на холсте виджета, и прочем.

PhDim_t

Ширина (w) и высота (h), обычно в координатах Photon'а. Вы будете это использовать при задании размеров.

PhArea_t

Прямоугольная область, выраженная как PhPoint_t для левого верхнего угла области и PhDim_t, определяющего размеры области.

PhRect_t

Прямоугольник, выраженный двумя структурами PhPoint_t, одна для верхнего левого, вторая – для нижнего правого углов.

PhTile_t

Список прямоугольников. Эта структура используется в основном в "списке повреждений", который определяет области на экране или виджет, которые долны быть обновлены.

 Photon поддерживает внутренний пул "черепиц", поскольку они часто используются, и использование пула уменьшает время, затрачиваемое на удаление "черепиц" и освобождение ресурсов. Используйте PhGetTile(), чтобы получить "черепицу" из пула, и PhFreeTiles(), чтобы вернуть список "черепиц" в пул.

Вы, вероятно, не будете использовать структуру PhTile_t, если не будете использовать виджет PtRaw или создавать свой собственный виджет. Для получения более полной информации см. раздел "Виджет PtRaw" в главе "Необработанная прорисовка и анимация", и "Построение своих виджетов".

Библиотеки Photon'а предоставляют различные функции работы с этими типами данных:

PhAreaToRect()

Преобразование области в прямоугольник

PhDeTranslateRect()

Детрансляция прямоугольника (вычитание смещения)

PhRectIntersect()

Нахождение перекрытия двух прямоугольников

PhRectToArea()

Преобразование прямоугольника в область

PhRectUnion()

Определение охватывающего прямоугольника для двух прямоугольников

PhTranslateRect()

Трансляция прямоугольника (добавление смещений)

    1. Таймеры

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

  • виджет PtTimer – прост, но не слишком точен;

  • функция RtTimer* – несколько больше работы, несколько более точная;

  • таймеры в процессе, отдельном от GUI (графический интерфейс пользователя, кто забыл) – необходим для жёсткого реального времени. Для получения более полной информации см. раздел "Нити" в главе "Переменные операции".

Библиотеки Photon'а также включают несколько функций работы с таймером низкого уровня, но Вам надо пользоваться ими с осторожностью:

PhTimerArm()

Взводит событие таймера. Не используйте эту функцию в приложении, которое использует виджеты.

PtTimerArm()

Взводит событие таймера в виджете. Эта функция обычно используется при создании своего собственного виджета. Некоторые виджеты (такие как PtTerminal) уже используют этот тип таймера, так что вызов функции PtTimerArm() может иметь непредсказуемые результаты.

Соседние файлы в папке Литература