2017-05-29 07:54:57 +00:00
|
|
|
/*************************************************************************/
|
|
|
|
/** Copyright. **/
|
|
|
|
/** FileName: GUI_ProcessBar.c **/
|
|
|
|
/** Author: XuYulin **/
|
|
|
|
/** Version: 1.0.0.0 **/
|
2017-07-31 13:29:09 +00:00
|
|
|
/** Description: Process bar display interface. **/
|
2017-05-29 07:54:57 +00:00
|
|
|
/*************************************************************************/
|
|
|
|
|
|
|
|
//=======================================================================//
|
|
|
|
//= Include files. =//
|
|
|
|
//=======================================================================//
|
|
|
|
#include "GUI_Basic.h"
|
|
|
|
#include "GUI_ProcessBar.h"
|
|
|
|
|
|
|
|
//=======================================================================//
|
|
|
|
//= Function implementation. =//
|
|
|
|
//=======================================================================//
|
|
|
|
/*************************************************************************/
|
|
|
|
/** Function Name: GUI_UpdateProcessBar **/
|
|
|
|
/** Purpose: Display or update a process bar. **/
|
|
|
|
/** Resources: Process bar data structure. **/
|
|
|
|
/** Params: **/
|
|
|
|
/** @pProcessBarData: Process bar data whitch will update on screen. **/
|
|
|
|
/** Return: None. **/
|
|
|
|
/** Notice: None. **/
|
|
|
|
/*************************************************************************/
|
2017-05-31 12:35:32 +00:00
|
|
|
void GUI_RefreshProcessBar(GUI_PROCBAR_STRUCT *pProcessBarData)
|
2017-05-29 07:54:57 +00:00
|
|
|
{
|
|
|
|
uint8_t uiProcessBlockStartX, uiProcessBlockStartY;
|
|
|
|
uint8_t uiProcessBlockWidth, uiProcessBlockHeight;
|
|
|
|
GUI_COLOR eBackColor, eFillColor;
|
|
|
|
if(NULL != pProcessBarData)
|
|
|
|
{
|
|
|
|
if((pProcessBarData->Parameter.Width > 3) && (pProcessBarData->Parameter.Height > 3))
|
|
|
|
{
|
|
|
|
// Check value must be less then PROCBAR_VALUE_MAX.
|
|
|
|
if(pProcessBarData->Data.Value > pProcessBarData->Parameter.MaxValue)
|
|
|
|
{
|
|
|
|
pProcessBarData->Data.Value = pProcessBarData->Parameter.MaxValue;
|
|
|
|
}
|
|
|
|
// Update process bar data.
|
|
|
|
switch(pProcessBarData->Parameter.Direction)
|
|
|
|
{
|
|
|
|
case GUI_PROCBAR_DOWN: // Process from up to down.
|
|
|
|
{
|
|
|
|
uiProcessBlockStartX = pProcessBarData->Parameter.PosX + 1;
|
|
|
|
uiProcessBlockStartY = pProcessBarData->Parameter.PosY + 1;
|
|
|
|
uiProcessBlockWidth = pProcessBarData->Parameter.Width - 2;
|
|
|
|
uiProcessBlockHeight = (pProcessBarData->Parameter.Height - 2) * (pProcessBarData->Data.Value) / pProcessBarData->Parameter.MaxValue;
|
|
|
|
eBackColor = GUI_COLOR_BKGCLR;
|
|
|
|
eFillColor = GUI_COLOR_FRGCLR;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case GUI_PROCBAR_LEFT: // Process from right to left.
|
|
|
|
{
|
|
|
|
uiProcessBlockStartX = pProcessBarData->Parameter.PosX + 1;
|
|
|
|
uiProcessBlockStartY = pProcessBarData->Parameter.PosY + 1;
|
|
|
|
uiProcessBlockWidth = (pProcessBarData->Parameter.Width - 2) * (pProcessBarData->Parameter.MaxValue - pProcessBarData->Data.Value) / pProcessBarData->Parameter.MaxValue;
|
|
|
|
uiProcessBlockHeight = pProcessBarData->Parameter.Height - 2;
|
|
|
|
eBackColor = GUI_COLOR_FRGCLR;
|
|
|
|
eFillColor = GUI_COLOR_BKGCLR;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case GUI_PROCBAR_RIGHT: // Process from left to right.
|
|
|
|
{
|
|
|
|
uiProcessBlockStartX = pProcessBarData->Parameter.PosX + 1;
|
|
|
|
uiProcessBlockStartY = pProcessBarData->Parameter.PosY + 1;
|
|
|
|
uiProcessBlockWidth = (pProcessBarData->Parameter.Width - 2) * (pProcessBarData->Data.Value) / pProcessBarData->Parameter.MaxValue;
|
|
|
|
uiProcessBlockHeight = pProcessBarData->Parameter.Height - 2;
|
|
|
|
eBackColor = GUI_COLOR_BKGCLR;
|
|
|
|
eFillColor = GUI_COLOR_FRGCLR;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case GUI_PROCBAR_UP: // Process from down to up.
|
|
|
|
default:
|
|
|
|
{
|
|
|
|
uiProcessBlockStartX = pProcessBarData->Parameter.PosX + 1;
|
|
|
|
uiProcessBlockStartY = pProcessBarData->Parameter.PosY + 1;
|
|
|
|
uiProcessBlockWidth = pProcessBarData->Parameter.Width - 2;
|
|
|
|
uiProcessBlockHeight = (pProcessBarData->Parameter.Height - 2) * (pProcessBarData->Parameter.MaxValue - pProcessBarData->Data.Value) / pProcessBarData->Parameter.MaxValue;
|
|
|
|
eBackColor = GUI_COLOR_FRGCLR;
|
|
|
|
eFillColor = GUI_COLOR_BKGCLR;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// Redraw edge and clean up area.
|
|
|
|
GUI_Basic_DrawRectangle(pProcessBarData->Parameter.PosX, pProcessBarData->Parameter.PosY, pProcessBarData->Parameter.Width, pProcessBarData->Parameter.Height, GUI_COLOR_FRGCLR, eBackColor);
|
|
|
|
// Draw process block.
|
|
|
|
GUI_Basic_DrawRectangle(uiProcessBlockStartX, uiProcessBlockStartY, uiProcessBlockWidth, uiProcessBlockHeight, eFillColor, eFillColor);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|