⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pattree.h

📁 Symbian平台 数字键盘手机输入法源码
💻 H
📖 第 1 页 / 共 2 页
字号:
/***********************************************************************************************************************************************************************************************************/
// PATTREE.h 
// NexTAP核心接口
// Version 0.90A   2004.9.6
//
// 函数接口分4组
//		1.创建字典用
//		2.common,各类输入方式都有
//		3.chs click 中文按键输入,用中文字典
//		4.en 英文输入,用英文字典
//		5.chs handwriting 手写中文输入,用中文字典
//
// 调用接口步骤:
//		1.PATTREE_LoadStaticDic读取字典
//		2.调用NEXTAP_GetSentenceBufferSize或者NEXTAP_GetSentenceBufferSizeEN或者NEXTAP_GetSentenceBufferSizeHW取得工作缓冲区大小,分配内存。(也可以调用3个函数,取其中最大的)
//		3.对于手写,调用相应版本的InitSentence
//		4.调用对应输入方式版本的ResetSentence
//		5.完成各种操作(其中每一句完成后调用相应版本的ResetSentence)
//		6.对于手写,调用相应版本的DeleteSentence
//		7.释放工作缓冲区和字典缓冲区
/***********************************************************************************************************************************************************************************************************/

#ifndef _PATTREE_200312_H_
#define _PATTREE_200312_H_

#define PATTREE_READONLY_DIC
//#define PATTREE_EMBEDDED_DIC

#define PATTREE_POSBIGRAM
#ifdef _WIN32_WCE
//#define PATTREE_HANDWRITING
#endif

#ifdef __SYMBIAN32__
#ifndef TCHAR
#ifdef _UNICODE
#define TCHAR	unsigned short
#else
#define TCHAR	char
#endif
#endif
#endif

#define PATTREE_ALIGNBYTES			2

// 词典类型
#define PATTREE_DIC_CHS				0x0001		// 中文
#define PATTREE_DIC_EN				0x0002		// 英文

#define PATTREE_MAX_INPUT_LEN		128			// 按键方式最大输入长度(按键数)
#define PATTREE_MAX_HW_INPUT_LEN	32			// 手写方式最大输入长度
#define PATTREE_CAND_NUM			6			// 每行显示的最大候选词数
#define PATTREE_PREDICT_NUM			6			// 每行显示的最大预测候选词数

// 更改状态时当前字的移动方向
#define PATTREE_MOVESTATE_LEFT		1
#define PATTREE_MOVESTATE_RIGHT		2

// 输入状态
#define PATTREE_CANDPREDICT_STATE_CUR	0		// 当前词为最后一个词,普通输入状态
#define PATTREE_CANDPREDICT_STATE_PREV	1		// 当前词不是最后一个词,修改状态
#define PATTREE_CANDPREDICT_STATE_NEXT	2		// 没有输入,预测词语利用原有的确定输入(szAllInput)

#define PATTREE_CAND				1			// 选择候选状态为候选词
#define PATTREE_PREDICT				2			// 选择候选状态为预测候选词
#define PATTREE_UNIFIED_CAND		3			// 选择候选状态为统一候选词

// 英文输入方式
#define PATTREE_EN_CAPITAL			0			// 英文首字母大写
#define PATTREE_EN_UPPERCASE		1			// 英文大写
#define PATTREE_EN_LOWERCASE		2			// 英文小写

// 中文输入方式
#define PATTREE_CHS_PINYIN			0			// 中文拼音
#define PATTREE_CHS_STROKE			1			// 中文笔画
#define PATTREE_CHS_HANDWRITING		2			// 中文手写

// 查询字典状态是用到的常量
#define NEXTAP_LANGUAGE				1			// 查询字典语言
#define NEXTAP_LEXICONENTRYNUM		2			// 查询字典词条数目
#define NEXTAP_VERSION				3			// 查询字典版本号

#pragma pack( push, BEFORE_PATTREE_T )			/* the struct is packed to PATTREE_ALIGNBYTES bytes aligned */
#pragma pack( PATTREE_ALIGNBYTES )

// 接口结构
typedef struct tagOUTBUFFER
{
	TCHAR szAllInput[PATTREE_MAX_INPUT_LEN];		// 已确定的不能更改的输入
	short nNextPredictCharNumber;					// 用于连续词语预测,预测中使用的szAllInput中的字数

	short IMMethod;									// for English: PATTREE_EN_CAPITAL, PATTREE_EN_UPPERCASE, PATTREE_EN_LOWERCASE
													// for Chinese: PATTREE_CHS_PINYIN, PATTREE_CHS_STROKE
	short nMaxCandCharNum;							// 候选词中每行显示的最多字数
	short nMaxPredictCharNum;						// 预测候选词中每行显示的最多字数
	
	TCHAR szResult[PATTREE_MAX_INPUT_LEN];			// 当前输入句子的整句预测
	TCHAR szFakeResult[PATTREE_MAX_INPUT_LEN];		// 当前输入句子的虚拟整句预测

	TCHAR *pszUnifiedCand[PATTREE_CAND_NUM];		// 当前词语的统一候选

	TCHAR *pszCand[PATTREE_CAND_NUM];				// 当前词语的候选
	TCHAR *pszPredict[PATTREE_PREDICT_NUM];			// 当前预测词语的候选

	short nUnifiedCandTotal;						// 当前词统一候选的总个数(K)
	short nUnifiedCandBegin;						// 当前词统一候选的显示的起始下标(0~K-1)
	short nUnifiedCandNum;							// 当前词统一候选的显示个数(0~PATTREE_UNIFIED_CAND_NUM)

	short nCandTotal;								// 当前词候选的总个数(N)
	short nCandBegin;								// 当前词候选的显示的起始下标(0~N-1)
	short nCandNum;									// 当前词候选的显示个数(0~PATTREE_CAND_NUM)
	short nPredictTotal;							// 当前预测词候选的总个数(M)	
	short nPredictBegin;							// 当前预测词候选的显示的起始下标(0~M-1)
	short nPredictNum;								// 当前词候选的显示个数(0~PATTREE_PREDICT_NUM)
	
	short nIsUsingUserDic;							// 是否使用用户自定义词典

	short nReserved;

	short nStopNum;											// 中文按键输入时输入的强制分割符号(分割字符,比如xi'an中的')个数
	unsigned char byStopIndex[PATTREE_MAX_INPUT_LEN];		// 中文按键输入时输入的强制分割符号数组

	char szCurWordPinyin[PATTREE_MAX_INPUT_LEN];	//外部显示的当前词的可能拼音
	char szDigi[PATTREE_MAX_INPUT_LEN];				// 按键输入时的数字序列
	char szPinyin[PATTREE_MAX_INPUT_LEN];			// 整句预测的拼音序列
	unsigned char byPinyinIndexForEachChar[PATTREE_MAX_INPUT_LEN];	
					//每个字对应的拼音索引,例如:1,3,7,8,0,...,0 表示第一个字对应拼音为0~1,第2个为2~3,第3个为4~7,第5个为8
	short	nCharacterNum;							
					// 总字数,需要注意的是最后一个字可能是未完成的伪字,例如输入一个'j'后只有一个伪字(在Result中没有,但是在上个数字索引中有体现)

#ifndef PATTREE_HANDWRITING
    short nDigiNum; // for pinyin, stroke and English, 数字序列个数(同样也是拼音序列的个数)
#else
	short nCharNum; // for handwriting, 手写字数
#endif

	short state;		// 输入状态,PATTREE_CANDPREDICT_STATE_CUR, PATTREE_CANDPREDICT_STATE_NEXT, PATTREE_CANDPREDICT_STATE_PREV

	short nActivePreWordCharNo;						// 当前活动字在整句中的索引
} OUTBUFFER;

#pragma pack( pop, BEFORE_PATTREE_T )


#ifdef __cplusplus
extern "C" {
#endif


#ifdef _WIN32
#ifdef _WINDOWS
// 创建词典时用到的函数,输入法时忽略
int PATTREE_CreateDic( const TCHAR* strTextFilename, const TCHAR *strPinyinFilename, const TCHAR *strStrokeFilename, const TCHAR *strPosBigramFilename, 
					  const TCHAR *strHandwritingDicFilename, const TCHAR* strDicFilename, const TCHAR* strCFilename );
int PATTREE_CreateENDic( const TCHAR* strTextFilename, const TCHAR* strDicFilename, const TCHAR* strCFilename );
int PATTREE_DumpConflictedWords(void *pDicBuffer, const TCHAR* strFilename );
#endif
#endif

/***********************************************************************************************************************************************************************************************************/
// common
/***********************************************************************************************************************************************************************************************************/
// PATTREE_LoadStaticDic 
// 从文件中读取字典
// Parameters:
//		const TCHAR* strFilename 文件名
//		const TCHAR* strUserDicFilename 用户字典文件名
// Return Value:
//		成功返回指向字典缓冲区的指针void * pDicBuffer, 完成调用后应当在外部用函数PATTREE_FreeStaticDic释放这个缓冲区;否则返回NULL
/***********************************************************************************************************************************************************************************************************/
void *PATTREE_LoadStaticDic( const TCHAR* strFilename, const TCHAR* strUserDicFilename );

#ifdef PATTREE_EMBEDDED_DIC
/***********************************************************************************************************************************************************************************************************/
// PATTREE_LoadEmbeddedStaticDic 
// 从文件中读取字典
// Parameters:
//		int nLanguage: 字典语言版本,PATTREE_DIC_CHS或PATTREE_DIC_EN
//		const TCHAR* strUserDicFilename 用户字典文件名
// Return Value:
//		成功返回指向字典缓冲区的指针void * pDicBuffer, 完成调用后应当在外部用函数PATTREE_FreeStaticDic释放这个缓冲区;否则返回NULL
/***********************************************************************************************************************************************************************************************************/
void *PATTREE_LoadEmbeddedStaticDic( int nLanguage, const TCHAR* strUserDicFilename );
#endif

void PATTREE_FreeStaticDic( void* pDicBuffer );

int NEXTAP_WriteStaticDic( const TCHAR* strFilename, void *pDicBuffer );

/***********************************************************************************************************************************************************************************************************/
// NEXTAP_GetDicInfo 
// 读取字典信息
// Parameters:
//		void *pDicBuffer 指向字典缓冲区的指针
//		int nTag 读取信息类别,目前支持三种NEXTAP_LANGUAGE, NEXTAP_LEXICONENTRYNUM, NEXTAP_VERSION
// Return Value:
//		nTag为NEXTAP_LANGUAGE时返回 PATTREE_DIC_CHS或PATTREE_DIC_EN; 为NEXTAP_LEXICONENTRYNUM时返回词条数目;为NEXTAP_VERSION时返回字典版本号
/***********************************************************************************************************************************************************************************************************/
long NEXTAP_GetDicInfo(void *pDicBuffer, int nTag); 
long NEXTAP_GetKernelVersion(void);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -