Reactos
at master 336 lines 11 kB view raw
1/* 2 * Copyright 2009 Aric Stewart, CodeWeavers 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 17 */ 18 19#ifndef DO_NO_IMPORTS 20import "oaidl.idl"; 21#endif 22 23cpp_quote("#define TS_E_INVALIDPOS MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0200)") 24cpp_quote("#define TS_E_NOLOCK MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0201)") 25cpp_quote("#define TS_E_NOOBJECT MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0202)") 26cpp_quote("#define TS_E_NOSERVICE MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0203)") 27cpp_quote("#define TS_E_NOINTERFACE MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0204)") 28cpp_quote("#define TS_E_NOSELECTION MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0205)") 29cpp_quote("#define TS_E_NOLAYOUT MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0206)") 30cpp_quote("#define TS_E_INVALIDPOINT MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0207)") 31cpp_quote("#define TS_E_SYNCHRONOUS MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0208)") 32cpp_quote("#define TS_E_READONLY MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0209)") 33cpp_quote("#define TS_E_FORMAT MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x020a)") 34 35cpp_quote("#define TS_S_ASYNC MAKE_HRESULT(SEVERITY_SUCCESS, FACILITY_ITF, 0x0300)") 36 37 38const ULONG TS_DEFAULT_SELECTION = ~0u; 39 40const DWORD TS_SD_READONLY = 0x001; 41const DWORD TS_SD_LOADING = 0x002; 42 43const DWORD TS_SS_DISJOINTSEL = 0x001; 44const DWORD TS_SS_REGIONS = 0x002; 45const DWORD TS_SS_TRANSITORY = 0x004; 46const DWORD TS_SS_NOHIDDENTEXT = 0x008; 47 48const DWORD TS_AS_TEXT_CHANGE = 0x01; 49const DWORD TS_AS_SEL_CHANGE = 0x02; 50const DWORD TS_AS_LAYOUT_CHANGE = 0x04; 51const DWORD TS_AS_ATTR_CHANGE = 0x08; 52const DWORD TS_AS_STATUS_CHANGE = 0x10; 53 54const DWORD TS_AS_ALL_SINKS = (TS_AS_TEXT_CHANGE | TS_AS_SEL_CHANGE | TS_AS_LAYOUT_CHANGE | TS_AS_ATTR_CHANGE | TS_AS_STATUS_CHANGE); 55 56const DWORD TS_LF_SYNC = 0x1; 57const DWORD TS_LF_READ = 0x2; 58const DWORD TS_LF_READWRITE = 0x6; 59 60const WCHAR TS_CHAR_EMBEDDED = 0xfffc; 61const WCHAR TS_CHAR_REGION = 0x0000; 62const WCHAR TS_CHAR_REPLACEMENT = 0xfffd; 63 64const DWORD TS_IAS_NOQUERY = 0x1; 65const DWORD TS_IAS_QUERYONLY = 0x2; 66 67typedef [uuid(05fcf85b-5e9c-4c3e-ab71-29471d4f38e7)] enum { TS_AE_NONE, TS_AE_START, TS_AE_END } TsActiveSelEnd; 68typedef [uuid(033b0df0-f193-4170-b47b-141afc247878)] enum { TS_RT_PLAIN, TS_RT_HIDDEN, TS_RT_OPAQUE } TsRunType; 69typedef [uuid(ef3457d9-8446-49a7-a9e6-b50d9d5f3fd9)] GUID TS_ATTRID; 70 71typedef [uuid(fec4f516-c503-45b1-a5fd-7a3d8ab07049)] struct TS_STATUS 72{ 73 DWORD dwDynamicFlags; 74 DWORD dwStaticFlags; 75} TS_STATUS; 76 77typedef [uuid(f3181bd6-bcf0-41d3-a81c-474b17ec38fb)] struct TS_TEXTCHANGE 78{ 79 LONG acpStart; 80 LONG acpOldEnd; 81 LONG acpNewEnd; 82} TS_TEXTCHANGE; 83 84typedef [uuid(7ecc3ffa-8f73-4d91-98ed-76f8ac5b1600)] struct TS_SELECTIONSTYLE 85{ 86 TsActiveSelEnd ase; 87 BOOL fInterimChar; 88} TS_SELECTIONSTYLE; 89 90typedef [uuid(c4b9c33b-8a0d-4426-bebe-d444a4701fe9)] struct TS_SELECTION_ACP 91{ 92 LONG acpStart; 93 LONG acpEnd; 94 TS_SELECTIONSTYLE style; 95} TS_SELECTION_ACP; 96 97typedef [uuid(a6231949-37c5-4b74-a24e-2a26c327201d)] struct TS_RUNINFO 98{ 99 ULONG uCount; 100 TsRunType type; 101} TS_RUNINFO; 102 103typedef [uuid(2cc2b33f-1174-4507-b8d9-5bc0eb37c197)] struct TS_ATTRVAL 104{ 105 TS_ATTRID idAttr; 106 DWORD dwOverlapId; 107 VARIANT varValue; 108} TS_ATTRVAL; 109 110typedef [uuid(7899d7c4-5f07-493c-a89a-fac8e777f476)] enum { TS_LC_CREATE, TS_LC_CHANGE, TS_LC_DESTROY } TsLayoutCode; 111typedef [uuid(1faf509e-44c1-458e-950a-38a96705a62b)] DWORD TsViewCookie; 112 113[ 114 object, 115 uuid(22d44c94-a419-4542-a272-ae26093ececf), 116 pointer_default(unique) 117] 118interface ITextStoreACPSink : IUnknown 119{ 120 HRESULT OnTextChange( 121 [in] DWORD dwFlags, 122 [in] const TS_TEXTCHANGE *pChange); 123 124 HRESULT OnSelectionChange(); 125 126 HRESULT OnLayoutChange( 127 [in] TsLayoutCode lcode, 128 [in] TsViewCookie vcView); 129 130 HRESULT OnStatusChange( 131 [in] DWORD dwFlags); 132 133 HRESULT OnAttrsChange( 134 [in] LONG acpStart, 135 [in] LONG acpEnd, 136 [in] ULONG cAttrs, 137 [in, size_is(cAttrs)] const TS_ATTRID *paAttrs); 138 139 HRESULT OnLockGranted( 140 [in] DWORD dwLockFlags); 141 142 HRESULT OnStartEditTransaction(); 143 144 HRESULT OnEndEditTransaction(); 145}; 146 147[ 148 object, 149 uuid(28888fe3-c2a0-483a-a3ea-8cb1ce51ff3d), 150 pointer_default(unique) 151] 152interface ITextStoreACP : IUnknown 153{ 154 HRESULT AdviseSink( 155 [in] REFIID riid, 156 [in, iid_is(riid)] IUnknown *punk, 157 [in] DWORD dwMask); 158 159 HRESULT UnadviseSink( 160 [in] IUnknown *punk); 161 162 HRESULT RequestLock( 163 [in] DWORD dwLockFlags, 164 [out] HRESULT *phrSession); 165 166 HRESULT GetStatus( 167 [out] TS_STATUS *pdcs); 168 169 HRESULT QueryInsert( 170 [in] LONG acpTestStart, 171 [in] LONG acpTestEnd, 172 [in] ULONG cch, 173 [out] LONG *pacpResultStart, 174 [out] LONG *pacpResultEnd); 175 176 HRESULT GetSelection( 177 [in] ULONG ulIndex, 178 [in] ULONG ulCount, 179 [out, size_is(ulCount), length_is(*pcFetched)] TS_SELECTION_ACP *pSelection, 180 [out] ULONG *pcFetched); 181 182 HRESULT SetSelection( 183 [in] ULONG ulCount, 184 [in, size_is(ulCount)] const TS_SELECTION_ACP *pSelection); 185 186 HRESULT GetText( 187 [in] LONG acpStart, 188 [in] LONG acpEnd, 189 [out, size_is(cchPlainReq), length_is(*pcchPlainRet)] WCHAR *pchPlain, 190 [in] ULONG cchPlainReq, 191 [out] ULONG *pcchPlainRet, 192 [out, size_is(cRunInfoReq), length_is(*pcRunInfoRet)] TS_RUNINFO *prgRunInfo, 193 [in] ULONG cRunInfoReq, 194 [out] ULONG *pcRunInfoRet, 195 [out] LONG *pacpNext); 196 197 HRESULT SetText( 198 [in] DWORD dwFlags, 199 [in] LONG acpStart, 200 [in] LONG acpEnd, 201 [in, size_is(cch)] const WCHAR *pchText, 202 [in] ULONG cch, 203 [out] TS_TEXTCHANGE *pChange); 204 205 HRESULT GetFormattedText( 206 [in] LONG acpStart, 207 [in] LONG acpEnd, 208 [out] IDataObject **ppDataObject); 209 210 HRESULT GetEmbedded( 211 [in] LONG acpPos, 212 [in] REFGUID rguidService, 213 [in] REFIID riid, 214 [out, iid_is(riid)] IUnknown **ppunk); 215 216 HRESULT QueryInsertEmbedded( 217 [in] const GUID *pguidService, 218 [in] const FORMATETC *pFormatEtc, 219 [out] BOOL *pfInsertable); 220 221 HRESULT InsertEmbedded( 222 [in] DWORD dwFlags, 223 [in] LONG acpStart, 224 [in] LONG acpEnd, 225 [in] IDataObject *pDataObject, 226 [out] TS_TEXTCHANGE *pChange); 227 228 229 HRESULT InsertTextAtSelection( 230 [in] DWORD dwFlags, 231 [in, size_is(cch)] const WCHAR *pchText, 232 [in] ULONG cch, 233 [out] LONG *pacpStart, 234 [out] LONG *pacpEnd, 235 [out] TS_TEXTCHANGE *pChange); 236 237 HRESULT InsertEmbeddedAtSelection( 238 [in] DWORD dwFlags, 239 [in] IDataObject *pDataObject, 240 [out] LONG *pacpStart, 241 [out] LONG *pacpEnd, 242 [out] TS_TEXTCHANGE *pChange); 243 244 HRESULT RequestSupportedAttrs( 245 [in] DWORD dwFlags, 246 [in] ULONG cFilterAttrs, 247 [in, size_is(cFilterAttrs), unique] const TS_ATTRID *paFilterAttrs); 248 249 HRESULT RequestAttrsAtPosition( 250 [in] LONG acpPos, 251 [in] ULONG cFilterAttrs, 252 [in, size_is(cFilterAttrs), unique] const TS_ATTRID *paFilterAttrs, 253 [in] DWORD dwFlags); 254 255 HRESULT RequestAttrsTransitioningAtPosition( 256 [in] LONG acpPos, 257 [in] ULONG cFilterAttrs, 258 [in, size_is(cFilterAttrs), unique] const TS_ATTRID *paFilterAttrs, 259 [in] DWORD dwFlags); 260 261 HRESULT FindNextAttrTransition( 262 [in] LONG acpStart, 263 [in] LONG acpHalt, 264 [in] ULONG cFilterAttrs, 265 [in, size_is(cFilterAttrs), unique] const TS_ATTRID *paFilterAttrs, 266 [in] DWORD dwFlags, 267 [out] LONG *pacpNext, 268 [out] BOOL *pfFound, 269 [out] LONG *plFoundOffset); 270 271 HRESULT RetrieveRequestedAttrs( 272 [in] ULONG ulCount, 273 [out, size_is(ulCount), length_is(*pcFetched)] TS_ATTRVAL *paAttrVals, 274 [out] ULONG *pcFetched); 275 276 HRESULT GetEndACP( 277 [out] LONG *pacp); 278 279 HRESULT GetActiveView( 280 [out] TsViewCookie *pvcView); 281 282 HRESULT GetACPFromPoint( 283 [in] TsViewCookie vcView, 284 [in] const POINT *ptScreen, 285 [in] DWORD dwFlags, 286 [out] LONG *pacp); 287 288 HRESULT GetTextExt( 289 [in] TsViewCookie vcView, 290 [in] LONG acpStart, 291 [in] LONG acpEnd, 292 [out] RECT *prc, 293 [out] BOOL *pfClipped); 294 295 HRESULT GetScreenExt( 296 [in] TsViewCookie vcView, 297 [out] RECT *prc); 298 299 HRESULT GetWnd( 300 [in] TsViewCookie vcView, 301 [out] HWND *phwnd); 302}; 303 304[ 305 object, 306 uuid(0feb7e34-5a60-4356-8ef7-abdec2ff7cf8), 307 pointer_default(unique) 308] 309interface IAnchor : IUnknown 310{ 311 const DWORD TS_SHIFT_COUNT_HIDDEN = 0x1; 312 const DWORD TS_SHIFT_HALT_HIDDEN = 0x2; 313 const DWORD TS_SHIFT_HALT_VISIBLE = 0x4; 314 const DWORD TS_SHIFT_COUNT_ONLY = 0x8; 315 316 const DWORD TS_CH_PRECEDING_DEL = 1; 317 const DWORD TS_CH_FOLLOWING_DEL = 2; 318 319 typedef [uuid(daa8601e-7695-426f-9bb7-498a6aa64b68)] 320 enum { TS_GR_BACKWARD = 0, TS_GR_FORWARD = 1 } TsGravity; 321 322 typedef [uuid(898e19df-4fb4-4af3-8daf-9b3c1145c79d)] 323 enum { TS_SD_BACKWARD = 0, TS_SD_FORWARD = 1 } TsShiftDir; 324 325 HRESULT SetGravity([in] TsGravity gravity); 326 HRESULT GetGravity([out] TsGravity *pgravity); 327 HRESULT IsEqual([in] IAnchor *paWith, [out] BOOL *pfEqual); 328 HRESULT Compare([in] IAnchor *paWith, [out] LONG *plResult); 329 HRESULT Shift([in] DWORD dwFlags, [in] LONG cchReq, [out] LONG *pcch, [in] IAnchor *paHaltAnchor); 330 HRESULT ShiftTo([in] IAnchor *paSite); 331 HRESULT ShiftRegion([in] DWORD dwFlags, [in] TsShiftDir dir, [out] BOOL *pfNoRegion); 332 HRESULT SetChangeHistoryMask([in] DWORD dwMask); 333 HRESULT GetChangeHistory([out] DWORD *pdwHistory); 334 HRESULT ClearChangeHistory(); 335 HRESULT Clone([out] IAnchor **ppaClone); 336};