📄 ime.h
字号:
//Last Modify Date : 2003-5-6 16:56:51
//:EB.h : ErBiDigital public includes
#ifndef __EB_H_
#define __EB_H_
//类型定义
///////////////////////////////////////////////////////////////////////////////
//Void
typedef void EBVoid ;
typedef EBVoid * pEBVoid ;
//无符号字符
typedef unsigned char EBByte ;
typedef EBByte * pEBByte ;
//有符号字符
typedef signed char EBChar ;
typedef EBChar * pEBChar ;
//无符号字
typedef unsigned short EBWord ;
typedef EBWord * pEBWord ;
//有符号字
typedef signed short EBShort ;
typedef EBShort * pEBShort ;
//无符号长整数
typedef unsigned long EBDWord ;
typedef EBDWord * pEBDWord ;
//有符号长整数
typedef signed long EBLong ;
typedef EBLong * pEBLong ;
//整数
typedef long EBInt ;
typedef EBInt * pEBInt ;
//返回值
typedef EBInt EBReturn ;
///////////////////////////////////////////////////////////////////////////////
//
#define EB_NULL 0 //空
#define EB_TRUE 1
#define EB_FALSE 0
//Returns
#define EB_OK 0 //OK,成功
#define EB_EMPTY 100 //没有符合条件的候选字[词]
#define EB_FAILED -1 //失败
#define EB_NOTINIT -2 //没有调用EBStartup()!
#define EB_PEBIS_NULL -3 //pEBIS为空.
#define EB_METHOD_INVALID -4 //输入法类型错误
#define EB_DESIRE_LEN_INVALID -5 //用户需要的长度错误.
#define EB_KEY_INVALID -6 //调用EBTestKey时的按键不合法
#define EB_STATUS_ERROR -7 //pEBIS->status不正确,不能调用.
#define EB_ASSOC_ISN_ERROR -8 //AssociateISN == EB_NULL
/*Invalidate函数返回的错误值*/
#define EB_INVALID_CHAR -9 //非法的字符
#define EB_INVALID_TONE -10 //非法的音调
#define EB_INVALID_INPUT_LEN -11 //输入串的长度过长
#define EB_FIRST_IS_WILDCARD -12 //第一个输入的字符是通配符
#define EB_NO_MATCH_WORD -13 //没有匹配的字
#define EB_NO_MATCH_COMPONENT -14 //没有匹配的部首
#define EB_INVALID_SYLLABLE -15 //非法的音节
#define EB_INVALID_SYLLABLE_INDEX -16 //非法的音节下标
#define EB_INPUT_STRING_NULL -17 //输入串为空
/*Starpup函数返回的错误*/
#define EB_DATA_FILE_NOT_FOUND -18 //找不到数据文件
#define EB_INVALID_DATA_FORMAT -19 //非法的数据格式
#define EB_FAILED_TO_ALLOC_MEMORY -20 //
#define EB_MISS_DATA -21 //缺少数据
#define EB_STROKE_LEN_MISMATCH -22 //引擎的笔画数与数据的笔画数不一样
#define EB_INVALID_SYLLLABLES_COUNT -23
//Engine可能处理的按键[for EBTestKey]
#define EB_KEYS "0123456789#"
#define EB_PY_KEYS "23456789#" //音
#define EB_WILDCARD '#'
//EBInputStruct Constant
#define EB_INPUT_METHOD_NUM 1 //输入法数量
#define EB_INPUT_METHOD_PINYIN 1 //拼音
#define EB_INPUT_METHOD_YINXING 2 //音形
#define EB_INPUT_METHOD_QUANXING 3 //全形
#define EB_INPUT_METHOD_STROKE 4 //笔画
#define EB_INPUT_METHOD_YIN_STROKE 5 //笔画带音
#define EB_INPUT_MAX_LEN 32 //最大输入长度
#define EB_TONE_1 1 //音调:
#define EB_TONE_2 2 //音调:
#define EB_TONE_3 3 //音调:
#define EB_TONE_4 4 //音调:
#define EB_TONE_5 5 //音调: 轻
#define EB_CANDIDATES_MAX_LEN 16 //侯选字最大数目
#define EB_SYLLABLE_MAX_SELECT 8 //同一输入可能的准确音节最大数量
#define EB_SYLLABLE_MAX_LEN 12 //音节最大长度
#define EB_COMPONENT_MAX_LEN 5 //部首显示数目
#define EB_STATUS_ASSOCIATE 0x00000001 //AssociateMode
#define EB_STATUS_INTERPUNCTION 0x00000002 //interpunction mode
#define EB_STATUS_PAGEDOWN 0x00000004 //PageDown
#define EB_STATUS_PAGEUP 0x00000008 //PageUp
///////////////////////////////////////////////////////////////////////////////
//请注意:每加一个成员我们都需要修改EBDAssocInit, EBInputReset
typedef struct __eb_input_struct
{
//in : can modified by user
EBByte inputMethod ; //输入法
EBByte candidateDesireLen ; //用户需要的候选字长度
EBByte interpunctionDesireLen;//用户需要的标点符号的长度
EBByte inputStringLen ; //已输入串长度
EBByte inputString[EB_INPUT_MAX_LEN] ; //已输入串[0~9,*]
#define EB_PHRASE_MAX_LEN 4 //词的最大长度
#define EB_ASSOC_ISN_MAX_LEN EB_PHRASE_MAX_LEN - 1 //联想字的最大长度
EBWord associateISNs[EB_ASSOC_ISN_MAX_LEN] ; //联想字
EBByte tone ; //音调
EBByte associateISNCount; //联想字的个数
EBByte syllableIndex ; //当前选择的准确音节索引[1 -- 6]
//out : can not modified by user
EBByte candidateLen ; //实际长度
EBWord candidates[EB_CANDIDATES_MAX_LEN] ; //候选字
EBByte syllables[EB_SYLLABLE_MAX_SELECT][EB_SYLLABLE_MAX_LEN] ;
EBWord components[EB_COMPONENT_MAX_LEN] ; //部件
EBByte syllableLen ; //syllables音节数量
EBByte componentLen ; //components长度
//ADD Date : 2003-10-27 15:44:38 by ABING
EBByte noUseSmartPunc;
EBByte noFirstKeyAssoc;
} EBInputStruct, *pEBInputStruct ;
//INIT ...
#define EBISInit(pEBIS) \
memset((void *)(pEBIS), EB_NULL, sizeof(EBInputStruct)) ;
#define EBCleanCandidates(pEBIS) \
(pEBIS)->candidateLen = 0 ;\
memset((void *)(pEBIS)->candidates, EB_NULL, sizeof((pEBIS)->candidates)) ;
#define EBCleanSyllables(pEBIS) \
(pEBIS)->syllableLen = 0 ; \
(pEBIS)->syllableIndex = 0 ; \
memset((void *)(pEBIS)->syllables, EB_NULL, sizeof((pEBIS)->syllables)) ;
#define EBCleanComponents(pEBIS) \
(pEBIS)->componentLen = 0 ;\
memset((void *)(pEBIS)->components, EB_NULL, sizeof((pEBIS)->components)) ;
//Macro : EBIsValidInputMethod : Is valid Input Method ?
#define EBIsValidInputMethod(pEBIS) \
((pEBIS)->inputMethod >= EB_INPUT_METHOD_PINYIN && \
(pEBIS)->inputMethod <= EB_INPUT_METHOD_YIN_STROKE)
//Macro : EBHaveInput : Have Input ?
#define EBHaveInput(pEBIS) \
((pEBIS)->inputStringLen > 0 && \
(pEBIS)->inputStringLen <= EB_INPUT_MAX_LEN)
//Macro : EBIsValidTone : Is valid Tone ?
#define EBIsValidTone(pEBIS) \
(((pEBIS)->tone >= EB_TONE_1 && \
(pEBIS)->tone <= EB_TONE_5) || \
(pEBIS)->tone == EB_NULL)
//Macro : EBCanSelectSyllables : can select Syllables ?
#define EBCanSelectSyllable(pEBIS) \
((pEBIS)->syllableLen > 0 && \
(pEBIS)->syllableLen <= EB_SYLLABLE_MAX_SELECT)
//Macro : EBHaveComponents : have Components ?
#define EBHaveComponents(pEBIS) \
((pEBIS)->componentLen > 0 && \
(pEBIS)->componentLen <= EB_COMPONENT_MAX_LEN)
//Macro : EBHaveCandidates : have Candidates ?
#define EBHaveCandidates(pEBIS) \
((pEBIS)->candidateLen > 0 && \
(pEBIS)->candidateLen <= EB_CANDIDATES_MAX_LEN)
//Macro : EBIsValidDesireLen : Is valid candidate desire len ?
#define EBIsValidDesireLen(pEBIS) \
((pEBIS)->candidateDesireLen > 0 && \
(pEBIS)->candidateDesireLen <= EB_CANDIDATES_MAX_LEN)
//Macro : EBIsValidSyllableIndex : Is valid syllableIndex ?
#define EBIsValidSyllableIndex(pEBIS) \
((pEBIS)->syllableIndex > 0 && \
(pEBIS)->syllableIndex <= (pEBIS)->syllableLen)
///////////////////////////////////////////////////////////////////////////////
#ifdef __cplusplus
extern "C" {
#endif
EBReturn EBStartup() ;
EBReturn EBInputMethodInit(pEBInputStruct pEBIS) ;
EBReturn EBSwitchInputMethod(pEBInputStruct pEBIS, EBByte inputMethod) ;
EBReturn EBFindFirstPageC(pEBInputStruct pEBIS) ;
EBReturn EBInputReset(pEBInputStruct pEBIS) ;
EBReturn EBAssocFirstPageC(pEBInputStruct pEBIS) ;
EBVoid EBShutdown() ;
EBReturn EBStringToStroke(pEBInputStruct pEBIS, pEBChar pBuffer, EBInt bufferLen);
EBReturn EBCanPageDown(pEBInputStruct pEBIS) ;
EBReturn EBCanPageUp(pEBInputStruct pEBIS) ;
EBReturn EBIsAssociateMode(pEBInputStruct pEBIS) ;
EBReturn EBIsInterpunctionMode(pEBInputStruct pEBIS);
EBReturn EBGetStatus(pEBInputStruct pEBIS, pEBDWord pStatus) ;
EBReturn EBAssocAddHistoryISN(pEBInputStruct pEBIS, EBWord isn);
EBReturn EBAssocSetHistoryISNs(pEBInputStruct pEBIS, EBWord * ISNs, EBInt length);
EBReturn EBInterpunctionFirstPageC(pEBInputStruct pEBIS);
EBReturn EBNextPageC(pEBInputStruct pEBIS);
EBReturn EBPrevPageC(pEBInputStruct pEBIS);
#ifdef __cplusplus
}
#endif
#endif //__EB_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -