Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

178 lines
4.2 KiB

  1. //
  2. // fnrecon.h
  3. //
  4. #ifndef FNRECON_H
  5. #define FNRECON_H
  6. #include "private.h"
  7. #include "immlist.h"
  8. #include "ctffunc.h"
  9. class CFunctionProvider;
  10. class CEditSession;
  11. class CRange;
  12. class CInputContext;
  13. HRESULT GrowEmptyRangeByOneCallback(TfEditCookie ec, ITfRange *range);
  14. class CFunction;
  15. typedef struct tag_BUILDOWNERRANGELISTQUEUEINFO
  16. {
  17. CFunction *pFunc;
  18. ITfRange *pRange;
  19. } BUILDOWNERRANGELISTQUEUEINFO;
  20. //
  21. // for PSEUDO_ESCB_SHIFTENDTORANGE
  22. //
  23. typedef struct tag_SHIFTENDTORANGEQUEUEITEM
  24. {
  25. ITfRange *pRange;
  26. ITfRange *pRangeTo;
  27. TfAnchor aPos;
  28. } SHIFTENDTORANGEQUEUEITEM;
  29. //
  30. // for PSEUDO_ESCB_GETSELECTION
  31. //
  32. typedef struct tag_GETSELECTIONQUEUEITEM
  33. {
  34. ITfRange **ppRange;
  35. } GETSELECTIONQUEUEITEM;
  36. //
  37. // for PSEUDO_ESCB_GETWHOLEDOCRANGE
  38. //
  39. typedef struct tag_GETWHOLEDOCRANGE
  40. {
  41. ITfRange **ppRange;
  42. } GETWHOLEDOCRANGE;
  43. //////////////////////////////////////////////////////////////////////////////
  44. //
  45. // CRangeOwnerList
  46. //
  47. //////////////////////////////////////////////////////////////////////////////
  48. class CRangeOwnerList : public CPtrCicListItem<CRangeOwnerList>
  49. {
  50. public:
  51. CRangeOwnerList(TfGuidAtom guidOwner, ITfRange *pRange, BOOL bDupOwner)
  52. {
  53. _pRange = pRange;
  54. _pRange->AddRef();
  55. _guidOwner = guidOwner;
  56. _bDupOwner = bDupOwner;
  57. }
  58. ~CRangeOwnerList()
  59. {
  60. _pRange->Release();
  61. SafeRelease(_pConvRange);
  62. }
  63. ITfRange *_pRange;
  64. TfGuidAtom _guidOwner;
  65. BOOL _bDupOwner;
  66. ITfRange *_pConvRange;
  67. };
  68. //////////////////////////////////////////////////////////////////////////////
  69. //
  70. // CFunction
  71. //
  72. //////////////////////////////////////////////////////////////////////////////
  73. class __declspec(novtable) CFunction : public CComObjectRootImmx
  74. {
  75. public:
  76. CFunction(CFunctionProvider *pFuncPrv);
  77. ~CFunction();
  78. HRESULT BuildOwnerRangeListCallback(TfEditCookie ec, CInputContext *pic, ITfRange *pRange);
  79. protected:
  80. void CleanUpOwnerRange();
  81. BOOL BuildOwnerRangeList(CInputContext *pic, ITfRange *pRange);
  82. CFunctionProvider *_pFuncPrv;
  83. CPtrCicList<CRangeOwnerList> _listRangeOwner;
  84. };
  85. //////////////////////////////////////////////////////////////////////////////
  86. //
  87. // CFnReconversion
  88. //
  89. //////////////////////////////////////////////////////////////////////////////
  90. class CFnReconversion : public ITfFnReconversion,
  91. public CFunction
  92. {
  93. public:
  94. CFnReconversion(CFunctionProvider *pFuncPrv);
  95. ~CFnReconversion();
  96. BEGIN_COM_MAP_IMMX(CFnReconversion)
  97. COM_INTERFACE_ENTRY(ITfFnReconversion)
  98. COM_INTERFACE_ENTRY(ITfFunction)
  99. END_COM_MAP_IMMX()
  100. IMMX_OBJECT_IUNKNOWN_FOR_ATL()
  101. //
  102. // ITfFunction
  103. //
  104. STDMETHODIMP GetDisplayName(BSTR *pbstrCand);
  105. //
  106. // ITfFnReconversion
  107. //
  108. STDMETHODIMP GetReconversion(ITfRange *pRange, ITfCandidateList **ppCandList);
  109. STDMETHODIMP QueryRange(ITfRange *pRange, ITfRange **ppNewRange, BOOL *pfConvertable);
  110. STDMETHODIMP Reconvert(ITfRange *pRange);
  111. private:
  112. typedef enum { RF_GETRECONVERSION,
  113. RF_RECONVERT,
  114. RF_QUERYRECONVERT } RECONVFUNC;
  115. HRESULT Internal_GetReconversion(ITfRange *pRange, ITfCandidateList **ppCandList, ITfRange **ppNewRange, RECONVFUNC rf, BOOL *pfConvertable);
  116. HRESULT QueryAndGetFunction(CInputContext *pic, ITfRange *pRange, ITfFnReconversion **ppFunc, ITfRange **ppRange);
  117. ITfFnReconversion *_pReconvCache;
  118. };
  119. //////////////////////////////////////////////////////////////////////////////
  120. //
  121. // CFnAbort
  122. //
  123. //////////////////////////////////////////////////////////////////////////////
  124. class CFnAbort : public ITfFnAbort,
  125. public CFunction
  126. {
  127. public:
  128. CFnAbort(CFunctionProvider *pFuncPrv);
  129. ~CFnAbort();
  130. BEGIN_COM_MAP_IMMX(CFnAbort)
  131. COM_INTERFACE_ENTRY(ITfFnAbort)
  132. COM_INTERFACE_ENTRY(ITfFunction)
  133. END_COM_MAP_IMMX()
  134. IMMX_OBJECT_IUNKNOWN_FOR_ATL()
  135. //
  136. // ITfFunction
  137. //
  138. STDMETHODIMP GetDisplayName(BSTR *pbstrCand);
  139. //
  140. // ITfFnAbort
  141. //
  142. STDMETHODIMP Abort(ITfContext *pic);
  143. };
  144. #endif // FNRECON_H