logo
Литература_1 / photon_old

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

Микро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. Yandex.RTB R-A-252273-3
      Yandex.RTB R-A-252273-4