Opérations raster binaires
Cette section répertorie les codes d’opération raster binaire utilisés par les fonctions GetROP2 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 du stylet sélectionné et de l’image 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 |
Voici les opérateurs booléens utilisés dans ces opérations.
Opérateur | Signification |
---|---|
a | ET au niveau du bit |
n | Not au niveau du bit (inverse) |
o | Opération de bits OR |
x | OR exclusif au niveau du bit (XOR) |
Toutes les opérations booléennes sont présentées en notation polonaise inversée. Par exemple, l’opération suivante remplace les valeurs des pixels dans l’image 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 d’ordre inférieur est le code d’opération. L’index d’opération 16 bits est une valeur 8 bits sans extension qui représente tous les résultats possibles résultant de l’opération booléenne sur deux paramètres (dans ce cas, les valeurs de stylet et 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 | DPO | 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 | DPO |
R2_MERGEPENNOT | PDno |
R2_NOP | D |
R2_NOT | Nom unique |
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 au blanc. Si une application tente de dessiner avec un stylet noir sur une destination blanche à l’aide des opérations raster binaires disponibles, les résultats suivants se produisent.
Opération raster | Résultats |
---|---|
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 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 d’ordre inférieur 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 raster binaires disponibles, les résultats suivants se produisent.
Opération raster | Résultats |
---|---|
R2_BLACK | Ligne noire visible |
R2_COPYPEN | Ligne blanche visible |
R2_MASKNOTPEN | Ligne noire visible |
R2_MASKPEN | Ligne bleue invisible |
R2_MASKPENNOT | Ligne rouge/vert 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/vert visible |
R2_NOTCOPYPEN | Ligne noire visible |
R2_NOTMASKPEN | Ligne rouge/vert visible |
R2_NOTMERGEPEN | Ligne noire visible |
R2_NOTXORPEN | Ligne bleue invisible |
R2_WHITE | Ligne blanche visible |
R2_XORPEN | Ligne rouge/vert visible |