Struttura GDIINFO (winddi.h)
La struttura GDIINFO descrive le funzionalità grafiche di un determinato dispositivo.
Sintassi
typedef struct _GDIINFO {
ULONG ulVersion;
ULONG ulTechnology;
ULONG ulHorzSize;
ULONG ulVertSize;
ULONG ulHorzRes;
ULONG ulVertRes;
ULONG cBitsPixel;
ULONG cPlanes;
ULONG ulNumColors;
ULONG flRaster;
ULONG ulLogPixelsX;
ULONG ulLogPixelsY;
ULONG flTextCaps;
ULONG ulDACRed;
ULONG ulDACGreen;
ULONG ulDACBlue;
ULONG ulAspectX;
ULONG ulAspectY;
ULONG ulAspectXY;
LONG xStyleStep;
LONG yStyleStep;
LONG denStyleStep;
POINTL ptlPhysOffset;
SIZEL szlPhysSize;
ULONG ulNumPalReg;
COLORINFO ciDevice;
ULONG ulDevicePelsDPI;
ULONG ulPrimaryOrder;
ULONG ulHTPatternSize;
ULONG ulHTOutputFormat;
ULONG flHTFlags;
ULONG ulVRefresh;
ULONG ulBltAlignment;
ULONG ulPanningHorzRes;
ULONG ulPanningVertRes;
ULONG xPanningAlignment;
ULONG yPanningAlignment;
ULONG cxHTPat;
ULONG cyHTPat;
LPBYTE pHTPatA;
LPBYTE pHTPatB;
LPBYTE pHTPatC;
ULONG flShadeBlend;
ULONG ulPhysicalPixelCharacteristics;
ULONG ulPhysicalPixelGamma;
} GDIINFO, *PGDIINFO;
Members
ulVersion
Specifica il numero di versione del driver. L'ordinamento dei byte di ulVersion ha il formato seguente.
I 16 bit di ordine elevato devono essere impostati su zero. I bit da 8 a 15 specificano il numero di versione del sistema operativo Microsoft per cui è progettato il driver. I 4 bit di ordine elevato di questo intervallo specificano il numero principale della versione, i 4 bit di ordine basso contengono il numero secondario della versione. I 8 bit bassi di ulVersion specificano il numero di versione del driver di visualizzazione; questo valore deve essere incrementato per ogni versione del file binario del driver di visualizzazione.
Il programma Display in Pannello di controllo indica il numero di versione contenuto in ulVersion, insieme ad altre informazioni specifiche del driver.
ulTechnology
Specifica la tecnologia del dispositivo. Questo membro può essere uno dei valori elencati nella tabella seguente.
Valore | Significato |
---|---|
DT_CHARSTREAM | Solo tipi di carattere del dispositivo |
DT_PLOTTER | Plotter vettoriale |
DT_RASCAMERA | Fotocamera raster |
DT_RASDISPLAY | Visualizzazione raster |
DT_RASPRINTER | Stampante Raster |
ulHorzSize
Specifica la larghezza della superficie fisica. Un valore positivo indica che la larghezza è in unità di millimetri, mentre un valore negativo indica che la larghezza è in unità di micrometri.
ulVertSize
Specifica l'altezza della superficie fisica. Un valore positivo indica che l'altezza è in unità di millimetri, mentre un valore negativo indica che l'altezza è in unità di micrometri.
ulHorzRes
Specifica la larghezza in pixel della superficie fisica (dispositivi di visualizzazione) o della superficie stampabile (stampanti).
Vedere anche ulDesktopHorzRes.
ulVertRes
Specifica l'altezza in pixel della superficie fisica (dispositivi di visualizzazione) o della superficie stampabile (stampanti).
cBitsPixel
Specifica il numero di bit adiacenti in ogni piano di colore. Il numero totale di bit per pixel è il prodotto di cBitsPixel e cPlanes.
cPlanes
Specifica il numero di piani di colore.
ulNumColors
Per i dispositivi palettizzati , ulNumColors specifica il numero di voci nella tavolozza dei colori predefinita. Per i dispositivi non multilalettizzati (che non includono stampanti), ulNumColors è impostato su -1.
flRaster
È riservato e deve essere impostato su zero.
ulLogPixelsX
Specifica la risoluzione della larghezza del dispositivo in pixel logici per pollice.
Per le stampanti, questo membro deve essere impostato sulla risoluzione della stampante in dpi.
Per le visualizzazioni, questo membro deve essere impostato su 96.
ulLogPixelsY
Specifica la risoluzione dell'altezza del dispositivo in pixel logici per pollice.
Per le stampanti, questo membro deve essere impostato sulla risoluzione della stampante in dpi.
Per le visualizzazioni, questo membro deve essere impostato su 96.
flTextCaps
Specifica un flag che descrive le funzionalità di testo di Windows 3.1. Se il driver TC_SCROLLBLT flag si trova in questo membro, indica che la console deve eseguire lo scorrimento del testo ridisegnando l'intera schermata, usando la funzione DrvTextOut fornita dal driver anziché le funzioni DrvBitBlt o DrvCopyBits . Il driver deve impostare questo flag se i trasferimenti da schermo a bit a schermo sono lenti. Se questo flag non è impostato, il driver richiede implicitamente che la console esegua lo scorrimento del testo attraverso DrvBitBlt/DrvCopyBits.
ulDACRed
ulDACGreen
ulDACBlue
Specifica il numero di bit di applicazione livello dati per il colore specificato.
ulAspectX
Specifica la larghezza relativa di un pixel del dispositivo, compreso nell'intervallo da uno a 1000.
ulAspectY
Specifica l'altezza relativa di un pixel del dispositivo, nell'intervallo da uno a 1000.
ulAspectXY
Specifica la radice quadrata della somma dei quadrati di ulAspectX e ulAspectY.
xStyleStep
Specifica il numeratore di avanzamento dello stile per le linee x-major, dx. Per ulteriori informazioni, vedere la sezione Osservazioni seguenti e Linee cosmetiche con stile.
yStyleStep
Specifica il numeratore di avanzamento dello stile per linee y-major, dy. Per ulteriori informazioni, vedere la sezione Osservazioni seguenti e Linee cosmetiche con stile.
denStyleStep
Specifica il denominatore di avanzamento dello stile D. Per ulteriori informazioni, vedere la sezione Osservazioni seguenti e Linee cosmetiche con stile.
ptlPhysOffset
Specifica una struttura POINTL che contiene le dimensioni, in pixel, del margine non scrivibile di una superficie.
szlPhysSize
Specifica una struttura SIZEL che contiene le dimensioni, in pixel, dell'intera superficie, inclusi i margini non scrivibili. Una struttura SIZEL è identica a una struttura SIZE .
ulNumPalReg
Specifica il numero di registri della tavolozza per un dispositivo indicizzato.
ciDevice
Struttura COLORINFO che definisce i colori del dispositivo nello spazio delle coordinate CIE.
ulDevicePelsDPI
Per le stampanti, specifica il numero di pixel (o punti o ugelli) per pollice se i pixel sono disposti affiancati senza sovrapposizione o spazio tra. Ad esempio, se la dimensione di un pixel è 0,001 pollici, questo valore è uguale a 0,001 diviso per 0,001. Se il membro è zero, il halftoning GDI calcola questo numero in base al presupposto che tutti i pixel siano connessi senza sovrapposizione.
Poiché la dimensione fisica del punto per la maggior parte delle stampanti è maggiore della dimensione del punto misurata, GDI usa questo valore per approssimare il numero di punti fisici che è possibile posizionare, in base alle dimensioni della cella (dimensioni del modello). Viene quindi eseguita una regressione del log per determinare qual è la più lineare; ovvero, dove devono essere posizionati i punti per la migliore copertura per ottimizzare la copertura dei pixel del dispositivo sovrapposti (guadagno punto).
Per le visualizzazioni, questo membro deve essere impostato su zero.
ulPrimaryOrder
Specifica l'ordine di bit dei colori primari o dei numeri del piano del dispositivo per l'output della mezzatona. Questo membro può essere uno dei valori elencati nella tabella seguente.
Contrassegno | Significato |
---|---|
PRIMARY_ORDER_ABC | L'ordine di output del dispositivo è RGB o CMY. Il rosso o il ciano è nei bit meno significativi; blu o giallo è nei bit più significativi. |
PRIMARY_ORDER_ACB | L'ordine di output del dispositivo è RBG o CYM. Il rosso o il ciano è nei bit meno significativi; verde o magenta è nei bit più significativi. |
PRIMARY_ORDER_BAC | L'ordine di output del dispositivo è GRB o MCY. Il verde o magenta è nei bit meno significativi; blu o giallo è nei bit più significativi. |
PRIMARY_ORDER_BCA | L'ordine di output del dispositivo è GBR o MYC. Il verde o magenta è nei bit meno significativi; rosso o ciano è nei bit più significativi. |
PRIMARY_ORDER_CBA | L'ordine di output del dispositivo è BGR o YMC. Il blu o il giallo è nei bit meno significativi; rosso o ciano è nei bit più significativi. |
PRIMARY_ORDER_CAB | L'ordine di output del dispositivo è BRG o YCM. Il blu o il giallo è nei bit meno significativi; verde o magenta è nei bit più significativi. |
ulHTPatternSize
Specifica le dimensioni del pattern halftone. I valori che terminano con AxBM sono varianti dei modelli AxB . In altre parole, SIZEAxB e SIZE_AxB_M differiscono per i pixel illuminati in un motivo A x B. Questo membro può essere uno dei valori seguenti:
- HT_PATSIZE_2x2
- HT_PATSIZE_2x2_M
- HT_PATSIZE_4x4
- HT_PATSIZE_4x4_M
- HT_PATSIZE_6x6
- HT_PATSIZE_6x6_M
- HT_PATSIZE_8x8
- HT_PATSIZE_8x8_M
- HT_PATSIZE_10x10
- HT_PATSIZE_10x10_M
- HT_PATSIZE_12x12
- HT_PATSIZE_12x12_M
- HT_PATSIZE_14x14
- HT_PATSIZE_14x14_M
- HT_PATSIZE_16x16
- HT_PATSIZE_16x16_M
- HT_PATSIZE_SUPERCELL
- HT_PATSIZE_SUPERCELL_M
- HT_PATSIZE_USER
- HT_PATSIZE_MAX_INDEX
- HT_PATSIZE_DEFAULT
ulHTOutputFormat
Specifica il formato di output preferito per halftone. HT_FORMAT_4BPP usa solo 8 colori di intensità completa mentre HT_FORMATP_IRGB usa tutti i 16 colori, inclusi i colori di mezza intensità. Si presuppone che venga usato un formato da 5 x 5 x 5 (5 bit per colore) per HT_FORMAT_16BPP. Questo membro può essere uno dei valori seguenti:
- HT_FORMAT_1BPP
- HT_FORMAT_4BPP
- HT_FORMAT_4BPP_IRGB
- HT_FORMAT_8BPP
- HT_FORMAT_16BPP
- HT_FORMAT_24BPP
- HT_FORMAT_32BPP
flHTFlags
Specifica una combinazione di flag che descrivono il dispositivo. Questi flag sono necessari per il halftoning. Questo membro può essere una combinazione dei valori seguenti:
Contrassegno | Significato |
---|---|
HT_FLAG_8BPP_CMY332_MASK | Flag usato per cancellare i otto bit superiori di flHTFlags (bit da 24 a 31). La macro MAKE_CMY332_MASK può quindi essere usata per impostare questi bit con informazioni a livello di input penna a 8 bit per pixel. Per altre informazioni, vedere Uso di modalità maschera CMY a 8 bit per pixel . |
HT_FLAG_ADDITIVE_PRIMS | Le primarie dei dispositivi sono aggiuntive. |
HT_FLAG_DO_DEVCLR_XFORM | Richiede A GDI di eseguire la correzione dei colori generica. |
HT_FLAG_HAS_BLACK_DYE | Il dispositivo ha una colorazione nera separata. |
|
La carta nel dispositivo assorbe più della normale quantità di inchiostro, quindi GDI dovrebbe rendere meno penna a carta. Questi flag indicano la quantità relativa di assorbimento dell'inchiostro, con HT_FLAG_HIGHER_INK_ABSORPTION denotare più assorbimento rispetto a HT_FLAG_HIGH_INK_ABSORPTION, ma meno di HT_FLAG_HIGHEST_INK_ABSORPTION. |
|
Flag usati per definire HT_FLAG_HIGH/HIGHEST_INK_ABSORPTION/HIGHEST_INK_ABSORPTION e HT_FLAG_LOW/LOWER/LOWEST_INK_ABSORPTION. |
HT_FLAG_INK_HIGH_ABSORPTION | Flag usato per definire HT_FLAG_HIGH/HIGHEST_INK_ABSORPTION. |
HT_FLAG_INVERT_8BPP_BITMASK_IDX | GDI halftone deve eseguire il rendering della bitmap della superficie della modalità richiesta a 8 bit a 8 bit usando una tavolozza in modalità CMY_INVERTED. Vedere Uso delle modalità maschera CMY a 8 bit per pixel per gDI per CMY_INVERTED descrizione e requisiti della tavolozza della modalità. |
|
La carta nel dispositivo assorbe meno della normale quantità di inchiostro, quindi GDI dovrebbe rendere più penna a carta. Questi flag indicano la quantità relativa di assorbimento dell'inchiostro, con HT_FLAG_LOWER_INK_ABSORPTION denotando meno assorbimento rispetto a HT_FLAG_LOW_INK_ABSORPTION, ma più di HT_FLAG_LOWEST_INK_ABSORPTION. |
HT_FLAG_NORMAL_INK_ABSORPTION | La carta nel dispositivo assorbe la normale quantità di inchiostro. |
HT_FLAG_OUTPUT_CMY | Il dispositivo usa le primarie CMY anziché le primarie RGB. Questo valore di flag si applica solo a 1 bpp e a 4 superfici di destinazione bpp. |
HT_FLAG_PRINT_DRAFT_MODE | Disabilita il codice antialiasing di GDI. |
HT_FLAG_SQUARE_DEVICE_PEL | Il pixel del dispositivo è quadrato anziché arrotondato (visualizza solo le stampanti che richiedono pixel arrotondati). |
HT_FLAG_USE_8BPP_BITMASK | Il dispositivo usa la stampa monocromatica. |
ulVRefresh
Frequenza di aggiornamento video per la modalità di visualizzazione corrente. Questo è il valore restituito dal driver miniport per la frequenza di aggiornamento per la modalità corrente.
Il programma Display in Pannello di controllo visualizza la frequenza di aggiornamento contenuta nel membro ulVRefresh.
ulBltAlignment
Questo membro indica l'allineamento x preferito per i trasferimenti di blocchi di bit nel dispositivo. Un valore pari a zero indica che i trasferimenti a blocchi di bit sono accelerati; qualsiasi altro numero nonnegative indica che i trasferimenti di blocchi di bit non sono accelerati e offrono l'allineamento orizzontale preferito come pixel multiplo.
Questo valore viene usato dal sistema per determinare l'allineamento predefinito per le posizioni delle finestre e viene usato anche per impostare il valore predefinito di trascinamento completo iniziale durante l'installazione. Un valore pari a zero indica che il trascinamento completo deve essere attivo per impostazione predefinita; qualsiasi valore diverso da zero indica che il trascinamento completo deve essere disattivato per impostazione predefinita.
ulPanningHorzRes
ulPanningVertRes
Deve essere ignorato dal driver e rimanere zero inizializzato.
xPanningAlignment
yPanningAlignment
Deve essere ignorato dal driver e rimanere zero inizializzato.
cxHTPat
cyHTPat
Specificare rispettivamente la larghezza e l'altezza, in pixel, del modello halftone fornito dall'utente. Il valore di cxHTPat deve trovarsi nell'intervallo HT_USERPAT_CX_MIN per HT_USERPAT_CX_MAX, inclusivo. Il valore di cyHTPat deve trovarsi nell'intervallo HT_USERPAT_CY_MIN da HT_USERPAT_CY_MAX, inclusivo. Queste costanti sono definite in winddi.h. Per altre informazioni, vedere la sezione Osservazioni seguenti.
pHTPatA
pHTPatB
pHTPatC
Puntare rispettivamente ai modelli di halftone definiti dall'utente per i colori primari A, B e C, come definito dal valore PRIMARY_ORDER_XXX nel membro ulPrimaryOrder . Ogni modello dither deve essere una matrice di byte bidimensionale valida di dimensioni cxHTPat by cyHTPat. Per altre informazioni, vedere la sezione Osservazioni seguenti.
flShadeBlend
Specifica un set di flag che indicano le funzionalità di ombreggiatura e fusione del dispositivo. I driver di visualizzazione devono ignorare questo membro e devono lasciarli impostati su zero. Per i driver della stampante, il valore che il driver inserisce in questo membro è il valore che GDI segnala quando un'applicazione chiama GetDeviceCaps(hdc, SHADEBLENDCAPS). La funzione GetDeviceCaps è descritta nella documentazione di Microsoft Window SDK.
ulPhysicalPixelCharacteristics
Specifica il modo in cui i frammenti di colore sono configurati per formare pixel nel dispositivo di visualizzazione. I frammenti di colore nel dispositivo di visualizzazione possono essere disposti in ordine RGB o in ordine BGR, completamente indipendente dall'ordinamento RGB nel buffer del frame. I frammenti di colore possono essere configurati in strisce orizzontali in cui tutti i frammenti in una riga sono lo stesso colore. In alternativa, i frammenti di colore possono essere configurati in strisce verticali, in cui tutti i frammenti in una colonna sono lo stesso colore. Lo striping verticale è preferito, poiché fornisce in modo efficace tre frammenti separati in una riga per ogni pixel, dando così una maggiore risoluzione orizzontale dei subpixel.
Il membro ulPhysicalPixelCharacteristics deve essere impostato su uno dei valori visualizzati nella tabella seguente:
Valore | Significato |
---|---|
PPC_DEFAULT | Visualizzare le informazioni sul pixel fisico del dispositivo è sconosciuto. |
PPC_BGR_ORDER_HORIZONTAL_STRIPES | I frammenti di colore fisico nel dispositivo di visualizzazione sono disposti, dall'alto verso il basso, in righe di frammenti di colore blu, verde e rosso. |
PPC_BGR_ORDER_VERTICAL_STRIPES | I frammenti di colore fisico sul dispositivo di visualizzazione sono disposti, da sinistra a destra, in colonne di frammenti di colore blu, verde e rosso. |
PPC_RGB_ORDER_HORIZONTAL_STRIPES | I frammenti di colore fisico nel dispositivo di visualizzazione sono disposti, dall'alto verso il basso, in righe di frammenti di colore rosso, verde e blu. |
PPC_RGB_ORDER_VERTICAL_STRIPES | I frammenti di colore fisico sul dispositivo di visualizzazione sono disposti, da sinistra a destra, in colonne di frammenti di colore rosso, verde e blu. |
PPC_UNDEFINED |
Visualizzare le informazioni sul pixel fisico del dispositivo è noto, ma non può essere espresso come una delle enumerazioni specificate. Le enumerazioni sono attualmente applicabili a un monitor basato su LCD. Il driver deve impostare ulPhysicalPixelCharacteristics su PPC_UNDEFINED quando viene soddisfatta una delle condizioni seguenti. Questo elenco non è completo, ma illustra le condizioni più comuni.
|
ulPhysicalPixelGamma
Specifica la gamma del dispositivo visualizzato. Questo membro deve essere impostato sulla gamma del pixel fisico, ridimensionato da un fattore pari a 1000 o su uno dei valori seguenti. Ad esempio, un valore gamma pari a 2,2 sarebbe rappresentato come 2200.
Valore | Significato |
---|---|
PPG_DEFAULT | Il driver non ha conoscenza della gamma per il dispositivo. |
PPG_SRGB | Il dispositivo usa una gamma sRGB. |
Commenti
GDI zero inizializza questa struttura prima di chiamare la funzione DrvEnablePDEV fornita dal driver.
I membri xStyleStep, yStyleStep e denStyleStep definiscono il modo in cui uno stile di linea cosmetica deve avanzare mentre disegna ogni pixel di una linea cosmetica. La quantità avanzata lungo lo stile per ogni pixel viene definita come frazione che dipende dal fatto che la linea sia in stile x o y. Se la linea è in stile x, lo stile avanza in base alla quantità frazionaria dx/D per ogni pixel spostato nella direzione x. In caso contrario, lo stile avanza da dy/D per ogni pixel spostato nella direzione y.
I punti nello stile linea predefinito PS_DOT sono ogni unità lunga. Se il driver definisce xStyleStep come uno e denStyleStep come 5, una linea orizzontale punteggiata è costituita da 5 pixel seguiti da 5 pixel-off, ripetuti.
Ognuno di questi tre numeri deve essere minore di 65536, anche se i membri dei limiti sono valori LONG. Questi passaggi di stile sono definiti dal driver per garantire che i punti e i trattini in una linea siano una dimensione piacevole sul dispositivo di output. I passaggi orizzontali e verticali possono essere diversi da corretti per le proporzioni nontriviali. Ad esempio, in un display EGA, i cui pixel sono superiori al 33% rispetto a quelli che sono wide, è possibile impostare:
pdevcaps->xStyleStep = 3; // For an EGA
pdevcaps->yStyleStep = 4;
pdevcaps->denStyleStep = 12;
In questo caso, le linee tratteggiate orizzontalmente sono 4 pixel su 4 pixel, perché lo stile avanza da 3/12 o 1/4 per ogni pixel. Le linee tratteggiate verticali sono 3 pixel-on/3-pixel-off.
Le linee in stile sembrano migliori se i passaggi di stile x e y si dividono uniformemente nel denominatore di stile, come fanno nell'esempio precedente. Questo dà trattini e punti che sono sempre la stessa lunghezza.
GDI richiede queste informazioni in modo che le funzioni bitmap possano emulare esattamente ciò che il dispositivo esegue sulla propria superficie. Le applicazioni possono accedere a queste informazioni per determinare esattamente quali pixel verranno attivati per le linee in stile. Fare riferimento anche a Linee cosmetiche in stile.
I membri correlati a halftone, cxHTPat, cyHTPat, pHTPatA, pHTPatB e pHTPatC, possono essere usati in un plug-in di rendering OEM Unidrv per definire un modello di metàtone personalizzato costituito da uno o tre colori. Questi membri vengono controllati solo se il membro ulHTPatternSize è impostato su HT_PATSIZE_USER. In questo caso un OEM può usare questi membri per definire un modello di mezzatona personalizzato, in base ai dati archiviati in un file di risorse o generati da un modulo di personalizzazione OEM. I membri cxHTPat e cyHTPat definiscono le dimensioni di ognuna delle matrici di modelli a mezzatone bidimensionali. I membri pHTPatA, pHTPatB e pHTPatC puntano alle rispettive matrici di pattern per ogni colore. Se viene usata una sola matrice di pattern, pHTPatA, pHTPatB e pHTPatC punta a essa.
Ogni soglia di byte in una determinata posizione in un modello dither a metàtone determina se il pixel nella posizione del piano di output corrispondente sarà attivo o disattivato. Un valore di soglia zero in una posizione specifica nella matrice modello indica che la posizione del pixel corrispondente viene ignorata (è nera). I valori di soglia da 1 a 255 forniscono il modello dither con 255 livelli di grigio; se il valore pixel nel piano di output è maggiore o uguale al valore soglia per tale posizione, il pixel viene attivato. Un valore pixel minore del valore soglia corrispondente causa la disattivazione del pixel nel piano di output. Per altre informazioni, vedere Customd Halftoning in Personalizzazione dei driver di stampante Microsoft .
Requisiti
Requisito | Valore |
---|---|
Intestazione | winddi.h (include Winddi.h) |