Opérations raster binaires
Cette section répertorie les codes d’opération de rastérisage binaires utilisés par les fonctionsGetROP2 et setROP2 . Les codes d’opération raster définissent la façon dont GDI combine les bits du stylet sélectionné avec les bits de la bitmap de destination.
Chaque code d’opération raster représente une opération booléenne dans laquelle les valeurs des pixels dans le stylet sélectionné et la bitmap de destination sont combinées. Voici les deux opérandes utilisés dans ces opérations.
Opérande | Signification |
---|---|
P | Stylet sélectionné |
D | Bitmap de destination |
Les opérateurs booléens utilisés dans ces opérations suivent.
Opérateur | Signification |
---|---|
un | AND au niveau du bit |
n | Not au niveau du bit (inverse) |
o | OR au niveau du bit |
x | OR exclusif au niveau du bit (XOR) |
Toutes les opérations booléennes sont présentées en notation polonaise inverse. Par exemple, l’opération suivante remplace les valeurs des pixels dans la bitmap de destination par une combinaison des valeurs de pixels du stylet et du pinceau sélectionné :
DPo
Chaque code d’opération raster est un entier 32 bits dont le mot d’ordre élevé est un index d’opération booléen et dont le mot de faible ordre est le code d’opération. L’index d’opération 16 bits est une valeur 8 bits étendue zéro qui représente tous les résultats possibles résultant de l’opération booléenne sur deux paramètres (dans ce cas, le stylet et les valeurs de destination). Par exemple, les index d’opération pour les opérations DPo et DPan sont affichés dans la liste suivante.
P | D | Objet de stratégie de domaine | Dpan |
---|---|---|---|
0 | 0 | 0 | 1 |
0 | 1 | 1 | 1 |
1 | 0 | 1 | 1 |
1 | 1 | 1 | 0 |
La liste suivante présente les modes de dessin et les opérations booléennes qu’ils représentent.
Opération raster | Opération booléenne |
---|---|
R2_BLACK | 0 |
R2_COPYPEN | P |
R2_MASKNOTPEN | DPna |
R2_MASKPEN | Dpa |
R2_MASKPENNOT | PDna |
R2_MERGENOTPEN | DPno |
R2_MERGEPEN | Objet de stratégie de domaine |
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 |
Pour un appareil monochrome, GDI mappe la valeur zéro au noir et la valeur 1 à blanc. Si une application tente de dessiner avec un stylet noir sur une destination blanche à l’aide des opérations de raster binaire disponibles, les résultats suivants se produisent.
Opération raster | Résultat |
---|---|
R2_BLACK | Ligne noire visible |
R2_COPYPEN | Ligne noire visible |
R2_MASKNOTPEN | Aucune ligne visible |
R2_MASKPEN | Ligne noire visible |
R2_MASKPENNOT | Ligne noire visible |
R2_MERGENOTPEN | Aucune ligne visible |
R2_MERGEPEN | Ligne noire visible |
R2_MERGEPENNOT | Ligne noire visible |
R2_NOP | Aucune ligne visible |
R2_NOT | Ligne noire visible |
R2_NOTCOPYPEN | Aucune ligne visible |
R2_NOTMASKPEN | Aucune ligne visible |
R2_NOTMERGEPEN | Ligne noire visible |
R2_NOTXORPEN | Ligne noire visible |
R2_WHITE | Aucune ligne visible |
R2_XORPEN | Aucune ligne visible |
Pour un appareil de couleur, GDI utilise des valeurs RVB pour représenter les couleurs du stylet et de la destination. Une valeur de couleur RVB est un entier long qui contient un champ de couleur rouge, vert et bleu, chacun spécifiant l’intensité de la couleur spécifiée. Les intensités vont de 0 à 255. Les valeurs sont empaquetées dans les trois octets de bas ordre de l’entier long. La couleur d’un stylet est toujours une couleur unie, mais la couleur de la destination peut être un mélange de deux ou trois couleurs. Si une application tente de dessiner avec un stylet blanc sur une destination bleue à l’aide des opérations de raster binaire disponibles, les résultats suivants se produisent.
Opération raster | Résultat |
---|---|
R2_BLACK | Ligne noire visible |
R2_COPYPEN | Ligne blanche visible |
R2_MASKNOTPEN | Ligne noire visible |
R2_MASKPEN | Ligne bleue invisible |
R2_MASKPENNOT | Ligne rouge/verte visible |
R2_MERGENOTPEN | Ligne bleue invisible |
R2_MERGEPEN | Ligne blanche visible |
R2_MERGEPENNOT | Ligne blanche visible |
R2_NOP | Ligne bleue invisible |
R2_NOT | Ligne rouge/verte visible |
R2_NOTCOPYPEN | Ligne noire visible |
R2_NOTMASKPEN | Ligne rouge/verte visible |
R2_NOTMERGEPEN | Ligne noire visible |
R2_NOTXORPEN | Ligne bleue invisible |
R2_WHITE | Ligne blanche visible |
R2_XORPEN | Ligne rouge/verte visible |