Пример #1
0
/****************************************************************************
* 名称: DispLogin()
* 功能: 闪动显示"Loading...",并显示进度条。
* 入口参数: 无
* 出口参数: 无
****************************************************************************/
void  DispLogin(void)
{  int  i;
   
   // 显示loding...
   GUI_PutString(30, 25, "Loading...");
   
   // 显示进度条
   GUI_Rectangle( PROG_STARTX, PROG_STARTY, 
                  PROG_STARTX+PROG_LENGTH, PROG_STARTY+PROG_HIGH, 1);
   
   // 循环增长进度
   for(i=3; i<100; i+=1)
   {  // 改变进度条显示 
      GUI_RectangleFill( PROG_STARTX, PROG_STARTY, 
                         PROG_STARTX+i, PROG_STARTY+PROG_HIGH, 1);
                       
      // 若进度到尾数为5时,则使能"Loading..."显示
      if((i%10) == 5)
      {   GUI_PutString(30, 25, "Loading...");
      }
      
      // 若进度到尾数为0时,则禁止"Loading..."显示
      if((i%10) == 0)
      {   GUI_PutString(30, 25, "          ");
      }
      //vTaskDelay(100);
   } 
}
Пример #2
0
/****************************************************************************
* 名称:GUI_WindowsDraw()
* 功能:显示窗口。根据提供的窗口参数进行画窗口。
* 入口参数:win		窗口句柄
* 出口参数:返回0表示操作失败,返回1表示操作成功
****************************************************************************/
uint8  GUI_WindowsDraw(WINDOWS *win)
{  uint8  *str;
   int32  bak, bak1, bak2;
   
   /* 参数过滤,若窗口起出范围,则返回0 */
   if( ( (win->with)<20 ) || ( (win->hight)<20 ) ) return(0);		// 宽度、高度检查,限制最小窗口
   if( (win->x + win->with ) > GUI_LCM_XMAX ) return(0);			// 窗口宽度是否溢出
   if( (win->y + win->hight ) > GUI_LCM_YMAX ) return(0);			// 窗口高度是否溢出
    
   /* 开始画窗口 */
   GUI_RectangleFill(win->x, win->y, win->x + win->with - 1, win->y + win->hight - 1, back_color);
   GUI_Rectangle(win->x, win->y, win->x + win->with - 1, win->y + win->hight - 1, disp_color);	// 画窗口
   GUI_HLine(win->x, win->y + 12, win->x + win->with - 1, disp_color);							// 画标题目栏
   GUI_RLine(win->x + 12, win->y, win->y + 12, disp_color);										// 画关闭窗号按钮
   GUI_Line(win->x, win->y, win->x + 12, win->y + 12, disp_color);
   GUI_Line(win->x + 12, win->y, win->x, win->y + 12, disp_color);
   

   /* 写标题 */
   if( win->title != NULL ) 
   {  str = win->title;
      bak = win->x + 15;
      bak1 = win->y + 3;
      bak2 = win->x + win->with -1;
     
      while(1)						
      {  if( (bak+8) > bak2 ) break;								// 判断标题是否溢出
         if(*str=='\0') break;										// 判断字符串是否结束
         
         GUI_PutChar(bak, bak1, *str++);							// 显示标题
         bak += 6;
      }
   }


   /* 写状态栏 */
   if( win->state != NULL )
   {  if( win->hight < 60) return(0);								// 判断是否可以画状态栏
      /* 画状态栏 */
      GUI_HLine(win->x, win->y + win->hight - 11, win->x + win->with - 1, disp_color);
      
      str = win->state;
      bak = win->x + 3;
      bak1 = win->y + win->hight - 9;
      bak2 = win->x + win->with -1;
      
      while(1)						
      {  if( (bak+8) > bak2 ) break;								// 判断标题是否溢出
         if(*str=='\0') break;										// 判断字符串是否结束
         
         GUI_PutChar(bak, bak1, *str++);							// 显示标题
         bak += 6;
      }      
   }
   
   return(1);

}
Пример #3
0
/****************************************************************************
* 名称:GUI_SMenuHide()
* 功能:消隐子菜单项。
* 入口参数:men     子菜单句柄
* 出口参数:返回0表示操作失败,返回1表示操作成功
****************************************************************************/
uint8  GUI_SMenuHide(SMENU *men)
{
    WINDOWS  *mwin;
    uint8    xx, yy;

    mwin = men->win;
    /* 判断是否可以显示主菜单 */
    if( (mwin->hight)<50 ) return(0);
    if( (mwin->with)<50 ) return(0);

    /* 画菜子单项。下拉子菜单,以向左下拉为原则,若右边溢出则以右下拉显示 */
    xx = mwin->x;
    xx +=  (men->mmenu_no)*MMENU_WIDTH;
    yy = mwin->y + 22;
    yy +=  (men->no) * 11 + 2;
    if( (xx+SMENU_WIDTH) <= (mwin->x + mwin->with - 1) )
    {
        /* 以左下拉为原则显示子菜单 */
        if( (men->mmenu_no) == 0 )
        {
            GUI_RectangleFill(xx+1, mwin->y + 22+1, xx+SMENU_WIDTH, yy, back_color);
        }
        else
        {
            GUI_RectangleFill(xx, mwin->y + 22+1, xx+SMENU_WIDTH, yy, back_color);
        }
        GUI_HLine(xx+1, mwin->y + 22, xx+MMENU_WIDTH-1, disp_color);
    }
    else
    {
        /* 以右下拉为原则 */
        if( (xx+MMENU_WIDTH) == (mwin->x + mwin->with - 1) )
        {
            GUI_RectangleFill(xx-(SMENU_WIDTH-MMENU_WIDTH), mwin->y + 22+1, xx+MMENU_WIDTH-1, yy, back_color);
        }
        else
        {
            GUI_RectangleFill(xx-(SMENU_WIDTH-MMENU_WIDTH), mwin->y + 22+1, xx+MMENU_WIDTH, yy, back_color);
        }
        GUI_HLine(xx+1, mwin->y + 22, xx+MMENU_WIDTH-1, disp_color);
    }

    return(1);
}
Пример #4
0
/****************************************************************************
* 名称:GUI_WindowsHide()
* 功能:消隐窗口。
* 入口参数:win		窗口句柄
* 出口参数:返回0表示操作失败,返回1表示操作成功
****************************************************************************/
uint8  GUI_WindowsHide(WINDOWS *win)
{  /* 参数过滤,若窗口起出范围,则返回0 */
   if( ( (win->with)<20 ) || ( (win->hight)<20 ) ) return(0);		// 宽度、高度检查,限制最小窗口
   if( (win->x + win->with ) > GUI_LCM_XMAX ) return(0);			// 窗口宽度是否溢出
   if( (win->y + win->hight ) > GUI_LCM_YMAX ) return(0);			// 窗口高度是否溢出
    
   /* 消隐窗口 */
   GUI_RectangleFill(win->x, win->y, win->x + win->with - 1, win->y + win->hight - 1, back_color);
   return(1);
}
Пример #5
0
/****************************************************************************
* 名称:GUI_SMenuSelect()
* 功能:选择新的子菜单。
* 入口参数:men     子菜单句柄
*          old_no   原先选择的子菜单项
*          new_no   现要选择的子菜单项
* 出口参数:无
****************************************************************************/
void  GUI_SMenuSelect(SMENU *men, uint8 old_no, uint8 new_no)
{
    WINDOWS  *mwin;
    uint8  xx, yy;

    /* 参数过滤 */
    if(old_no==new_no) return;
    xx = men->no;
    if( (old_no>xx) || (new_no>xx) ) return;

    /* 设置新的选择的子菜单项 */
    men->state = new_no;

    /* 进行菜单反相显示 */
    mwin = men->win;
    xx = mwin->x;
    xx +=  (men->mmenu_no)*MMENU_WIDTH;
    if( (xx+SMENU_WIDTH) > (mwin->x + mwin->with - 1) )
    {
        /* 以右下拉为原则显示子菜单,所以xx设置在左端 */
        xx = xx-(SMENU_WIDTH-MMENU_WIDTH);
    }
    xx++;

    /* 取消原子菜单选择 */
    yy = mwin->y + 22 + 2;
    yy += old_no*11;
    GUI_RectangleFill(xx, yy, xx+SMENU_WIDTH-2, yy+10, back_color);
    GUI_PutNoStr(xx+1, yy+1, men->str[old_no], 8);
    /* 选择新的子菜单 */
    yy = mwin->y + 22 + 2;
    yy += new_no*11;
    GUI_RectangleFill(xx, yy, xx+SMENU_WIDTH-2, yy+10, disp_color);
    GUI_ExchangeColor();
    GUI_PutNoStr(xx+1, yy+1, men->str[new_no], 8);
    GUI_ExchangeColor();
}
Пример #6
0
/****************************************************************************
* 名称:GUI_WindowsClr()
* 功能:清屏窗口。
* 入口参数:win		窗口句柄
* 出口参数:无
* 说明:使用此函数前要先使用GUI_WindowsDraw()将窗口画出。
****************************************************************************/
void  GUI_WindowsClr(WINDOWS *win)
{  uint8  x0, y0;
   uint8  x1, y1;
 
   /* 设置要清屏的区域 */
   x0 = win->x + 1;
   x1 = win->x + win->with - 2;
   y0 = win->y + 13;
   y1 = win->y + win->hight - 2;
   if( win->state != NULL )			// 判断是否有状态栏				
   {  if( win->hight >= 60)
      {  y1 = win->y + win->hight - 12;
      }
   }

   /* 使用填充矩形实现清屏 */
   GUI_RectangleFill(x0, y0, x1, y1, back_color);
}
Пример #7
0
/****************************************************************************
* 名称:GUI_SMenuDraw()
* 功能:显示子菜单,加上边框。
* 入口参数:men     子菜单句柄
* 出口参数:返回0表示操作失败,返回1表示操作成功
****************************************************************************/
uint8  GUI_SMenuDraw(SMENU *men)
{
    WINDOWS  *mwin;
    uint32   xx, yy;
    uint8    i;

    mwin = men->win;
    /* 判断是否可以显示主菜单 */
    if( (mwin->hight)<50 ) return(0);
    if( (mwin->with)<50 ) return(0);

    /* 画菜子单项。下拉子菜单,以向左下拉为原则,若右边溢出则以右下拉显示 */
    xx = mwin->x;
    xx += (men->mmenu_no)*MMENU_WIDTH;
    yy = mwin->y + 22;
    yy +=  (men->no) * 11 + 2;
    if( (xx+SMENU_WIDTH) <= (mwin->x + mwin->with - 1) )
    {
        /* 以左下拉为原则显示子菜单 */
        if( (men->mmenu_no) == 0 )
        {
            GUI_RLine(xx+SMENU_WIDTH, mwin->y + 22, yy, disp_color);
            GUI_HLine(xx, yy, xx+SMENU_WIDTH, disp_color);
        }
        else
        {
            GUI_Rectangle(xx, mwin->y + 22, xx+SMENU_WIDTH, yy, disp_color);
        }
        GUI_HLine(xx+1, mwin->y + 22, xx+MMENU_WIDTH-1, back_color);

    }
    else
    {
        /* 以右下拉为原则 */
        if( (xx+MMENU_WIDTH) == (mwin->x + mwin->with - 1) )
        {
            GUI_RLine(xx-(SMENU_WIDTH-MMENU_WIDTH), mwin->y + 22, yy, disp_color);
            GUI_HLine(xx-(SMENU_WIDTH-MMENU_WIDTH), yy, xx+MMENU_WIDTH, disp_color);

        }
        else
        {
            GUI_Rectangle(xx-(SMENU_WIDTH-MMENU_WIDTH), mwin->y + 22, xx+MMENU_WIDTH, yy, disp_color);
        }
        GUI_HLine(xx+1, mwin->y + 22, xx+MMENU_WIDTH-1, back_color);

        xx = xx-(SMENU_WIDTH-MMENU_WIDTH);
    }

    /* 显示菜单文字 */
    xx++;
    yy = mwin->y + 22 + 2;
    for(i=0; i<(men->no); i++)
    {
        if( i == (men->state) )                               // 判断所选择的菜单项
        {
            /* 显示背景色 */
            GUI_RectangleFill(xx, yy, xx+SMENU_WIDTH-2, yy+10, disp_color);
            /* 显示菜单字符 */
            GUI_ExchangeColor();
            GUI_PutNoStr(xx+1, yy+1, men->str[i], 8);          // 书写子菜单文字
            GUI_ExchangeColor();
        }
        else
        {
            /* 显示背景色 */
            GUI_RectangleFill(xx, yy, xx+SMENU_WIDTH-2, yy+10, back_color);
            /* 显示菜单字符 */
            GUI_PutNoStr(xx+1, yy+1, men->str[i], 8);          // 书写子菜单文字
        }

        yy += 11;
    }

    return(1);
}