Added textserv.h.
[wine] / include / textserv.h
1 /*
2  * Copyright (C) 2005 Mike McCormack
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17  */
18
19 #ifndef _TEXTSERV_H
20 #define _TEXTSERV_H
21
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25
26 DEFINE_GUID(IID_ITextServices,0x8d33f740,0xcf58,0x11ce,0xa8,0x9d,0x00,0xaa,0x00,0x6c,0xad,0xc5);
27 DEFINE_GUID(IID_ITextHost,    0xc5bdd8d0,0xd26e,0x11ce,0xa8,0x9e,0x00,0xaa,0x00,0x6c,0xad,0xc5);
28 DEFINE_GUID(IID_ITextHost2,   0xc5bdd8d0,0xd26e,0x11ce,0xa8,0x9e,0x00,0xaa,0x00,0x6c,0xad,0xc5);
29
30 /*****************************************************************************
31  * ITextServices interface
32  */
33 typedef struct ITextServices ITextServices;
34
35 #define INTERFACE ITextServices
36 DECLARE_INTERFACE_(ITextServices,IUnknown)
37 {
38     /*** IUnknown methods ***/
39     STDMETHOD(QueryInterface)(THIS_
40         REFIID riid,
41         void** ppvObject) PURE;
42
43     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
44
45     STDMETHOD_(ULONG,Release)(THIS) PURE;
46
47     /*** ITextServices methods ***/
48
49     STDMETHOD(TxSendMessage)( THIS_
50         UINT msg, WPARAM wparam, LPARAM lparam, LRESULT* plresult) PURE;
51
52     STDMETHOD(TxDraw)( THIS_
53         DWORD dwDrawAspect,
54         LONG lindex,
55         void* pvAspect,
56         DVTARGETDEVICE* ptd,
57         HDC hdcDraw,
58         HDC hicTargetDev,
59         LPCRECTL lprcBounds,
60         LPCRECTL lprcWBounds,
61         LPRECT lprcUpdate,
62         BOOL (CALLBACK * pfnContinue)(DWORD),
63         DWORD dwContinue,
64         LONG lViewId) PURE;
65
66     STDMETHOD(TxGetHScroll)( THIS_
67         LONG* plMin,
68         LONG* plMax,
69         LONG* plPos,
70         LONG* plPage,
71         BOOL* pfEnabled) PURE;
72
73     STDMETHOD(TxGetVScroll)( THIS_
74         LONG* plMin,
75         LONG* plMax,
76         LONG* plPos,
77         LONG* plPage,
78         BOOL* pfEnabled) PURE;
79
80     STDMETHOD(OnTxSetCursor)( THIS_
81         DWORD dwDrawAspect,
82         LONG lindex,
83         void* pvAspect,
84         DVTARGETDEVICE* ptd,
85         HDC hdcDraw,
86         HDC hicTargetDev,
87         LPCRECT lprcClient,
88         INT x,
89         INT y) PURE;
90
91     STDMETHOD(TxQueryHitPoint)( THIS_
92         DWORD dwDrawAspect,
93         LONG lindex,
94         void* pvAspect,
95         DVTARGETDEVICE* ptd,
96         HDC hdcDraw,
97         HDC hicTargetDev,
98         LPCRECT lprcClient,
99         INT x,
100         INT y,
101         DWORD* pHitResult) PURE;
102
103     STDMETHOD(OnTxInplaceActivate)( THIS_
104         LPCRECT prcClient) PURE;
105
106     STDMETHOD(OnTxUIActivate)( THIS ) PURE;
107
108     STDMETHOD(OnTxUIDeactivate)( THIS ) PURE;
109
110     STDMETHOD(TxGetText)( THIS_
111         BSTR* pbstrText) PURE;
112
113     STDMETHOD(TxSetText)( THIS_
114         LPCWSTR pszText) PURE;
115
116     STDMETHOD(TxGetCurrentTargetX)( THIS_
117         LONG* x) PURE;
118
119     STDMETHOD(TxGetBaseLinePos)( THIS_
120         LONG* x) PURE;
121
122     STDMETHOD(TxGetNaturalSize)( THIS_
123         DWORD dwAspect,
124         HDC hdcDraw,
125         HDC hicTargetDev,
126         DVTARGETDEVICE* ptd,
127         DWORD dwMode,
128         const SIZEL* psizelExtent,
129         LONG* pwidth,
130         LONG* pheight) PURE;
131
132     STDMETHOD(TxGetDropTarget)( THIS_
133         IDropTarget** ppDropTarget) PURE;
134
135     STDMETHOD(OnTxPropertyBitsChange)( THIS_
136         DWORD dwMask,
137         DWORD dwBits) PURE;
138
139     STDMETHOD(TxGetCachedSize)( THIS_
140         DWORD* pdwWidth,
141         DWORD* pdwHeight) PURE;
142
143 };
144
145 #ifdef COBJMACROS
146 /*** IUnknown methods ***/
147 #define ITextServices_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
148 #define ITextServices_AddRef(p) (p)->lpVtbl->AddRef(p)
149 #define ITextServices_Release(p) (p)->lpVtbl->Release(p)
150 /*** ITextServices methods ***/
151 #define ITextServices_TxSendMessage(p,a,b,c,d) (p)->lpVtbl->TxSendMessage(p,a,b,c,d)
152 #define ITextServices_TxDraw(p,a,b,c,d,e,f,g,h,i,j,k,l) (p)->lpVtbl->TxDraw(p,a,b,c,d,e,f,g,h,i,j,k,l)
153 #define ITextServices_TxGetHScroll(p,a,b,c,d,e) (p)->lpVtbl->TxGetHScroll(p,a,b,c,d,e)
154 #define ITextServices_TxGetVScroll(p,a,b,c,d,e) (p)->lpVtbl->TxGetVScroll(p,a,b,c,d,e)
155 #define ITextServices_OnTxSetCursor(p,a,b,c,d,e,f,g,h,i) (p)->lpVtbl->OnTxSetCursor(p,a,b,c,d,e,f,g,h,i)
156 #define ITextServices_TxQueryHitPoint(p,a,b,c,d,e,f,g,h,i,j) (p)->lpVtbl->TxQueryHitPoint(p,a,b,c,d,e,f,g,h,i,j)
157 #define ITextServices_OnTxInplaceActivate(p,a) (p)->lpVtbl->OnTxInplaceActivate(p,a)
158 #define ITextServices_OnTxUIActivate(p) (p)->lpVtbl->OnTxUIActivate(p)
159 #define ITextServices_OnTxUIDeactivate(p) (p)->lpVtbl->OnTxUIDeactivate(p)
160 #define ITextServices_TxGetText(p,a) (p)->lpVtbl->TxGetText(p,a)
161 #define ITextServices_TxSetText(p,a) (p)->lpVtbl->TxSetText(p,a)
162 #define ITextServices_TxGetCurrentTargetX(p,a) (p)->lpVtbl->TxGetCurrentTargetX(p,a)
163 #define ITextServices_TxGetBaseLinePos(p,a) (p)->lpVtbl->TxGetBaseLinePos(p,a)
164 #define ITextServices_TxGetNaturalSize(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->TxGetNaturalSize(p,a,b,c,d,e,f,g,h)
165 #define ITextServices_TxGetDropTarget(p,a) (p)->lpVtbl->TxGetDropTarget(p,a)
166 #define ITextServices_OnTxPropertyBitsChange(p,a,b) (p)->lpVtbl->OnTxPropertyBitsChange(p,a,b)
167 #define ITextServices_TxGetCachedSize(p,a,b) (p)->lpVtbl->TxGetCachedSize(p,a,b)
168 #endif
169
170 #undef INTERFACE
171
172 typedef enum _TXTBACKSTYLE {
173     TXTBACK_TRANSPARENT = 0,
174     TXTBACK_OPAQUE
175 } TXTBACKSTYLE;
176
177 enum TXTHITRESULT {
178     TXTHITRESULT_NOHIT = 0,
179     TXTHITRESULT_TRANSPARENT = 1,
180     TXTHITRESULT_CLOSE = 2,
181     TXTHITRESULT_HIT = 3
182 };
183
184 enum TXTNATURALSIZE {
185     TXTNS_FITTOCONTENT = 1,
186     TXTNS_ROUNDTOLINE = 2
187 };
188
189 enum TXTVIEW {
190     TXTVIEW_ACTIVE = 0,
191     TXTVIEW_INACTIVE = 1
192 };
193
194 typedef struct ITextHost ITextHost;
195
196 /*****************************************************************************
197  * ITextHost interface
198  */
199 #define INTERFACE ITextHost
200 DECLARE_INTERFACE_(ITextHost,IUnknown)
201 {
202     /*** IUnknown methods ***/
203     STDMETHOD(QueryInterface)(THIS_
204         REFIID riid,
205         void** ppvObject) PURE;
206
207     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
208
209     STDMETHOD_(ULONG,Release)(THIS) PURE;
210
211     /*** ITextHost methods ***/
212     STDMETHOD_(HDC,TxGetDC)( THIS
213         ) PURE;
214
215     STDMETHOD_(INT,TxReleaseDC)( THIS_
216         HDC hdc) PURE;
217
218     STDMETHOD_(BOOL,TxShowScrollBar)( THIS_
219         INT fnBar,
220         BOOL fShow) PURE;
221
222     STDMETHOD_(BOOL,TxEnableScrollBar)( THIS_
223         INT fuSBFlags,
224         INT fuArrowflags) PURE;
225
226     STDMETHOD_(BOOL,TxSetScrollRange)( THIS_
227         INT fnBar,
228         LONG nMinPos,
229         INT nMaxPos,
230         BOOL fRedraw) PURE;
231
232     STDMETHOD_(BOOL,TxSetScrollPos)( THIS_
233         INT fnBar,
234         INT nPos,
235         BOOL fRedraw) PURE;
236
237     STDMETHOD_(void,TxInvalidateRect)( THIS_
238         LPCRECT prc,
239         BOOL fMode) PURE;
240
241     STDMETHOD_(void,TxViewChange)( THIS_
242         BOOL fUpdate) PURE;
243
244     STDMETHOD_(BOOL,TxCreateCaret)( THIS_
245         HBITMAP hbmp,
246         INT xWidth,
247         INT yHeight) PURE;
248
249     STDMETHOD_(BOOL,TxShowCaret)( THIS_
250         BOOL fShow) PURE;
251
252     STDMETHOD_(BOOL,TxSetCarentPos)( THIS_
253         INT x,
254         INT y) PURE;
255
256     STDMETHOD_(BOOL,TxSetTimer)( THIS_
257         UINT idTimer,
258         UINT uTimeout) PURE;
259
260     STDMETHOD_(void,TxKillTimer)( THIS_
261         UINT idTimer) PURE;
262
263     STDMETHOD_(void,TxScrollWindowEx)( THIS_
264         INT dx,
265         INT dy,
266         LPCRECT lprcScroll,
267         LPCRECT lprcClip,
268         HRGN hRgnUpdate,
269         LPRECT lprcUpdate,
270         UINT fuScroll) PURE;
271
272     STDMETHOD_(void,TxSetCapture)( THIS_
273         BOOL fCapture) PURE;
274
275     STDMETHOD_(void,TxSetFocus)( THIS
276         ) PURE;
277
278     STDMETHOD_(void,TxSetCursor)( THIS_
279         HCURSOR hcur,
280         BOOL fText) PURE;
281
282     STDMETHOD_(BOOL,TxScreenToClient)( THIS_
283         LPPOINT lppt) PURE;
284
285     STDMETHOD_(BOOL,TxClientToScreen)( THIS_
286         LPPOINT lppt) PURE;
287
288     STDMETHOD(TxActivate)( THIS_
289         LONG* plOldState) PURE;
290
291     STDMETHOD(TxDeactivate)( THIS_
292         LONG lNewState) PURE;
293
294     STDMETHOD(TxGetClientRect)( THIS_
295         LPRECT prc) PURE;
296
297     STDMETHOD(TxGetViewInset)( THIS_
298         LPRECT prc) PURE;
299
300     STDMETHOD(TxGetCharFormat)( THIS_
301         const CHARFORMATW** ppCF) PURE;
302
303     STDMETHOD(TxGetParaFormat)( THIS_
304         const PARAFORMAT** ppPF) PURE;
305
306     STDMETHOD_(COLORREF,TxGetSysColor)( THIS_
307         int nIndex) PURE;
308
309     STDMETHOD(TxGetBackStyle)( THIS_
310         TXTBACKSTYLE* pStyle) PURE;
311
312     STDMETHOD(TxGetMaxLength)( THIS_
313         DWORD* plength) PURE;
314
315     STDMETHOD(TxGetScrollbars)( THIS_
316         DWORD* pdwScrollBar) PURE;
317
318     STDMETHOD(TxGetPasswordChar)( THIS_
319         WCHAR* pch) PURE;
320
321     STDMETHOD(TxGetAcceleratorPos)( THIS_
322         LONG* pch) PURE;
323
324     STDMETHOD(TxGetExtent)( THIS_
325         LPSIZEL lpExtent) PURE;
326
327     STDMETHOD(OnTxCharFormatChange)( THIS_
328         const CHARFORMATW* pcf) PURE;
329
330     STDMETHOD(OnTxParaFormatChange)( THIS_
331         const PARAFORMAT* ppf) PURE;
332
333     STDMETHOD(TxGetPropertyBits)( THIS_
334         DWORD dwMask,
335         DWORD* pdwBits) PURE;
336
337     STDMETHOD(TxNotify)( THIS_
338         DWORD iNotify,
339         void* pv) PURE;
340
341     STDMETHOD_(HIMC,TxImmGetContext)( THIS
342         ) PURE;
343
344     STDMETHOD_(void,TxImmReleaseContext)( THIS_
345         HIMC himc) PURE;
346
347     STDMETHOD(TxGetSelectionBarWidth)( THIS_
348         LONG* lSelBarWidth) PURE;
349
350 };
351
352 #ifdef COBJMACROS
353 /*** IUnknown methods ***/
354 #define ITextHost_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
355 #define ITextHost_AddRef(p) (p)->lpVtbl->AddRef(p)
356 #define ITextHost_Release(p) (p)->lpVtbl->Release(p)
357 /*** ITextHost methods ***/
358 #define ITextHost_TxGetDC(p) (p)->lpVtbl->TxGetDC(p)
359 #define ITextHost_TxReleaseDC(p,a) (p)->lpVtbl->TxReleaseDC(p,a)
360 #define ITextHost_TxShowScrollBar(p,a,b) (p)->lpVtbl->TxShowScrollBar(p,a,b)
361 #define ITextHost_TxEnableScrollBar(p,a,b) (p)->lpVtbl->TxEnableScrollBar(p,a,b)
362 #define ITextHost_TxSetScrollRange(p,a,b,c,d) (p)->lpVtbl->TxSetScrollRange(p,a,b,c,d)
363 #define ITextHost_TxSetScrollPos(p,a,b,c) (p)->lpVtbl->TxSetScrollPos(p,a,b,c)
364 #define ITextHost_TxInvalidateRect(p,a,b) (p)->lpVtbl->TxInvalidateRect(p,a,b)
365 #define ITextHost_TxViewChange(p,a) (p)->lpVtbl->TxViewChange(p,a)
366 #define ITextHost_TxCreateCaret(p,a,b,c) (p)->lpVtbl->TxCreateCaret(p,a,b,c)
367 #define ITextHost_TxShowCaret(p,a) (p)->lpVtbl->TxShowCaret(p,a)
368 #define ITextHost_TxSetCarentPos(p,a,b) (p)->lpVtbl->TxSetCarentPos(p,a,b)
369 #define ITextHost_TxSetTimer(p,a,b) (p)->lpVtbl->TxSetTimer(p,a,b)
370 #define ITextHost_TxKillTimer(p,a) (p)->lpVtbl->TxKillTimer(p,a)
371 #define ITextHost_TxScrollWindowEx(p,a,b,c,d,e,f,g) (p)->lpVtbl->TxScrollWindowEx(p,a,b,c,d,e,f,g)
372 #define ITextHost_TxSetCapture(p,a) (p)->lpVtbl->TxSetCapture(p,a)
373 #define ITextHost_TxSetFocus(p) (p)->lpVtbl->TxSetFocus(p)
374 #define ITextHost_TxSetCursor(p,a,b) (p)->lpVtbl->TxSetCursor(p,a,b)
375 #define ITextHost_TxScreenToClient(p,a) (p)->lpVtbl->TxScreenToClient(p,a)
376 #define ITextHost_TxClientToScreen(p,a) (p)->lpVtbl->TxClientToScreen(p,a)
377 #define ITextHost_TxActivate(p,a) (p)->lpVtbl->TxActivate(p,a)
378 #define ITextHost_TxDeactivate(p,a) (p)->lpVtbl->TxDeactivate(p,a)
379 #define ITextHost_TxGetClientRect(p,a) (p)->lpVtbl->TxGetClientRect(p,a)
380 #define ITextHost_TxGetViewInset(p,a) (p)->lpVtbl->TxGetViewInset(p,a)
381 #define ITextHost_TxGetCharFormat(p,a) (p)->lpVtbl->TxGetCharFormat(p,a)
382 #define ITextHost_TxGetParaFormat(p,a) (p)->lpVtbl->TxGetParaFormat(p,a)
383 #define ITextHost_TxGetSysColor(p,a) (p)->lpVtbl->TxGetSysColor(p,a)
384 #define ITextHost_TxGetBackStyle(p,a) (p)->lpVtbl->TxGetBackStyle(p,a)
385 #define ITextHost_TxGetMaxLength(p,a) (p)->lpVtbl->TxGetMaxLength(p,a)
386 #define ITextHost_TxGetScrollbars(p,a) (p)->lpVtbl->TxGetScrollbars(p,a)
387 #define ITextHost_TxGetPasswordChar(p,a) (p)->lpVtbl->TxGetPasswordChar(p,a)
388 #define ITextHost_TxGetAcceleratorPos(p,a) (p)->lpVtbl->TxGetAcceleratorPos(p,a)
389 #define ITextHost_TxGetExtent(p,a) (p)->lpVtbl->TxGetExtent(p,a)
390 #define ITextHost_OnTxCharFormatChange(p,a) (p)->lpVtbl->OnTxCharFormatChange(p,a)
391 #define ITextHost_OnTxParaFormatChange(p,a) (p)->lpVtbl->OnTxParaFormatChange(p,a)
392 #define ITextHost_TxGetPropertyBits(p,a,b) (p)->lpVtbl->TxGetPropertyBits(p,a,b)
393 #define ITextHost_TxNotify(p,a,b) (p)->lpVtbl->TxNotify(p,a,b)
394 #define ITextHost_TxImmGetContext(p) (p)->lpVtbl->TxImmGetContext(p)
395 #define ITextHost_TxImmReleaseContext(p,a) (p)->lpVtbl->TxImmReleaseContext(p,a)
396 #define ITextHost_TxGetSelectionBarWidth(p,a) (p)->lpVtbl->TxGetSelectionBarWidth(p,a)
397 #endif
398
399 #undef INTERFACE
400
401 #ifdef __cplusplus
402 }
403 #endif
404
405 #endif /* _TEXTSERV_H */