Operazioni raster binarie
Questa sezione elenca i codici di operazione raster binaria usati dalle funzioni diGetROP2e setROP2setROP2. I codici di operazione raster definiscono il modo in cui GDI combina i bit dalla penna selezionata con i bit nella bitmap di destinazione.
Ogni codice dell'operazione raster rappresenta un'operazione booleana in cui vengono combinati i valori dei pixel nella penna selezionata e la bitmap di destinazione. Di seguito sono riportati i due operandi usati in queste operazioni.
Operando | Significato |
---|---|
P | Penna selezionata |
D | Bitmap di destinazione |
Gli operatori booleani usati in queste operazioni seguono.
Operatore | Significato |
---|---|
un | AND bit per bit |
n | NOT bit per bit (inverso) |
o | OR bit per bit |
x | OR esclusivo bit per bit (XOR) |
Tutte le operazioni booleane vengono presentate in notazione polacca inversa. Ad esempio, l'operazione seguente sostituisce i valori dei pixel nella bitmap di destinazione con una combinazione dei valori pixel della penna e del pennello selezionato:
DPo
Ogni codice dell'operazione raster è un intero a 32 bit la cui parola di ordine elevato è un indice dell'operazione booleana e la cui parola di ordine basso è il codice dell'operazione. L'indice dell'operazione a 16 bit è un valore a 8 bit esteso zero che rappresenta tutti i possibili risultati risultanti dall'operazione booleana su due parametri (in questo caso, i valori della penna e della destinazione). Ad esempio, gli indici dell'operazione per le operazioni DPo e DPan sono visualizzati nell'elenco seguente.
P | D | DPo | Dpan |
---|---|---|---|
0 | 0 | 0 | 1 |
0 | 1 | 1 | 1 |
1 | 0 | 1 | 1 |
1 | 1 | 1 | 0 |
Nell'elenco seguente vengono illustrate le modalità di disegno e le operazioni booleane rappresentate.
Operazione raster | Operazione booleana |
---|---|
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 |
Per un dispositivo monocromatico, GDI esegue il mapping del valore zero a nero e del valore da 1 a bianco. Se un'applicazione tenta di disegnare con una penna nera in una destinazione bianca utilizzando le operazioni raster binarie disponibili, si verificano i risultati seguenti.
Operazione raster | Risultato |
---|---|
R2_BLACK | Linea nera visibile |
R2_COPYPEN | Linea nera visibile |
R2_MASKNOTPEN | Nessuna linea visibile |
R2_MASKPEN | Linea nera visibile |
R2_MASKPENNOT | Linea nera visibile |
R2_MERGENOTPEN | Nessuna linea visibile |
R2_MERGEPEN | Linea nera visibile |
R2_MERGEPENNOT | Linea nera visibile |
R2_NOP | Nessuna linea visibile |
R2_NOT | Linea nera visibile |
R2_NOTCOPYPEN | Nessuna linea visibile |
R2_NOTMASKPEN | Nessuna linea visibile |
R2_NOTMERGEPEN | Linea nera visibile |
R2_NOTXORPEN | Linea nera visibile |
R2_WHITE | Nessuna linea visibile |
R2_XORPEN | Nessuna linea visibile |
Per un dispositivo a colori, GDI usa valori RGB per rappresentare i colori della penna e della destinazione. Un valore di colore RGB è un numero intero lungo che contiene un rosso, un verde e un campo di colore blu, ognuno dei quali specifica l'intensità del colore specificato. Le intensità sono compresi tra 0 e 255. I valori vengono compressi nei tre byte di ordine basso dell'intero lungo. Il colore di una penna è sempre un colore a tinta unita, ma il colore della destinazione può essere una combinazione di due o tre colori. Se un'applicazione tenta di disegnare con una penna bianca su una destinazione blu usando le operazioni raster binarie disponibili, si verificano i risultati seguenti.
Operazione raster | Risultato |
---|---|
R2_BLACK | Linea nera visibile |
R2_COPYPEN | Linea bianca visibile |
R2_MASKNOTPEN | Linea nera visibile |
R2_MASKPEN | Linea blu invisibile |
R2_MASKPENNOT | Linea rossa/verde visibile |
R2_MERGENOTPEN | Linea blu invisibile |
R2_MERGEPEN | Linea bianca visibile |
R2_MERGEPENNOT | Linea bianca visibile |
R2_NOP | Linea blu invisibile |
R2_NOT | Linea rossa/verde visibile |
R2_NOTCOPYPEN | Linea nera visibile |
R2_NOTMASKPEN | Linea rossa/verde visibile |
R2_NOTMERGEPEN | Linea nera visibile |
R2_NOTXORPEN | Linea blu invisibile |
R2_WHITE | Linea bianca visibile |
R2_XORPEN | Linea rossa/verde visibile |