- New implementation of SendMessage, ReceiveMessage, ReplyMessage functions
[wine] / graphics / ttydrv / init.c
1 /*
2  * TTY driver
3  *
4  * Copyright 1998 Patrik Stridvall
5  */
6
7 #include "color.h"
8 #include "dc.h"
9 #include "debug.h"
10 #include "heap.h"
11 #include "ttydrv.h"
12
13 static const DC_FUNCTIONS TTYDRV_GDI_Driver =
14 {
15   NULL,                /* pArc */
16   NULL,                /* pBitBlt */
17   NULL,                /* pBitmapBits */
18   NULL,                /* pChord */
19   NULL,                /* pCreateBitmap */
20   TTYDRV_GDI_CreateDC, /* pCreateDC */
21   TTYDRV_GDI_DeleteDC, /* pDeleteDC */
22   NULL,                /* pDeleteObject */
23   NULL,                /* pEllipse */
24   NULL,                /* pEnumDeviceFonts */
25   TTYDRV_GDI_Escape,   /* pEscape */
26   NULL,                /* pExcludeClipRect */
27   NULL,                /* pExcludeVisRect */
28   NULL,                /* pExtFloodFill */
29   NULL,                /* pExtTextOut */
30   NULL,                /* pGetCharWidth */
31   NULL,                /* pGetPixel */
32   NULL,                /* pGetTextExtentPoint */
33   NULL,                /* pGetTextMetrics */
34   NULL,                /* pIntersectClipRect */
35   NULL,                /* pIntersectVisRect */
36   NULL,                /* pLineTo */
37   NULL,                /* pLoadOEMResource */
38   NULL,                /* pMoveToEx */
39   NULL,                /* pOffsetClipRgn */
40   NULL,                /* pOffsetViewportOrg (optional) */
41   NULL,                /* pOffsetWindowOrg (optional) */
42   NULL,                /* pPaintRgn */
43   NULL,                /* pPatBlt */
44   NULL,                /* pPie */
45   NULL,                /* pPolyPolygon */
46   NULL,                /* pPolyPolyline */
47   NULL,                /* pPolygon */
48   NULL,                /* pPolyline */
49   NULL,                /* pPolyBezier */
50   NULL,                /* pRealizePalette */
51   NULL,                /* pRectangle */
52   NULL,                /* pRestoreDC */
53   NULL,                /* pRoundRect */
54   NULL,                /* pSaveDC */
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 */
66   NULL,                /* pSetPixel */
67   NULL,                /* pSetPolyFillMode */
68   NULL,                /* pSetROP2 */
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 */
81 };
82
83 /* FIXME: Adapt to the TTY driver. Copied from the X11 driver */
84
85 static DeviceCaps TTYDRV_GDI_DevCaps = {
86 /* version */           0, 
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,
96 /* text caps */         0,
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,
101 /* pad1 */              { 0 },
102 /* log pixels */        0, 0, 
103 /* pad2 */              { 0 },
104 /* palette size */      0,
105 /* ..etc */             0, 0
106 };
107
108 /**********************************************************************
109  *           TTYDRV_GDI_Initialize
110  */
111 BOOL32 TTYDRV_GDI_Initialize(void)
112 {
113
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: ??? */
121   
122   /* Resolution will be adjusted during the font init */
123   
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);
126  
127   if( !COLOR_Init() ) return FALSE;
128
129   return DRIVER_RegisterDriver( "DISPLAY", &TTYDRV_GDI_Driver );
130 }
131
132 /**********************************************************************
133  *           TTYDRV_GDI_Finalize
134  */
135 void TTDRV_GDI_Finalize()
136 {
137 }
138
139 /**********************************************************************
140  *           TTYDRV_GDI_CreateDC
141  */
142 BOOL32 TTYDRV_GDI_CreateDC(DC *dc, LPCSTR driver, LPCSTR device,
143                            LPCSTR output, const DEVMODE16 *initData)
144 {
145   FIXME(ttydrv, "(%p, %s, %s, %s, %p): semistub\n",
146     dc, debugstr_a(driver), debugstr_a(device), 
147     debugstr_a(output), initData
148   );
149
150   dc->physDev = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY,
151                            sizeof(TTYDRV_PDEVICE) );
152   
153   if(!dc->physDev) {
154     ERR(ttydrv, "Can't allocate physDev\n");
155     return FALSE;
156   }
157
158   dc->w.devCaps = &TTYDRV_GDI_DevCaps;
159   
160   return TRUE;
161 }
162
163
164 /**********************************************************************
165  *           TTYDRV_GDI_DeleteDC
166  */
167 BOOL32 TTYDRV_GDI_DeleteDC(DC *dc)
168 {
169   FIXME(ttydrv, "(%p): semistub\n", dc);
170
171   HeapFree( GetProcessHeap(), 0, dc->physDev );
172   dc->physDev = NULL;
173   
174   return TRUE;
175 }
176
177 /**********************************************************************
178  *           TTYDRV_GDI_Escape
179  */
180 INT32 TTYDRV_GDI_Escape(DC *dc, INT32 nEscape, INT32 cbInput,
181                         SEGPTR lpInData, SEGPTR lpOutData)
182 {
183     return 0;
184 }
185