m_index.c
来自「ucOS 模拟环境」· C语言 代码 · 共 749 行 · 第 1/2 页
C
749 行
}
else
{
if( ucCurrentHzItem == 0)
{
ucBottomHz = usHzCount -1;
ucCurrentHzItem = ucBottomHz;
ucTopHz =ucBottomHz - 5;
}
else if( ucTopHz < ucCurrentHzItem && ucCurrentHzItem <= ucBottomHz)
{
ucCurrentHzItem -= 1;
return REF_LEFT;
}
else
{
ucBottomHz -= 1;
ucTopHz -=1;
ucCurrentHzItem = ucTopHz;
}
return REF_LEFT;
}
}
//======================================================================
// Function Name: void MIndex_Right()
// Purpose :
// Parameter :
// Return :
// Remarks :
// Change Log :
// Author Date Description
// -----------------------------------------------
//
//======================================================================
static uchar MIndex_Right()
{
if(!ucIndexFlag)
{
ucTopItem = 0;
ucBottomItem = ucTopItem + REFITEMNUM -1;
ucCurrentIndexItem = 0;
if(g_char[ucCurrentIndexCode] == 'z' || g_char[ucCurrentIndexCode] == 'Z')
{
ucTopCode = 0;
ucBottomCode = ucTopCode + REFCODENUM ;
ucCurrentIndexCode = ucTopCode;
return REF_RIGHT;
}
if( ucTopCode <= ucCurrentIndexCode && ucCurrentIndexCode < ucBottomCode )
{
ucCurrentIndexCode += 1;
return REF_RIGHT;
}
else
{
ucTopCode += 1;
ucBottomCode += 1;
ucCurrentIndexCode = ucBottomCode ;
return REF_RIGHT;
}
}
else
{
if( ucCurrentHzItem == usHzCount -1)
{
ucCurrentHzItem = 0;
ucTopHz = 0;
ucBottomHz = ucCurrentHzItem + 5;
}
else if( ucTopHz <= ucCurrentHzItem && ucCurrentHzItem < ucBottomHz)
{
ucCurrentHzItem += 1;
return REF_FIRST_DOWN;
}
else
{
ucTopHz+=1;
ucBottomHz+=1;
ucCurrentHzItem = ucBottomHz;
}
return REF_FIRST_DOWN;
}
}
//======================================================================
// Function Name: void MIndex_OutLine()
// Purpose :
// Parameter :
// Return :
// Remarks :
// Change Log :
// Author Date Description
// -----------------------------------------------
//
//======================================================================
static uchar MIndex_OutLine()
{
Point point;
if(!ucIndexFlag)
{
/*#ifdef PCVER
MD_GetImage(0,0,112,108,MemoMap,MT_GvRamNo);
#else
MD_GetImage(0,0,111,107,MemoMap,MT_GvRamNo);
#endif*/
MD_GetCurGvramCousor(MT_GvRamNo, &point);
ucCodeGvram = MD_SetGvramArea(CODESTARTX, CODESTARTY, CODEENDX, CODEENDY);
MD_Square(0, 0, CODEENDX -CODESTARTX -2, CODEENDY -CODESTARTY -2, CL_BLACK, ucCodeGvram);;
if(!MD_PointInRect(point,IndexAreaRecord[0]))
{
MD_Clear(IndexAreaRecord[0].startx, IndexAreaRecord[0].starty, IndexAreaRecord[0].endx, IndexAreaRecord[0].endy,MT_GvRamNo);
ucItemGvram = MD_SetGvramArea(IndexAreaRecord[0].startx, IndexAreaRecord[0].starty, IndexAreaRecord[0].endx, IndexAreaRecord[0].endy);
IndexArea = IndexAreaRecord[0];
}
else
{
MD_Clear(IndexAreaRecord[1].startx, IndexAreaRecord[1].starty, IndexAreaRecord[1].endx, IndexAreaRecord[1].endy,MT_GvRamNo);
ucItemGvram = MD_SetGvramArea(IndexAreaRecord[1].startx, IndexAreaRecord[1].starty, IndexAreaRecord[1].endx, IndexAreaRecord[1].endy);
IndexArea =IndexAreaRecord[1];
}
MD_Square(0, 0, 47, 103, CL_BLACK, ucItemGvram);
}
else
{
MD_DelGvramArea(ucCodeGvram);
MD_DelGvramArea(ucItemGvram);
/*#ifdef PCVER
MD_PutImage(0,0,112,108,MemoMap,MT_GvRamNo);
#else
MD_PutImage(0,0,111,107,MemoMap,MT_GvRamNo);
#endif*/
UpdateTextArea();
//MD_PutImage(IndexArea.startx,IndexArea.starty,IndexArea.endx,IndexArea.endy,MemoMap,MT_GvRamNo);
ucHzGvram = MD_SetGvramArea(HZSTARTX,HZSTARTY, HZENDX, HZENDY);
MD_Square(0, 0, HZENDX -HZSTARTX -2, HZENDY -HZSTARTY -2, CL_BLACK, ucHzGvram);
}
return 1;
}
//======================================================================
// Function Name: static void RefIndexCodeMenu()
// Purpose :
// Parameter :
// Return :
// Remarks :
// Change Log :
// Author Date Description
// -----------------------------------------------
//
//======================================================================
static void RefIndexCodeMenu(uchar refMode)
{
uchar CodeIndex;
uchar ucDisStr;
uchar ucFont;
Point pCursor;
if( refMode == REF_NO)
return;
MD_Clear(8,1,CODEENDX-8,CODEENDY-CODESTARTY -3,ucCodeGvram);
pCursor.x = 12;
pCursor.y = 1;
MD_SetCurGvramCousor(ucCodeGvram, pCursor.x, pCursor.y);
for(CodeIndex = 0;CodeIndex<=REFCODENUM ; CodeIndex++)
{
ucFont = NORMAL;
ucDisStr = ucTopCode + CodeIndex;
if(ucDisStr == ucCurrentIndexCode)
{
ucFont = RESERVE;
}
MD_AscTextV((uchar)(g_char[ucDisStr]-0x20), ucCodeGvram, ucFont);
}
}
//======================================================================
// Function Name: static void RefIndexItemMemu()
// Purpose :
// Parameter :
// Return :
// Remarks :
// Change Log :
// Author Date Description
// -----------------------------------------------
//
//======================================================================
static void RefIndexItemMemu(uchar refMode)
{
uchar i, j;
uchar ucDisStr[10];
Point pCursor;
ucTEXT ucText;
uchar ucFont;
ucText.ucChar = g_char[ucCurrentIndexCode];
usCount = MD_GetIndexDataCount(ucText);
MD_Clear(1,1,46,102,ucItemGvram);
for(i = 0; i < REFITEMNUM; i++)
{
if((ucTopItem + i) == usCount)
{
break;
}
ucText.uiCount = ucTopItem + i;
MD_GetIndexData(ucText, ucDisStr);
pCursor.x = 3;
pCursor.y = i * 16 + 1;
MD_SetCurGvramCousor(ucItemGvram, pCursor.x, pCursor.y);
j = 0;
ucFont = NORMAL;
if((ucTopItem + i) == ucCurrentIndexItem)
{
ucFont = RESERVE;
}
while(ucDisStr[j])
{
MD_AscTextV(ucDisStr[j], ucItemGvram, ucFont);
j++;
}
}
}
//======================================================================
// Function Name: static void RefIndexHzMenu(uchar refMode)
// Purpose :
// Parameter :
// Return :
// Remarks :
// Change Log :
// Author Date Description
// -----------------------------------------------
//======================================================================
static void RefIndexHzMenu(uchar refMode)
{
uchar MenuIndex;
uchar ucFont;
Point pCursor;
unsigned short TempData;
if( refMode == REF_NO)
return;
pCursor.x = 12;
pCursor.y = 1;
MD_Clear(8, 1, HZENDX - 8,HZENDY - HZSTARTY - 3, ucHzGvram);
MD_SetCurGvramCousor(ucHzGvram, pCursor.x, pCursor.y);
for(MenuIndex = ucTopHz; MenuIndex <= ucBottomHz; MenuIndex++)
{
ucFont = NORMAL;
// ucDisStr = ucTopCode + i;
if(MenuIndex == ucCurrentHzItem)
{
ucFont = RESERVE;
}
if(MenuIndex >= usHzCount )
break;
#ifdef PCVER
TempData = usHzBuf[MenuIndex] >> 8 | (usHzBuf[MenuIndex] << 8);
#else
TempData = usHzBuf[MenuIndex];
#endif
MD_UnicTextV(TempData, ucHzGvram, ucFont);
}
/*length = usHzCount > MAXHZNUM ?MAXHZNUM: usHzCount;
#ifdef PCVER
for(MenuIndex=0; MenuIndex <length;MenuIndex++)
{
usHzBuf[MenuIndex] = (usHzBuf[MenuIndex]<<8) | (usHzBuf[MenuIndex]>>8);
}
#endif
memcpy(TempData,usHzBuf + ucTopHz, length);
MD_UnicTextVLine(TempData, ucHzGvram, length);*/
}
//======================================================================
// Function Name: static void MIndexGetHzInfor()
// Purpose :
// Parameter :
// Return :
// Remarks :
// Change Log :
// Author Date Description
// -----------------------------------------------
//======================================================================
static void MIndexGetHzInfor()
{
ucTEXT ucText;
ucText.ucChar = g_char[ucCurrentIndexCode];
ucText.uiCount = ucCurrentIndexItem;
usHzCount = MD_GetMTextData(ucText, (unsigned char*)usHzBuf);
if(usHzCount == (uchar)-1)
{
#ifdef PCVER
assert(0);
#endif
}
}
//======================================================================
// Function Name: static uchar MIndexGetCurrPY(uchar *ucPingYin)
// Purpose :
// Parameter :
// Return :
// Remarks :
// Change Log :
// Author Date Description
// -----------------------------------------------
//======================================================================
static uchar MIndexGetCurrPY(uchar *ucPingYin)
{
ucTEXT ucText;
ucText.ucChar = ucCurrentIndexCode;
ucText.uiCount = ucCurrentIndexItem;
return((uchar)MD_GetIndexData(ucText, ucPingYin));
}
//======================================================================
// Function Name: static uint MIndexGetHz()
// Purpose :
// Parameter :
// Return :
// Remarks :
// Change Log :
// Author Date Description
// -----------------------------------------------
//======================================================================
static uint MIndexGetHz()
{
return(usHzBuf[ucCurrentHzItem]);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?