push 7b30519979490489283b8c9fd6a7de5d4bea772e
[wine/hacks.git] / include / textserv.h
blob7a0cfbf4648cbf13befff1822ebfbb8ed5f5f434
1 /*
2 * Copyright (C) 2005 Mike McCormack
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.
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.
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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 #ifndef _TEXTSERV_H
20 #define _TEXTSERV_H
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
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);
30 /*****************************************************************************
31 * ITextServices interface
33 #define INTERFACE ITextServices
34 DECLARE_INTERFACE_(ITextServices,IUnknown)
36 /*** IUnknown methods ***/
37 STDMETHOD(QueryInterface)(THIS_
38 REFIID riid,
39 void** ppvObject) PURE;
41 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
43 STDMETHOD_(ULONG,Release)(THIS) PURE;
45 /*** ITextServices methods ***/
47 STDMETHOD(TxSendMessage)( THIS_
48 UINT msg, WPARAM wparam, LPARAM lparam, LRESULT* plresult) PURE;
50 STDMETHOD(TxDraw)( THIS_
51 DWORD dwDrawAspect,
52 LONG lindex,
53 void* pvAspect,
54 DVTARGETDEVICE* ptd,
55 HDC hdcDraw,
56 HDC hicTargetDev,
57 LPCRECTL lprcBounds,
58 LPCRECTL lprcWBounds,
59 LPRECT lprcUpdate,
60 BOOL (CALLBACK * pfnContinue)(DWORD),
61 DWORD dwContinue,
62 LONG lViewId) PURE;
64 STDMETHOD(TxGetHScroll)( THIS_
65 LONG* plMin,
66 LONG* plMax,
67 LONG* plPos,
68 LONG* plPage,
69 BOOL* pfEnabled) PURE;
71 STDMETHOD(TxGetVScroll)( THIS_
72 LONG* plMin,
73 LONG* plMax,
74 LONG* plPos,
75 LONG* plPage,
76 BOOL* pfEnabled) PURE;
78 STDMETHOD(OnTxSetCursor)( THIS_
79 DWORD dwDrawAspect,
80 LONG lindex,
81 void* pvAspect,
82 DVTARGETDEVICE* ptd,
83 HDC hdcDraw,
84 HDC hicTargetDev,
85 LPCRECT lprcClient,
86 INT x,
87 INT y) PURE;
89 STDMETHOD(TxQueryHitPoint)( THIS_
90 DWORD dwDrawAspect,
91 LONG lindex,
92 void* pvAspect,
93 DVTARGETDEVICE* ptd,
94 HDC hdcDraw,
95 HDC hicTargetDev,
96 LPCRECT lprcClient,
97 INT x,
98 INT y,
99 DWORD* pHitResult) PURE;
101 STDMETHOD(OnTxInplaceActivate)( THIS_
102 LPCRECT prcClient) PURE;
104 STDMETHOD(OnTxInplaceDeactivate)( THIS ) PURE;
106 STDMETHOD(OnTxUIActivate)( THIS ) PURE;
108 STDMETHOD(OnTxUIDeactivate)( THIS ) PURE;
110 STDMETHOD(TxGetText)( THIS_
111 BSTR* pbstrText) PURE;
113 STDMETHOD(TxSetText)( THIS_
114 LPCWSTR pszText) PURE;
116 STDMETHOD(TxGetCurrentTargetX)( THIS_
117 LONG* x) PURE;
119 STDMETHOD(TxGetBaseLinePos)( THIS_
120 LONG* x) PURE;
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;
132 STDMETHOD(TxGetDropTarget)( THIS_
133 IDropTarget** ppDropTarget) PURE;
135 STDMETHOD(OnTxPropertyBitsChange)( THIS_
136 DWORD dwMask,
137 DWORD dwBits) PURE;
139 STDMETHOD(TxGetCachedSize)( THIS_
140 DWORD* pdwWidth,
141 DWORD* pdwHeight) PURE;
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 #endif
152 #undef INTERFACE
154 typedef enum _TXTBACKSTYLE {
155 TXTBACK_TRANSPARENT = 0,
156 TXTBACK_OPAQUE
157 } TXTBACKSTYLE;
159 enum TXTHITRESULT {
160 TXTHITRESULT_NOHIT = 0,
161 TXTHITRESULT_TRANSPARENT = 1,
162 TXTHITRESULT_CLOSE = 2,
163 TXTHITRESULT_HIT = 3
166 enum TXTNATURALSIZE {
167 TXTNS_FITTOCONTENT = 1,
168 TXTNS_ROUNDTOLINE = 2
171 enum TXTVIEW {
172 TXTVIEW_ACTIVE = 0,
173 TXTVIEW_INACTIVE = 1
176 #define TXTBIT_RICHTEXT 0x000001
177 #define TXTBIT_MULTILINE 0x000002
178 #define TXTBIT_READONLY 0x000004
179 #define TXTBIT_SHOWACCELERATOR 0x000008
180 #define TXTBIT_USEPASSWORD 0x000010
181 #define TXTBIT_HIDESELECTION 0x000020
182 #define TXTBIT_SAVESELECTION 0x000040
183 #define TXTBIT_AUTOWORDSEL 0x000080
184 #define TXTBIT_VERTICAL 0x000100
185 #define TXTBIT_SELBARCHANGE 0x000200
186 #define TXTBIT_WORDWRAP 0x000400
187 #define TXTBIT_ALLOWBEEP 0x000800
188 #define TXTBIT_DISABLEDRAG 0x001000
189 #define TXTBIT_VIEWINSETCHANGE 0x002000
190 #define TXTBIT_BACKSTYLECHANGE 0x004000
191 #define TXTBIT_MAXLENGTHCHANGE 0x008000
192 #define TXTBIT_SCROLLBARCHANGE 0x010000
193 #define TXTBIT_CHARFORMATCHANGE 0x020000
194 #define TXTBIT_PARAFORMATCHANGE 0x040000
195 #define TXTBIT_EXTENTCHANGE 0x080000
196 #define TXTBIT_CLIENTRECTCHANGE 0x100000
197 #define TXTBIT_USECURRENTBKG 0x200000
199 /*****************************************************************************
200 * ITextHost interface
202 #define INTERFACE ITextHost
203 DECLARE_INTERFACE_(ITextHost,IUnknown)
205 /*** IUnknown methods ***/
206 STDMETHOD(QueryInterface)(THIS_
207 REFIID riid,
208 void** ppvObject) PURE;
210 STDMETHOD_(ULONG,AddRef)(THIS) PURE;
212 STDMETHOD_(ULONG,Release)(THIS) PURE;
214 /*** ITextHost methods ***/
215 STDMETHOD_(HDC,TxGetDC)( THIS
216 ) PURE;
218 STDMETHOD_(INT,TxReleaseDC)( THIS_
219 HDC hdc) PURE;
221 STDMETHOD_(BOOL,TxShowScrollBar)( THIS_
222 INT fnBar,
223 BOOL fShow) PURE;
225 STDMETHOD_(BOOL,TxEnableScrollBar)( THIS_
226 INT fuSBFlags,
227 INT fuArrowflags) PURE;
229 STDMETHOD_(BOOL,TxSetScrollRange)( THIS_
230 INT fnBar,
231 LONG nMinPos,
232 INT nMaxPos,
233 BOOL fRedraw) PURE;
235 STDMETHOD_(BOOL,TxSetScrollPos)( THIS_
236 INT fnBar,
237 INT nPos,
238 BOOL fRedraw) PURE;
240 STDMETHOD_(void,TxInvalidateRect)( THIS_
241 LPCRECT prc,
242 BOOL fMode) PURE;
244 STDMETHOD_(void,TxViewChange)( THIS_
245 BOOL fUpdate) PURE;
247 STDMETHOD_(BOOL,TxCreateCaret)( THIS_
248 HBITMAP hbmp,
249 INT xWidth,
250 INT yHeight) PURE;
252 STDMETHOD_(BOOL,TxShowCaret)( THIS_
253 BOOL fShow) PURE;
255 STDMETHOD_(BOOL,TxSetCaretPos)( THIS_
256 INT x,
257 INT y) PURE;
259 STDMETHOD_(BOOL,TxSetTimer)( THIS_
260 UINT idTimer,
261 UINT uTimeout) PURE;
263 STDMETHOD_(void,TxKillTimer)( THIS_
264 UINT idTimer) PURE;
266 STDMETHOD_(void,TxScrollWindowEx)( THIS_
267 INT dx,
268 INT dy,
269 LPCRECT lprcScroll,
270 LPCRECT lprcClip,
271 HRGN hRgnUpdate,
272 LPRECT lprcUpdate,
273 UINT fuScroll) PURE;
275 STDMETHOD_(void,TxSetCapture)( THIS_
276 BOOL fCapture) PURE;
278 STDMETHOD_(void,TxSetFocus)( THIS
279 ) PURE;
281 STDMETHOD_(void,TxSetCursor)( THIS_
282 HCURSOR hcur,
283 BOOL fText) PURE;
285 STDMETHOD_(BOOL,TxScreenToClient)( THIS_
286 LPPOINT lppt) PURE;
288 STDMETHOD_(BOOL,TxClientToScreen)( THIS_
289 LPPOINT lppt) PURE;
291 STDMETHOD(TxActivate)( THIS_
292 LONG* plOldState) PURE;
294 STDMETHOD(TxDeactivate)( THIS_
295 LONG lNewState) PURE;
297 STDMETHOD(TxGetClientRect)( THIS_
298 LPRECT prc) PURE;
300 STDMETHOD(TxGetViewInset)( THIS_
301 LPRECT prc) PURE;
303 STDMETHOD(TxGetCharFormat)( THIS_
304 const CHARFORMATW** ppCF) PURE;
306 STDMETHOD(TxGetParaFormat)( THIS_
307 const PARAFORMAT** ppPF) PURE;
309 STDMETHOD_(COLORREF,TxGetSysColor)( THIS_
310 int nIndex) PURE;
312 STDMETHOD(TxGetBackStyle)( THIS_
313 TXTBACKSTYLE* pStyle) PURE;
315 STDMETHOD(TxGetMaxLength)( THIS_
316 DWORD* plength) PURE;
318 STDMETHOD(TxGetScrollBars)( THIS_
319 DWORD* pdwScrollBar) PURE;
321 STDMETHOD(TxGetPasswordChar)( THIS_
322 WCHAR* pch) PURE;
324 STDMETHOD(TxGetAcceleratorPos)( THIS_
325 LONG* pch) PURE;
327 STDMETHOD(TxGetExtent)( THIS_
328 LPSIZEL lpExtent) PURE;
330 STDMETHOD(OnTxCharFormatChange)( THIS_
331 const CHARFORMATW* pcf) PURE;
333 STDMETHOD(OnTxParaFormatChange)( THIS_
334 const PARAFORMAT* ppf) PURE;
336 STDMETHOD(TxGetPropertyBits)( THIS_
337 DWORD dwMask,
338 DWORD* pdwBits) PURE;
340 STDMETHOD(TxNotify)( THIS_
341 DWORD iNotify,
342 void* pv) PURE;
344 STDMETHOD_(HIMC,TxImmGetContext)( THIS
345 ) PURE;
347 STDMETHOD_(void,TxImmReleaseContext)( THIS_
348 HIMC himc) PURE;
350 STDMETHOD(TxGetSelectionBarWidth)( THIS_
351 LONG* lSelBarWidth) PURE;
355 #ifdef COBJMACROS
356 /*** IUnknown methods ***/
357 #define ITextHost_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
358 #define ITextHost_AddRef(p) (p)->lpVtbl->AddRef(p)
359 #define ITextHost_Release(p) (p)->lpVtbl->Release(p)
360 #endif
362 #undef INTERFACE
364 HRESULT WINAPI CreateTextServices(IUnknown*,ITextHost*,IUnknown**);
366 typedef HRESULT (WINAPI *PCreateTextServices)(IUnknown*,ITextHost*,IUnknown**);
368 #ifdef __cplusplus
370 #endif
372 #endif /* _TEXTSERV_H */