diff --git a/DemoProc/inc/DemoProc.h b/DemoProc/inc/DemoProc.h index bad05d8..90a40c6 100644 --- a/DemoProc/inc/DemoProc.h +++ b/DemoProc/inc/DemoProc.h @@ -69,10 +69,10 @@ HMI_EVENT_TYPE_DECLARE(DATA_EVENT, DUMMY_DATA_EVENT_DATA); //= User Macro definition. =// //=======================================================================// #define HMI_SCREEN_ID_DEMO_SCROLLING_TEXT (1001) -#define HMI_SCREEN_ID_DEMO_ITEMS_BASE (1002) +#define HMI_SCREEN_ID_DEMO_PAINT_TEXT (1002) #define HMI_SCREEN_ID_DEMO_LIST (1003) #define HMI_SCREEN_ID_DEMO_TEXT_NOTICE (1004) -#define HMI_SCREEN_ID_DEMO_RTC_NOTICE (1005) +#define HMI_SCREEN_ID_DEMO_BASIC_PAINT (1005) #define HMI_SCREEN_ID_DEMO_VARIABLE_BOX (1006) #define HMI_SCREEN_ID_DEMO_REAL_TIME_GRAPH (1007) #define HMI_SCREEN_ID_DEMO_MENU (1008) @@ -86,13 +86,14 @@ HMI_EVENT_TYPE_DECLARE(DATA_EVENT, DUMMY_DATA_EVENT_DATA); extern HMI_ENGINE_OBJECT g_stDemoEngine; /* Screen display objects. */ extern HMI_SCREEN_OBJECT g_stHMIDemo_ScrollingText; -extern HMI_SCREEN_OBJECT g_stHMIDemo_ItemsBase; extern HMI_SCREEN_OBJECT g_stHMIDemo_List; extern HMI_SCREEN_OBJECT g_stHMIDemo_Notice; extern HMI_SCREEN_OBJECT g_stHMIDemo_RTCNotice; extern HMI_SCREEN_OBJECT g_stHMIDemo_VariableBox; extern HMI_SCREEN_OBJECT g_stHMIDemo_RealtimeGraph; extern HMI_SCREEN_OBJECT g_stHMIDemo_Menu; +extern HMI_SCREEN_OBJECT g_stHMIDemo_BasicPaint; +extern HMI_SCREEN_OBJECT g_stHMIDemo_TextPaint; //=======================================================================// //= Function declare. =// //=======================================================================// diff --git a/DemoProc/src/Basic.c b/DemoProc/src/Basic.c new file mode 100644 index 0000000..84adbef --- /dev/null +++ b/DemoProc/src/Basic.c @@ -0,0 +1,130 @@ +/*************************************************************************/ +/** Copyright. **/ +/** FileName: RTCNotice.c **/ +/** Author: Polarix **/ +/** Version: 1.0.0.0 **/ +/** Description: HMI demo for notice box interface and refresh screen. **/ +/*************************************************************************/ +//=======================================================================// +//= Include files. =// +//=======================================================================// +#include "DemoProc.h" +#include "HMI_Engine.h" +#include "SGUI_Basic.h" + +//=======================================================================// +//= User Macro definition. =// +//=======================================================================// + +//=======================================================================// +//= Static function declaration. =// +//=======================================================================// +static HMI_ENGINE_RESULT HMI_DemoBasic_Prepare(SGUI_SCR_DEV* pstDeviceIF, const void* pstParameters); +static HMI_ENGINE_RESULT HMI_DemoBasic_RefreshScreen(SGUI_SCR_DEV* pstDeviceIF, const void* pstParameters); +static HMI_ENGINE_RESULT HMI_DemoBasic_ProcessEvent(SGUI_SCR_DEV* pstDeviceIF, const HMI_EVENT_BASE* pstEvent, SGUI_INT* piActionID); +static HMI_ENGINE_RESULT HMI_DemoBasic_PostProcess(SGUI_SCR_DEV* pstDeviceIF, HMI_ENGINE_RESULT eProcResult, SGUI_INT iActionID); + +//=======================================================================// +//= Static variable declaration. =// +//=======================================================================// +HMI_SCREEN_ACTION s_stDemoBasicPaintActions = { NULL, + HMI_DemoBasic_Prepare, + HMI_DemoBasic_RefreshScreen, + HMI_DemoBasic_ProcessEvent, + HMI_DemoBasic_PostProcess + }; +//=======================================================================// +//= Global variable declaration. =// +//=======================================================================// +HMI_SCREEN_OBJECT g_stHMIDemo_BasicPaint = { HMI_SCREEN_ID_DEMO_BASIC_PAINT, + &s_stDemoBasicPaintActions + }; + +//=======================================================================// +//= Function define. =// +//=======================================================================// +HMI_ENGINE_RESULT HMI_DemoBasic_Prepare(SGUI_SCR_DEV* pstDeviceIF, const void* pstParameters) +{ + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + if(NULL != pstDeviceIF->fnClear) + { + pstDeviceIF->fnClear(); + } + else + { + SGUI_Basic_DrawRectangle(pstDeviceIF, 0, 0, pstDeviceIF->stSize.iWidth, pstDeviceIF->stSize.iHeight, SGUI_COLOR_BKGCLR, SGUI_COLOR_BKGCLR); + } + HMI_DemoBasic_RefreshScreen(pstDeviceIF, pstParameters); + return HMI_RET_NORMAL; +} + +HMI_ENGINE_RESULT HMI_DemoBasic_RefreshScreen(SGUI_SCR_DEV* pstDeviceIF, const void* pstParameters) +{ + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + SGUI_Basic_DrawLine(pstDeviceIF, 0, 10, 96, 10, SGUI_COLOR_FRGCLR); + SGUI_Basic_DrawRectangle(pstDeviceIF, 5, 5, 50, 50, SGUI_COLOR_FRGCLR, SGUI_COLOR_TRANS); + SGUI_Basic_DrawCircle(pstDeviceIF, 32, 32, 20, SGUI_COLOR_FRGCLR, SGUI_COLOR_FRGCLR); + SGUI_Basic_DrawCircle(pstDeviceIF, 96, 32, 20, SGUI_COLOR_FRGCLR, SGUI_COLOR_TRANS); + return HMI_RET_NORMAL; +} + +HMI_ENGINE_RESULT HMI_DemoBasic_ProcessEvent(SGUI_SCR_DEV* pstDeviceIF, const HMI_EVENT_BASE* pstEvent, SGUI_INT* piActionID) +{ + /*----------------------------------*/ + /* Variable Declaration */ + /*----------------------------------*/ + HMI_ENGINE_RESULT eProcessResult; + SGUI_INT iProcessAction; + KEY_PRESS_EVENT* pstKeyEvent; + + /*----------------------------------*/ + /* Initialize */ + /*----------------------------------*/ + eProcessResult = HMI_RET_NORMAL; + iProcessAction = HMI_DEMO_PROC_NO_ACT; + pstKeyEvent = (KEY_PRESS_EVENT*)pstEvent; + + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + if(pstEvent->iType == EVENT_TYPE_ACTION) + { + // Check event is valid. + if(SGUI_FALSE == HMI_EVENT_SIZE_CHK(*pstKeyEvent, KEY_PRESS_EVENT)) + { + // Event data is invalid. + eProcessResult = HMI_RET_INVALID_DATA; + } + else if(EVENT_ID_KEY_PRESS == pstEvent->iID) + { + iProcessAction = HMI_DEMO_PROC_CANCEL; + } + } + if(NULL != piActionID) + { + *piActionID = iProcessAction; + } + + return eProcessResult; +} + +HMI_ENGINE_RESULT HMI_DemoBasic_PostProcess(SGUI_SCR_DEV* pstDeviceIF, HMI_ENGINE_RESULT eProcResult, SGUI_INT iActionID) +{ + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + if(HMI_PROCESS_SUCCESSFUL(eProcResult)) + { + if(HMI_DEMO_PROC_CANCEL == iActionID) + { + HMI_GoBack(NULL); + } + } + + return HMI_RET_NORMAL; +} + diff --git a/DemoProc/src/DemoProc.c b/DemoProc/src/DemoProc.c index a9cf0e3..ae20d3e 100644 --- a/DemoProc/src/DemoProc.c +++ b/DemoProc/src/DemoProc.c @@ -27,11 +27,12 @@ SGUI_SCR_DEV g_stDeviceInterface; HMI_SCREEN_OBJECT* g_arrpstScreenObjs[] = { &g_stHMIDemo_List, - &g_stHMIDemo_ItemsBase, + &g_stHMIDemo_TextPaint, &g_stHMIDemo_VariableBox, &g_stHMIDemo_RealtimeGraph, &g_stHMIDemo_Menu, - &g_stHMIDemo_Notice + &g_stHMIDemo_Notice, + &g_stHMIDemo_BasicPaint }; HMI_ENGINE_OBJECT g_stDemoEngine; diff --git a/DemoProc/src/ItemsBase.c b/DemoProc/src/ItemsBase.c deleted file mode 100644 index 44f87d9..0000000 --- a/DemoProc/src/ItemsBase.c +++ /dev/null @@ -1,203 +0,0 @@ -/*************************************************************************/ -/** Copyright. **/ -/** FileName: List.c **/ -/** Author: Polarix **/ -/** Version: 1.0.0.0 **/ -/** Description: HMI demo for list control interface. **/ -/*************************************************************************/ - -//=======================================================================// -//= Include files. =// -//=======================================================================// -#include "DemoProc.h" -#include "SGUI_ItemsBase.h" -#include "SGUI_FontResource.h" -#include "HMI_Engine.h" - -//=======================================================================// -//= User Macro definition. =// -//=======================================================================// -#define NOTICE_TEXT_BUFFER_SIZE (64) - -//=======================================================================// -//= Static function declaration. =// -//=======================================================================// -static HMI_ENGINE_RESULT HMI_DemoItemsBase_Initialize(SGUI_SCR_DEV* pstDeviceIF); -static HMI_ENGINE_RESULT HMI_DemoItemsBase_Prepare(SGUI_SCR_DEV* pstDeviceIF, const void* pstParameters); -static HMI_ENGINE_RESULT HMI_DemoItemsBase_RefreshScreen(SGUI_SCR_DEV* pstDeviceIF, const void* pstParameters); -static HMI_ENGINE_RESULT HMI_DemoItemsBase_ProcessEvent(SGUI_SCR_DEV* pstDeviceIF, const HMI_EVENT_BASE* pstEvent, SGUI_INT* piActionID); -static HMI_ENGINE_RESULT HMI_DemoItemsBase_PostProcess(SGUI_SCR_DEV* pstDeviceIF, HMI_ENGINE_RESULT eProcResult, SGUI_INT iActionID); - -//=======================================================================// -//= Static variable declaration. =// -//=======================================================================// -static SGUI_ITEMS_ITEM s_arrstTestItems[] = { {"Variable box", NULL}, - {"Item2 text", NULL}, - {"Item3 text", NULL}, - {"Item4 text", NULL}, - {"Item5 text", NULL}, - {"Item6 text", NULL}, - {"Item7 text", NULL}, - }; - -HMI_SCREEN_ACTION s_stDemoItemsBaseActions = { HMI_DemoItemsBase_Initialize, - HMI_DemoItemsBase_Prepare, - HMI_DemoItemsBase_RefreshScreen, - HMI_DemoItemsBase_ProcessEvent, - HMI_DemoItemsBase_PostProcess - }; - -static SGUI_ITEMS_BASE s_stDemoItemsBaseObject; - -//=======================================================================// -//= Global variable declaration. =// -//=======================================================================// -HMI_SCREEN_OBJECT g_stHMIDemo_ItemsBase = { HMI_SCREEN_ID_DEMO_ITEMS_BASE, - &s_stDemoItemsBaseActions - }; - -//=======================================================================// -//= Function define. =// -//=======================================================================// -HMI_ENGINE_RESULT HMI_DemoItemsBase_Initialize(SGUI_SCR_DEV* pstDeviceIF) -{ - /*----------------------------------*/ - /* Process */ - /*----------------------------------*/ - // Initialize list data. - SGUI_SystemIF_MemorySet(&s_stDemoItemsBaseObject, 0x00, sizeof(SGUI_ITEMS_BASE)); - // Title and font size must set before initialize list object. - s_stDemoItemsBaseObject.stLayout.iPosX = 5; - s_stDemoItemsBaseObject.stLayout.iPosY = 5; - s_stDemoItemsBaseObject.stLayout.iWidth = 118; - s_stDemoItemsBaseObject.stLayout.iHeight = 54; - //Initialize list object. - SGUI_ItemsBase_Initialize(&s_stDemoItemsBaseObject, &SGUI_DEFAULT_FONT_8, s_arrstTestItems, sizeof(s_arrstTestItems)/sizeof(SGUI_ITEMS_ITEM)); - - return HMI_RET_NORMAL; -} - -HMI_ENGINE_RESULT HMI_DemoItemsBase_Prepare (SGUI_SCR_DEV* pstDeviceIF, const void* pstParameters) -{ - /*----------------------------------*/ - /* Process */ - /*----------------------------------*/ - SGUI_Basic_DrawRectangle(pstDeviceIF, 4, 4, 120, 56, SGUI_COLOR_FRGCLR, SGUI_COLOR_BKGCLR); - SGUI_ItemsBase_Repaint(pstDeviceIF, &s_stDemoItemsBaseObject); - return HMI_RET_NORMAL; -} - -HMI_ENGINE_RESULT HMI_DemoItemsBase_RefreshScreen(SGUI_SCR_DEV* pstDeviceIF, const void* pstParameters) -{ - /*----------------------------------*/ - /* Process */ - /*----------------------------------*/ - SGUI_Basic_DrawRectangle(pstDeviceIF, 4, 4, 62, 22, SGUI_COLOR_FRGCLR, SGUI_COLOR_BKGCLR); - SGUI_ItemsBase_Repaint(pstDeviceIF, &s_stDemoItemsBaseObject); - return HMI_RET_NORMAL; -} - -HMI_ENGINE_RESULT HMI_DemoItemsBase_ProcessEvent(SGUI_SCR_DEV* pstDeviceIF, const HMI_EVENT_BASE* pstEvent, SGUI_INT* piActionID) -{ - /*----------------------------------*/ - /* Variable Declaration */ - /*----------------------------------*/ - HMI_ENGINE_RESULT eProcessResult; - SGUI_UINT16 uiKeyCode; - SGUI_UINT16 uiKeyValue; - KEY_PRESS_EVENT* pstKeyEvent; - SGUI_INT iProcessAction; - - /*----------------------------------*/ - /* Initialize */ - /*----------------------------------*/ - eProcessResult = HMI_RET_NORMAL; - pstKeyEvent = (KEY_PRESS_EVENT*)pstEvent; - iProcessAction = HMI_DEMO_PROC_NO_ACT; - - /*----------------------------------*/ - /* Process */ - /*----------------------------------*/ - if(pstEvent->iType == EVENT_TYPE_ACTION) - { - // Check event is valid. - if(SGUI_FALSE == HMI_EVENT_SIZE_CHK(*pstKeyEvent, KEY_PRESS_EVENT)) - { - // Event data is invalid. - eProcessResult = HMI_RET_INVALID_DATA; - } - else if(EVENT_ID_KEY_PRESS == pstEvent->iID) - { - uiKeyCode = pstKeyEvent->Data.uiKeyValue; - uiKeyValue = KEY_CODE_VALUE(uiKeyCode); - switch(uiKeyValue) - { - case KEY_VALUE_ENTER: - { - iProcessAction = HMI_DEMO_PROC_CONFIRM; - break; - } - case KEY_VALUE_ESC: - { - iProcessAction = HMI_DEMO_PROC_CANCEL; - break; - } - case KEY_VALUE_UP: - { - if(s_stDemoItemsBaseObject.iSelection > 0) - { - s_stDemoItemsBaseObject.iSelection -= 1; - } - SGUI_ItemsBase_Repaint(pstDeviceIF, &s_stDemoItemsBaseObject); - break; - } - case KEY_VALUE_DOWN: - { - if(s_stDemoItemsBaseObject.iSelection < s_stDemoItemsBaseObject.iCount-1) - { - s_stDemoItemsBaseObject.iSelection += 1; - } - SGUI_ItemsBase_Repaint(pstDeviceIF, &s_stDemoItemsBaseObject); - break; - } - default: - { - break; - } - } - } - } - if(NULL != piActionID) - { - *piActionID = iProcessAction; - } - - return eProcessResult; -} - -HMI_ENGINE_RESULT HMI_DemoItemsBase_PostProcess(SGUI_SCR_DEV* pstDeviceIF, HMI_ENGINE_RESULT eProcResult, SGUI_INT iActionID) -{ - if(HMI_DEMO_PROC_CONFIRM == iActionID) - { - switch(s_stDemoItemsBaseObject.iSelection) - { - case 0: - { - HMI_SwitchScreen(HMI_SCREEN_ID_DEMO_VARIABLE_BOX, NULL); - break; - } - default: - { - - /* do nothing. */ - } - } - } - else if(HMI_DEMO_PROC_CANCEL == iActionID) - { - HMI_GoBack(NULL); - } - - return HMI_RET_NORMAL; -} - diff --git a/DemoProc/src/List.c b/DemoProc/src/List.c index 920d388..4b93940 100644 --- a/DemoProc/src/List.c +++ b/DemoProc/src/List.c @@ -10,7 +10,6 @@ #include "DemoProc.h" #include "SGUI_List.h" #include "SGUI_FontResource.h" -#include "HMI_Engine.h" #include "Resource.h" //=======================================================================// @@ -30,14 +29,12 @@ static HMI_ENGINE_RESULT HMI_DemoList_PostProcess(SGUI_SCR_DEV* pstDeviceIF, HMI //=======================================================================// //= Static variable declaration. =// //=======================================================================// -static SGUI_ITEMS_ITEM s_arrstListItems[] = { {"输入框组件", NULL}, +static SGUI_ITEMS_ITEM s_arrstListItems[] = { {"基础绘图", NULL}, + {"文字显示", NULL}, + {"输入框组件", NULL}, {"实时曲线组件", NULL}, {"菜单组件", NULL}, - {"提示框组件", NULL}, - {"还没安排2", NULL}, - {"还没安排3", NULL}, - {"还没安排4", NULL}, - {"还没安排5", NULL}, + {"提示框组件", NULL} }; static SGUI_LIST_STRUCT s_stDemoListObject = {0x00}; @@ -177,22 +174,32 @@ HMI_ENGINE_RESULT HMI_DemoList_PostProcess(SGUI_SCR_DEV* pstDeviceIF, HMI_ENGINE { switch(s_stDemoListObject.stItems.iSelection) { - case 0: + case 0: { - HMI_SwitchScreen(HMI_SCREEN_ID_DEMO_VARIABLE_BOX, NULL); + HMI_SwitchScreen(HMI_SCREEN_ID_DEMO_BASIC_PAINT, NULL); break; } case 1: { - HMI_SwitchScreen(HMI_SCREEN_ID_DEMO_REAL_TIME_GRAPH, NULL); + HMI_SwitchScreen(HMI_SCREEN_ID_DEMO_PAINT_TEXT, NULL); break; } case 2: { - HMI_SwitchScreen(HMI_SCREEN_ID_DEMO_MENU, NULL); + HMI_SwitchScreen(HMI_SCREEN_ID_DEMO_VARIABLE_BOX, NULL); break; } case 3: + { + HMI_SwitchScreen(HMI_SCREEN_ID_DEMO_REAL_TIME_GRAPH, NULL); + break; + } + case 4: + { + HMI_SwitchScreen(HMI_SCREEN_ID_DEMO_MENU, NULL); + break; + } + case 5: { HMI_SwitchScreen(HMI_SCREEN_ID_DEMO_TEXT_NOTICE, "This is a test notice text."); break; diff --git a/DemoProc/src/Notice.c b/DemoProc/src/Notice.c index 514b567..67ea790 100644 --- a/DemoProc/src/Notice.c +++ b/DemoProc/src/Notice.c @@ -19,11 +19,11 @@ //=======================================================================// //= Static function declaration. =// //=======================================================================// -static HMI_ENGINE_RESULT HMI_DemoNotice_Initialize(SGUI_SCR_DEV* pstIFObj); -static HMI_ENGINE_RESULT HMI_DemoNotice_Prepare(SGUI_SCR_DEV* pstIFObj, const void* pstParameters); -static HMI_ENGINE_RESULT HMI_DemoNotice_RefreshScreen(SGUI_SCR_DEV* pstIFObj, const void* pstParameters); -static HMI_ENGINE_RESULT HMI_DemoNotice_ProcessEvent(SGUI_SCR_DEV* pstIFObj, const HMI_EVENT_BASE* pstEvent, SGUI_INT* piActionID); -static HMI_ENGINE_RESULT HMI_DemoNotice_PostProcess(SGUI_SCR_DEV* pstIFObj, HMI_ENGINE_RESULT eProcResult, SGUI_INT iActionID); +static HMI_ENGINE_RESULT HMI_DemoNotice_Initialize(SGUI_SCR_DEV* pstDeviceIF); +static HMI_ENGINE_RESULT HMI_DemoNotice_Prepare(SGUI_SCR_DEV* pstDeviceIF, const void* pstParameters); +static HMI_ENGINE_RESULT HMI_DemoNotice_RefreshScreen(SGUI_SCR_DEV* pstDeviceIF, const void* pstParameters); +static HMI_ENGINE_RESULT HMI_DemoNotice_ProcessEvent(SGUI_SCR_DEV* pstDeviceIF, const HMI_EVENT_BASE* pstEvent, SGUI_INT* piActionID); +static HMI_ENGINE_RESULT HMI_DemoNotice_PostProcess(SGUI_SCR_DEV* pstDeviceIF, HMI_ENGINE_RESULT eProcResult, SGUI_INT iActionID); //=======================================================================// //= Static variable declaration. =// @@ -48,16 +48,16 @@ HMI_SCREEN_OBJECT g_stHMIDemo_Notice = { HMI_SCREEN_ID_DEMO_TEXT_NOTICE, //=======================================================================// //= Function define. =// //=======================================================================// -HMI_ENGINE_RESULT HMI_DemoNotice_Initialize(SGUI_SCR_DEV* pstIFObj) +HMI_ENGINE_RESULT HMI_DemoNotice_Initialize(SGUI_SCR_DEV* pstDeviceIF) { SGUI_SystemIF_MemorySet(s_szDemoNoticeText, 0x00, sizeof(SGUI_CHAR)*(NOTICE_TEXT_BUFFER_SIZE+1)); s_stDemoNoticeBox.cszNoticeText = s_szDemoNoticeText; s_stDemoNoticeBox.pstIcon = NULL; - SGUI_Notice_FitArea(pstIFObj, &(s_stDemoNoticeBox.stLayout)); + SGUI_Notice_FitArea(pstDeviceIF, &(s_stDemoNoticeBox.stLayout)); return HMI_RET_NORMAL; } -HMI_ENGINE_RESULT HMI_DemoNotice_Prepare(SGUI_SCR_DEV* pstIFObj, const void* pstParameters) +HMI_ENGINE_RESULT HMI_DemoNotice_Prepare(SGUI_SCR_DEV* pstDeviceIF, const void* pstParameters) { /*----------------------------------*/ /* Process */ @@ -71,17 +71,17 @@ HMI_ENGINE_RESULT HMI_DemoNotice_Prepare(SGUI_SCR_DEV* pstIFObj, const void* pst SGUI_SystemIF_StringLengthCopy(s_szDemoNoticeText, (SGUI_SZSTR)pstParameters, NOTICE_TEXT_BUFFER_SIZE); s_szDemoNoticeText[NOTICE_TEXT_BUFFER_SIZE] = '\0'; } - SGUI_Notice_Repaint(pstIFObj, &s_stDemoNoticeBox, &SGUI_DEFAULT_FONT_16, 0); + SGUI_Notice_Repaint(pstDeviceIF, &s_stDemoNoticeBox, &SGUI_DEFAULT_FONT_16, 0); return HMI_RET_NORMAL; } -HMI_ENGINE_RESULT HMI_DemoNotice_RefreshScreen(SGUI_SCR_DEV* pstIFObj, const void* pstParameters) +HMI_ENGINE_RESULT HMI_DemoNotice_RefreshScreen(SGUI_SCR_DEV* pstDeviceIF, const void* pstParameters) { - SGUI_Notice_Repaint(pstIFObj, &s_stDemoNoticeBox, &SGUI_DEFAULT_FONT_16, 0); + SGUI_Notice_Repaint(pstDeviceIF, &s_stDemoNoticeBox, &SGUI_DEFAULT_FONT_16, 0); return HMI_RET_NORMAL; } -HMI_ENGINE_RESULT HMI_DemoNotice_ProcessEvent(SGUI_SCR_DEV* pstIFObj, const HMI_EVENT_BASE* pstEvent, SGUI_INT* piActionID) +HMI_ENGINE_RESULT HMI_DemoNotice_ProcessEvent(SGUI_SCR_DEV* pstDeviceIF, const HMI_EVENT_BASE* pstEvent, SGUI_INT* piActionID) { /*----------------------------------*/ /* Variable Declaration */ @@ -126,7 +126,7 @@ HMI_ENGINE_RESULT HMI_DemoNotice_ProcessEvent(SGUI_SCR_DEV* pstIFObj, const HMI_ return eProcessResult; } -HMI_ENGINE_RESULT HMI_DemoNotice_PostProcess(SGUI_SCR_DEV* pstIFObj, HMI_ENGINE_RESULT eProcResult, SGUI_INT iActionID) +HMI_ENGINE_RESULT HMI_DemoNotice_PostProcess(SGUI_SCR_DEV* pstDeviceIF, HMI_ENGINE_RESULT eProcResult, SGUI_INT iActionID) { /*----------------------------------*/ /* Process */ diff --git a/DemoProc/src/RTCNotice.c b/DemoProc/src/RTCNotice.c deleted file mode 100644 index 4b071eb..0000000 --- a/DemoProc/src/RTCNotice.c +++ /dev/null @@ -1,147 +0,0 @@ -/*************************************************************************/ -/** Copyright. **/ -/** FileName: RTCNotice.c **/ -/** Author: Polarix **/ -/** Version: 1.0.0.0 **/ -/** Description: HMI demo for notice box interface and refresh screen. **/ -/*************************************************************************/ -//=======================================================================// -//= Include files. =// -//=======================================================================// -#include "DemoProc.h" -#include "HMI_Engine.h" -#include "SGUI_Notice.h" -#include "SGUI_Common.h" - -//=======================================================================// -//= User Macro definition. =// -//=======================================================================// -#define NOTICE_RTC_BUFFER_SIZE (64) - -//=======================================================================// -//= Static function declaration. =// -//=======================================================================// -static HMI_ENGINE_RESULT HMI_DemoRTCNotice_Prepare(SGUI_SCR_DEV* pstIFObj, const void* pstParameters); -static HMI_ENGINE_RESULT HMI_DemoRTCNotice_RefreshScreen(SGUI_SCR_DEV* pstIFObj, const void* pstParameters); -static HMI_ENGINE_RESULT HMI_DemoRTCNotice_ProcessEvent(SGUI_SCR_DEV* pstIFObj, const HMI_EVENT_BASE* pstEvent, SGUI_INT* piActionID); -static HMI_ENGINE_RESULT HMI_DemoRTCNotice_PostProcess(SGUI_SCR_DEV* pstIFObj, HMI_ENGINE_RESULT eProcResult, SGUI_INT iActionID); - -//=======================================================================// -//= Static variable declaration. =// -//=======================================================================// -static char s_szRTCNoticeText[NOTICE_RTC_BUFFER_SIZE+1] = {0x00}; -HMI_SCREEN_ACTION s_stDemoRTCNoticeActions = { NULL, - HMI_DemoRTCNotice_Prepare, - HMI_DemoRTCNotice_RefreshScreen, - HMI_DemoRTCNotice_ProcessEvent, - HMI_DemoRTCNotice_PostProcess - }; -//=======================================================================// -//= Global variable declaration. =// -//=======================================================================// -HMI_SCREEN_OBJECT g_stHMIDemo_RTCNotice = { HMI_SCREEN_ID_DEMO_RTC_NOTICE, - &s_stDemoRTCNoticeActions - }; - -//=======================================================================// -//= Function define. =// -//=======================================================================// -HMI_ENGINE_RESULT HMI_DemoRTCNotice_Prepare(SGUI_SCR_DEV* pstIFObj, const void* pstParameters) -{ - RTCTimerEnable(true); - SGUI_SystemIF_MemorySet(s_szRTCNoticeText, 0x00, sizeof(SGUI_CHAR)*(NOTICE_RTC_BUFFER_SIZE+1)); - HMI_DemoRTCNotice_RefreshScreen(pstIFObj, NULL); - return HMI_RET_NORMAL; -} - -HMI_ENGINE_RESULT HMI_DemoRTCNotice_RefreshScreen(SGUI_SCR_DEV* pstIFObj, const void* pstParameters) -{ - /*----------------------------------*/ - /* Variable Declaration */ - /*----------------------------------*/ - SGUI_TIME stRTCTime; - - /*----------------------------------*/ - /* Process */ - /*----------------------------------*/ - SGUI_SystemIF_GetNowTime(&stRTCTime); - sprintf(s_szRTCNoticeText, DEMO_RTC_NOTICE_TEXT_FMT, - stRTCTime.Year, stRTCTime.Month, stRTCTime.Day, - stRTCTime.Hour, stRTCTime.Minute, stRTCTime.Second); - SGUI_Notice_Repaint(pstIFObj, s_szRTCNoticeText, &SGUI_DEFAULT_FONT, 0, SGUI_ICON_INFORMATION); - return HMI_RET_NORMAL; -} - -HMI_ENGINE_RESULT HMI_DemoRTCNotice_ProcessEvent(SGUI_SCR_DEV* pstIFObj, const HMI_EVENT_BASE* pstEvent, SGUI_INT* piActionID) -{ - /*----------------------------------*/ - /* Variable Declaration */ - /*----------------------------------*/ - HMI_ENGINE_RESULT eProcessResult; - SGUI_TIME stRTCTime; - SGUI_UINT16 uiKeyValue; - KEY_PRESS_EVENT* pstKeyEvent; - SGUI_INT iProcessAction; - - /*----------------------------------*/ - /* Initialize */ - /*----------------------------------*/ - eProcessResult = HMI_RET_NORMAL; - iProcessAction = HMI_DEMO_PROC_NO_ACT; - - /*----------------------------------*/ - /* Process */ - /*----------------------------------*/ - if(NULL != pstEvent) - { - if(EVENT_TYPE_ACTION == pstEvent->iType) - { - if(EVENT_ID_KEY_PRESS == pstEvent->iID) - { - pstKeyEvent = (KEY_PRESS_EVENT*)pstEvent; - uiKeyValue = KEY_CODE_VALUE(pstKeyEvent->Data.uiKeyValue); - switch(uiKeyValue) - { - case KEY_VALUE_ENTER: - case KEY_VALUE_ESC: - { - iProcessAction = HMI_DEMO_PROC_CANCEL; - break; - } - } - } - } - else if(EVENT_TYPE_DATA == pstEvent->iType) - { - if(EVENT_ID_RTC == pstEvent->iID) - { - SGUI_SystemIF_GetNowTime(&stRTCTime); - sprintf(s_szRTCNoticeText, DEMO_RTC_NOTICE_TEXT_FMT, - stRTCTime.Year, stRTCTime.Month, stRTCTime.Day, - stRTCTime.Hour, stRTCTime.Minute, stRTCTime.Second); - SGUI_Notice_Repaint(pstIFObj, s_szRTCNoticeText, SGUI_FONT_SIZE_H12, 0, SGUI_ICON_INFORMATION); - } - } - } - if(NULL != piActionID) - { - *piActionID = iProcessAction; - } - - return eProcessResult; -} - -HMI_ENGINE_RESULT HMI_DemoRTCNotice_PostProcess(SGUI_SCR_DEV* pstIFObj, HMI_ENGINE_RESULT eProcResult, SGUI_INT iActionID) -{ - if(HMI_PROCESS_SUCCESSFUL(eProcResult)) - { - if(HMI_DEMO_PROC_CANCEL == iActionID) - { - RTCTimerEnable(false); - HMI_GoBack(NULL); - } - } - - return HMI_RET_NORMAL; -} - diff --git a/DemoProc/src/Text.c b/DemoProc/src/Text.c new file mode 100644 index 0000000..71606a7 --- /dev/null +++ b/DemoProc/src/Text.c @@ -0,0 +1,163 @@ +/*************************************************************************/ +/** Copyright. **/ +/** FileName: Text.c **/ +/** Author: Polarix **/ +/** Description: HMI demo for text paint interface. **/ +/*************************************************************************/ + +//=======================================================================// +//= Include files. =// +//=======================================================================// +#include "DemoProc.h" +#include "SGUI_Text.h" +#include "SGUI_FontResource.h" +#include "Resource.h" + +//=======================================================================// +//= Static function declaration. =// +//=======================================================================// +static HMI_ENGINE_RESULT HMI_DemoText_Prepare(SGUI_SCR_DEV* pstDeviceIF, const void* pstParameters); +static HMI_ENGINE_RESULT HMI_DemoText_RefreshScreen(SGUI_SCR_DEV* pstDeviceIF, const void* pstParameters); +static HMI_ENGINE_RESULT HMI_DemoText_ProcessEvent(SGUI_SCR_DEV* pstDeviceIF, const HMI_EVENT_BASE* pstEvent, SGUI_INT* piActionID); +static HMI_ENGINE_RESULT HMI_DemoText_PostProcess(SGUI_SCR_DEV* pstDeviceIF, HMI_ENGINE_RESULT eProcResult, SGUI_INT iActionID); + +//=======================================================================// +//= Static variable declaration. =// +//=======================================================================// +HMI_SCREEN_ACTION s_stDemoTextActions = { NULL, + HMI_DemoText_Prepare, + HMI_DemoText_RefreshScreen, + HMI_DemoText_ProcessEvent, + HMI_DemoText_PostProcess + }; + +//=======================================================================// +//= Global variable declaration. =// +//=======================================================================// +HMI_SCREEN_OBJECT g_stHMIDemo_TextPaint = { HMI_SCREEN_ID_DEMO_PAINT_TEXT, + &s_stDemoTextActions + }; + +//=======================================================================// +//= Function define. =// +//=======================================================================// + +HMI_ENGINE_RESULT HMI_DemoText_Prepare (SGUI_SCR_DEV* pstDeviceIF, const void* pstParameters) +{ + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + if(NULL != pstDeviceIF->fnClear) + { + pstDeviceIF->fnClear(); + } + else + { + SGUI_Basic_DrawRectangle(pstDeviceIF, 0, 0, pstDeviceIF->stSize.iWidth, pstDeviceIF->stSize.iHeight, SGUI_COLOR_BKGCLR, SGUI_COLOR_BKGCLR); + } + HMI_DemoText_RefreshScreen(pstDeviceIF, pstParameters); + return HMI_RET_NORMAL; +} + +HMI_ENGINE_RESULT HMI_DemoText_RefreshScreen(SGUI_SCR_DEV* pstDeviceIF, const void* pstParameters) +{ + /*----------------------------------*/ + /* Variable Declaration */ + /*----------------------------------*/ + SGUI_RECT stDisplayArea; + SGUI_POINT stInnerPos; + + /*----------------------------------*/ + /* Initialize */ + /*----------------------------------*/ + stInnerPos.iPosX = 0; + stInnerPos.iPosY = 0; + + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + stDisplayArea.iPosX = 1; + stDisplayArea.iPosY = 1; + stDisplayArea.iWidth = 62; + stDisplayArea.iHeight = SGUI_DEFAULT_FONT_MiniNum.iHeight+1; + SGUI_Text_DrawText(pstDeviceIF, "1234567890", &SGUI_DEFAULT_FONT_MiniNum, &stDisplayArea, &stInnerPos, SGUI_DRAW_NORMAL); + + stDisplayArea.iPosY += stDisplayArea.iHeight; + stDisplayArea.iWidth = 62; + stDisplayArea.iHeight = SGUI_DEFAULT_FONT_8.iHeight+1; + SGUI_Text_DrawText(pstDeviceIF, "8PIX ASCII CHAR", &SGUI_DEFAULT_FONT_8, &stDisplayArea, &stInnerPos, SGUI_DRAW_NORMAL); + + stDisplayArea.iPosY += stDisplayArea.iHeight; + stDisplayArea.iWidth = 62; + stDisplayArea.iHeight = SGUI_DEFAULT_FONT_12.iHeight+1; + SGUI_Text_DrawText(pstDeviceIF, "12Pixel FZXS Default", &SGUI_DEFAULT_FONT_12, &stDisplayArea, &stInnerPos, SGUI_DRAW_REVERSE); + + stDisplayArea.iPosY += stDisplayArea.iHeight; + stDisplayArea.iWidth = 62; + stDisplayArea.iHeight = SGUI_DEFAULT_FONT_12.iHeight+1; + SGUI_Text_DrawText(pstDeviceIF, "自定义中文资源", &GB2312_FZXS12, &stDisplayArea, &stInnerPos, SGUI_DRAW_NORMAL); + + stDisplayArea.iPosX = 64; + stDisplayArea.iPosY = 1; + stDisplayArea.iWidth = 62; + stDisplayArea.iHeight = 62; + SGUI_Text_DrawMultipleLinesText(pstDeviceIF, "多行文字显示接口演示12345678ABCD", &GB2312_FZXS12, &stDisplayArea, 0, SGUI_DRAW_NORMAL); + return HMI_RET_NORMAL; +} + +HMI_ENGINE_RESULT HMI_DemoText_ProcessEvent(SGUI_SCR_DEV* pstDeviceIF, const HMI_EVENT_BASE* pstEvent, SGUI_INT* piActionID) +{ + /*----------------------------------*/ + /* Variable Declaration */ + /*----------------------------------*/ + HMI_ENGINE_RESULT eProcessResult; + SGUI_INT iProcessAction; + KEY_PRESS_EVENT* pstKeyEvent; + + /*----------------------------------*/ + /* Initialize */ + /*----------------------------------*/ + eProcessResult = HMI_RET_NORMAL; + iProcessAction = HMI_DEMO_PROC_NO_ACT; + pstKeyEvent = (KEY_PRESS_EVENT*)pstEvent; + + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + if(pstEvent->iType == EVENT_TYPE_ACTION) + { + // Check event is valid. + if(SGUI_FALSE == HMI_EVENT_SIZE_CHK(*pstKeyEvent, KEY_PRESS_EVENT)) + { + // Event data is invalid. + eProcessResult = HMI_RET_INVALID_DATA; + } + else if(EVENT_ID_KEY_PRESS == pstEvent->iID) + { + iProcessAction = HMI_DEMO_PROC_CANCEL; + } + } + if(NULL != piActionID) + { + *piActionID = iProcessAction; + } + + return eProcessResult; +} + +HMI_ENGINE_RESULT HMI_DemoText_PostProcess(SGUI_SCR_DEV* pstDeviceIF, HMI_ENGINE_RESULT eProcResult, SGUI_INT iActionID) +{ + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + if(HMI_PROCESS_SUCCESSFUL(eProcResult)) + { + if(HMI_DEMO_PROC_CANCEL == iActionID) + { + HMI_GoBack(NULL); + } + } + + return HMI_RET_NORMAL; +} + diff --git a/Documents/Source/API.txt b/Documents/Source/API.txt index e65c966..0c2a848 100644 --- a/Documents/Source/API.txt +++ b/Documents/Source/API.txt @@ -1,837 +1,363 @@ ------------------------ Page 1----------------------- - -SimpleGUI - -一套针对单色显示屏的开源 GUI 接口 - - SimpleGUI API 文档 - - 开源,是一种态度。 - ------------------------ Page 2----------------------- - -目录 - - 目录.................................................................................................................................2 - - 文件结构 ........................................................................................................................3 - - 环境参数设置 ................................................................................................................4 - - 数据类型定义 ................................................................................................................ 5 - - API ..................................................................................................................................7 - ------------------------ Page 3----------------------- - -文件结构 - - Todo - ------------------------ Page 4----------------------- - -环境参数设置 - - 为方便用户配置和移植,SimpleGUI 在 SGUI _Config.h 文件中定义了一些列的控制 - - 和开关宏,用户可以通过打开、关闭以及修改宏定义的值来对 SimpleGUI 的一些全局属性 - - 进行修改。 - - 1、_SIMPLE_GUI_ENABLE_ICONV_GB2312_ - - 此宏定义关联文字显示 API 对非 ASCII 文字的解码方式。设置值大于 0 时有效 ,文字 - - 相关的 API 接口将会视输入的文字为 UTF-8 格式并转换成 GB2312 格式进行解析 ,若此值 - - 为 0 ,则视输入文字为 GB2312 格式进行解析。具体操作将会在“文字显示”章节详细阐 - - 述。 - - 2、_SIMPLE_GUI_VIRTUAL_ENVIRONMENT_SIMULATOR_ - - 此宏定义关联 SimpleGUI 的运行环境 ,设置值大于 0 时有效。当此宏定义有效 ,意味 - - 着 SimpleGUI 正运行于模拟环境中 ,用户在移植到目标平台后 ,请将此宏定义的值修改为 - - 0。 - - 3、_SIMPLE_GUI_ENABLE_DYNAMIC_MEMORY_ - - 此宏定义关联 SimpleGUI 移植目标平台的动态内存操作 , 设置值大于 0 时有效。当 - - 此宏定义设置为有效时 ,意味着目标平台已实现了动态内存管理或支持动态内存管理 ,且 - - 用户已经做好相应的实现或移植 ,此时 SimpleGUI 的相关依赖内容也会被使能 ,如列表项 - - 目的动态增减。 - - 4、_SIMPLE_GUI_ENABLE_BASIC_FONT_ - - 此宏定义关联 SimpleGUI 的内置基础字体 , 设置值大于 0 时有效。SimpleGUI 内部 - - 存储了一组尺寸为 6*8 像素的可见 ASCII 字符集数据 ,当此宏定义有效时 ,此套字体数据 - - 将被支持 ,且文字显示 API 将可以使用此文字数据显示基本 ASCII 字符内容。 - - 此功能设计为 ,如果用户使用外部字库且外部字库出现损坏或数据异常时 ,可以使用 - - 此字库数据输出一些警告或调试信息。 - + 为方便用户配置和移植,SimpleGUI 在 SGUI _Config.h 文件中定义了一些列的控制 + 和开关宏,用户可以通过打开、关闭以及修改宏定义的值来对 SimpleGUI 的一些全局属性 + 进行修改。 + 1、_SIMPLE_GUI_ENABLE_ICONV_GB2312_ + 此宏定义关联文字显示 API 对非 ASCII 文字的解码方式。设置值大于 0 时有效,文字 + 相关的 API 接口将会视输入的文字为 UTF-8 格式并转换成 GB2312 格式进行解析,若此值 + 为 0,则视输入文字为 GB2312 格式进行解析。具体操作将会在“文字显示”章节详细阐 + 述。 + 2、_SIMPLE_GUI_VIRTUAL_ENVIRONMENT_SIMULATOR_ + 此宏定义关联 SimpleGUI 的运行环境,设置值大于 0 时有效。当此宏定义有效,意味 + 着 SimpleGUI 正运行于模拟环境中,用户在移植到目标平台后,请将此宏定义的值修改为 + 0。 + 3、_SIMPLE_GUI_ENABLE_DYNAMIC_MEMORY_ + 此宏定义关联 SimpleGUI 移植目标平台的动态内存操作, 设置值大于 0 时有效。当 + 此宏定义设置为有效时,意味着目标平台已实现了动态内存管理或支持动态内存管理,且 + 用户已经做好相应的实现或移植,此时 SimpleGUI 的相关依赖内容也会被使能,如列表项 + 目的动态增减。 + 4、_SIMPLE_GUI_ENABLE_BASIC_FONT_ + 此宏定义关联 SimpleGUI 的内置基础字体, 设置值大于 0 时有效。SimpleGUI 内部 + 存储了一组尺寸为 6*8 像素的可见 ASCII 字符集数据,当此宏定义有效时,此套字体数据 + 将被支持,且文字显示 API 将可以使用此文字数据显示基本 ASCII 字符内容。 + 此功能设计为,如果用户使用外部字库且外部字库出现损坏或数据异常时,可以使用 + 此字库数据输出一些警告或调试信息。 ----------------------- Page 5----------------------- -数据类型定义 - - 1 基本数据类型定义。 - - 为避免因平台和编译器的差异造成的对基本数据类型的定义不同 ,进而导致代码产生 - - 不可预知的错误 ,SimpleGUI 在 SGUI_Typedef.h 文件中重新定义了包括整数、字符、字 - - 符指针在内的一系列基本数据类型 ,在 SimpleGUI 内部的代码实现中将一致性的使用重新 - - 定义过的数据类型 ,用户需要在使用前明确所在平台的数据类型定义并作出相应修改 ,以 - - 避免因溢出或其他异常导致的错误。 - - 具体内容请参照 SGUI_Typedef.h 文件。 - - 2 特殊数据类型定义。 - - 为方便 API 的实现、表达与使用 ,SimpleGUI 在基本数据类型的基础上 ,定义了一些 - - 特殊的数据结构。 - - 2.1 矩形区域 - - 此定义主要用于位图绘制时 ,标示显示区域、实际位图数据与位图数据偏移 ,其原 - - 型定义如下 : - - typedef struct _st_rectangle_ - { - SGUI_INT PosX; - SGUI_INT PosY; - SGUI_INT Width; - SGUI_INT Height; - }SGUI_RECT_AREA; - - PosX 为矩形左上角的 X 坐标。 - - PosY 为矩形左上角的 Y 坐标。 - - Width 为矩形宽度。 - - Height 为矩形高度。 - - 由于此数据结构是为绘图设计 ,在实际使用中 ,除了以上四项参数外 ,可能还需要 - - 其他判断 ,为此 ,此数据类型还有相应的运算宏定义 : - - #define RECTANGLE_X_START(ST) ((ST).PosX) - #define RECTANGLE_X_END(ST) (((ST).PosX + (ST).Width - 1)) - #define RECTANGLE_Y_START(ST) ((ST).PosY) - #define RECTANGLE_Y_END(ST) (((ST).PosY + (ST).Height - 1)) - #define RECTANGLE_WIDTH(ST) ((ST).Width) - #define RECTANGLE_HEIGHT(ST) ((ST).Height) - #define RECTANGLE_VALID_WIDTH(ST) - ((RECTANGLE_X_START(ST)>0)?RECTANGLE_WIDTH(ST):(RECTANGLE_WIDTH(ST)+RECTANGLE_X_START(ST)) - ) - #define RECTANGLE_VALID_HEIGHT(ST) - ((RECTANGLE_Y_START(ST)>0)?RECTANGLE_HEIGHT(ST):(RECTANGLE_HEIGHT(ST)+RECTANGLE_Y_START(ST - ))) - - RECTANGLE_X_START 意为矩形左边界 X 轴坐标。 - - RECTANGLE_X_END 意为矩形右边界 X 坐标。 - - RECTANGLE_Y_START 意为矩形上边界 Y 坐标。 - - RECTANGLE_Y_END 意为矩形下边界 Y 坐标。 - +数据类型定义 + 1 基本数据类型定义。 + 为避免因平台和编译器的差异造成的对基本数据类型的定义不同,进而导致代码产生不可预知的错误,SimpleGUI 在 SGUI_Typedef.h 文件中重新定义了包括整数、字符、字 + 符指针在内的一系列基本数据类型,在 SimpleGUI 内部的代码实现中将一致性的使用重新定义过的数据类型,用户需要在使用前明确所在平台的数据类型定义并作出相应修改,以 + 避免因溢出或其他异常导致的错误。 + 具体内容请参照 SGUI_Typedef.h 文件。 + 2 特殊数据类型定义。 + 为方便 API 的实现、表达与使用,SimpleGUI 在基本数据类型的基础上,定义了一些特殊的数据结构。 + 2.1 矩形区域 + 此定义主要用于位图绘制时,标示显示区域、实际位图数据与位图数据偏移,其原型定义如下 : + typedef struct _st_rectangle_ + { + SGUI_INT iPosX; + SGUI_INT iPosY; + SGUI_INT iWidth; + SGUI_INT iHeight; + }SGUI_RECT; + iPosX 为矩形左上角的 X 坐标。 + iPosY 为矩形左上角的 Y 坐标。 + iWidth 为矩形宽度。 + iHeight 为矩形高度。 + 由于此数据结构是为绘图设计,在实际使用中,除了以上四项参数外,可能还需要其他判断,为此,此数据类型还有相应的运算宏定义: + #define RECTANGLE_X_START(ST) ((ST).PosX) #define RECTANGLE_X_END(ST) (((ST).PosX + (ST).Width - 1)) #define RECTANGLE_Y_START(ST) ((ST).PosY) #define RECTANGLE_Y_END(ST) (((ST).PosY + (ST).Height - 1)) #define RECTANGLE_WIDTH(ST) ((ST).Width) #define RECTANGLE_HEIGHT(ST) ((ST).Height) #define RECTANGLE_VALID_WIDTH(ST) ((RECTANGLE_X_START(ST)>0)?RECTANGLE_WIDTH(ST):(RECTANGLE_WIDTH(ST)+RECTANGLE_X_START(ST)) ) #define RECTANGLE_VALID_HEIGHT(ST) ((RECTANGLE_Y_START(ST)>0)?RECTANGLE_HEIGHT(ST):(RECTANGLE_HEIGHT(ST)+RECTANGLE_Y_START(ST ))) + RECTANGLE_X_START 意为矩形左边界 X 轴坐标。 + RECTANGLE_X_END 意为矩形右边界 X 坐标。 + RECTANGLE_Y_START 意为矩形上边界 Y 坐标。 + RECTANGLE_Y_END 意为矩形下边界 Y 坐标。 ----------------------- Page 6----------------------- - RECTANGLE_WIDTH 意为矩形宽度。 - - RECTANGLE_HEIGHT 意为矩形高度。 - - RECTANGLE_VALID_WIDTH 意为矩形的可见宽度。 - - RECTANGLE_VALID_HEIGHT 意为矩形的可见高度。 - - 2.2 实时时钟 - - 此定义主要用于在 HMI 引擎中调用和显示实时时钟 ,与共通函数中的 GetNowTime - -函数搭配使用 ,原型定义如下 : - - typedef struct - { - SGUI_UINT16 Year; - SGUI_UINT16 Month; - SGUI_UINT16 Day; - SGUI_UINT16 Hour; - SGUI_UINT16 Minute; - SGUI_UINT16 Second; - }SGUI_TIME; - - 其中 Year、Month、Day、Hour、Minute、Second 分别对应年、月、日时、分、 - -秒。 - + RECTANGLE_WIDTH 意为矩形宽度。 + RECTANGLE_HEIGHT 意为矩形高度。 + RECTANGLE_VALID_WIDTH 意为矩形的可见宽度。 + RECTANGLE_VALID_HEIGHT 意为矩形的可见高度。 + 2.2 实时时钟 + 此定义主要用于在 HMI 引擎中调用和显示实时时钟,与共通函数中的 GetNowTime +函数搭配使用,原型定义如下 : + typedef struct { SGUI_UINT16 Year; SGUI_UINT16 Month; SGUI_UINT16 Day; SGUI_UINT16 Hour; SGUI_UINT16 Minute; SGUI_UINT16 Second; }SGUI_TIME; + 其中 Year、Month、Day、Hour、Minute、Second 分别对应年、月、日时、分、 +秒。 ----------------------- Page 7----------------------- -API - - 1. 绘图 API - - 绘图 API 的实现文件位于 GUI 文件夹中 ,主要负责显示屏硬件的控制与屏幕绘 - - 图。 - - SimpleGUI 的绘图 API 名称全部遵从以下格式 - - SGUI_分类_函数名(参数…) - - 所有绘图 API 均以 SGUI 开头 ,分类表示这个函数的用途类型 ,后面的函数名 - - 则是标识函数的具体用途。 - - 1.1 共通处理 - - 共通处理函数实现在 SGUI_Common.c 文件中 ,主要负责 SimpleGUI 的全 - - 局共通处理和 SimpleGUI 与外部的数据交互 ,函数名全部以 SGUI_Common - - 开始。 - - 1.1.1 SGUI_Common_IntegerToStringWithDecimalPoint - - 功能描述 :将一个有符号整数转化为字符串并在指定位置插入小数点。 - - 原型声明 :SGUI_SIZE SGUI_Common_IntegerToStringWithDecimalPoint - - (SGUI_INT iInteger, SGUI_UINT uiDecimalPlaces, SGUI_PSZSTR - - pszStringBuffer, SGUI_INT iAlignment, SGUI_CHAR cFillCharacter) - - 参数说明 : - - iInteger :将要被转换的数字。 - - uiDecimalPlaces :小数位数 ,如果为 0 则不插入小数点。 - - pszStringBuffer :转换输出字符串的输出缓存。 - - iAlignment :对其方式与宽度 ,单位为半角字符宽度 ,大于 0 则右对齐 , - - 小于 0 则左对齐。如果转换完的宽度大于对齐宽度 ,则以转换完的实际宽度为 - - 准。 - - cFillCharacter :若对其后还有留白位置 ,则以此字符填充 ,通常使用空 - - 格。 - - 返回值 :转换的字符串长度。 - - 注意事项 :请注意转换输出缓冲区的长度 ,如果发生内存越界 ,将产生不可预 - - 知的错误。 - - 1.1.2 SGUI_Common_IntegerToString - - 功能描述 :将一个有符号整数转化为字符串。 - - 原型声明 :SGUI_SIZE SGUI_Common_IntegerToString - - (SGUI_INT iInteger, SGUI_PSZSTR pszStringBuffer, SGUI_UINT uiBase, - - SGUI_INT iAlignment, SGUI_CHAR cFillCharacter) - +API + 1. 绘图 API + 绘图 API 的实现文件位于 GUI 文件夹中,主要负责显示屏硬件的控制与屏幕绘 + 图。 + SimpleGUI 的绘图 API 名称全部遵从以下格式 + SGUI_分类_函数名(参数…) + 所有绘图 API 均以 SGUI 开头,分类表示这个函数的用途类型,后面的函数名 + 则是标识函数的具体用途。 + 1.1 共通处理 + 共通处理函数实现在 SGUI_Common.c 文件中,主要负责 SimpleGUI 的全 + 局共通处理和 SimpleGUI 与外部的数据交互,函数名全部以 SGUI_Common + 开始。 + 1.1.1 SGUI_Common_IntegerToStringWithDecimalPoint + 功能描述 :将一个有符号整数转化为字符串并在指定位置插入小数点。 + 原型声明 :SGUI_SIZE SGUI_Common_IntegerToStringWithDecimalPoint + (SGUI_INT iInteger, SGUI_UINT uiDecimalPlaces, SGUI_PSZSTR + pszStringBuffer, SGUI_INT iAlignment, SGUI_CHAR cFillCharacter) + 参数说明 : + iInteger :将要被转换的数字。 + uiDecimalPlaces :小数位数,如果为 0 则不插入小数点。 + pszStringBuffer :转换输出字符串的输出缓存。 + iAlignment :对其方式与宽度,单位为半角字符宽度,大于 0 则右对齐, + 小于 0 则左对齐。如果转换完的宽度大于对齐宽度,则以转换完的实际宽度为 + 准。 + cFillCharacter :若对其后还有留白位置,则以此字符填充,通常使用空 + 格。 + 返回值 :转换的字符串长度。 + 注意事项 :请注意转换输出缓冲区的长度,如果发生内存越界,将产生不可预 + 知的错误。 + 1.1.2 SGUI_Common_IntegerToString + 功能描述 :将一个有符号整数转化为字符串。 + 原型声明 :SGUI_SIZE SGUI_Common_IntegerToString + (SGUI_INT iInteger, SGUI_PSZSTR pszStringBuffer, SGUI_UINT uiBase, + SGUI_INT iAlignment, SGUI_CHAR cFillCharacter) ----------------------- Page 8----------------------- - 参数说明 : - - iInteger :将要被转换的数字。 - - pszStringBuffer :转换输出字符串的输出缓存。 - - uiBase :转换基数 ,只允许 8、10 和 16 进制。 - - iAlignment :对其方式与宽度 ,单位为半角字符宽度 ,大于 0 则右对齐 , - - 小于 0 则左对齐。如果转换完的宽度大于对齐宽度 ,则以转换完的实际宽度为 - - 准。 - - cFillCharacter :若对其后还有留白位置 ,则以此字符填充 ,通常使用空 - - 格。 - - 返回值 :转换的字符串长度。 - - 注意事项 :请注意转换输出缓冲区的长度 ,如果发生内存越界 ,将产生不可预 - - 知的错误。 - -1.1.3 SGUI_Common_ConvertStringToUnsignedInteger - - 功能描述 :将一个字符串的有效部分转换为一个无符号整数。 - - 原型声明 :SGUI_UINT SGUI_Common_ConvertStringToUnsignedInteger - - (SGUI_PSZSTR szString, SGUI_CHAR** ppcEndPointer, SGUI_UINT - - uiBase) - - 参数说明 : - - szString :将要被转换的字符串。 - - ppcEndPointer :转换结束处的字符指针 ,如果字符串中出现了非数字字 - - 符 ,则会在该处终止 ,同时此指针指向该处 ,若转换至字符串尾 ,则该指针也 - - 指向字符串尾的 NULL。 - - uiBase :转换基数 ,只允许 8、10 和 16 进制。 - - 返回值 :转换的数字。 - - 注意事项 :若输入的字符串第一个字符即为非数字 ,则返回值为 0。 - -1.1.4 SGUI_Common_ConvertStringToInteger - - 功能描述 :将一个字符串的有效部分转换为一个有符号整数。 - - 原型声明 :SGUI_INT SGUI_Common_ConvertStringToInteger - - (SGUI_PSZSTR szString, SGUI_CHAR** ppcEndPointer, SGUI_UINT - - uiBase) - - 参数说明 : - - szString :将要被转换的字符串。 - - ppcEndPointer :转换结束处的字符指针 ,如果字符串中出现了非数字字 - - 符 ,则会在该处终止 ,同时此指针指向该处 ,若转换至字符串尾 ,则该指针也 - - 指向字符串尾的 NULL。 - - uiBase :转换基数 ,只允许 8、10 和 16 进制。 - - 返回值 :转换的数字。 - + 参数说明 : + iInteger :将要被转换的数字。 + pszStringBuffer :转换输出字符串的输出缓存。 + uiBase :转换基数,只允许 8、10 和 16 进制。 + iAlignment :对其方式与宽度,单位为半角字符宽度,大于 0 则右对齐, + 小于 0 则左对齐。如果转换完的宽度大于对齐宽度,则以转换完的实际宽度为 + 准。 + cFillCharacter :若对其后还有留白位置,则以此字符填充,通常使用空 + 格。 + 返回值 :转换的字符串长度。 + 注意事项 :请注意转换输出缓冲区的长度,如果发生内存越界,将产生不可预 + 知的错误。 +1.1.3 SGUI_Common_ConvertStringToUnsignedInteger + 功能描述 :将一个字符串的有效部分转换为一个无符号整数。 + 原型声明 :SGUI_UINT SGUI_Common_ConvertStringToUnsignedInteger + (SGUI_PSZSTR szString, SGUI_CHAR** ppcEndPointer, SGUI_UINT + uiBase) + 参数说明 : + szString :将要被转换的字符串。 + ppcEndPointer :转换结束处的字符指针,如果字符串中出现了非数字字 + 符,则会在该处终止,同时此指针指向该处,若转换至字符串尾,则该指针也 + 指向字符串尾的 NULL。 + uiBase :转换基数,只允许 8、10 和 16 进制。 + 返回值 :转换的数字。 + 注意事项 :若输入的字符串第一个字符即为非数字,则返回值为 0。 +1.1.4 SGUI_Common_ConvertStringToInteger + 功能描述 :将一个字符串的有效部分转换为一个有符号整数。 + 原型声明 :SGUI_INT SGUI_Common_ConvertStringToInteger + (SGUI_PSZSTR szString, SGUI_CHAR** ppcEndPointer, SGUI_UINT + uiBase) + 参数说明 : + szString :将要被转换的字符串。 + ppcEndPointer :转换结束处的字符指针,如果字符串中出现了非数字字 + 符,则会在该处终止,同时此指针指向该处,若转换至字符串尾,则该指针也 + 指向字符串尾的 NULL。 + uiBase :转换基数,只允许 8、10 和 16 进制。 + 返回值 :转换的数字。 ----------------------- Page 9----------------------- - 注意事项 :若输入的字符串第一个字符即为非数字 ,则返回值为 0。 - -1.1.5 SGUI_Common_EncodeConvert - - 功能描述 :字符串编码转换。 - - 原型声明 :SGUI_PSZSTR SGUI_Common_EncodeConvert - - (SGUI_PCSZSTR szSourceEncode, SGUI_PSZSTR szDestinationEncode, - - SGUI_PSZSTR szSource) - - 参数说明 : - - szSourceEncode :源字符串编码。 - - szDestinationEncode :目标编码。 - - szSource :要转换的字符串。 - - 返回值 :转换缓冲的指针。 - - 注意事项 :此函数依赖 iconv 外部库 ,用于在模拟器环境中使用 UTF-8 编码格 - - 式的字符串 ,由于示例的字符解码使用 GB2312 格式 ,故需要转码。由于转码 - - 库体积庞大 ,所以通常情况下此函数不需要在目标单片机平台上实现 ,届时只 - - 需要关闭_SIMPLE_GUI_ENABLE_ICONV_GB2312_宏定义即可。 - -1.1.6 SGUI_Common_Allocate - - 功能描述 :申请堆内存空间。 - - 原型声明 :SGUI_Common_Allocate(SGUI_SIZE uiSize) - - 参数说明 : - - uiSize :要申请的字节数。 - - 返回值 :申请到的内存空间头指针。 - - 注意事项 :模拟环境中 ,此环境是对 C 标准函数 malloc 的重新封装 ,移植到 - - 目标平台后如果想使用此函数 ,请确认平台支持或用户已自行实现 MMU 后 , - - 重写此函数 ,并将宏_SIMPLE_GUI_ENABLE_DYNAMIC_MEMORY_有效化。 - -1.1.7 SGUI_Common_Free - - 功能描述 :释放堆内存空间。 - - 原型声明 :SGUI_Common_Free(void* pFreePointer) - - 参数说明 : - - pFreePointer :要释放的内存头指针。 - - 返回值 :无。 - - 注意事项 :模拟环境中 ,此环境是对 C 标准函数 free 的重新封装 ,移植到目 - - 标平台后如果想使用此函数 ,请确认平台支持或用户已自行实现 MMU 后 ,重 - - 写此函数 ,并将宏_SIMPLE_GUI_ENABLE_DYNAMIC_MEMORY_有效化。 - -1.1.8 SGUI_Common_MemoryCopy - - 功能描述 :复制内存块。 - - 原型声明 :void* SGUI_Common_MemoryCopy - - (void* pDest, const void* pSrc, SGUI_UINT uiSize) - + 注意事项 :若输入的字符串第一个字符即为非数字,则返回值为 0。 +1.1.5 SGUI_Common_EncodeConvert + 功能描述 :字符串编码转换。 + 原型声明 :SGUI_PSZSTR SGUI_Common_EncodeConvert + (SGUI_PCSZSTR szSourceEncode, SGUI_PSZSTR szDestinationEncode, + SGUI_PSZSTR szSource) + 参数说明 : + szSourceEncode :源字符串编码。 + szDestinationEncode :目标编码。 + szSource :要转换的字符串。 + 返回值 :转换缓冲的指针。 + 注意事项 :此函数依赖 iconv 外部库,用于在模拟器环境中使用 UTF-8 编码格 + 式的字符串,由于示例的字符解码使用 GB2312 格式,故需要转码。由于转码 + 库体积庞大,所以通常情况下此函数不需要在目标单片机平台上实现,届时只 + 需要关闭_SIMPLE_GUI_ENABLE_ICONV_GB2312_宏定义即可。 +1.1.6 SGUI_Common_Allocate + 功能描述 :申请堆内存空间。 原型声明 :SGUI_Common_Allocate(SGUI_SIZE uiSize) 参数说明 : uiSize :要申请的字节数。 返回值 :申请到的内存空间头指针。 注意事项 :模拟环境中,此环境是对 C 标准函数 malloc 的重新封装,移植到目标平台后如果想使用此函数,请确认平台支持或用户已自行实现 MMU 后,重写此函数,并将宏_SIMPLE_GUI_ENABLE_DYNAMIC_MEMORY_有效化。 +1.1.7 SGUI_Common_Free 功能描述 :释放堆内存空间。 原型声明 :SGUI_Common_Free(void* pFreePointer) 参数说明 : pFreePointer :要释放的内存头指针。 返回值 :无。 注意事项 :模拟环境中,此环境是对 C 标准函数 free 的重新封装,移植到目标平台后如果想使用此函数,请确认平台支持或用户已自行实现MMU后,重写此函数,并将宏_SIMPLE_GUI_ENABLE_DYNAMIC_MEMORY_有效化。 +1.1.8 SGUI_Common_MemoryCopy + 功能描述 :复制内存块。 + 原型声明 :void* SGUI_Common_MemoryCopy + (void* pDest, const void* pSrc, SGUI_UINT uiSize) ----------------------- Page 10----------------------- - 参数说明 : - - pDest :目标内存块头指针。 - - pSrc :源内存块头指针。 - - uiSize :复制内存块的大小 ,单位字节。 - - 返回值 :目标内存块头指针。 - - 注意事项 :模拟环境中 ,此环境是对 C 标准函数 memcpy 的重新封装 ,用户 - - 如果不使用标准库 ,则需自行实现内存复制过程。 - -1.1.9 SGUI_Common_MemorySet - - 功能描述 :设置内存块。 - - 原型声明 :void SGUI_Common_MemorySet - - (void* pMemoryPtr, SGUI_BYTE iSetValue, SGUI_UINT uiSize) - - 参数说明 : - - pMemoryPtr :要设置的内存块头指针。 - - iSetValue :要设置的每一个字节的值。 - - uiSize :内存块的大小 ,单位字节。 - - 返回值 :目标内存块头指针。 - - 注意事项 :模拟环境中 ,此环境是对 C 标准函数 memcpy 的重新封装 ,用户 - - 如果不使用标准库 ,则需自行实现内存复制过程。 - -1.1.10 SGUI_Common_StringLength - - 功能描述 :测量字符串的长度。 - - 原型声明 :SGUI_SIZE SGUI_Common_StringLength - - (SGUI_PCSZSTR szString) - - 参数说明 : - - szString :字符串头指针。 - - 返回值 :字符串长度。 - - 注意事项 :模拟环境中 ,此环境是对 C 标准函数 strlen 的重新封装 ,用户如果 - - 不使用标准库 ,则需自行实现字符串长度计算的过程。 - -1.1.11 SGUI_Common_StringCopy - - 功能描述 :复制字符串。 - - 原型声明 :SGUI_PSZSTR SGUI_Common_StringCopy(SGUI_PSZSTR - - szDest, SGUI_PCSZSTR szSrc) - - 参数说明 : - - szDest :复制的字符串缓存。 - - szSrc :被复制的字符串缓存。 - - 返回值 :复制的字符串缓存头指针。 - - 注意事项 :模拟环境中 ,此环境是对 C 标准函数 strcpy 的重新封装 ,用户如 - - 果不使用标准库 ,则需自行实现字符串复制的过程。 - + 参数说明 : + pDest :目标内存块头指针。 + pSrc :源内存块头指针。 + uiSize :复制内存块的大小,单位字节。 + 返回值 :目标内存块头指针。 + 注意事项 :模拟环境中,此环境是对 C 标准函数 memcpy 的重新封装,用户 + 如果不使用标准库,则需自行实现内存复制过程。 +1.1.9 SGUI_Common_MemorySet + 功能描述 :设置内存块。 + 原型声明 :void SGUI_Common_MemorySet + (void* pMemoryPtr, SGUI_BYTE iSetValue, SGUI_UINT uiSize) + 参数说明 : + pMemoryPtr :要设置的内存块头指针。 + iSetValue :要设置的每一个字节的值。 + uiSize :内存块的大小,单位字节。 + 返回值 :目标内存块头指针。 + 注意事项 :模拟环境中,此环境是对 C 标准函数 memcpy 的重新封装,用户 + 如果不使用标准库,则需自行实现内存复制过程。 +1.1.10 SGUI_Common_StringLength + 功能描述 :测量字符串的长度。 + 原型声明 :SGUI_SIZE SGUI_Common_StringLength + (SGUI_PCSZSTR szString) + 参数说明 : + szString :字符串头指针。 + 返回值 :字符串长度。 + 注意事项 :模拟环境中,此环境是对 C 标准函数 strlen 的重新封装,用户如果 + 不使用标准库,则需自行实现字符串长度计算的过程。 +1.1.11 SGUI_Common_StringCopy + 功能描述 :复制字符串。 + 原型声明 :SGUI_PSZSTR SGUI_Common_StringCopy(SGUI_PSZSTR + szDest, SGUI_PCSZSTR szSrc) + 参数说明 : + szDest :复制的字符串缓存。 + szSrc :被复制的字符串缓存。 + 返回值 :复制的字符串缓存头指针。 + 注意事项 :模拟环境中,此环境是对 C 标准函数 strcpy 的重新封装,用户如 + 果不使用标准库,则需自行实现字符串复制的过程。 ----------------------- Page 11----------------------- -1.1.12 SGUI_Common_StringLengthCopy - - 功能描述 :复制不超过特定长度的字符串。 - - 原型声明 :SGUI_PSZSTR SGUI_Common_StringLengthCopy - - (SGUI_PSZSTR szDest, SGUI_PCSZSTR szSrc, SGUI_SIZE uiSize) - - 参数说明 : - - szDest :复制的字符串缓存。 - - szSrc :被复制的字符串缓存。 - - uiSize :复制字符串的长度 ,单位为字节。 - - 返回值 :复制的字符串缓存头指针。 - - 注意事项 :模拟环境中 ,此环境是对 C 标准函数 strncpy 的重新封装 ,用户如 - - 果不使用标准库 ,则需自行实现字符串复制的过程。 - -1.1.13 SGUI_Common_GetNowTime - - 功能描述 :获取当前特定系统时间。 - - 原型声明 :void SGUI_Common_GetNowTime - - (SGUI_TIME* pstTime) - - 参数说明 : - - pstTime :保存时间数据的结构体。 - - 返回值 :复制的字符串缓存头指针。 - - 注意事项 :此函数需绑定系统 RTC 的处理 ,需要用户更具目标平台自行实现 , - - 读取 RTC 时间并赋值到参数指定的 RTC 结构体中。 - -1.1.14 SGUI_Common_RefreshScreen - - 功能描述 :刷新屏幕显示。 - - 原型声明 :void SGUI_Common_RefreshScreen(void) - - 参数说明 :无。 - - 返回值 :无。 - - 注意事项 :用于更新屏幕显示的接口 ,需要用户自行实现 ,通常用于使用了显 - - 示缓存的情况下。 - -1.1.15 SGUI_Common_ReadFlashROM - - 功能描述 :读取外部存储中的数据。 - - 原型声明 :void SGUI_Common_ReadFlashROM(SGUI_ROM_ADDRESS - - uiAddressHead, SGUI_SIZE uiDataLength, SGUI_BYTE* pBuffer) - - 参数说明 : - - uiAddressHead :读取的首地址。 - - uiDataLength :读取数据的长度。 - - pBuffer :存放读取数据的缓冲区的首地址。 - - 返回值 :无。 - +1.1.12 SGUI_Common_StringLengthCopy + 功能描述 :复制不超过特定长度的字符串。 + 原型声明 :SGUI_PSZSTR SGUI_Common_StringLengthCopy + (SGUI_PSZSTR szDest, SGUI_PCSZSTR szSrc, SGUI_SIZE uiSize) + 参数说明 : + szDest :复制的字符串缓存。 + szSrc :被复制的字符串缓存。 + uiSize :复制字符串的长度,单位为字节。 + 返回值 :复制的字符串缓存头指针。 + 注意事项 :模拟环境中,此环境是对 C 标准函数 strncpy 的重新封装,用户如 + 果不使用标准库,则需自行实现字符串复制的过程。 +1.1.13 SGUI_Common_GetNowTime + 功能描述 :获取当前特定系统时间。 + 原型声明 :void SGUI_Common_GetNowTime + (SGUI_TIME* pstTime) + 参数说明 : + pstTime :保存时间数据的结构体。 + 返回值 :复制的字符串缓存头指针。 + 注意事项 :此函数需绑定系统 RTC 的处理,需要用户更具目标平台自行实现, + 读取 RTC 时间并赋值到参数指定的 RTC 结构体中。 +1.1.14 SGUI_Common_RefreshScreen + 功能描述 :刷新屏幕显示。 + 原型声明 :void SGUI_Common_RefreshScreen(void) + 参数说明 :无。 + 返回值 :无。 + 注意事项 :用于更新屏幕显示的接口,需要用户自行实现,通常用于使用了显 + 示缓存的情况下。 +1.1.15 SGUI_Common_ReadFlashROM + 功能描述 :读取外部存储中的数据。 + 原型声明 :void SGUI_Common_ReadFlashROM(SGUI_ROM_ADDRESS + uiAddressHead, SGUI_SIZE uiDataLength, SGUI_BYTE* pBuffer) + 参数说明 : + uiAddressHead :读取的首地址。 + uiDataLength :读取数据的长度。 + pBuffer :存放读取数据的缓冲区的首地址。 + 返回值 :无。 ----------------------- Page 12----------------------- - 注意事项 :此函数需根据实际系统平台 ,实现从内部或外部 Flash 中读取数据 - - 的操作。在 SimpleGUI 中 ,此函数通常用于读取字模、图片或图标数据等。 - - 1.1.16 SGUI_Common_Delay - - 功能描述 :延时等待。 - - 原型声明 :void SGUI_Common_Delay(SGUI_UINT32 uiTimeMs) - - 参数说明 : - - uiTimeMs :等待的毫秒数。 - - 返回值 :无。 - - 注意事项 :根据实际系统平台实现的延时函数 ,用于 HMI 引擎中 ,绘图引擎 - - 不使用此函数。 - -1.2 坐标系定义 - - 在 SimpleGUI 的绘图操作中 ,以屏幕有效显示区域的左上角为坐标原 - - 点 ,X 轴向右为正方向 ,Y 轴向下为正方向 ,起始坐标为(0,0) ,以屏幕像素为 - - 单位向正方向增长。 - -1.3 基础绘图 - - 基础绘图函数的实现位于 SGUI_Basic.c 文件中 ,主要负责 SimpleGUI 中 - - 点、线、面和位图等基本图形的绘制功能 ,函数名全部以 SGUI_Basic 开始。 - - 1.3.1 数据类型定义 - - 为方便基础绘图 API 的实现与使用 ,SimpleGUI 在此部分定义了两种数据 - - 类型分别用于像素点颜色的说明和绘图方式的说明。 - - 像素点颜色类型为 SGUI_COLOR ,其原型定义如下 : - - typedef enum - { - SGUI_COLOR_BKGCLR = 0, - SGUI_COLOR_FRGCLR = 1, - SGUI_COLOR_TRANS = 2, - }SGUI_COLOR; - - SGUI_COLOR_BKGCLR 为背景色 ,通常指显示屏幕上未被点亮 (或未被 - - 有效化 )的点的颜色。 - - SGUI_COLOR_FRGCLR 为前景色 ,通常指显示屏幕上被点亮 (或被有效 - - 化 )的点的颜色。 - - SGUI_COLOR_TRANS 为透明。指忽略当前点的绘制 ,保持当前点 (或区 - - 域 )的显示状态不变。 - - 绘图模式型为 SGUI_DRAW_MODE ,其原型定义如下 : - - typedef enum - { - SGUI_DRAW_NORMAL = 0, - SGUI_DRAW_REVERSE = 1, - }SGUI_DRAW_MODE; - + 注意事项 :此函数需根据实际系统平台,实现从内部或外部 Flash 中读取数据 + 的操作。在 SimpleGUI 中,此函数通常用于读取字模、图片或图标数据等。 + 1.1.16 SGUI_Common_Delay + 功能描述 :延时等待。 + 原型声明 :void SGUI_Common_Delay(SGUI_UINT32 uiTimeMs) + 参数说明 : + uiTimeMs :等待的毫秒数。 + 返回值 :无。 + 注意事项 :根据实际系统平台实现的延时函数,用于 HMI 引擎中,绘图引擎 + 不使用此函数。 +1.2 坐标系定义 + 在 SimpleGUI 的绘图操作中,以屏幕有效显示区域的左上角为坐标原 + 点,X 轴向右为正方向,Y 轴向下为正方向,起始坐标为(0,0),以屏幕像素为 + 单位向正方向增长。 +1.3 基础绘图 + 基础绘图函数的实现位于 SGUI_Basic.c 文件中,主要负责 SimpleGUI 中 + 点、线、面和位图等基本图形的绘制功能,函数名全部以 SGUI_Basic 开始。 + 1.3.1 数据类型定义 + 为方便基础绘图 API 的实现与使用,SimpleGUI 在此部分定义了两种数据 + 类型分别用于像素点颜色的说明和绘图方式的说明。 + 像素点颜色类型为 SGUI_COLOR,其原型定义如下 : + typedef enum { SGUI_COLOR_BKGCLR = 0, SGUI_COLOR_FRGCLR = 1, SGUI_COLOR_TRANS = 2, }SGUI_COLOR; + SGUI_COLOR_BKGCLR 为背景色,通常指显示屏幕上未被点亮 (或未被 + 有效化 )的点的颜色。 + SGUI_COLOR_FRGCLR 为前景色,通常指显示屏幕上被点亮 (或被有效 + 化 )的点的颜色。 + SGUI_COLOR_TRANS 为透明。指忽略当前点的绘制,保持当前点 (或区 + 域 )的显示状态不变。 + 绘图模式型为 SGUI_DRAW_MODE,其原型定义如下 : + typedef enum { SGUI_DRAW_NORMAL = 0, SGUI_DRAW_REVERSE = 1, }SGUI_DRAW_MODE; ----------------------- Page 13----------------------- - SGUI_DRAW_NORMAL 为正常绘制 ,指根据上述 SGUI_COLOR 类型中 - - 对点颜色的定义进行绘制。 - - SGUI_DRAW_REVERSE 为反色绘制 ,指在绘制是将上述 SGUI_COLOR - - 类型中的 SGUI_COLOR_BKGCLR 与 SGUI_COLOR_FRGCLR 两种定义互换 , - - 绘制反色图形 ,此定义通常用于绘制反色位图。 - -1.3.2 SGUI_Basic_ClearScreen - - 功能描述 :清空屏幕显示。 - - 原型声明 :void SGUI_Basic_ClearScreen(void) - - 参数说明 :无。 - - 返回值 :无。 - - 注意事项 :因需要适配的硬件平台不同 ,有的屏幕设备支持清空操作 ,有的则 - - 必须手动填充 ,所以此函数需要用户根据实际使用的设备自行实现。 - -1.3.3 SGUI_Basic_DrawPoint - - 功能描述 :在屏幕上绘制点。 - - 原型声明 :void SGUI_Basic_DrawPoint(SGUI_UINT uiPosX, SGUI_UINT - - uiPosY, SGUI_COLOR eColor) - - 参数说明 : - - uiPosX :要绘制点的 X 坐标。 - - uiPosY :要绘制点的 Y 坐标。 - - eColor :绘制点的颜色。 - - 返回值 :无。 - - 注意事项 :SimpleGUI 只针对单色屏幕设计 ,绘制点的颜色只有“黑”和“白”两 - - 种 ,分别对应像素的设置状态和清空状态 ,详情请参考 - - SGUI_COLOR_BKGCLR 数据类型的定义。 - -1.3.4 SGUI_Basic_DrawLine - - 功能描述 :在屏幕上绘制直线段。 - - 原型声明 :void SGUI_Basic_DrawLine - - (SGUI_INT uiStartX, SGUI_INT uiStartY, SGUI_INT uiEndX, SGUI_INT - - uiEndY, SGUI_COLOR eColor) - - 参数说明 : - - uiStartX :线段起始点的 X 坐标。 - - uiStartY :线段起始点的 Y 坐标。 - - uiStartX :线段终止点的 X 坐标。 - - uiStartY :线段终止点的 Y 坐标。 - - eColor :绘制线段的颜色。 - - 返回值 :无。 - + SGUI_DRAW_NORMAL 为正常绘制,指根据上述 SGUI_COLOR 类型中 + 对点颜色的定义进行绘制。 + SGUI_DRAW_REVERSE 为反色绘制,指在绘制是将上述 SGUI_COLOR + 类型中的 SGUI_COLOR_BKGCLR 与 SGUI_COLOR_FRGCLR 两种定义互换, + 绘制反色图形,此定义通常用于绘制反色位图。 +1.3.2 SGUI_Basic_ClearScreen + 功能描述 :清空屏幕显示。 + 原型声明 :void SGUI_Basic_ClearScreen(void) + 参数说明 :无。 + 返回值 :无。 + 注意事项 :因需要适配的硬件平台不同,有的屏幕设备支持清空操作,有的则 + 必须手动填充,所以此函数需要用户根据实际使用的设备自行实现。 +1.3.3 SGUI_Basic_DrawPoint + 功能描述 :在屏幕上绘制点。 + 原型声明 :void SGUI_Basic_DrawPoint(SGUI_UINT uiPosX, SGUI_UINT + uiPosY, SGUI_COLOR eColor) + 参数说明 : + uiPosX :要绘制点的 X 坐标。 + uiPosY :要绘制点的 Y 坐标。 + eColor :绘制点的颜色。 + 返回值 :无。 + 注意事项 :SimpleGUI 只针对单色屏幕设计,绘制点的颜色只有“黑”和“白”两 + 种,分别对应像素的设置状态和清空状态,详情请参考 + SGUI_COLOR_BKGCLR 数据类型的定义。 +1.3.4 SGUI_Basic_DrawLine + 功能描述 :在屏幕上绘制直线段。 + 原型声明 :void SGUI_Basic_DrawLine + (SGUI_INT uiStartX, SGUI_INT uiStartY, SGUI_INT uiEndX, SGUI_INT + uiEndY, SGUI_COLOR eColor) + 参数说明 : + uiStartX :线段起始点的 X 坐标。 + uiStartY :线段起始点的 Y 坐标。 + uiStartX :线段终止点的 X 坐标。 + uiStartY :线段终止点的 Y 坐标。 + eColor :绘制线段的颜色。 + 返回值 :无。 ----------------------- Page 14----------------------- - 注意事项 :线段起止点的坐标值可以为负值 ,当为负值时意为坐标位于屏幕显 - - 示区域上侧或左侧以外的区域。超出屏幕显示区域部分的线段将不会被绘制。 - -1.3.5 SGUI_Basic_DrawRectangle - - 功能描述 :在屏幕上绘制封闭矩形。 - - 原型声明 :void SGUI_Basic_DrawRectangle - - (SGUI_UINT uiStartX, SGUI_UINT uiStartY, SGUI_UINT uiWidth, - - SGUI_UINT uiHeight, SGUI_COLOR eEdgeColor, SGUI_COLOR eFillColor) - - 参数说明 : - - uiStartX :矩形左上角点的 X 坐标。 - - uiStartY :矩形左上角点的 Y 坐标。 - - uiWidth :矩形的宽度 ,以像素为单位。 - - uiStartY :矩形的高度 ,以像素为单位。 - - eEdgeColor :矩形边框的颜色。 - - eFillColor :矩形内部的填充颜色。 - - 返回值 :无。 - - 注意事项 :如果只需要绘制矩形边框 ,不希望矩形内部被填充 ,则 eFillColor - - 参数传入 SGUI_COLOR_TRANS 即可。超出屏幕显示区域的部分将不会被绘 - - 制。 - -1.3.6 SGUI_Basic_DrawCircle - - 功能描述 :在屏幕上绘制封闭圆形。 - - 原型声明 :void SGUI_Basic_DrawCircle(SGUI_UINT uiCx, SGUI_UINT - - uiCy, SGUI_UINT uiRadius, SGUI_COLOR eEdgeColor, SGUI_COLOR - - eFillColor) - - 参数说明 : - - uiCx :圆形圆心的 X 坐标。 - - uiCy :圆形圆心的 Y 坐标。 - - uiRadius :圆的半径 ,以像素为单位。 - - eEdgeColor :圆的边框的颜色。 - - eFillColor :圆的内部的填充颜色。 - - 返回值 :无。 - - 注意事项 :如果只需要绘制圆形边框 ,不希望矩形内部被填充 ,则 eFillColor - - 参数传入 SGUI_COLOR_TRANS 即可。 - -1.3.7 SGUI_Basic_ReverseBlockColor - - 功能描述 :反色矩形区域。 - - 原型声明 :void SGUI_Basic_ReverseBlockColor(SGUI_UINT uiStartX, - - SGUI_UINT uiStartY, SGUI_UINT uiWidth, SGUI_UINT uiHeight) - - 参数说明 : - ------------------------ Page 15----------------------- - - uiStartX :矩形左上角点的 X 坐标。 - - uiStartY :矩形左上角点的 Y 坐标。 - - uiWidth :矩形的宽度 ,以像素为单位。 - - uiStartY :矩形的高度 ,以像素为单位。 - - 返回值 :无。 - - 注意事项 :无。 - - 1.3.8 SGUI_Basic_DrawBitMap - - 功能描述 :绘制位图。 - - 原型声明 :void SGUI_Basic_DrawBitMap(SGUI_RECT_AREA* - - pstDisplayArea, SGUI_RECT_AREA* pstDataArea, SGUI_BYTE* - - pDataBuffer, SGUI_DRAW_MODE eDrawMode) - - 参数说明 : - - pstDisplayArea :指定位图的显示区域。 - - pstDataArea :位图大小以及显示的偏移量 ,以像素为单位。 - - pDataBuffer :位图数据。 - - eDrawMode :绘制方式 (正常或反色 )。 - - 返回值 :无。 - - 注意事项 :传入参数中 pstDisplayArea 指向的数据为显示位图的矩形区域 , - - 超出区域的部分将不被显示 ,pstDataArea 指向的数据标明了位图的实际大小 - - 以及在显示区域内的偏移量 ,具体逻辑关系如下图所示 : - - 图中红色代表位图的实际尺寸 ,蓝色代表指定的显示区域尺寸 ,则实际显 - - 示时 ,只有蓝色区域的中的位图被显示出来。 - -1.4 文字显示 - -1.5 消息框 - -1.6 输入框 - -1.7 进度条 - -1.8 滚动条 - ------------------------ Page 16----------------------- - - 1.9 列表框 - - 1.10 实时曲线 - - 2. HMI 引擎 + 注意事项 :线段起止点的坐标值可以为负值,当为负值时意为坐标位于屏幕显 + 示区域上侧或左侧以外的区域。超出屏幕显示区域部分的线段将不会被绘制。 +1.3.5 SGUI_Basic_DrawRectangle + 功能描述 :在屏幕上绘制封闭矩形。 + 原型声明 :void SGUI_Basic_DrawRectangle + (SGUI_UINT uiStartX, SGUI_UINT uiStartY, SGUI_UINT uiWidth, + SGUI_UINT uiHeight, SGUI_COLOR eEdgeColor, SGUI_COLOR eFillColor) + 参数说明 : + uiStartX :矩形左上角点的 X 坐标。 + uiStartY :矩形左上角点的 Y 坐标。 + uiWidth :矩形的宽度,以像素为单位。 + uiStartY :矩形的高度,以像素为单位。 + eEdgeColor :矩形边框的颜色。 + eFillColor :矩形内部的填充颜色。 + 返回值 :无。 + 注意事项 :如果只需要绘制矩形边框,不希望矩形内部被填充,则 eFillColor + 参数传入 SGUI_COLOR_TRANS 即可。超出屏幕显示区域的部分将不会被绘 + 制。 +1.3.6 SGUI_Basic_DrawCircle + 功能描述 :在屏幕上绘制封闭圆形。 + 原型声明 :void SGUI_Basic_DrawCircle(SGUI_UINT uiCx, SGUI_UINT + uiCy, SGUI_UINT uiRadius, SGUI_COLOR eEdgeColor, SGUI_COLOR + eFillColor) + 参数说明 : + uiCx :圆形圆心的 X 坐标。 + uiCy :圆形圆心的 Y 坐标。 + uiRadius :圆的半径,以像素为单位。 + eEdgeColor :圆的边框的颜色。 + eFillColor :圆的内部的填充颜色。 + 返回值 :无。 + 注意事项 :如果只需要绘制圆形边框,不希望矩形内部被填充,则 eFillColor + 参数传入 SGUI_COLOR_TRANS 即可。 +1.3.7 SGUI_Basic_ReverseBlockColor + 功能描述 :反色矩形区域。 原型声明 :void SGUI_Basic_ReverseBlockColor(SGUI_UINT uiStartX, SGUI_UINT uiStartY, SGUI_UINT uiWidth, SGUI_UINT uiHeight) + 参数说明 : uiStartX :矩形左上角点的 X 坐标。 uiStartY :矩形左上角点的 Y 坐标。 uiWidth :矩形的宽度,以像素为单位。 uiStartY :矩形的高度,以像素为单位。 返回值 :无。 + 注意事项 :无。 + 1.3.8 SGUI_Basic_DrawBitMap + 功能描述 :绘制位图。 + 原型声明 :void SGUI_Basic_DrawBitMap(SGUI_RECT_AREA* + pstDisplayArea, SGUI_RECT_AREA* pstDataArea, SGUI_BYTE* + pDataBuffer, SGUI_DRAW_MODE eDrawMode) + 参数说明 : + pstDisplayArea :指定位图的显示区域。 + pstDataArea :位图大小以及显示的偏移量,以像素为单位。 + pDataBuffer :位图数据。 + eDrawMode :绘制方式 (正常或反色 )。 + 返回值 :无。 + 注意事项 :传入参数中 pstDisplayArea 指向的数据为显示位图的矩形区域, + 超出区域的部分将不被显示,pstDataArea 指向的数据标明了位图的实际大小 + 以及在显示区域内的偏移量,具体逻辑关系如下图所示 : 图中红色代表位图的实际尺寸,蓝色代表指定的显示区域尺寸,则实际显示时,只有蓝色区域的中的位图被显示出来。 +1.4 文字显示1.5 消息框1.6 输入框1.7 进度条1.8 滚动条1.9 列表框1.10 实时曲线 2. HMI 引擎 \ No newline at end of file diff --git a/Documents/VirtualSDK user manual.md b/Documents/VirtualSDK user manual.md index e2dc830..4173d46 100644 --- a/Documents/VirtualSDK user manual.md +++ b/Documents/VirtualSDK user manual.md @@ -41,9 +41,9 @@ SimpleGUI Virtual SDK 使用说明 │ ├─ [DIR] │ └─ *.h └─ lib - ├─ gcc_dll - ├─ mswu - └─ *.a(库文件) + └─ gcc_x86_dll(如果使用64位编译器,此文件夹名应为gcc_x64_dll) + ├─ mswu + └─ *.a(库文件) ``` diff --git a/GUI/inc/SGUI_Interface.h b/GUI/inc/SGUI_Interface.h index f18509c..c55d522 100644 --- a/GUI/inc/SGUI_Interface.h +++ b/GUI/inc/SGUI_Interface.h @@ -48,6 +48,5 @@ void SGUI_SystemIF_MemorySet(SGUI_PTR pMemoryPtr, SGUI_BYTE i SGUI_SIZE SGUI_SystemIF_StringLength(SGUI_CSZSTR szString); SGUI_SZSTR SGUI_SystemIF_StringCopy(SGUI_SZSTR szDest, SGUI_CSZSTR szSrc); SGUI_SZSTR SGUI_SystemIF_StringLengthCopy(SGUI_SZSTR szDest, SGUI_CSZSTR szSrc, SGUI_SIZE sSize); -void SGUI_SystemIF_GetNowTime(SGUI_TIME* pstTime); #endif // __INCLUDED_SGUI_INTERFACE_H__ diff --git a/GUI/inc/SGUI_Typedef.h b/GUI/inc/SGUI_Typedef.h index 38e017b..aa813fa 100644 --- a/GUI/inc/SGUI_Typedef.h +++ b/GUI/inc/SGUI_Typedef.h @@ -81,16 +81,6 @@ typedef struct SGUI_INT iMax; }SGUI_RANGE; -typedef struct -{ - SGUI_UINT16 Year; - SGUI_UINT16 Month; - SGUI_UINT16 Day; - SGUI_UINT16 Hour; - SGUI_UINT16 Minute; - SGUI_UINT16 Second; -}SGUI_TIME; - typedef enum { SGUI_COLOR_BKGCLR = 0, diff --git a/GUI/src/SGUI_Interface.c b/GUI/src/SGUI_Interface.c index a194f83..2750730 100644 --- a/GUI/src/SGUI_Interface.c +++ b/GUI/src/SGUI_Interface.c @@ -98,77 +98,6 @@ SGUI_SZSTR SGUI_SystemIF_EncodeConvert(SGUI_CSZSTR szSourceEncode, SGUI_SZSTR sz } #endif -/*************************************************************************/ -/** Function Name: SGUI_SystemIF_GetNowTime **/ -/** Purpose: Get system now time. **/ -/** Resources: System RTC interface. **/ -/** Params: **/ -/** @ pstTime[out]: RTC time data structure pointer. **/ -/** Return: None. **/ -/** Notice: user need to override this function according to **/ -/** the platform used. **/ -/*************************************************************************/ -void SGUI_SystemIF_GetNowTime(SGUI_TIME* pstTime) -{ - /*----------------------------------*/ - /* Variable Declaration */ - /*----------------------------------*/ -#ifdef _SIMPLE_GUI_USE_SYS_PF_FUNCTIONS_ - time_t rawtime; - struct tm* timeinfo; -#else -#ifdef _SIMPLE_GUI_IN_VIRTUAL_SDK_ - time_t rawtime; - struct tm* timeinfo; -#else - // Add date structure variable declare here. -#endif -#endif - /*----------------------------------*/ - /* Process */ - /*----------------------------------*/ - if(NULL != pstTime) - { -#ifdef _SIMPLE_GUI_USE_SYS_PF_FUNCTIONS_ - // Add RTC Interface call of the platform. - time(&rawtime); - timeinfo = localtime(&rawtime); - if(NULL != timeinfo) - { - pstTime->Year = timeinfo->tm_year+1900; - pstTime->Month = timeinfo->tm_mon+1; - pstTime->Day = timeinfo->tm_mday; - pstTime->Hour = timeinfo->tm_hour; - pstTime->Minute = timeinfo->tm_min; - pstTime->Second = timeinfo->tm_sec; - } -#else - // Add RTC Interface call of the platform. -#ifdef _SIMPLE_GUI_IN_VIRTUAL_SDK_ - time(&rawtime); - timeinfo = localtime(&rawtime); - if(NULL != timeinfo) - { - pstTime->Year = timeinfo->tm_year+1900; - pstTime->Month = timeinfo->tm_mon+1; - pstTime->Day = timeinfo->tm_mday; - pstTime->Hour = timeinfo->tm_hour; - pstTime->Minute = timeinfo->tm_min; - pstTime->Second = timeinfo->tm_sec; - } -#else - pstTime->Year = g_stCleandar.tm_year; - pstTime->Month = g_stCleandar.tm_mon; - pstTime->Day = g_stCleandar.tm_mday; - pstTime->Hour = g_stCleandar.tm_hour; - pstTime->Minute = g_stCleandar.tm_min; - pstTime->Second = g_stCleandar.tm_sec; -#endif - -#endif - } -} - /*************************************************************************/ /** Function Name: SGUI_SystemIF_StringLengthCopy **/ /** Purpose: Copy string. **/ diff --git a/VirtualSDK/Project/CodeBlocks/VirtualSDK_wx31.cbp b/VirtualSDK/Project/CodeBlocks/VirtualSDK_wx31.cbp index fc60520..b3ca643 100644 --- a/VirtualSDK/Project/CodeBlocks/VirtualSDK_wx31.cbp +++ b/VirtualSDK/Project/CodeBlocks/VirtualSDK_wx31.cbp @@ -97,10 +97,10 @@ - + - + @@ -121,6 +121,9 @@ + +