📄 ime.c
字号:
{
GraphDrawIcon( IMECATALOG_ITEM_ICON_STARTX+IMECATALOG_ITEMICON_X_INTERVAL,IMECATALOG_ITEM_ICON_STARTY+(i/2)*IMECATALOG_ITEMICON_Y_INTERVAL,
0,0,MAKE_ID( IME_NOSELECTED_ICON ) );
GraphDrawText( IMECATALOG_ITEM_TEXT_STARTX+IMECATALOG_ITEMTEXT_X_INTERVAL,IMECATALOG_ITEM_TEXT_STARTY+(i/2)*IMECATALOG_ITEMTEXT_Y_INTERVAL,
0,0,(UINT8 *)IMESELECTITEMNAME[i]);
}
}
}
GraphEnableRefresh();
}
VOID ImeSelectDrawFrame(VOID)
{
UINT16 wPenStyle;
GraphDrawLine(IME_LEFTLINE_LINE0_X1,IME_LEFTLINE_LINE0_Y1,IME_LEFTLINE_LINE0_X2,IME_LEFTLINE_LINE0_Y2 );
GraphDrawLine(IME_UPLINE_LINE0_X1,IME_UPLINE_LINE0_Y1,IME_UPLINE_LINE0_X2,IME_UPLINE_LINE0_Y2 );
GraphDrawLine(IME_UPLINE_LINE1_X1,IME_UPLINE_LINE1_Y1,IME_UPLINE_LINE1_X2,IME_UPLINE_LINE1_Y2 );
GraphDrawLine(IME_RIGHTLINE_LINE0_X1,IME_RIGHTLINE_LINE0_Y1,IME_RIGHTLINE_LINE0_X2,IME_RIGHTLINE_LINE0_Y2 );
GraphDrawLine(IME_RIGHTLINE_LINE1_X1,IME_RIGHTLINE_LINE1_Y1,IME_RIGHTLINE_LINE1_X2,IME_RIGHTLINE_LINE1_Y2 );
GraphDrawLine(IME_DOWNLINE_LINE0_X1,IME_DOWNLINE_LINE0_Y1,IME_DOWNLINE_LINE0_X2,IME_DOWNLINE_LINE0_Y2 );
GraphDrawLine(IME_DOWNLINE_LINE1_X1,IME_DOWNLINE_LINE1_Y1,IME_DOWNLINE_LINE1_X2,IME_DOWNLINE_LINE1_Y2 );
wPenStyle =GraphGetPenStyle();
GraphSetPenStyle(PS_DOT );
//---------
/*
GraphDrawLine(IME_UPDOTLINE_LINE0_X1,IME_UPDOTLINE_LINE0_Y1-2,IME_UPDOTLINE_LINE0_X2,IME_UPDOTLINE_LINE0_Y2-2);
GraphDrawLine(IME_UPDOTLINE_LINE0_X1,IME_UPDOTLINE_LINE0_Y1,IME_UPDOTLINE_LINE0_X2,IME_UPDOTLINE_LINE0_Y2 );
GraphDrawLine(IME_UPDOTLINE_LINE1_X1,IME_UPDOTLINE_LINE1_Y1,IME_UPDOTLINE_LINE1_X2,IME_UPDOTLINE_LINE1_Y2 );
GraphDrawLine(IME_UPDOTLINE_LINE2_X1,IME_UPDOTLINE_LINE2_Y1,IME_UPDOTLINE_LINE2_X2,IME_UPDOTLINE_LINE2_Y2 );
GraphDrawLine(IME_UPDOTLINE_LINE3_X1,IME_UPDOTLINE_LINE3_Y1,IME_UPDOTLINE_LINE3_X2,IME_UPDOTLINE_LINE3_Y2 );
//---------
*/
GraphDrawLine(IME_MIDDOTLINE_LINE0_X1,IME_MIDDOTLINE_LINE0_Y1,IME_MIDDOTLINE_LINE0_X2,IME_MIDDOTLINE_LINE0_Y2 );
//---------
// GraphDrawLine(IME_DOWNDOTLINE_LINE0_X1,IME_DOWNDOTLINE_LINE0_Y1,IME_DOWNDOTLINE_LINE0_X2,IME_DOWNDOTLINE_LINE0_Y2 );
//---------
// GraphDrawLine(IME_RIGHTDOTLINE_LINE0_X1,IME_RIGHTDOTLINE_LINE0_Y1,IME_RIGHTDOTLINE_LINE0_X2,IME_RIGHTDOTLINE_LINE0_Y2 );
GraphSetPenStyle(wPenStyle );
}
UINT ImeIdToSelect(UINT uID)
{
UINT i;
for (i = 0;i < IME_MAXNUMBER;i ++)
{
if (uID == IME_SELECT_LIST[i])
{
//return (i + 1);
return i;
}
}
return 0;
}
VOID _ImeSelectList(MIMEManager *pImeManager)
{
INT RetVar;
UINT wId;
wId = ImeGetCurrent();
g_uImeSelect =ImeIdToSelect(wId);
ImeSelectDraw();
RetVar= RunAp( (APGUI_STRUCT*)g_pIMeSelectGuiTemplate ) ;
//modified by Liang Ruhui on 2007-11-28
DrawFullScreenAp(); //可能有不满一屏的AP调用输入法
// MsgPost(NULL,EVENT_DRAW,NULL);
}
//==========IMe 输入法切换List=================
//=============================================
VOID _ImeDrawGraph(UINT uType)
{
UINT16 tempnum,i;
UINT8 *addr;
UINT32 uIconID;
GraphDisableRefresh();
__ImeDrawInputBoxHead(uType);
switch (g_mInputBox.state)
{
case IM_INPUT_DOING: /*用户正在输入*/
GraphDrawText(g_mInputBox.rect.x+g_mInputBox.rect.height, g_mInputBox.rect.y, 0, 0,g_pIMEInBuffer);
break;
case IM_INPUT_ZC: /*有内容备选*/
case IM_INPUT_LX:
memset(g_pIMEOutBuffer,0,IM_OUTBUFF_LEN);
tempnum = g_pIMEWordNum - g_pIMECandiPos;
if (tempnum > g_pIMEWordTypeNum)
tempnum = g_pIMEWordTypeNum;
for(i = 0; i < tempnum; i ++)
{
ImeDrawIndexNum((UINT8)i,uType);
addr = g_pIMEDataAddr + (g_pIMECandiPos+i) * 2;
memmove(g_pIMEOutBuffer,addr,2);
GraphDrawText(IME_CANDI_X + i * IME_CANDI_INTERVAL, g_mInputBox.rect.y, 0, 0, g_pIMEOutBuffer);
}
/*显示尾部图标*/
uIconID = 0;
if((g_pIMEWordNum - g_pIMECandiPos) > g_pIMEWordTypeNum) /*后面有数据*/
{
if(g_pIMECandiPos) /*前后都有没有显示的数据*/
{
uIconID = IDB_IME_ARROWLR;
}
else /*后面有数据*/
{
uIconID = IDB_IME_ARROWR;
}
}
else
{
if(g_pIMECandiPos) /*前面还有数据*/
{
uIconID = IDB_IME_ARROWL;
}
}
if(uIconID)
{
UINT uWidth,uHeight;
GraphGetIconSize(&uWidth,&uHeight,MAKE_ID(uIconID ) ) ;
GraphDrawIcon(g_mInputBox.rect.x+g_mInputBox.rect.width - uWidth-2,
g_mInputBox.rect.y+(g_mInputBox.rect.height-12)/2, 0, 0,MAKE_ID(uIconID));
}
break;
case IM_INPUT_ERROR:/*用户输入出错*/
GraphDrawText(g_mInputBox.rect.x+g_mInputBox.rect.height, g_mInputBox.rect.y, 0, 0, "查无此字!");
default:
break;
}
g_mInputBox.refresh = IME_NO_REFRESH;
GraphEnableRefresh();
}
/****************************************************************************/
/* FUNCTION: _EnglishHandleEvent */
/* DESCRIPTION:英数输入法的消息处理函数 */
/* INPUTS: pEvent,消息 */
/* OUTPUTS: NONE */
/* RETURN: 消息处理函数返回值 */
/****************************************************************************/
/* NAME DATE REMARKS */
/* ========== ============ ==============================================*/
/* Qorse 2003-03-25 创建初始版本 */
/****************************************************************************/
FOR_IME_ENGLISH
INT _EnglishHandleEvent(IMEGUI_STRUCT *pApGui, UINT *pEvent, UINT *pParam)
{
UINT16 wMsgX;
wMsgX = (UINT16)(*pParam);
if((*pEvent == EVENT_KEY) || (*pEvent == EVENT_KEYREPEAT))
{
if(wMsgX >= 0x20 && wMsgX <= 0x7e)
{
*pEvent = EVENT_CHAR;
}
}
return 0;
}
/****************************************************************************/
/* FUNCTION: _SymbolDrawGraph */
/* DESCRIPTION:符号输入法显示函数 */
/* INPUTS: NONE */
/* OUTPUTS: NONE */
/****************************************************************************/
/* NAME DATE REMARKS */
/* ========== ============ ==============================================*/
/* Zfs 2003-04-08 创建初始版本 */
/****************************************************************************/
FOR_IME_SYMBOL
void _SymbolDrawGraph(void)
{
UINT16 pWidth, pTempnum, i;
pWidth=g_mInputBox.rect.width;
GraphDisableRefresh();
GraphClearRect(g_mInputBox.rect.x,g_mInputBox.rect.y,
g_mInputBox.rect.x+pWidth-1,g_mInputBox.rect.y+IM_HEIGHT-1);
ImeDrawSplit();
GraphDrawText(g_mInputBox.rect.x, g_mInputBox.rect.y, 16, IM_HEIGHT, "符");
memset(g_pIMEOutBuffer,0,IM_OUTBUFF_LEN);
g_pIMEWordNum = SY_SKEYDATANUM;
pTempnum = g_pIMEWordNum - g_pIMECandiPos;
if (pTempnum > HZ_PER_PAGE)
{
pTempnum = HZ_PER_PAGE;
}
for (i = 0; i < pTempnum; i++)
{
ImeDrawIndexNum((UINT8)i,IME_SYMBOL);
memmove(g_pIMEOutBuffer,sy_pKeyData[g_pIMECandiPos+i],2);
GraphDrawText(g_mInputBox.rect.x+IME_CANDI_X+i*IME_CANDI_INTERVAL, g_mInputBox.rect.y,0, 0,g_pIMEOutBuffer);
}
GraphInvertRect(g_mInputBox.rect.x,g_mInputBox.rect.y,
g_mInputBox.rect.x+g_mInputBox.rect.height-1,g_mInputBox.rect.y+g_mInputBox.rect.height - 1);
_imDrawArrow();
GraphEnableRefresh();
}
/****************************************************************************/
/* FUNCTION: _SymBolHandleEvent */
/* DESCRIPTION:符号输入法的消息处理函数 */
/* INPUTS: pEvent,消息 */
/* OUTPUTS: NONE */
/* RETURN: 消息处理函数返回值 */
/****************************************************************************/
/* NAME DATE REMARKS */
/* ========== ============ ==============================================*/
/* Zfs 2003-04-08 创建初始版本 */
/****************************************************************************/
char Char2Num( UINT uChar);
FOR_IME_SYMBOL
INT _SymBolHandleEvent(IMEGUI_STRUCT *pApGui, UINT *pEvent, UINT *pParam)
{
UINT16 nMsgx, getedzi, nIndex, nLen;
UINT32 nMsgtype;
char c2n;
nMsgtype = *pEvent;
nMsgx = *pParam;
c2n = Char2Num(nMsgx);
if (nMsgtype == EVENT_DRAW)
{
_SymbolDrawGraph();
}
else if (nMsgtype == EVENT_KEY || *pEvent == EVENT_CHAR || nMsgtype ==EVENT_KEYREPEAT)
{
__IMEGetChar(pEvent,pParam);
if(c2n >= '1' && c2n <= '0' + g_pIMEWordTypeNum)
{
nIndex = c2n - '0';
if (nIndex)
{
nIndex --;
}
else
{
nIndex = 9;
}
if (g_pIMECandiPos + nIndex >= g_pIMEWordNum)
{
return 0;
}
*pEvent = EVENT_CHAR;
nIndex = g_pIMECandiPos + nIndex;
memset(g_pIMEOutWordBuf,0,3);
nLen = (UINT8)strlen(sy_pKeyData[nIndex]);
memmove((UINT8 *)&getedzi,sy_pKeyData[nIndex],nLen);
*pParam = (UINT8)(getedzi);
}
else if(nMsgx == MVK_LEFT || nMsgx == MVK_RIGHT)
{
// if(pEvent->yParam != MVK_SHIFT) ???
{
if (_imLeftRight(pEvent,pParam))
{
_SymbolDrawGraph();
}
*pEvent = EVENT_NOTHING;
return 0;
}
}
else if((nMsgx >= 'a' && nMsgx <= 'z') ||
(nMsgx >= 'A' && nMsgx <= 'Z')){
*pEvent = EVENT_NOTHING;
}
}
else if( nMsgtype == EVENT_INITIALIZE )
{
__InitialIME();
g_pIMEWordNum = SY_SKEYDATANUM;
g_pIMEDataAddr = (UINT8 *)sy_pKeyData;
g_pIMEWordTypeNum = HZ_PER_PAGE;
g_mInputBox.state = IM_INPUT_DOING;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -