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 |