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

Операции хроматического ключа представляют собой метод маскирования пиксельных данных при операциях формирования изображения (копирования, формирования образа, прямоугольников, прочая), основанный на значении хроматического цвета. Базовыми режимами операции являются:

  • Маскирование цвета ключа источника

  • Маскирование цвета ключа получателя

  • Маскирование всего, кроме цвета ключа источника

  • Маскирование всего, кроме цвета ключа получателя

Функции включают:

PgChromaOff()

Выключение операций хроматического ключа

PgChromaOn()

Включение операций хроматического ключа

PgSetChroma()

Установка хроматического ключа и операции

    1. Операции расширенного растра

МикроGUI Photon'а поддерживает 256 растровых операций. Операции могут быть выполнены с использованием пиксельных данных источника, пиксельных данных получателя и пиксельных данных цветного расширения монохромного шаблона. Операции расширенного растра устанавливаются тем же образом, как и обычные растровые операции, используя функцию PgSetDrawMode().

Расширенные растровые операции являются распространяющимися, что означает, что они действуют на все последующие операции прорисовки, включая операции блитирования бита (? bit-blit operations) и образы. Старый стиль растровых операций ещё существует, и его поведение такое же, как и в более поздних версиях микроGUI Photon'а.

Расширенные растровые операции определены как Pg_DrawModecharacters, в обратной записи, где characters выбирается из следующих символов:

Символ:

Означает:

P

Pattern – шаблон

S

Source – источник

D

Destination – получатель

o

OR – логическое ИЛИ

a

AND – логическое И

n

NOT – логическое отрицание

x

XOR – логическое исключающее ИЛИ

Например:

Pg_DrawModeS

Копировать все данные источника

Pg_DrawModePSo

Логическое ИЛИ данных источника с данными шаблона

Полный список всех доступныхх растровых операций см. в <photon/Pg.h>.

Вот такой же код:

PdOffscreenContext_t *context1;

PhRect_t rsrc,rdst;

/* Инициализация внеэкранной области и формирование данных по изображению,

которое мы хотим в ней иметь */

...

/* Копирование образа, хранящегося во внеэкранном контексте, на экран,

применение орерации OR к данным источника и шаблона вместе */

rsrc.ul.x = rdst.ul.x = rsrc.ul.y = rdst.ul.y = 0;

rsrc.lr.x = rdst.lr.x = rsrc.lr.y = rdst.lr.y = 100;

PgSetDrawMode(Pg_DrawModePSo);

PgSetFillDither(Pg_BLUE,Pg_BLACK,Pg_PAT_CHECKB8);

PgContextBlit(context1, &rsrc, NULL, &rdst);

/* Применение операции OR к шаблону в виде синией и чёрной шахматки –

и к данным источника; копирование результата на экран */

PgFlush();

    1. Видеорежимы

Видеорежим определяет, как выглядит экран (что Вы видите на мониторе). Описание режима включает:

Width

Ширина экрана в пикселях

Heigth

Высота экрана в пикселях

Pixel depth

"Глубина" пикселя – число бит представляющих пиксель. определяет, как много уникальных цветов Вы можете видеть на экране одновременно.

Refresh rate

Частота обновления кадров – число, указывающее, с какой частотой обновляется люминофор на ЭЛТ Вашего монитора (представлен в Hz).

Метод перечисления видеорежимов, применяемый в микроGUI Photon'а, схож со спецификацией VESA, где имеются "номера режимов" – численные представления ширины, высоты и пиксельной глубины видеорежима. Частота регенерации зависит от номера режима (это является отдельным членом в PgDisplaySettings_t). Номера режимов определяет драйвер, так что для одной видеокарты режим 640х480х8 может быть режимом 2, тогда как для другой – режимом 3022. Чтобы определить свойства какого-либо данного номера режима, используйте функцию PgGetVideoModeInfo(). Чтобы получить список номеров режимов, поддерживаемых конкретным графическим драйвером, используйте функцию PgGetVideoModeList().

Функциями для работы с видеорежимами являются:

PdSetTargetDevice()

Установить целевое устройство

PgGetGraphicsHWCaps()

Определить характеристики аппаратного обеспечения

PgGetVideoMode()

Получить текущий видеорежим

PgGetVideoModeInfo()

Получить информацию о видеорежиме

PgGetVideoModeList()

Запросить у графического драйвера список поддерживаемых им видеорежимов

PgSetVideoMode()

Установить текущий видеорежим

Вот некий простой код:

PgVideoModes_t ModeList;

PgVideoModeInfo_t ModeInfo;

PgDisplaySettings_t ModeSetting;

int I = 0, done = 0;

if (PgGetVideoModeList(&ModeList)) {

/* Ошибка – драйвер этого не поддерживает */

}

/* Использовать для этого режима принятую по умолчанию частоту обновления */

ModeSetting.refresh = 0;

while (!done) {

if (PgGetVideoModeInfo(ModeList.modes[i], &ModeInfo)) {

/* Код ошибки */

}

if ((ModeInfo.width = = 640) && (ModeInfo.height = = 480) && (ModeInfo.bits_per_pixel = = 16))

{

/* Мы нашли режим, который искали */

done = 1;

ModeSetting.mode = ModeList.modes[i];

}

i++;

if (i >= ModeList.num_modes) {

/* Ошибка – режим не найден */

done=1;

}

}

PgSetVideoMode (&ModeSetting);

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