diff --git a/include/textstor.idl b/include/textstor.idl index 86a01e0a1e5..0d75d1720b2 100644 --- a/include/textstor.idl +++ b/include/textstor.idl @@ -30,6 +30,10 @@ const DWORD TS_SS_REGIONS = 0x002; const DWORD TS_SS_TRANSITORY = 0x004; const DWORD TS_SS_NOHIDDENTEXT = 0x008; +typedef [uuid(05fcf85b-5e9c-4c3e-ab71-29471d4f38e7)] enum { TS_AE_NONE, TS_AE_START, TS_AE_END } TsActiveSelEnd; +typedef [uuid(033b0df0-f193-4170-b47b-141afc247878)] enum { TS_RT_PLAIN, TS_RT_HIDDEN, TS_RT_OPAQUE } TsRunType; +typedef [uuid(ef3457d9-8446-49a7-a9e6-b50d9d5f3fd9)] GUID TS_ATTRID; + typedef [uuid(fec4f516-c503-45b1-a5fd-7a3d8ab07049)] struct TS_STATUS { DWORD dwDynamicFlags; @@ -43,11 +47,35 @@ typedef [uuid(f3181bd6-bcf0-41d3-a81c-474b17ec38fb)] struct TS_TEXTCHANGE LONG acpNewEnd; } TS_TEXTCHANGE; -typedef [uuid(ef3457d9-8446-49a7-a9e6-b50d9d5f3fd9)] GUID TS_ATTRID; +typedef [uuid(7ecc3ffa-8f73-4d91-98ed-76f8ac5b1600)] struct TS_SELECTIONSTYLE +{ + TsActiveSelEnd ase; + BOOL fInterimChar; +} TS_SELECTIONSTYLE; + +typedef [uuid(c4b9c33b-8a0d-4426-bebe-d444a4701fe9)] struct TS_SELECTION_ACP +{ + LONG acpStart; + LONG acpEnd; + TS_SELECTIONSTYLE style; +} TS_SELECTION_ACP; + +typedef [uuid(a6231949-37c5-4b74-a24e-2a26c327201d)] struct TS_RUNINFO +{ + ULONG uCount; + TsRunType type; +} TS_RUNINFO; + +typedef [uuid(2cc2b33f-1174-4507-b8d9-5bc0eb37c197)] struct TS_ATTRVAL +{ + TS_ATTRID idAttr; + DWORD dwOverlapId; + VARIANT varValue; +} TS_ATTRVAL; + typedef [uuid(7899d7c4-5f07-493c-a89a-fac8e777f476)] enum { TS_LC_CREATE, TS_LC_CHANGE, TS_LC_DESTROY } TsLayoutCode; typedef [uuid(1faf509e-44c1-458e-950a-38a96705a62b)] DWORD TsViewCookie; - [ object, uuid(22d44c94-a419-4542-a272-ae26093ececf), @@ -81,3 +109,160 @@ interface ITextStoreACPSink : IUnknown HRESULT OnEndEditTransaction(); }; + +[ + object, + uuid(28888fe3-c2a0-483a-a3ea-8cb1ce51ff3d), + pointer_default(unique) +] +interface ITextStoreACP : IUnknown +{ + HRESULT AdviseSink( + [in] REFIID riid, + [in, iid_is(riid)] IUnknown *punk, + [in] DWORD dwMask); + + HRESULT UnadviseSink( + [in] IUnknown *punk); + + HRESULT RequestLock( + [in] DWORD dwLockFlags, + [out] HRESULT *phrSession); + + HRESULT GetStatus( + [out] TS_STATUS *pdcs); + + HRESULT QueryInsert( + [in] LONG acpTestStart, + [in] LONG acpTestEnd, + [in] ULONG cch, + [out] LONG *pacpResultStart, + [out] LONG *pacpResultEnd); + + HRESULT GetSelection( + [in] ULONG ulIndex, + [in] ULONG ulCount, + [out, size_is(ulCount), length_is(*pcFetched)] TS_SELECTION_ACP *pSelection, + [out] ULONG *pcFetched); + + HRESULT SetSelection( + [in] ULONG ulCount, + [in, size_is(ulCount)] const TS_SELECTION_ACP *pSelection); + + HRESULT GetText( + [in] LONG acpStart, + [in] LONG acpEnd, + [out, size_is(cchPlainReq), length_is(*pcchPlainRet)] WCHAR *pchPlain, + [in] ULONG cchPlainReq, + [out] ULONG *pcchPlainRet, + [out, size_is(cRunInfoReq), length_is(*pcRunInfoRet)] TS_RUNINFO *prgRunInfo, + [in] ULONG cRunInfoReq, + [out] ULONG *pcRunInfoRet, + [out] LONG *pacpNext); + + HRESULT SetText( + [in] DWORD dwFlags, + [in] LONG acpStart, + [in] LONG acpEnd, + [in, size_is(cch)] const WCHAR *pchText, + [in] ULONG cch, + [out] TS_TEXTCHANGE *pChange); + + HRESULT GetFormattedText( + [in] LONG acpStart, + [in] LONG acpEnd, + [out] IDataObject **ppDataObject); + + HRESULT GetEmbedded( + [in] LONG acpPos, + [in] REFGUID rguidService, + [in] REFIID riid, + [out, iid_is(riid)] IUnknown **ppunk); + + HRESULT QueryInsertEmbedded( + [in] const GUID *pguidService, + [in] const FORMATETC *pFormatEtc, + [out] BOOL *pfInsertable); + + HRESULT InsertEmbedded( + [in] DWORD dwFlags, + [in] LONG acpStart, + [in] LONG acpEnd, + [in] IDataObject *pDataObject, + [out] TS_TEXTCHANGE *pChange); + + + HRESULT InsertTextAtSelection( + [in] DWORD dwFlags, + [in, size_is(cch)] const WCHAR *pchText, + [in] ULONG cch, + [out] LONG *pacpStart, + [out] LONG *pacpEnd, + [out] TS_TEXTCHANGE *pChange); + + HRESULT InsertEmbeddedAtSelection( + [in] DWORD dwFlags, + [in] IDataObject *pDataObject, + [out] LONG *pacpStart, + [out] LONG *pacpEnd, + [out] TS_TEXTCHANGE *pChange); + + HRESULT RequestSupportedAttrs( + [in] DWORD dwFlags, + [in] ULONG cFilterAttrs, + [in, size_is(cFilterAttrs), unique] const TS_ATTRID *paFilterAttrs); + + HRESULT RequestAttrsAtPosition( + [in] LONG acpPos, + [in] ULONG cFilterAttrs, + [in, size_is(cFilterAttrs), unique] const TS_ATTRID *paFilterAttrs, + [in] DWORD dwFlags); + + HRESULT RequestAttrsTransitioningAtPosition( + [in] LONG acpPos, + [in] ULONG cFilterAttrs, + [in, size_is(cFilterAttrs), unique] const TS_ATTRID *paFilterAttrs, + [in] DWORD dwFlags); + + HRESULT FindNextAttrTransition( + [in] LONG acpStart, + [in] LONG acpHalt, + [in] ULONG cFilterAttrs, + [in, size_is(cFilterAttrs), unique] const TS_ATTRID *paFilterAttrs, + [in] DWORD dwFlags, + [out] LONG *pacpNext, + [out] BOOL *pfFound, + [out] LONG *plFoundOffset); + + HRESULT RetrieveRequestedAttrs( + [in] ULONG ulCount, + [out, size_is(ulCount), length_is(*pcFetched)] TS_ATTRVAL *paAttrVals, + [out] ULONG *pcFetched); + + HRESULT GetEndACP( + [out] LONG *pacp); + + HRESULT GetActiveView( + [out] TsViewCookie *pvcView); + + HRESULT GetACPFromPoint( + [in] TsViewCookie vcView, + [in] const POINT *ptScreen, + [in] DWORD dwFlags, + [out] LONG *pacp); + + HRESULT GetTextExt( + [in] TsViewCookie vcView, + [in] LONG acpStart, + [in] LONG acpEnd, + [out] RECT *prc, + [out] BOOL *pfClipped); + + HRESULT GetScreenExt( + [in] TsViewCookie vcView, + [out] RECT *prc); + + HRESULT GetWnd( + [in] TsViewCookie vcView, + [out] HWND *phwnd); +};