Megosztás a következőn keresztül:


Bináris raszterműveletek

Ez a szakasz a GetROP2 és SetROP2 függvények által használt bináris raszterműveleti kódokat sorolja fel. A raszteres műveleti kódok határozzák meg, hogy a GDI hogyan egyesíti a kijelölt toll biteit a célbitkép bitjeivel.

Minden raszterműveleti kód egy logikai műveletet jelöl, amelyben a kijelölt tollban lévő képpontok és a célbitkép értékei egyesülnek. Az alábbi két operandus használatos ezekben a műveletekben.

Operandus Jelentés
P Kijelölt toll
D Célbitkép

 

Az ezekben a műveletekben használt logikai operátorok a következők.

Operátor Jelentés
egy Bitenkénti ÉS
n Bitenkénti NEM (inverz)
o Bitenkénti VAGY
x Bitenkénti kizárólagos OR (XOR)

 

Minden logikai művelet fordított lengyel jelölésben jelenik meg. Az alábbi művelet például a célbitképben lévő képpontok értékeit a toll és a kijelölt ecset képpontértékeinek kombinációjára cseréli:

DPo 

Minden raszterműveleti kód egy 32 bites egész szám, amelynek magasrendű neve logikai műveleti index, és amelynek alacsonyrendű neve a műveleti kód. A 16 bites műveleti index egy nulla kiterjesztett 8 bites érték, amely két paraméter logikai műveletéből eredő összes lehetséges eredményt (ebben az esetben a toll és a célérték) jelöli. A DPo- és DPan-műveletek műveleti indexei például az alábbi listában láthatók.

P D DPo Dpan
0 0 0 1
0 1 1 1
1 0 1 1
1 1 1 0

 

Az alábbi lista a rajzmódokat és az általuk képviselt logikai műveleteket ismerteti.

Raszterművelet Logikai művelet
R2_BLACK 0
R2_COPYPEN P
R2_MASKNOTPEN DPna
R2_MASKPEN Dpa
R2_MASKPENNOT PDna
R2_MERGENOTPEN DPno
R2_MERGEPEN DPo
R2_MERGEPENNOT PDno
R2_NOP D
R2_NOT Dn
R2_NOTCOPYPEN Pn
R2_NOTMASKPEN DPan
R2_NOTMERGEPEN DPon
R2_NOTXORPEN DPxn
R2_WHITE 1
R2_XORPEN DPx

 

Monokróm eszközök esetén a GDI a nullát feketére, az 1 értéket pedig fehérre képezi le. Ha egy alkalmazás fekete tollal próbál rajzolni egy fehér célhelyen a rendelkezésre álló bináris raszterműveletekkel, az alábbi eredmények következnek be.

Raszterművelet Eredmény
R2_BLACK Látható fekete vonal
R2_COPYPEN Látható fekete vonal
R2_MASKNOTPEN Nincs látható vonal
R2_MASKPEN Látható fekete vonal
R2_MASKPENNOT Látható fekete vonal
R2_MERGENOTPEN Nincs látható vonal
R2_MERGEPEN Látható fekete vonal
R2_MERGEPENNOT Látható fekete vonal
R2_NOP Nincs látható vonal
R2_NOT Látható fekete vonal
R2_NOTCOPYPEN Nincs látható vonal
R2_NOTMASKPEN Nincs látható vonal
R2_NOTMERGEPEN Látható fekete vonal
R2_NOTXORPEN Látható fekete vonal
R2_WHITE Nincs látható vonal
R2_XORPEN Nincs látható vonal

 

Színeszköz esetén a GDI RGB-értékekkel jeleníti meg a toll és a cél színét. Az RGB színérték egy hosszú egész szám, amely egy piros, egy zöld és egy kék színmezőt tartalmaz, amelyek mindegyike a megadott szín intenzitását határozza meg. Az intenzitások 0 és 255 között mozognak. Az értékek a hosszú egész szám három alacsony sorrendű bájtjában vannak csomagolva. A toll színe mindig egyszínű, de a cél színe két vagy három szín keveréke lehet. Ha egy alkalmazás a rendelkezésre álló bináris raszterműveletekkel fehér tollal próbál rajzolni egy kék célhelyen, az alábbi eredmények következnek be.

Raszterművelet Eredmény
R2_BLACK Látható fekete vonal
R2_COPYPEN Látható fehér vonal
R2_MASKNOTPEN Látható fekete vonal
R2_MASKPEN Láthatatlan kék vonal
R2_MASKPENNOT Látható piros/zöld vonal
R2_MERGENOTPEN Láthatatlan kék vonal
R2_MERGEPEN Látható fehér vonal
R2_MERGEPENNOT Látható fehér vonal
R2_NOP Láthatatlan kék vonal
R2_NOT Látható piros/zöld vonal
R2_NOTCOPYPEN Látható fekete vonal
R2_NOTMASKPEN Látható piros/zöld vonal
R2_NOTMERGEPEN Látható fekete vonal
R2_NOTXORPEN Láthatatlan kék vonal
R2_WHITE Látható fehér vonal
R2_XORPEN Látható piros/zöld vonal