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 + -
显示快捷键?