📄 pattree.h
字号:
/***********************************************************************************************************************************************************************************************************/
// 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 + -