blob: 49497780777b5281527633cb53080c39a2b5729d [file] [log] [blame]
Patrik Stridvallf638aef1998-12-07 09:36:13 +00001/*
2 * TTY driver definitions
3 */
4
5#ifndef __WINE_TTYDRV_H
6#define __WINE_TTYDRV_H
7
Patrik Stridvall4d715fd1999-11-23 23:43:29 +00008#include "config.h"
9
10#undef ERR
11#ifdef HAVE_NCURSES_H
12# include <ncurses.h>
13#elif defined(HAVE_CURSES_H)
14# include <curses.h>
15#endif
16
Jim Aston2e1cafa1999-03-14 16:35:05 +000017#include "windef.h"
Patrik Stridvallb87fe2e1999-04-01 08:16:08 +000018#include "wingdi.h"
Patrik Stridvalld96e1f11999-07-04 13:31:03 +000019#include "dinput.h"
20#include "wine/winuser16.h"
Michael Veksler9d14a001999-05-08 12:40:24 +000021#include "wine/wingdi16.h"
Patrik Stridvall8d8703c1999-02-04 14:05:38 +000022
Lionel Ulmerc9713e51999-12-05 02:20:46 +000023#include "keyboard.h"
24
Patrik Stridvallb87fe2e1999-04-01 08:16:08 +000025struct tagBITMAPOBJ;
Patrik Stridvall8d8703c1999-02-04 14:05:38 +000026struct tagCLASS;
27struct tagDC;
28struct tagDESKTOP;
Patrik Stridvallb87fe2e1999-04-01 08:16:08 +000029struct tagPALETTEOBJ;
Patrik Stridvall8d8703c1999-02-04 14:05:38 +000030struct tagWND;
Michael Veksler9d14a001999-05-08 12:40:24 +000031struct tagCURSORICONINFO;
32struct tagCREATESTRUCTA;
33struct tagWINDOWPOS;
Patrik Stridvall8d8703c1999-02-04 14:05:38 +000034
Patrik Stridvallb87fe2e1999-04-01 08:16:08 +000035/**************************************************************************
36 * TTY GDI driver
37 */
Patrik Stridvall8d8703c1999-02-04 14:05:38 +000038
Patrik Stridvallb87fe2e1999-04-01 08:16:08 +000039extern struct tagGDI_DRIVER TTYDRV_GDI_Driver;
Patrik Stridvall8d8703c1999-02-04 14:05:38 +000040
Alexandre Julliarda3960291999-02-26 11:11:13 +000041extern BOOL TTYDRV_GDI_Initialize(void);
Patrik Stridvallb87fe2e1999-04-01 08:16:08 +000042extern void TTYDRV_GDI_Finalize(void);
43
44/* TTY GDI bitmap driver */
45
46extern HBITMAP TTYDRV_BITMAP_CreateDIBSection(struct tagDC *dc, BITMAPINFO *bmi, UINT usage, LPVOID *bits, HANDLE section, DWORD offset);
47extern HBITMAP16 TTYDRV_BITMAP_CreateDIBSection16(struct tagDC *dc, BITMAPINFO *bmi, UINT16 usage, SEGPTR *bits, HANDLE section, DWORD offset);
48
49extern INT TTYDRV_BITMAP_SetDIBits(struct tagBITMAPOBJ *bmp, struct tagDC *dc, UINT startscan, UINT lines, LPCVOID bits, const BITMAPINFO *info, UINT coloruse, HBITMAP hbitmap);
50extern INT TTYDRV_BITMAP_GetDIBits(struct tagBITMAPOBJ *bmp, struct tagDC *dc, UINT startscan, UINT lines, LPVOID bits, BITMAPINFO *info, UINT coloruse, HBITMAP hbitmap);
51extern void TTYDRV_BITMAP_DeleteDIBSection(struct tagBITMAPOBJ *bmp);
52
53typedef struct {
Patrik Stridvall4d715fd1999-11-23 23:43:29 +000054#ifdef HAVE_LIBCURSES
55 WINDOW *window;
56#endif /* defined(HAVE_LIBCURSES) */
57 int cellWidth;
58 int cellHeight;
Patrik Stridvallb87fe2e1999-04-01 08:16:08 +000059} TTYDRV_PDEVICE;
60
Patrik Stridvallcf844341999-12-11 23:08:48 +000061typedef struct {
62 int dummy; /* FIXME: Remove later */
63} TTYDRV_PHYSBITMAP;
64
65extern BOOL TTYDRV_DC_CreateBitmap(HBITMAP hbitmap);
66
Patrik Stridvall4d715fd1999-11-23 23:43:29 +000067extern BOOL TTYDRV_DC_Arc(struct tagDC *dc, INT left, INT top, INT right, INT bottom, INT xstart, INT ystart, INT xend, INT yend);
Patrik Stridvallcf844341999-12-11 23:08:48 +000068extern LONG TTYDRV_DC_BitmapBits(HBITMAP hbitmap, void *bits, LONG count, WORD flags);
Patrik Stridvall4d715fd1999-11-23 23:43:29 +000069extern BOOL TTYDRV_DC_CreateBitmap(HBITMAP hbitmap);
Huw D M Daviese39b6761999-05-17 16:20:51 +000070extern BOOL TTYDRV_DC_CreateDC(struct tagDC *dc, LPCSTR driver, LPCSTR device, LPCSTR output, const DEVMODEA *initData);
Patrik Stridvallb87fe2e1999-04-01 08:16:08 +000071extern BOOL TTYDRV_DC_DeleteDC(struct tagDC *dc);
Patrik Stridvall4d715fd1999-11-23 23:43:29 +000072extern BOOL TTYDRV_DC_DeleteObject(HGDIOBJ handle);
73extern BOOL TTYDRV_DC_BitBlt(struct tagDC *dcDst, INT xDst, INT yDst, INT width, INT height, struct tagDC *dcSrc, INT xSrc, INT ySrc, DWORD rop);
74extern BOOL TTYDRV_DC_Chord(struct tagDC *dc, INT left, INT top, INT right, INT bottom, INT xstart, INT ystart, INT xend, INT yend);
75extern BOOL TTYDRV_DC_Ellipse(struct tagDC *dc, INT left, INT top, INT right, INT bottom);
Patrik Stridvallb87fe2e1999-04-01 08:16:08 +000076extern INT TTYDRV_DC_Escape(struct tagDC *dc, INT nEscape, INT cbInput, SEGPTR lpInData, SEGPTR lpOutData);
Patrik Stridvall4d715fd1999-11-23 23:43:29 +000077extern BOOL TTYDRV_DC_ExtFloodFill(struct tagDC *dc, INT x, INT y, COLORREF color, UINT fillType);
78extern BOOL TTYDRV_DC_ExtTextOut(struct tagDC *dc, INT x, INT y, UINT flags, const RECT *lpRect, LPCSTR str, UINT count, const INT *lpDx);
79extern BOOL TTYDRV_DC_GetCharWidth(struct tagDC *dc, UINT firstChar, UINT lastChar, LPINT buffer);
80extern COLORREF TTYDRV_DC_GetPixel(struct tagDC *dc, INT x, INT y);
81
82extern BOOL TTYDRV_DC_GetTextExtentPoint(struct tagDC *dc, LPCSTR str, INT count, LPSIZE size);
83extern BOOL TTYDRV_DC_GetTextMetrics(struct tagDC *dc, TEXTMETRICA *metrics);
84extern BOOL TTYDRV_DC_LineTo(struct tagDC *dc, INT x, INT y);
85extern HANDLE TTYDRV_DC_LoadOEMResource(WORD resid, WORD type);
Patrik Stridvall4d715fd1999-11-23 23:43:29 +000086extern BOOL TTYDRV_DC_PaintRgn(struct tagDC *dc, HRGN hrgn);
87extern BOOL TTYDRV_DC_PatBlt(struct tagDC *dc, INT left, INT top, INT width, INT height, DWORD rop);
88extern BOOL TTYDRV_DC_Pie(struct tagDC *dc, INT left, INT top, INT right, INT bottom, INT xstart, INT ystart, INT xend, INT yend);
Huw D M Daviesf0f8da51999-12-05 23:54:02 +000089extern BOOL TTYDRV_DC_PolyBezier(struct tagDC *dc, const POINT* BezierPoints, DWORD count);
Patrik Stridvall4d715fd1999-11-23 23:43:29 +000090extern BOOL TTYDRV_DC_Polygon(struct tagDC *dc, const POINT* pt, INT count);
91extern BOOL TTYDRV_DC_Polyline(struct tagDC *dc, const POINT* pt, INT count);
92extern BOOL TTYDRV_DC_PolyPolygon(struct tagDC *dc, const POINT* pt, const INT* counts, UINT polygons);
93extern BOOL TTYDRV_DC_PolyPolyline(struct tagDC *dc, const POINT* pt, const DWORD* counts, DWORD polylines);
94extern BOOL TTYDRV_DC_Rectangle(struct tagDC *dc, INT left, INT top, INT right, INT bottom);
95extern BOOL TTYDRV_DC_RoundRect(struct tagDC *dc, INT left, INT top, INT right, INT bottom, INT ell_width, INT ell_height);
96extern void TTYDRV_DC_SetDeviceClipping(struct tagDC *dc);
97extern HGDIOBJ TTYDRV_DC_SelectObject(struct tagDC *dc, HGDIOBJ handle);
98extern COLORREF TTYDRV_DC_SetBkColor(struct tagDC *dc, COLORREF color);
99extern COLORREF TTYDRV_DC_SetPixel(struct tagDC *dc, INT x, INT y, COLORREF color);
100extern COLORREF TTYDRV_DC_SetTextColor(struct tagDC *dc, COLORREF color);
101extern BOOL TTYDRV_DC_StretchBlt(struct tagDC *dcDst, INT xDst, INT yDst, INT widthDst, INT heightDst, struct tagDC *dcSrc, INT xSrc, INT ySrc, INT widthSrc, INT heightSrc, DWORD rop);
Patrik Stridvallcf844341999-12-11 23:08:48 +0000102INT TTYDRV_DC_SetDIBitsToDevice(struct tagDC *dc, INT xDest, INT yDest, DWORD cx, DWORD cy, INT xSrc, INT ySrc, UINT startscan, UINT lines, LPCVOID bits, const BITMAPINFO *info, UINT coloruse);
Patrik Stridvallb87fe2e1999-04-01 08:16:08 +0000103
104/* TTY GDI palette driver */
105
106extern struct tagPALETTE_DRIVER TTYDRV_PALETTE_Driver;
107
108extern BOOL TTYDRV_PALETTE_Initialize(void);
109extern void TTYDRV_PALETTE_Finalize(void);
110
111extern int TTYDRV_PALETTE_SetMapping(struct tagPALETTEOBJ *palPtr, UINT uStart, UINT uNum, BOOL mapOnly);
112extern int TTYDRV_PALETTE_UpdateMapping(struct tagPALETTEOBJ *palPtr);
113extern BOOL TTYDRV_PALETTE_IsDark(int pixel);
114
115/**************************************************************************
116 * TTY USER driver
117 */
118
119extern struct tagUSER_DRIVER TTYDRV_USER_Driver;
120
121extern BOOL TTYDRV_USER_Initialize(void);
122extern void TTYDRV_USER_Finalize(void);
123extern void TTYDRV_USER_BeginDebugging(void);
124extern void TTYDRV_USER_EndDebugging(void);
Patrik Stridvallf638aef1998-12-07 09:36:13 +0000125
126/* TTY clipboard driver */
127
Patrik Stridvallb87fe2e1999-04-01 08:16:08 +0000128extern struct tagCLIPBOARD_DRIVER TTYDRV_CLIPBOARD_Driver;
Patrik Stridvallf638aef1998-12-07 09:36:13 +0000129
Noel Borthwick29700671999-09-03 15:17:57 +0000130extern void TTYDRV_CLIPBOARD_Acquire(void);
131extern void TTYDRV_CLIPBOARD_Release(void);
Alex Korobka44a1b591999-04-01 12:03:52 +0000132extern void TTYDRV_CLIPBOARD_SetData(UINT wFormat);
133extern BOOL TTYDRV_CLIPBOARD_GetData(UINT wFormat);
Noel Borthwick29700671999-09-03 15:17:57 +0000134extern BOOL TTYDRV_CLIPBOARD_IsFormatAvailable(UINT wFormat);
135extern BOOL TTYDRV_CLIPBOARD_RegisterFormat( LPCSTR FormatName );
136extern BOOL TTYDRV_CLIPBOARD_IsSelectionowner();
Alexandre Julliarda3960291999-02-26 11:11:13 +0000137extern void TTYDRV_CLIPBOARD_ResetOwner(struct tagWND *pWnd, BOOL bFooBar);
Patrik Stridvall8d8703c1999-02-04 14:05:38 +0000138
139/* TTY desktop driver */
140
Patrik Stridvallb87fe2e1999-04-01 08:16:08 +0000141extern struct tagDESKTOP_DRIVER TTYDRV_DESKTOP_Driver;
Patrik Stridvall8d8703c1999-02-04 14:05:38 +0000142
Patrik Stridvall4d715fd1999-11-23 23:43:29 +0000143#ifdef HAVE_LIBCURSES
144extern WINDOW *TTYDRV_DESKTOP_GetCursesRootWindow(struct tagDESKTOP *pDesktop);
145#endif /* defined(HAVE_LIBCURSES) */
146
Patrik Stridvall8d8703c1999-02-04 14:05:38 +0000147extern void TTYDRV_DESKTOP_Initialize(struct tagDESKTOP *pDesktop);
148extern void TTYDRV_DESKTOP_Finalize(struct tagDESKTOP *pDesktop);
149extern int TTYDRV_DESKTOP_GetScreenWidth(struct tagDESKTOP *pDesktop);
150extern int TTYDRV_DESKTOP_GetScreenHeight(struct tagDESKTOP *pDesktop);
151extern int TTYDRV_DESKTOP_GetScreenDepth(struct tagDESKTOP *pDesktop);
Patrik Stridvallf638aef1998-12-07 09:36:13 +0000152
153/* TTY event driver */
154
Patrik Stridvallb87fe2e1999-04-01 08:16:08 +0000155extern struct tagEVENT_DRIVER TTYDRV_EVENT_Driver;
Patrik Stridvallf638aef1998-12-07 09:36:13 +0000156
Alexandre Julliarda3960291999-02-26 11:11:13 +0000157extern BOOL TTYDRV_EVENT_Init(void);
Ulrich Weigand203780e1999-07-10 10:24:31 +0000158extern void TTYDRV_EVENT_Synchronize(void);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000159extern BOOL TTYDRV_EVENT_CheckFocus(void);
Ulrich Weigand5c982c91999-05-22 18:59:15 +0000160extern void TTYDRV_EVENT_UserRepaintDisable(BOOL bDisable);
Patrik Stridvallf638aef1998-12-07 09:36:13 +0000161
162/* TTY keyboard driver */
163
Patrik Stridvallb87fe2e1999-04-01 08:16:08 +0000164extern struct tagKEYBOARD_DRIVER TTYDRV_KEYBOARD_Driver;
Patrik Stridvallf638aef1998-12-07 09:36:13 +0000165
166extern void TTYDRV_KEYBOARD_Init(void);
167extern WORD TTYDRV_KEYBOARD_VkKeyScan(CHAR cChar);
168extern UINT16 TTYDRV_KEYBOARD_MapVirtualKey(UINT16 wCode, UINT16 wMapType);
169extern INT16 TTYDRV_KEYBOARD_GetKeyNameText(LONG lParam, LPSTR lpBuffer, INT16 nSize);
170extern INT16 TTYDRV_KEYBOARD_ToAscii(UINT16 virtKey, UINT16 scanCode, LPBYTE lpKeyState, LPVOID lpChar, UINT16 flags);
Patrik Stridvallb87fe2e1999-04-01 08:16:08 +0000171extern BOOL TTYDRV_KEYBOARD_GetBeepActive(void);
172extern void TTYDRV_KEYBOARD_SetBeepActive(BOOL bActivate);
173extern void TTYDRV_KEYBOARD_Beep(void);
Patrik Stridvalld96e1f11999-07-04 13:31:03 +0000174extern BOOL TTYDRV_KEYBOARD_GetDIState(DWORD len, LPVOID ptr);
175extern BOOL TTYDRV_KEYBOARD_GetDIData(BYTE *keystate, DWORD dodsize, LPDIDEVICEOBJECTDATA dod, LPDWORD entries, DWORD flags);
Lionel Ulmerc9713e51999-12-05 02:20:46 +0000176extern void TTYDRV_KEYBOARD_GetKeyboardConfig(KEYBOARD_CONFIG *cfg);
177extern void TTYDRV_KEYBOARD_SetKeyboardConfig(KEYBOARD_CONFIG *cfg, DWORD mask);
Patrik Stridvall8d8703c1999-02-04 14:05:38 +0000178
179/* TTY monitor driver */
180
181extern struct tagMONITOR_DRIVER TTYDRV_MONITOR_Driver;
182
Patrik Stridvall4d715fd1999-11-23 23:43:29 +0000183typedef struct tagTTYDRV_MONITOR_DATA {
184#ifdef HAVE_LIBCURSES
185 WINDOW *rootWindow;
186#endif /* defined(HAVE_LIBCURSES) */
187 int cellWidth;
188 int cellHeight;
Patrik Stridvall8d8703c1999-02-04 14:05:38 +0000189 int width;
190 int height;
191 int depth;
192} TTYDRV_MONITOR_DATA;
193
194struct tagMONITOR;
195
Patrik Stridvall4d715fd1999-11-23 23:43:29 +0000196#ifdef HAVE_LIBCURSES
197extern WINDOW *TTYDRV_MONITOR_GetCursesRootWindow(struct tagMONITOR *pMonitor);
198#endif /* defined(HAVE_LIBCURSES) */
199
200extern INT TTYDRV_MONITOR_GetCellWidth(struct tagMONITOR *pMonitor);
201extern INT TTYDRV_MONITOR_GetCellHeight(struct tagMONITOR *pMonitor);
202
Patrik Stridvall8d8703c1999-02-04 14:05:38 +0000203extern void TTYDRV_MONITOR_Initialize(struct tagMONITOR *pMonitor);
204extern void TTYDRV_MONITOR_Finalize(struct tagMONITOR *pMonitor);
Patrik Stridvallb87fe2e1999-04-01 08:16:08 +0000205extern BOOL TTYDRV_MONITOR_IsSingleWindow(struct tagMONITOR *pMonitor);
Patrik Stridvall8d8703c1999-02-04 14:05:38 +0000206extern int TTYDRV_MONITOR_GetWidth(struct tagMONITOR *pMonitor);
207extern int TTYDRV_MONITOR_GetHeight(struct tagMONITOR *pMonitor);
208extern int TTYDRV_MONITOR_GetDepth(struct tagMONITOR *pMonitor);
Patrik Stridvallb87fe2e1999-04-01 08:16:08 +0000209extern BOOL TTYDRV_MONITOR_GetScreenSaveActive(struct tagMONITOR *pMonitor);
210extern void TTYDRV_MONITOR_SetScreenSaveActive(struct tagMONITOR *pMonitor, BOOL bActivate);
211extern int TTYDRV_MONITOR_GetScreenSaveTimeout(struct tagMONITOR *pMonitor);
212extern void TTYDRV_MONITOR_SetScreenSaveTimeout(struct tagMONITOR *pMonitor, int nTimeout);
Patrik Stridvall8d8703c1999-02-04 14:05:38 +0000213
214/* TTY mouse driver */
215
Patrik Stridvallb87fe2e1999-04-01 08:16:08 +0000216extern struct tagMOUSE_DRIVER TTYDRV_MOUSE_Driver;
Patrik Stridvall8d8703c1999-02-04 14:05:38 +0000217
Lionel Ulmeracc74671999-11-07 21:25:57 +0000218extern void TTYDRV_MOUSE_Init();
Michael Veksler9d14a001999-05-08 12:40:24 +0000219extern void TTYDRV_MOUSE_SetCursor(struct tagCURSORICONINFO *lpCursor);
Patrik Stridvall8d8703c1999-02-04 14:05:38 +0000220extern void TTYDRV_MOUSE_MoveCursor(WORD wAbsX, WORD wAbsY);
Patrik Stridvallb87fe2e1999-04-01 08:16:08 +0000221extern BOOL TTYDRV_MOUSE_EnableWarpPointer(BOOL bEnable);
Patrik Stridvall8d8703c1999-02-04 14:05:38 +0000222
223/* TTY windows driver */
224
Patrik Stridvallb87fe2e1999-04-01 08:16:08 +0000225extern struct tagWND_DRIVER TTYDRV_WND_Driver;
Patrik Stridvall8d8703c1999-02-04 14:05:38 +0000226
Patrik Stridvall4d715fd1999-11-23 23:43:29 +0000227typedef struct tagTTYDRV_WND_DATA {
228#ifdef HAVE_LIBCURSES
229 WINDOW *window;
230#else /* defined(HAVE_LIBCURSES) */
231 int dummy; /* FIXME: Remove later */
232#endif /* defined(HAVE_LIBCURSES) */
233} TTYDRV_WND_DATA;
234
235#ifdef HAVE_LIBCURSES
236WINDOW *TTYDRV_WND_GetCursesWindow(struct tagWND *wndPtr);
237WINDOW *TTYDRV_WND_GetCursesRootWindow(struct tagWND *wndPtr);
238#endif /* defined(HAVE_LIBCURSES) */
239
Patrik Stridvall8d8703c1999-02-04 14:05:38 +0000240extern void TTYDRV_WND_Initialize(struct tagWND *wndPtr);
241extern void TTYDRV_WND_Finalize(struct tagWND *wndPtr);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000242extern BOOL TTYDRV_WND_CreateDesktopWindow(struct tagWND *wndPtr, struct tagCLASS *classPtr, BOOL bUnicode);
Michael Veksler9d14a001999-05-08 12:40:24 +0000243extern BOOL TTYDRV_WND_CreateWindow(struct tagWND *wndPtr, struct tagCLASS *classPtr, struct tagCREATESTRUCTA *cs, BOOL bUnicode);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000244extern BOOL TTYDRV_WND_DestroyWindow(struct tagWND *pWnd);
Patrik Stridvall8d8703c1999-02-04 14:05:38 +0000245extern struct tagWND *TTYDRV_WND_SetParent(struct tagWND *wndPtr, struct tagWND *pWndParent);
246extern void TTYDRV_WND_ForceWindowRaise(struct tagWND *pWnd);
Michael Veksler9d14a001999-05-08 12:40:24 +0000247extern void TTYDRV_WND_SetWindowPos(struct tagWND *wndPtr, const struct tagWINDOWPOS *winpos, BOOL bSMC_SETXPOS);
Patrik Stridvall8d8703c1999-02-04 14:05:38 +0000248extern void TTYDRV_WND_SetText(struct tagWND *wndPtr, LPCSTR text);
249extern void TTYDRV_WND_SetFocus(struct tagWND *wndPtr);
250extern void TTYDRV_WND_PreSizeMove(struct tagWND *wndPtr);
251extern void TTYDRV_WND_PostSizeMove(struct tagWND *wndPtr);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000252extern void TTYDRV_WND_ScrollWindow(struct tagWND *wndPtr, struct tagDC *dcPtr, INT dx, INT dy, const RECT *clipRect, BOOL bUpdate);
253extern void TTYDRV_WND_SetDrawable(struct tagWND *wndPtr, struct tagDC *dc, WORD flags, BOOL bSetClipOrigin);
Alex Korobka4f1ac051999-03-28 09:37:57 +0000254extern BOOL TTYDRV_WND_SetHostAttr(struct tagWND *wndPtr, INT haKey, INT value);
Alexandre Julliarda3960291999-02-26 11:11:13 +0000255extern BOOL TTYDRV_WND_IsSelfClipping(struct tagWND *wndPtr);
Patrik Stridvall8d8703c1999-02-04 14:05:38 +0000256
Patrik Stridvallf638aef1998-12-07 09:36:13 +0000257#endif /* !defined(__WINE_TTYDRV_H) */