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.

Figura che mostra il membro ulVersion che specifica il numero di versione del driver

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.
HT_FLAG_HIGH_INK_ABSORPTION
HT_FLAG_HIGHER_INK_ABSORPTION
HT_FLAG_HIGHEST_INK_ABSORPTION
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.
HT_FLAG_INK_ABSORPTION_IDX0
HT_FLAG_INK_ABSORPTION_IDX1
HT_FLAG_INK_ABSORPTION_IDX2
HT_FLAG_INK_ABSORPTION_IDX3
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à.
HT_FLAG_LOW_INK_ABSORPTION
HT_FLAG_LOWER_INK_ABSORPTION
HT_FLAG_LOWEST_INK_ABSORPTION
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.
  • Il driver ha conoscenza che il monitor non è un dispositivo LCD.
  • Il dispositivo è un dispositivo LCD, ma la risoluzione del buffer frame è diversa dalla risoluzione nativa dello schermo fisico che richiede il ridimensionamento. Vale a dire, la scalabilità è necessaria perché non esiste più una corrispondenza uno-a-uno tra pixel del buffer frame e pixel del dispositivo.

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)

Vedi anche

CIECHROMA

COLORINFO

DrvBitBlt

DrvCopyBits

DrvEnablePDEV

DrvTextOut