Opérations raster binaires

Cette section répertorie les codes d’opération Raster binaires 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 dans le 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 le bitmap de destination sont combinées. Voici les deux opérandes utilisés dans ces opérations.

Opérande Signification
P Stylo sélectionné
D Bitmap de destination

Les opérateurs booléens utilisés dans ces opérations suivent.

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 polonais inverse. Par exemple, l’opération suivante remplace les valeurs des pixels de l’image bitmap de destination par une combinaison des valeurs de pixel du stylet et du pinceau sélectionné :

DPo 

Chaque code d’opération Raster est un entier 32 bits dont le mot de poids fort est un index d’opération booléen et dont le mot de poids faible est le code d’opération. L’index d’opération 16 bits est une valeur 8 bits étendue de 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, 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 _ noir 0
_COPYPEN R2 P
_MASKNOTPEN R2 DPna
_MASKPEN R2 DPa
_MASKPENNOT R2 PDna
_MERGENOTPEN R2 DPno
_MERGEPEN R2 DPo
_MERGEPENNOT R2 PDno
R2 _ NOP D
R2 _ non Nom unique
_NOTCOPYPEN R2 PN
_NOTMASKPEN R2 DPan
_NOTMERGEPEN R2 DPon
_NOTXORPEN R2 DPxn
_Blanc R2 1
_XORPEN R2 DPx

Pour un appareil monochrome, GDI mappe la valeur de 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 raster binaires disponibles, les résultats suivants se produisent.

Opération Raster Résultats
R2 _ noir Ligne noire visible
_COPYPEN R2 Ligne noire visible
_MASKNOTPEN R2 Aucune ligne visible
_MASKPEN R2 Ligne noire visible
_MASKPENNOT R2 Ligne noire visible
_MERGENOTPEN R2 Aucune ligne visible
_MERGEPEN R2 Ligne noire visible
_MERGEPENNOT R2 Ligne noire visible
R2 _ NOP Aucune ligne visible
R2 _ non Ligne noire visible
_NOTCOPYPEN R2 Aucune ligne visible
_NOTMASKPEN R2 Aucune ligne visible
_NOTMERGEPEN R2 Ligne noire visible
_NOTXORPEN R2 Ligne noire visible
_Blanc R2 Aucune ligne visible
_XORPEN R2 Aucune ligne visible

Pour un périphérique 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 sont comprises entre 0 et 255. Les valeurs sont compressées dans les trois octets de poids faible 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 _ noir Ligne noire visible
_COPYPEN R2 Ligne blanche visible
_MASKNOTPEN R2 Ligne noire visible
_MASKPEN R2 Ligne bleue invisible
_MASKPENNOT R2 Trait rouge/vert visible
_MERGENOTPEN R2 Ligne bleue invisible
_MERGEPEN R2 Ligne blanche visible
_MERGEPENNOT R2 Ligne blanche visible
R2 _ NOP Ligne bleue invisible
R2 _ non Trait rouge/vert visible
_NOTCOPYPEN R2 Ligne noire visible
_NOTMASKPEN R2 Trait rouge/vert visible
_NOTMERGEPEN R2 Ligne noire visible
_NOTXORPEN R2 Ligne bleue invisible
_Blanc R2 Ligne blanche visible
_XORPEN R2 Trait rouge/vert visible