Improved the TTY driver.
[wine.git] / graphics / ttydrv / init.c
blobefb03a37b20c5fb443d6b5731ca5d2bfb647aa5d
1 /*
2 * TTY driver
4 * Copyright 1998-1999 Patrik Stridvall
5 */
7 #include "config.h"
9 #include "gdi.h"
10 #include "bitmap.h"
11 #include "color.h"
12 #include "dc.h"
13 #include "ttydrv.h"
14 #include "debugtools.h"
16 DEFAULT_DEBUG_CHANNEL(ttydrv)
18 static const DC_FUNCTIONS TTYDRV_DC_Driver =
20 NULL, /* pAbortDoc */
21 NULL, /* pAbortPath */
22 NULL, /* pAngleArc */
23 TTYDRV_DC_Arc, /* pArc */
24 NULL, /* pArcTo */
25 NULL, /* pBeginPath */
26 TTYDRV_DC_BitBlt, /* pBitBlt */
27 TTYDRV_DC_BitmapBits,/* pBitmapBits */
28 TTYDRV_DC_Chord, /* pChord */
29 NULL, /* pCloseFigure */
30 TTYDRV_DC_CreateBitmap, /* pCreateBitmap */
31 TTYDRV_DC_CreateDC, /* pCreateDC */
32 NULL, /* pCreateDIBSection */
33 NULL, /* pCreateDIBSection16 */
34 TTYDRV_DC_DeleteDC, /* pDeleteDC */
35 TTYDRV_DC_DeleteObject, /* pDeleteObject */
36 NULL, /* pDeviceCapabilities */
37 TTYDRV_DC_Ellipse, /* pEllipse */
38 NULL, /* pEndDoc */
39 NULL, /* pEndPage */
40 NULL, /* pEndPath */
41 NULL, /* pEnumDeviceFonts */
42 TTYDRV_DC_Escape, /* pEscape */
43 NULL, /* pExcludeClipRect */
44 NULL, /* pExtDeviceMode */
45 TTYDRV_DC_ExtFloodFill, /* pExtFloodFill */
46 TTYDRV_DC_ExtTextOut, /* pExtTextOut */
47 NULL, /* pFillPath */
48 NULL, /* pFillRgn */
49 NULL, /* pFlattenPath */
50 NULL, /* pFrameRgn */
51 TTYDRV_DC_GetCharWidth, /* pGetCharWidth */
52 TTYDRV_DC_GetPixel, /* pGetPixel */
53 TTYDRV_DC_GetTextExtentPoint, /* pGetTextExtentPoint */
54 TTYDRV_DC_GetTextMetrics, /* pGetTextMetrics */
55 NULL, /* pIntersectClipRect */
56 NULL, /* pIntersectVisRect */
57 TTYDRV_DC_LineTo, /* pLineTo */
58 TTYDRV_DC_LoadOEMResource, /* pLoadOEMResource */
59 NULL, /* pMoveToEx */
60 NULL, /* pOffsetClipRgn */
61 NULL, /* pOffsetViewportOrg (optional) */
62 NULL, /* pOffsetWindowOrg (optional) */
63 TTYDRV_DC_PaintRgn, /* pPaintRgn */
64 TTYDRV_DC_PatBlt, /* pPatBlt */
65 TTYDRV_DC_Pie, /* pPie */
66 TTYDRV_DC_PolyBezier, /* pPolyBezier */
67 NULL, /* pPolyBezierTo */
68 NULL, /* pPolyDraw */
69 TTYDRV_DC_PolyPolygon, /* pPolyPolygon */
70 TTYDRV_DC_PolyPolyline, /* pPolyPolyline */
71 TTYDRV_DC_Polygon, /* pPolygon */
72 TTYDRV_DC_Polyline, /* pPolyline */
73 NULL, /* pPolylineTo */
74 NULL, /* pRealizePalette */
75 TTYDRV_DC_Rectangle, /* pRectangle */
76 NULL, /* pRestoreDC */
77 TTYDRV_DC_RoundRect, /* pRoundRect */
78 NULL, /* pSaveDC */
79 NULL, /* pScaleViewportExt (optional) */
80 NULL, /* pScaleWindowExt (optional) */
81 NULL, /* pSelectClipPath */
82 NULL, /* pSelectClipRgn */
83 TTYDRV_DC_SelectObject, /* pSelectObject */
84 NULL, /* pSelectPalette */
85 TTYDRV_DC_SetBkColor, /* pSetBkColor */
86 NULL, /* pSetBkMode */
87 TTYDRV_DC_SetDeviceClipping, /* pSetDeviceClipping */
88 TTYDRV_DC_SetDIBitsToDevice, /* pSetDIBitsToDevice */
89 NULL, /* pSetMapMode (optional) */
90 NULL, /* pSetMapperFlags */
91 TTYDRV_DC_SetPixel, /* pSetPixel */
92 NULL, /* pSetPolyFillMode */
93 NULL, /* pSetROP2 */
94 NULL, /* pSetRelAbs */
95 NULL, /* pSetStretchBltMode */
96 NULL, /* pSetTextAlign */
97 NULL, /* pSetTextCharacterExtra */
98 TTYDRV_DC_SetTextColor, /* pSetTextColor */
99 NULL, /* pSetTextJustification */
100 NULL, /* pSetViewportExt (optional) */
101 NULL, /* pSetViewportOrg (optional) */
102 NULL, /* pSetWindowExt (optional) */
103 NULL, /* pSetWindowOrg (optional) */
104 NULL, /* pStartDoc */
105 NULL, /* pStartPage */
106 TTYDRV_DC_StretchBlt, /* pStretchBlt */
107 NULL, /* pStretchDIBits */
108 NULL, /* pStrokeAndFillPath */
109 NULL, /* pStrokePath */
110 NULL /* pWidenPath */
114 GDI_DRIVER TTYDRV_GDI_Driver =
116 TTYDRV_GDI_Initialize,
117 TTYDRV_GDI_Finalize
120 BITMAP_DRIVER TTYDRV_BITMAP_Driver =
122 TTYDRV_BITMAP_SetDIBits,
123 TTYDRV_BITMAP_GetDIBits,
124 TTYDRV_BITMAP_DeleteDIBSection
127 PALETTE_DRIVER TTYDRV_PALETTE_Driver =
129 TTYDRV_PALETTE_SetMapping,
130 TTYDRV_PALETTE_UpdateMapping,
131 TTYDRV_PALETTE_IsDark
134 /* FIXME: Adapt to the TTY driver. Copied from the X11 driver */
136 DeviceCaps TTYDRV_DC_DevCaps = {
137 /* version */ 0,
138 /* technology */ DT_RASDISPLAY,
139 /* size, resolution */ 0, 0, 0, 0, 0,
140 /* device objects */ 1, 16 + 6, 16, 0, 0, 100, 0,
141 /* curve caps */ CC_CIRCLES | CC_PIE | CC_CHORD | CC_ELLIPSES |
142 CC_WIDE | CC_STYLED | CC_WIDESTYLED | CC_INTERIORS | CC_ROUNDRECT,
143 /* line caps */ LC_POLYLINE | LC_MARKER | LC_POLYMARKER | LC_WIDE |
144 LC_STYLED | LC_WIDESTYLED | LC_INTERIORS,
145 /* polygon caps */ PC_POLYGON | PC_RECTANGLE | PC_WINDPOLYGON |
146 PC_SCANLINE | PC_WIDE | PC_STYLED | PC_WIDESTYLED | PC_INTERIORS,
147 /* text caps */ 0,
148 /* regions */ CP_REGION,
149 /* raster caps */ RC_BITBLT | RC_BANDING | RC_SCALING | RC_BITMAP64 |
150 RC_DI_BITMAP | RC_DIBTODEV | RC_BIGFONT | RC_STRETCHBLT | RC_STRETCHDIB | RC_DEVBITS,
151 /* aspects */ 36, 36, 51,
152 /* pad1 */ { 0 },
153 /* log pixels */ 0, 0,
154 /* pad2 */ { 0 },
155 /* palette size */ 0,
156 /* ..etc */ 0, 0
159 /**********************************************************************
160 * TTYDRV_GDI_Initialize
162 BOOL TTYDRV_GDI_Initialize(void)
164 BITMAP_Driver = &TTYDRV_BITMAP_Driver;
165 PALETTE_Driver = &TTYDRV_PALETTE_Driver;
167 TTYDRV_DC_DevCaps.version = 0x300;
168 TTYDRV_DC_DevCaps.horzSize = 0; /* FIXME: Screen width in mm */
169 TTYDRV_DC_DevCaps.vertSize = 0; /* FIXME: Screen height in mm */
170 TTYDRV_DC_DevCaps.horzRes = 640; /* FIXME: Screen width in pixel */
171 TTYDRV_DC_DevCaps.vertRes = 480; /* FIXME: Screen height in pixel */
172 TTYDRV_DC_DevCaps.bitsPixel = 1; /* FIXME: Bits per pixel */
173 TTYDRV_DC_DevCaps.sizePalette = 0; /* FIXME: ??? */
175 /* Resolution will be adjusted during the font init */
177 TTYDRV_DC_DevCaps.logPixelsX = (int) (TTYDRV_DC_DevCaps.horzRes * 25.4 / TTYDRV_DC_DevCaps.horzSize);
178 TTYDRV_DC_DevCaps.logPixelsY = (int) (TTYDRV_DC_DevCaps.vertRes * 25.4 / TTYDRV_DC_DevCaps.vertSize);
180 if(!TTYDRV_PALETTE_Initialize())
181 return FALSE;
183 return DRIVER_RegisterDriver( "DISPLAY", &TTYDRV_DC_Driver );
186 /**********************************************************************
187 * TTYDRV_GDI_Finalize
189 void TTYDRV_GDI_Finalize(void)
191 TTYDRV_PALETTE_Finalize();