Funzione DrvStretchBltROP (winddi.h)
La funzione DrvStretchBltROP esegue un trasferimento a blocchi bit esteso usando un ROP.
Sintassi
BOOL DrvStretchBltROP(
[in, out] SURFOBJ *psoDest,
[in, out] SURFOBJ *psoSrc,
[in, optional] SURFOBJ *psoMask,
[in] CLIPOBJ *pco,
[in, optional] XLATEOBJ *pxlo,
[in, optional] COLORADJUSTMENT *pca,
[in] POINTL *pptlHTOrg,
[in] RECTL *prclDest,
[in] RECTL *prclSrc,
[in, optional] POINTL *pptlMask,
[in] ULONG iMode,
[in] BRUSHOBJ *pbo,
[in] DWORD rop4
);
Parametri
[in, out] psoDest
Puntatore a una struttura SURFOBJ che descrive la superficie su cui disegnare.
[in, out] psoSrc
Puntatore a una struttura SURFOBJ che descrive la superficie di origine per il trasferimento a blocchi di bit.
[in, optional] psoMask
Puntatore a una struttura SURFOBJ che definisce una maschera per l'origine. La maschera è definita da una mappa per la logica, ovvero una bitmap con un bit per pixel. In genere, una maschera limita l'area da modificare nell'area di destinazione. Questa maschera è sempre la stessa dimensione della superficie di origine.
[in] pco
Puntatore a una struttura CLIPOBJ che limita l'area da modificare nella destinazione. Le routine di servizio CLIPOBJ_Xxx vengono fornite per enumerare l'area clip come set di rettangoli.
Se possibile, GDI semplifica il ritaglio coinvolto. Tuttavia, a differenza di DrvBitBlt, DrvStretchBltROP può essere chiamato con un singolo rettangolo di ritaglio. Ciò impedisce l'arrotondamento degli errori nel ritaglio dell'output.
[in, optional] pxlo
Puntatore a una struttura XLATEOBJ che specifica il modo in cui gli indici di colore devono essere convertiti tra le superfici di origine e di destinazione. Se pxlo è NULL, non è necessaria alcuna traduzione.
Questa struttura XLATEOBJ può anche essere eseguita una query per trovare il colore RGB per qualsiasi indice di origine. Un trasferimento a blocchi bit di alta qualità dovrà interpolare i colori in alcuni casi.
[in, optional] pca
Puntatore a una struttura COLORADJUSTMENT che definisce i valori di regolazione dei colori da applicare alla bitmap di origine prima di estendere i bit. Per altre informazioni, vedere la documentazione di Microsoft Windows SDK.
[in] pptlHTOrg
Puntatore a una struttura POINTL che definisce l'origine del pennello halftone sulla superficie di destinazione. Quando si usano pennelli halftone, il driver deve allineare il pixel superiore sinistro del pennello con questo punto e ripetere il pennello in base alle relative dimensioni. Il driver deve ignorare questo parametro se il parametro rop4 non richiede un modello.
[in] prclDest
Puntatore a una struttura RECTL che definisce l'area rettangolare da modificare. Questo rettangolo viene specificato nel sistema di coordinate della superficie di destinazione e viene definito da due punti: in alto a sinistra e in basso a destra. I due punti che definiscono il rettangolo non sono sempre ben ordinati, ovvero le coordinate del secondo punto non sono necessariamente maggiori di quelle del primo punto. Il driver deve interscambiare i due valori x e/o i due valori y se il rettangolo di destinazione non è ben ordinato.
Il rettangolo è esclusivo in basso a destra; ovvero, i bordi inferiori e destro non fanno parte della copia.
DrvStretchBltROP non viene mai chiamato con un rettangolo di destinazione vuoto.
[in] prclSrc
Puntatore a una struttura RECTL che definisce l'area da copiare. Questo rettangolo viene specificato nel sistema di coordinate della superficie di origine e viene definito da due punti: in alto a sinistra e in basso a destra. I due punti che definiscono il rettangolo sono sempre ordinati.
Il rettangolo è esclusivo in basso a destra; ovvero, i bordi inferiori e destro non fanno parte della copia.
Il driver deve eseguire il mapping di questo rettangolo al rettangolo definito da prclDest.
[in, optional] pptlMask
Puntatore a una struttura POINTL che definisce un pixel nella maschera a cui punta prclMask . Questo pixel corrisponde al pixel in alto a sinistra nel rettangolo di origine a cui punta prclSrc . Il driver deve ignorare questo parametro se non viene specificata alcuna maschera.
[in] iMode
Specifica il modo in cui i pixel di origine vengono combinati per ottenere pixel di output. La modalità HALFTONE è più lenta rispetto alle altre modalità, ma produce immagini di qualità superiore. Questo parametro può essere uno dei valori seguenti:
Valore | Significato |
---|---|
BLACKONWHITE | In un trasferimento a blocchi bit compattati, i pixel devono essere combinati con un'operazione AND booleana. In un trasferimento a blocchi bit di estensione, i pixel devono essere replicati. |
COLORONCOLOR | In un trasferimento a blocchi bit compattati, è necessario ignorare sufficienti pixel in modo che i pixel non siano combinati. In un trasferimento a blocchi bit di estensione, i pixel devono essere replicati. |
SEMITONO | Il driver può usare gruppi di pixel nell'area di output per approssimare al meglio il colore o il livello grigio dell'input. |
WHITEONBLACK | In un trasferimento a blocchi bit compattati, i pixel devono essere combinati con un'operazione OR booleana. In un trasferimento a blocchi bit di estensione, i pixel devono essere replicati. |
[in] pbo
Puntatore alla struttura BRUSHOBJ da usare per definire il modello per il trasferimento a blocchi bit. La routine di BRUSHOBJ_pvGetRbrush servizio di GDI recupera la realizzazione del pennello del dispositivo. Il driver può ignorare questo parametro se il parametro rop4 non richiede un modello.
[in] rop4
Rappresenta un'operazione raster che definisce il modo in cui i pixel di maschera, modello, origine e destinazione vengono combinati per scrivere un pixel di output nell'area di destinazione.
Si tratta di un'operazione raster quaternary, che è un'estensione naturale dell'operazione Rop3 ternaria consueta. Un Rop4 ha 16 bit rilevanti, che sono simili ai 8 bit di una Rop3. Gli altri bit ridondanti del Rop3 vengono ignorati. Il modo più semplice per implementare un Rop4 consiste nel considerare separatamente i suoi 2 byte. Il byte inferiore specifica un valore Rop3 che deve essere calcolato ovunque la maschera a cui punti psoMask sia 1. Il byte elevato specifica un valore Rop3 che può essere calcolato e applicato ovunque la maschera sia zero.
Valore restituito
DrvStretchBltROP deve restituire TRUE al successo. In caso contrario, deve segnalare un codice di errore e restituire FALSE.
Commenti
Il mapping è definito da prclSrc e prclDest. I punti specificati in prclDest e prclSrc si trovano su coordinate integer, che corrispondono ai centri pixel. Un rettangolo definito da due punti di questo tipo è considerato un rettangolo geometrico con due vertici le cui coordinate sono i punti specificati, ma con 0,5 sottratte da ogni coordinata. Le strutture POINTL sono notazione shorthand per specificare questi vertici delle coordinate frazionarie.
Il driver può implementare facoltativamente DrvStretchBltROP. Se il driver esegue l'hook di questa chiamata, può chiamare EngStretchBltROP per eseguire queste operazioni di estensione blit che non supporta.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Desktop |
Intestazione | winddi.h (include Winddi.h) |