4 * Copyright 1998,1999 Patrik Stridvall
14 #include "debugtools.h"
16 DEFAULT_DEBUG_CHANNEL(ttydrv
)
18 /***********************************************************************
19 * TTYDRV_WND_GetCursesWindow
21 * Return the Curses window associated to a window.
23 WINDOW
*TTYDRV_WND_GetCursesWindow(WND
*wndPtr
)
25 return wndPtr
&& wndPtr
->pDriverData
?
26 ((TTYDRV_WND_DATA
*) wndPtr
->pDriverData
)->window
: 0;
29 /**********************************************************************
30 * TTYDRV_WND_Initialize
32 void TTYDRV_WND_Initialize(WND
*wndPtr
)
34 TTYDRV_WND_DATA
*pWndDriverData
=
35 (TTYDRV_WND_DATA
*) HeapAlloc(SystemHeap
, 0, sizeof(TTYDRV_WND_DATA
));
37 TRACE("(%p)\n", wndPtr
);
39 wndPtr
->pDriverData
= (void *) pWndDriverData
;
41 pWndDriverData
->window
= NULL
;
44 /**********************************************************************
47 void TTYDRV_WND_Finalize(WND
*wndPtr
)
49 TTYDRV_WND_DATA
*pWndDriverData
=
50 (TTYDRV_WND_DATA
*) wndPtr
->pDriverData
;
52 TRACE("(%p)\n", wndPtr
);
55 ERR("WND already destroyed\n");
59 if(pWndDriverData
->window
) {
60 ERR("WND destroyed without destroying the associated Curses Windows");
63 HeapFree(SystemHeap
, 0, pWndDriverData
);
64 wndPtr
->pDriverData
= NULL
;
67 /**********************************************************************
68 * TTYDRV_WND_CreateDesktopWindow
70 BOOL
TTYDRV_WND_CreateDesktopWindow(WND
*wndPtr
, CLASS
*classPtr
, BOOL bUnicode
)
72 TTYDRV_WND_DATA
*pWndDriverData
=
73 (TTYDRV_WND_DATA
*) wndPtr
->pDriverData
;
75 TRACE("(%p, %p, %d)\n", wndPtr
, classPtr
, bUnicode
);
77 if(!pWndDriverData
) { ERR("WND never initialized\n"); return FALSE
; }
79 pWndDriverData
->window
= TTYDRV_GetRootWindow();
83 /**********************************************************************
84 * TTYDRV_WND_CreateWindow
86 BOOL
TTYDRV_WND_CreateWindow(WND
*wndPtr
, CLASS
*classPtr
, CREATESTRUCTA
*cs
, BOOL bUnicode
)
90 INT cellWidth
=8, cellHeight
=8; /* FIXME: Hardcoded */
92 TRACE("(%p, %p, %p, %d)\n", wndPtr
, classPtr
, cs
, bUnicode
);
94 /* Only create top-level windows */
95 if(cs
->style
& WS_CHILD
)
98 window
= subwin(TTYDRV_GetRootWindow(), cs
->cy
/cellHeight
, cs
->cx
/cellWidth
,
99 cs
->y
/cellHeight
, cs
->x
/cellWidth
);
104 #else /* defined(WINE_CURSES) */
105 FIXME("(%p, %p, %p, %d): stub\n", wndPtr
, classPtr
, cs
, bUnicode
);
108 #endif /* defined(WINE_CURSES) */
111 /***********************************************************************
112 * TTYDRV_WND_DestroyWindow
114 BOOL
TTYDRV_WND_DestroyWindow(WND
*wndPtr
)
119 TRACE("(%p)\n", wndPtr
);
121 window
= TTYDRV_WND_GetCursesWindow(wndPtr
);
122 if(window
&& window
!= TTYDRV_GetRootWindow()) {
127 #else /* defined(WINE_CURSES) */
128 FIXME("(%p): stub\n", wndPtr
);
131 #endif /* defined(WINE_CURSES) */
134 /*****************************************************************
135 * TTYDRV_WND_SetParent
137 WND
*TTYDRV_WND_SetParent(WND
*wndPtr
, WND
*pWndParent
)
139 FIXME("(%p, %p): stub\n", wndPtr
, pWndParent
);
144 /***********************************************************************
145 * TTYDRV_WND_ForceWindowRaise
147 void TTYDRV_WND_ForceWindowRaise(WND
*wndPtr
)
149 FIXME("(%p): stub\n", wndPtr
);
152 /***********************************************************************
153 * TTYDRV_WINPOS_SetWindowPos
155 void TTYDRV_WND_SetWindowPos(WND
*wndPtr
, const WINDOWPOS
*winpos
, BOOL bSMC_SETXPOS
)
157 FIXME("(%p, %p, %d): stub\n", wndPtr
, winpos
, bSMC_SETXPOS
);
160 /*****************************************************************
163 void TTYDRV_WND_SetText(WND
*wndPtr
, LPCWSTR text
)
165 FIXME("(%p, %s): stub\n", wndPtr
, debugstr_w(text
));
168 /*****************************************************************
169 * TTYDRV_WND_SetFocus
171 void TTYDRV_WND_SetFocus(WND
*wndPtr
)
173 FIXME("(%p): stub\n", wndPtr
);
176 /*****************************************************************
177 * TTYDRV_WND_PreSizeMove
179 void TTYDRV_WND_PreSizeMove(WND
*wndPtr
)
181 FIXME("(%p): stub\n", wndPtr
);
184 /*****************************************************************
185 * TTYDRV_WND_PostSizeMove
187 void TTYDRV_WND_PostSizeMove(WND
*wndPtr
)
189 FIXME("(%p): stub\n", wndPtr
);
192 /*****************************************************************
193 * TTYDRV_WND_ScrollWindow
195 void TTYDRV_WND_ScrollWindow(
196 WND
*wndPtr
, DC
*dcPtr
, INT dx
, INT dy
,
197 const RECT
*clipRect
, BOOL bUpdate
)
199 FIXME("(%p, %p, %d, %d, %p, %d): stub\n",
200 wndPtr
, dcPtr
, dx
, dy
, clipRect
, bUpdate
);
203 /***********************************************************************
204 * TTYDRV_WND_SetDrawable
206 void TTYDRV_WND_SetDrawable(WND
*wndPtr
, DC
*dc
, WORD flags
, BOOL bSetClipOrigin
)
208 TRACE("(%p, %p, %d, %d)\n", wndPtr
, dc
, flags
, bSetClipOrigin
);
210 /* FIXME: Should be done in the common code instead */
215 if(flags
& DCX_WINDOW
) {
216 dc
->w
.DCOrgX
= wndPtr
->rectWindow
.left
;
217 dc
->w
.DCOrgY
= wndPtr
->rectWindow
.top
;
219 dc
->w
.DCOrgX
= wndPtr
->rectClient
.left
;
220 dc
->w
.DCOrgY
= wndPtr
->rectClient
.top
;
225 /***********************************************************************
226 * TTYDRV_WND_SetHostAttr
228 BOOL
TTYDRV_WND_SetHostAttr(WND
*wndPtr
, INT attr
, INT value
)
230 FIXME("(%p): stub\n", wndPtr
);
235 /***********************************************************************
236 * TTYDRV_WND_IsSelfClipping
238 BOOL
TTYDRV_WND_IsSelfClipping(WND
*wndPtr
)
240 FIXME("(%p): semistub\n", wndPtr
);