HZfreepy.h
上传用户:shdz666
上传日期:2007-01-03
资源大小:566k
文件大小:4k
源码类别:

输入法编程

开发平台:

Visual C++

  1. /*
  2.  * Copyright (C) 1999.4  Li ZhenChun
  3.  *
  4.  * This program is free software; you can redistribute it and/or modify
  5.  * it under the terms of the GNU General Public License as published by
  6.  * the Free Software Foundation; either version 2 of the License; or
  7.  * (at your option) any later version.
  8.  *
  9.  * This program is distributed in the hope that is will be useful, but
  10.  * WITHOUT ANY WARRANTY; without even the implied warranty of 
  11.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  12.  * General Public License for more details.
  13.  *
  14.  * You should have received a copy of the GNU General Public License
  15.  * along with this program; if not, write to the Free Software
  16.  * Foundation, Inc., 675 Mass Ave, Cambridge, M A 02139, USA.
  17.  *
  18.  * Author: Li ZhenChun  email: zhchli@163.net or zhchli@126.com
  19.  * 
  20.  */
  21. #ifndef _HZFREEPY_H_
  22. #define _HZFREEPY_H_
  23. /*for debug*************************/
  24. //#define _MY_DEBUG
  25. #ifdef _MY_DEBUG
  26. #define DEBUGLOGFILE  _T("d:\work\c\freepy\release\debug.log")
  27. #define DebugLog(n,f) (void)((DebugLogFile != NULL && nDebugLevel & n) ? (_ftprintf f,fflush(DebugLogFile)) : 0)
  28. #else
  29. #define DebugLog(n,f) (void)0
  30. #endif //_MY_DEBUG
  31. /***********************************/
  32. #define TABFILENAME _T("freepy.tab")
  33. #define SYSPHRASEFILENAME _T("freepysys.dic")
  34. #define USRPHRASEFILENAME _T("freepyusr.dic")
  35. #define MAPFILENAME _T("FreePYShareMemory")
  36. #define MAPFILESIZE  (4096*1500) //6M
  37. /* for limit of FREEPYIME */
  38. #define MAXCOMPSIZE             80
  39. #define MAXCANDSTRSIZE          32
  40. #define MAXCANDSTRNUM           40
  41. #define SELECT_FORWARD 0x01
  42. #define SELECT_BACKWARD 0x02
  43. #define CAND_PAGESIZE 10
  44. #define MAX_PHRASE_LEN 8
  45. #define MAX_PY_LEN 8
  46. #define MAX_PY_NUM 420
  47. #define MAX_EACH_PY_NUM 41
  48. #define MAX_SELECT_PH 500
  49. typedef struct {
  50. WORD wKey;
  51. TCHAR szPY[MAX_PY_LEN];
  52. } PINYIN,FAR *LPPINYIN;
  53. extern LPVOID  lpMapFileBase;
  54. #ifndef _NO_EXTERN_
  55. extern FILE *DebugLogFile;
  56. extern int nDebugLevel;
  57. extern PINYIN  aPYTab[][MAX_EACH_PY_NUM];
  58. extern LPTSTR  alpHZTab[];
  59. extern TCHAR   aPunct[][MAXCANDSTRNUM][MAXCANDSTRSIZE];
  60. extern DWORD   dwMapFileOffset;
  61. extern DWORD   dwMapFileUsrOffset;
  62. extern WORD    wMapCount;
  63. extern HANDLE  hMapFile;
  64. #endif _NO_EXTERN_
  65. typedef struct _HZPH {
  66. TCHAR szHZ[2*(MAX_PHRASE_LEN+1)];
  67. DWORD dwAttrib;
  68. struct _HZPH __based(lpMapFileBase) *lpNext;
  69. } HZPH, FAR *LPHZPH;
  70. typedef struct _KEYPH {
  71. SHORT wLen;
  72. BYTE abKey[MAX_PHRASE_LEN+1];
  73. HZPH __based(lpMapFileBase) *lpHZPH;
  74. struct _KEYPH __based(lpMapFileBase) *lpNext;
  75. } KEYPH, FAR *LPKEYPH;
  76. typedef struct {
  77. KEYPH *lpKeyPH;
  78. HZPH *lpHZPH;
  79. } PHRASE, FAR *LPPHRASE;
  80. typedef struct {
  81. LPTSTR lpHZ;
  82. WORD wKey;
  83. WORD wLen;
  84. } HANZI, FAR *LPHANZI;
  85. typedef struct {
  86. TCHAR szPaintCompStr[MAXCOMPSIZE];
  87. TCHAR szConvCompStr[MAXCOMPSIZE];
  88. TCHAR szPreResultStr[MAXCOMPSIZE];
  89. TCHAR szPYArray[2*MAX_PHRASE_LEN][MAXCOMPSIZE];
  90. SHORT wEditCaret;
  91. SHORT wUnConvPos;
  92. WORD wPYArrayLen;
  93. WORD wPYArrayCurPos;
  94. } FREEPYCOMP, FAR *LPFREEPYCOMP;
  95. typedef struct {
  96. HANZI aHanZi[MAX_EACH_PY_NUM];
  97. PHRASE aPhrase[MAX_SELECT_PH];
  98. WORD wPhraseNum; //means the number of phrase candadate.
  99. WORD wHZNum; // means the number of struct HANZI candadate.
  100. SHORT awBeforePos[2];
  101. SHORT awCurrentPos[2];
  102. WORD wSelectDirect;
  103. WORD wSelectStatus; // 0 means select hanzi, 1 means select phrase.
  104. BYTE abKey[MAX_PHRASE_LEN+1];
  105. WORD wKeyLen;
  106. } FREEPYCAND, FAR *LPFREEPYCAND;
  107. //HZmodenormal.c
  108. BOOL CharHandleNormal( HIMC,WORD,LONG);
  109. BOOL AddChar( HIMC, WORD, WORD);
  110. BOOL ForwardPage(HIMC);
  111. BOOL BackwardPage(HIMC);
  112. BOOL SelectCand(HIMC,WORD);
  113. BOOL DeletePhrase(HIMC,WORD);
  114. //HZutil.c
  115. WORD ParsePY(LPTSTR, LPTSTR, WORD);
  116. void ConvertPY(LPTSTR,WORD,WORD,LPFREEPYCAND);
  117. WORD CreateCandStr(LPFREEPYCAND , WORD , LPTSTR,WORD);
  118. void CreatePaintStr(LPTSTR,WORD,WORD,LPTSTR,LPTSTR );
  119. void SortPhrase(LPPHRASE, WORD);
  120. WORD EffectPYArrayLen( LPTSTR,WORD,WORD);
  121. WORD CalculatePosSpan(LPTSTR,WORD ,WORD,WORD);
  122. SHORT CalculateUnConvPos(LPTSTR,WORD ,WORD,LPTSTR);
  123. //HZlib.c
  124. void InitDictionary();
  125. void DestroyDictionary();
  126. void SavePhToMapFile(LPTSTR,LPBYTE,WORD,WORD);
  127. WORD QueryPhrase(LPBYTE ,WORD,LPKEYPH *);
  128. //HZspecial.c
  129. BOOL RepeatPreResult(HIMC );
  130. BOOL GeneratePunct(HIMC, WORD);
  131. //HZmodephtoch.c
  132. BOOL CharHandlePhToCh( HIMC,WORD,LONG);
  133. //HZmodei.c
  134. BOOL CharHandleI( HIMC,WORD,LONG);
  135. //HZmodeu.c
  136. BOOL CharHandleU( HIMC,WORD,LONG);
  137. //HZmodev.c
  138. BOOL CharHandleV( HIMC,WORD,LONG);
  139. #endif /* _HZFREEPY_H_ */