4 * Copyright 1998 Patrik Stridvall
13 static const DC_FUNCTIONS TTYDRV_GDI_Driver =
17 NULL, /* pBitmapBits */
19 NULL, /* pCreateBitmap */
20 TTYDRV_GDI_CreateDC, /* pCreateDC */
21 TTYDRV_GDI_DeleteDC, /* pDeleteDC */
22 NULL, /* pDeleteObject */
24 NULL, /* pEnumDeviceFonts */
25 TTYDRV_GDI_Escape, /* pEscape */
26 NULL, /* pExcludeClipRect */
27 NULL, /* pExcludeVisRect */
28 NULL, /* pExtFloodFill */
29 NULL, /* pExtTextOut */
30 NULL, /* pGetCharWidth */
32 NULL, /* pGetTextExtentPoint */
33 NULL, /* pGetTextMetrics */
34 NULL, /* pIntersectClipRect */
35 NULL, /* pIntersectVisRect */
37 NULL, /* pLoadOEMResource */
39 NULL, /* pOffsetClipRgn */
40 NULL, /* pOffsetViewportOrg (optional) */
41 NULL, /* pOffsetWindowOrg (optional) */
45 NULL, /* pPolyPolygon */
46 NULL, /* pPolyPolyline */
49 NULL, /* pPolyBezier */
50 NULL, /* pRealizePalette */
51 NULL, /* pRectangle */
52 NULL, /* pRestoreDC */
53 NULL, /* pRoundRect */
55 NULL, /* pScaleViewportExt (optional) */
56 NULL, /* pScaleWindowExt (optional) */
57 NULL, /* pSelectClipRgn */
58 NULL, /* pSelectObject */
59 NULL, /* pSelectPalette */
60 NULL, /* pSetBkColor */
61 NULL, /* pSetBkMode */
62 NULL, /* pSetDeviceClipping */
63 NULL, /* pSetDIBitsToDevice */
64 NULL, /* pSetMapMode (optional) */
65 NULL, /* pSetMapperFlags */
67 NULL, /* pSetPolyFillMode */
69 NULL, /* pSetRelAbs */
70 NULL, /* pSetStretchBltMode */
71 NULL, /* pSetTextAlign */
72 NULL, /* pSetTextCharacterExtra */
73 NULL, /* pSetTextColor */
74 NULL, /* pSetTextJustification */
75 NULL, /* pSetViewportExt (optional) */
76 NULL, /* pSetViewportOrg (optional) */
77 NULL, /* pSetWindowExt (optional) */
78 NULL, /* pSetWindowOrg (optional) */
79 NULL, /* pStretchBlt */
80 NULL /* pStretchDIBits */
83 /* FIXME: Adapt to the TTY driver. Copied from the X11 driver */
85 static DeviceCaps TTYDRV_GDI_DevCaps = {
87 /* technology */ DT_RASDISPLAY,
88 /* size, resolution */ 0, 0, 0, 0, 0,
89 /* device objects */ 1, 16 + 6, 16, 0, 0, 100, 0,
90 /* curve caps */ CC_CIRCLES | CC_PIE | CC_CHORD | CC_ELLIPSES |
91 CC_WIDE | CC_STYLED | CC_WIDESTYLED | CC_INTERIORS | CC_ROUNDRECT,
92 /* line caps */ LC_POLYLINE | LC_MARKER | LC_POLYMARKER | LC_WIDE |
93 LC_STYLED | LC_WIDESTYLED | LC_INTERIORS,
94 /* polygon caps */ PC_POLYGON | PC_RECTANGLE | PC_WINDPOLYGON |
95 PC_SCANLINE | PC_WIDE | PC_STYLED | PC_WIDESTYLED | PC_INTERIORS,
97 /* regions */ CP_REGION,
98 /* raster caps */ RC_BITBLT | RC_BANDING | RC_SCALING | RC_BITMAP64 |
99 RC_DI_BITMAP | RC_DIBTODEV | RC_BIGFONT | RC_STRETCHBLT | RC_STRETCHDIB | RC_DEVBITS,
100 /* aspects */ 36, 36, 51,
102 /* log pixels */ 0, 0,
104 /* palette size */ 0,
108 /**********************************************************************
109 * TTYDRV_GDI_Initialize
111 BOOL32 TTYDRV_GDI_Initialize(void)
114 TTYDRV_GDI_DevCaps.version = 0x300;
115 TTYDRV_GDI_DevCaps.horzSize = 0; /* FIXME: Screen width in mm */
116 TTYDRV_GDI_DevCaps.vertSize = 0; /* FIXME: Screen height in mm */
117 TTYDRV_GDI_DevCaps.horzRes = 640; /* FIXME: Screen width in pixel */
118 TTYDRV_GDI_DevCaps.vertRes = 480; /* FIXME: Screen height in pixel */
119 TTYDRV_GDI_DevCaps.bitsPixel = 1; /* FIXME: Bits per pixel */
120 TTYDRV_GDI_DevCaps.sizePalette = 0; /* FIXME: ??? */
122 /* Resolution will be adjusted during the font init */
124 TTYDRV_GDI_DevCaps.logPixelsX = (int) (TTYDRV_GDI_DevCaps.horzRes * 25.4 / TTYDRV_GDI_DevCaps.horzSize);
125 TTYDRV_GDI_DevCaps.logPixelsY = (int) (TTYDRV_GDI_DevCaps.vertRes * 25.4 / TTYDRV_GDI_DevCaps.vertSize);
127 if( !COLOR_Init() ) return FALSE;
129 return DRIVER_RegisterDriver( "DISPLAY", &TTYDRV_GDI_Driver );
132 /**********************************************************************
133 * TTYDRV_GDI_Finalize
135 void TTDRV_GDI_Finalize()
139 /**********************************************************************
140 * TTYDRV_GDI_CreateDC
142 BOOL32 TTYDRV_GDI_CreateDC(DC *dc, LPCSTR driver, LPCSTR device,
143 LPCSTR output, const DEVMODE16 *initData)
145 FIXME(ttydrv, "(%p, %s, %s, %s, %p): semistub\n",
146 dc, debugstr_a(driver), debugstr_a(device),
147 debugstr_a(output), initData
150 dc->physDev = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY,
151 sizeof(TTYDRV_PDEVICE) );
154 ERR(ttydrv, "Can't allocate physDev\n");
158 dc->w.devCaps = &TTYDRV_GDI_DevCaps;
164 /**********************************************************************
165 * TTYDRV_GDI_DeleteDC
167 BOOL32 TTYDRV_GDI_DeleteDC(DC *dc)
169 FIXME(ttydrv, "(%p): semistub\n", dc);
171 HeapFree( GetProcessHeap(), 0, dc->physDev );
177 /**********************************************************************
180 INT32 TTYDRV_GDI_Escape(DC *dc, INT32 nEscape, INT32 cbInput,
181 SEGPTR lpInData, SEGPTR lpOutData)