Reactos
at master 138 lines 4.6 kB view raw
1#pragma once 2 3DEFINE_GUID(IID_PRIV_CRANGE, 0xB68832F0, 0x34B9, 0x11D3, 0xA7, 0x45, 0x00, 0x50, 0x04, 0x0A, 0xB4, 0x07); 4 5class CRange 6 : public ITfRangeACP 7 , public ITfRangeAnchor 8 , public ITfSource 9{ 10public: 11 CRange( 12 _In_ ITfContext *context, 13 _In_ TfAnchor anchorStart, 14 _In_ TfAnchor anchorEnd); 15 virtual ~CRange(); 16 17 static HRESULT TF_SELECTION_to_TS_SELECTION_ACP(const TF_SELECTION *tf, TS_SELECTION_ACP *tsAcp); 18 19 // ** IUnknown methods ** 20 STDMETHODIMP QueryInterface(REFIID riid, void **ppvObj) override; 21 STDMETHODIMP_(ULONG) AddRef() override; 22 STDMETHODIMP_(ULONG) Release() override; 23 24 // ** ITfRange methods ** 25 STDMETHODIMP GetText( 26 _In_ TfEditCookie ec, 27 _In_ DWORD dwFlags, 28 _Out_ WCHAR *pchText, 29 _In_ ULONG cchMax, 30 _Out_ ULONG *pcch) override; 31 STDMETHODIMP SetText( 32 _In_ TfEditCookie ec, 33 _In_ DWORD dwFlags, 34 _In_ const WCHAR *pchText, 35 _In_ LONG cch) override; 36 STDMETHODIMP GetFormattedText( 37 _In_ TfEditCookie ec, 38 _Out_ IDataObject **ppDataObject) override; 39 STDMETHODIMP GetEmbedded( 40 _In_ TfEditCookie ec, 41 _In_ REFGUID rguidService, 42 _In_ REFIID riid, 43 _Out_ IUnknown **ppunk) override; 44 STDMETHODIMP InsertEmbedded( 45 _In_ TfEditCookie ec, 46 _In_ DWORD dwFlags, 47 _In_ IDataObject *pDataObject) override; 48 STDMETHODIMP ShiftStart( 49 _In_ TfEditCookie ec, 50 _In_ LONG cchReq, 51 _Out_ LONG *pcch, 52 _In_ const TF_HALTCOND *pHalt) override; 53 STDMETHODIMP ShiftEnd( 54 _In_ TfEditCookie ec, 55 _In_ LONG cchReq, 56 _Out_ LONG *pcch, 57 _In_ const TF_HALTCOND *pHalt) override; 58 STDMETHODIMP ShiftStartToRange( 59 _In_ TfEditCookie ec, 60 _In_ ITfRange *pRange, 61 _In_ TfAnchor aPos) override; 62 STDMETHODIMP ShiftEndToRange( 63 _In_ TfEditCookie ec, 64 _In_ ITfRange *pRange, 65 _In_ TfAnchor aPos) override; 66 STDMETHODIMP ShiftStartRegion( 67 _In_ TfEditCookie ec, 68 _In_ TfShiftDir dir, 69 _Out_ BOOL *pfNoRegion) override; 70 STDMETHODIMP ShiftEndRegion( 71 _In_ TfEditCookie ec, 72 _In_ TfShiftDir dir, 73 _Out_ BOOL *pfNoRegion) override; 74 STDMETHODIMP IsEmpty(_In_ TfEditCookie ec, _Out_ BOOL *pfEmpty) override; 75 STDMETHODIMP Collapse(_In_ TfEditCookie ec, _In_ TfAnchor aPos) override; 76 STDMETHODIMP IsEqualStart( 77 _In_ TfEditCookie ec, 78 _In_ ITfRange *pWith, 79 _In_ TfAnchor aPos, 80 _Out_ BOOL *pfEqual) override; 81 STDMETHODIMP IsEqualEnd( 82 _In_ TfEditCookie ec, 83 _In_ ITfRange *pWith, 84 _In_ TfAnchor aPos, 85 _Out_ BOOL *pfEqual) override; 86 STDMETHODIMP CompareStart( 87 _In_ TfEditCookie ec, 88 _In_ ITfRange *pWith, 89 _In_ TfAnchor aPos, 90 _Out_ LONG *plResult) override; 91 STDMETHODIMP CompareEnd( 92 _In_ TfEditCookie ec, 93 _In_ ITfRange *pWith, 94 _In_ TfAnchor aPos, 95 _Out_ LONG *plResult) override; 96 STDMETHODIMP AdjustForInsert( 97 _In_ TfEditCookie ec, 98 _In_ ULONG cchInsert, 99 _Out_ BOOL *pfInsertOk) override; 100 STDMETHODIMP GetGravity(_Out_ TfGravity *pgStart, _Out_ TfGravity *pgEnd) override; 101 STDMETHODIMP SetGravity( 102 _In_ TfEditCookie ec, 103 _In_ TfGravity gStart, 104 _In_ TfGravity gEnd) override; 105 STDMETHODIMP Clone(_Out_ ITfRange **ppClone) override; 106 STDMETHODIMP GetContext(_Out_ ITfContext **ppContext) override; 107 108 // ** ITfRangeACP methods ** 109 STDMETHODIMP GetExtent(_Out_ LONG *pacpAnchor, _Out_ LONG *pcch) override; 110 STDMETHODIMP SetExtent(_In_ LONG acpAnchor, _In_ LONG cch) override; 111 112 // ** ITfRangeAnchor methods ** 113 STDMETHODIMP GetExtent(_Out_ IAnchor **ppStart, _Out_ IAnchor **ppEnd) override; 114 STDMETHODIMP SetExtent(_In_ IAnchor *pAnchorStart, _In_ IAnchor *pAnchorEnd) override; 115 116 // ** ITfSource methods ** 117 STDMETHODIMP AdviseSink(_In_ REFIID riid, _In_ IUnknown *punk, _Out_ DWORD *pdwCookie) override; 118 STDMETHODIMP UnadviseSink(_In_ DWORD dwCookie) override; 119 120protected: 121 LONG m_cRefs; 122 ITfContext *m_context; 123 DWORD m_dwLockType; 124 TfAnchor m_anchorStart; 125 TfAnchor m_anchorEnd; 126 DWORD m_dwCookie; 127 128 CRange *_Clone(); 129 130 HRESULT _IsEqualX(TfEditCookie ec, BOOL bEnd, ITfRange *pWith, TfAnchor aPos, BOOL *pfEqual); 131 132 HRESULT _CompareX( 133 TfEditCookie ec, 134 BOOL bEnd, 135 ITfRange *pWidth, 136 TfAnchor aPos, 137 LONG *plResult); 138};