The DEVINFO structure provides information about the driver and its private PDEV to the graphics engine.
typedef struct tagDEVINFO {
FLONG flGraphicsCaps;
LOGFONTW lfDefaultFont;
LOGFONTW lfAnsiVarFont;
LOGFONTW lfAnsiFixFont;
ULONG cFonts;
ULONG iDitherFormat;
USHORT cxDither;
USHORT cyDither;
HPALETTE hpalDefault;
FLONG flGraphicsCaps2;
} DEVINFO, *PDEVINFO;
| Flag | Definition |
|---|---|
| GCAPS_ALTERNATEFILL | Handles alternating fills. |
| GCAPS_ARBRUSHOPAQUE | Supports an arbitrary brush for text opaque rectangle (background color). |
| GCAPS_ARBRUSHTEXT | Supports an arbitrary brush for the text foreground color. |
| GCAPS_ASYNCCHANGE | This flag is obsolete. In legacy drivers, this flag indicates that the driver can change the pointer shape in hardware while other drawing is occurring on the device. |
| GCAPS_ASYNCMOVE | The driver can move the pointer in hardware while other drawing is occurring on the device. |
| GCAPS_BEZIERS | Handles Bezier curves. |
| GCAPS_CMYKCOLOR | The driver supports the CYMK color space. |
| GCAPS_COLOR_DITHER | Handles color dithering to a PDEV-compatible surface. |
| GCAPS_DIRECTDRAW | This flag is obsolete. |
| GCAPS_DITHERONREALIZE | Specifies that GDI can call DrvRealizeBrush with the RGB to be dithered directly. |
| GCAPS_DONTJOURNAL | Disallows metafile printing to this printer driver. This is valid only for printer DCs and will generally result in slower return-to-application time when printing. |
| GCAPS_FONT_RASTERIZER | Device hardware can rasterize TrueType fonts. |
| GCAPS_FORCEDITHER | Allows dithering on all geometric pens. |
| GCAPS_GEOMETRICWIDE | Handles geometric widening. |
| GCAPS_GRAY16 | Handles antialiased text natively. |
| GCAPS_HALFTONE | Handles halftoning. |
| GCAPS_HIGHRESTEXT | Indicates that the driver is requesting glyph positions as returned by the STROBJ in FIX point coordinates. |
| GCAPS_HORIZSTRIKE | This flag is obsolete. In legacy drivers, this flag indicated that the driver handled horizontal strikeouts in DrvTextOut. |
| GCAPS_ICM | Indicates that color management operations can be performed by the driver or printer hardware. |
| GCAPS_LAYERED | Indicates that this is a layer or mirror driver for remoting. Printer drivers cannot be layer drivers. |
| GCAPS_MONO_DITHER | Handles monochrome dithering. |
| GCAPS_NO64BITMEMACCESS | This flag is obsolete. |
| GCAPS_NUP | Indicates that "N-up" printing is supported. |
| GCAPS_OPAQUERECT | Handles opaque rectangles in DrvTextOut. |
| GCAPS_PALMANAGED | Supports palette management. |
| GCAPS_PANNING | When GDI is simulating the pointer, it should call DrvMovePointer to notify the driver of the current cursor position. This allows the driver to handle panning virtual displays. |
| GCAPS_SCREENPRECISION | The rasterizer (font engine) should choose a screen (soft) font over a device font when choosing a font for which there is no exact match. |
| GCAPS_VECTORFONT | Handles stroking of vector fonts in DrvTextOut. |
| GCAPS_VERTSTRIKE | This flag is obsolete. In legacy drivers, this flag indicated that the driver handled vertical strikeouts in DrvTextOut. |
| GCAPS_WINDINGFILL | Handles winding mode fills. See Path Fill Modes for more information. |
| Value | Meaning |
|---|---|
| BMF_1BPP | Monochrome |
| BMF_4BPP | 4 bits per pixel |
| BMF_8BPP | 8 bits per pixel |
| BMF_16BPP | 16 bits per pixel |
| BMF_24BPP | 24 bits per pixel |
| BMF_32BPP | 32 bits per pixel |
| BMF_4RLE | 4 bits per pixel, run length encoded |
| BMF_8RLE | 8 bits per pixel, run length encoded |
| BMF_JPEG | JPEG compressed image |
| BMF_PNG | PNG compressed image |
| Flag | Definition |
|---|---|
| GCAPS2_ALPHACURSOR | Handles pointers with per-pixel alpha values. |
| GCAPS2_CHANGEGAMMARAMP | The display device has a loadable hardware gamma ramp. |
| GCAPS2_ICD_MULTIMON | Informs GDI that the driver intends to handle DrvSetPixelFormat, DrvDescribePixelFormat, and DrvSwapBuffers calls in a multimon environment, even when the rectangle in the operation also intersects another device. Only one device is ever given the opportunity to handle those calls. If the capability is not specified and the region involved intersects more than one device, no driver is called. |
| GCAPS2_JPEGSRC | Device can accept JPEG compressed images (that is, images for which BMP_JPEG is set in the SURFOBJ structure). |
| GCAPS2_MOUSETRAILS | Indicates that the driver supports mouse trails (a succession of cursor images showing the mouse's location during a short period of time). The driver is capable of handling the values GDI sends in the fl parameter of the DrvSetPointerShape function. The driver should use the SPS_LENGTHMASK and SPS_FREQMASK masks to obtain values for the length and frequency of the mouse trails. See DrvSetPointerShape for more information about these masks. |
| GCAPS2_PNGSRC | Device can accept PNG compressed images (that is, images for which BMP_PNG is set in the SURFOBJ structure). |
| GCAPS2_SYNCFLUSH | The driver supports a programmatic-based flush mechanism for batched graphics DDI calls. DrvSynchronizeSurface will be called whenever GDI must flush any drawing that is being batched by the driver. |
| GCAPS2_SYNCTIMER | The driver supports a timer-based flush mechanism for batched graphics DDI calls. DrvSynchronizeSurface will be called periodically, based on a timer interval determined by GDI. |
Declared in winddi.h. Include winddi.h.
The driver's DrvEnablePDEV function fills in a DEVINFO structure; the driver should set only the members that are relevant to it. This structure is zero-initialized by GDI before DrvEnablePDEV is called. Applications do not have direct access to this structure.
If a driver sets GCAPS2_JPEGSRC or GCAPS2_PNGSRC in flGraphicsCaps2, the following rules apply: