From 3c6401963566bb3ed1203dcd8e87a3f9576431dd Mon Sep 17 00:00:00 2001 From: Polarix Date: Wed, 27 Dec 2017 20:03:30 +0800 Subject: [PATCH] =?UTF-8?q?2017-12-30=EF=BC=9A=E5=A2=9E=E5=8A=A0=E9=83=A8?= =?UTF-8?q?=E5=88=86API=EF=BC=8C=E9=80=82=E5=BA=94=E5=A4=9A=E7=BA=BF?= =?UTF-8?q?=E7=A8=8B=E5=A4=84=E7=90=86=E5=87=86=E5=A4=87=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Application/inc/Application.h | 17 +- Application/src/Application.cpp | 44 +- Common/inc/Common.h | 23 +- Common/src/Common.cpp | 23 + Demo/inc/DemoProc.h | 12 +- Demo/inc/DemoProcText.h | 13 + Demo/src/DemoProc.c | 14 +- Demo/src/DemoProcText_UTF-8.c | 2 + Demo/src/List.c | 2 +- Demo/src/RTCNotice.c | 2 +- Demo/src/RealtimeGraph.c | 4 +- Demo/src/ScrollingText.c | 11 +- Demo/src/TextNotice.c | 2 +- Demo/src/VariableBox.c | 2 +- Documents/{API鏂囨。.pdf => API.pdf} | Bin Documents/{SimpleGUI.pdf => ReadMe.pdf} | Bin Frame/inc/LCDFrame.h | 107 + Frame/inc/LCD_OperationIF.h | 52 - Frame/inc/LCD_VirtualDevice.h | 150 - Frame/inc/LCD_VirtualDeviceParameter.h | 29 - Frame/inc/MonochromeDotLCD.h | 50 + Frame/inc/PixelPanel.h | 46 - Frame/src/LCDFrame.cpp | 498 +++ Frame/src/LCD_OperationIF.c | 109 - Frame/src/LCD_VirtualDevice.cpp | 322 -- Frame/src/MonochromeDotLCD.cpp | 127 + Frame/src/PixelPanel.cpp | 129 - GUI/inc/SGUI_Common.h | 7 +- GUI/src/SGUI_Basic.c | 17 +- GUI/src/SGUI_Common.c | 2 +- GUI/src/SGUI_Frame.c | 2 +- GUI/src/SGUI_List.c | 2 +- GUI/src/SGUI_Notice.c | 2 +- GUI/src/SGUI_ProcessBar.c | 2 +- GUI/src/SGUI_RealtimeGraph.c | 2 +- GUI/src/SGUI_ScrollBar.c | 2 +- GUI/src/SGUI_Text.c | 2 +- GUI/src/SGUI_VariableBox.c | 2 +- HMI/inc/HMI_Engine.h | 6 +- HMI/src/HMI_Engine.c | 2 +- Interface/inc/UserActionInterface.h | 24 + .../inc/VirtualDeviceInterface.h | 56 +- .../src/UserActionInterface.cpp | 266 +- Interface/src/VirtualDeviceInterface.cpp | 141 + Project/CodeBlocks/SimpleGUI.cbp | 39 +- Project/CodeBlocks/SimpleGUI.depend | 2946 +++++++++++++++++ Project/CodeBlocks/SimpleGUI.layout | 120 + Resource/Icons/ICON_Frame.bmp | Bin 6966 -> 0 bytes Resource/Icons/ICON_Main.ico | Bin 15086 -> 0 bytes Resource/Images/Application/About.png | Bin 0 -> 16492 bytes Resource/Images/Application/ICON_LogFrame.ico | Bin 0 -> 9278 bytes .../Images/Application/ICON_MainFrame.ico | Bin 0 -> 9278 bytes Resource/Images/ToolBarIcons/About.png | Bin 0 -> 644 bytes Resource/Images/ToolBarIcons/ClearScreen.png | Bin 0 -> 416 bytes .../Images/ToolBarIcons/CopyScreenShot.png | Bin 0 -> 530 bytes .../Images/ToolBarIcons/DeviceConnect.png | Bin 0 -> 1331 bytes .../Images/ToolBarIcons/DeviceDisconnect.png | Bin 0 -> 1388 bytes Resource/Images/ToolBarIcons/Exit.png | Bin 0 -> 667 bytes .../ToolBarIcons/OpenScreenShotsFolder.png | Bin 0 -> 390 bytes Resource/Images/ToolBarIcons/QuickShot.png | Bin 0 -> 626 bytes .../Images/ToolBarIcons/SaveScreenShot.png | Bin 0 -> 475 bytes Resource/Images/ToolBarIcons/Settings.png | Bin 0 -> 907 bytes .../Images/ToolBarIcons/ShowLogWindow.png | Bin 0 -> 584 bytes .../ToolBarIcons/ShowLogWindow_Disable.png | Bin 0 -> 499 bytes Resource/Resource.rc | 23 +- Resource/Tools/About.bmp | Bin 1078 -> 0 bytes Resource/Tools/Copy.bmp | Bin 1078 -> 0 bytes Resource/Tools/Exit.bmp | Bin 1078 -> 0 bytes Resource/Tools/OpenFolder.bmp | Bin 1078 -> 0 bytes Resource/Tools/Screenshots.bmp | Bin 1078 -> 0 bytes wxExpand/inc/{wxPixelPanel.h => wxDotLCD.h} | 37 +- wxExpand/src/wxDotLCD.cpp | 549 +++ wxExpand/src/wxPixelPanel.cpp | 385 --- 73 files changed, 4934 insertions(+), 1492 deletions(-) create mode 100644 Common/src/Common.cpp create mode 100644 Demo/inc/DemoProcText.h create mode 100644 Demo/src/DemoProcText_UTF-8.c rename Documents/{API鏂囨。.pdf => API.pdf} (100%) rename Documents/{SimpleGUI.pdf => ReadMe.pdf} (100%) create mode 100644 Frame/inc/LCDFrame.h delete mode 100644 Frame/inc/LCD_OperationIF.h delete mode 100644 Frame/inc/LCD_VirtualDevice.h delete mode 100644 Frame/inc/LCD_VirtualDeviceParameter.h create mode 100644 Frame/inc/MonochromeDotLCD.h delete mode 100644 Frame/inc/PixelPanel.h create mode 100644 Frame/src/LCDFrame.cpp delete mode 100644 Frame/src/LCD_OperationIF.c delete mode 100644 Frame/src/LCD_VirtualDevice.cpp create mode 100644 Frame/src/MonochromeDotLCD.cpp delete mode 100644 Frame/src/PixelPanel.cpp create mode 100644 Interface/inc/UserActionInterface.h rename {User => Interface}/inc/VirtualDeviceInterface.h (61%) rename User/src/VirtualDeviceInterface.c => Interface/src/UserActionInterface.cpp (50%) create mode 100644 Interface/src/VirtualDeviceInterface.cpp create mode 100644 Project/CodeBlocks/SimpleGUI.depend create mode 100644 Project/CodeBlocks/SimpleGUI.layout delete mode 100644 Resource/Icons/ICON_Frame.bmp delete mode 100644 Resource/Icons/ICON_Main.ico create mode 100644 Resource/Images/Application/About.png create mode 100644 Resource/Images/Application/ICON_LogFrame.ico create mode 100644 Resource/Images/Application/ICON_MainFrame.ico create mode 100644 Resource/Images/ToolBarIcons/About.png create mode 100644 Resource/Images/ToolBarIcons/ClearScreen.png create mode 100644 Resource/Images/ToolBarIcons/CopyScreenShot.png create mode 100644 Resource/Images/ToolBarIcons/DeviceConnect.png create mode 100644 Resource/Images/ToolBarIcons/DeviceDisconnect.png create mode 100644 Resource/Images/ToolBarIcons/Exit.png create mode 100644 Resource/Images/ToolBarIcons/OpenScreenShotsFolder.png create mode 100644 Resource/Images/ToolBarIcons/QuickShot.png create mode 100644 Resource/Images/ToolBarIcons/SaveScreenShot.png create mode 100644 Resource/Images/ToolBarIcons/Settings.png create mode 100644 Resource/Images/ToolBarIcons/ShowLogWindow.png create mode 100644 Resource/Images/ToolBarIcons/ShowLogWindow_Disable.png delete mode 100644 Resource/Tools/About.bmp delete mode 100644 Resource/Tools/Copy.bmp delete mode 100644 Resource/Tools/Exit.bmp delete mode 100644 Resource/Tools/OpenFolder.bmp delete mode 100644 Resource/Tools/Screenshots.bmp rename wxExpand/inc/{wxPixelPanel.h => wxDotLCD.h} (69%) create mode 100644 wxExpand/src/wxDotLCD.cpp delete mode 100644 wxExpand/src/wxPixelPanel.cpp diff --git a/Application/inc/Application.h b/Application/inc/Application.h index 4a0cac6..74b8bd6 100644 --- a/Application/inc/Application.h +++ b/Application/inc/Application.h @@ -7,27 +7,24 @@ * License: **************************************************************/ -#ifndef __INCLUDE_LCD_APPLICATION_H__ -#define __INCLUDE_LCD_APPLICATION_H__ +#ifndef __INCLUDE_CLASS_APPLICATION_H__ +#define __INCLUDE_CLASS_APPLICATION_H__ #include #include -#include "LCD_VirtualDevice.h" +#include "LCDFrame.h" class Application : public wxApp { private: - LCD_VirtualDevice* m_pclsMainFrame; - - public: + LCDFrame* m_pclsMainFrame; private: - - bool OnInit(void); - int OnExit(void); + bool OnInit(void); + int OnExit(void); }; -#endif //__INCLUDE_LCD_APPLICATION_H__ +#endif //__INCLUDE_CLASS_APPLICATION_H__ diff --git a/Application/src/Application.cpp b/Application/src/Application.cpp index 86e9937..393f13f 100644 --- a/Application/src/Application.cpp +++ b/Application/src/Application.cpp @@ -1,20 +1,46 @@ #include "wx\wx.h" -#include "Application.h" +#include "Application.h" +#include "Common.h" IMPLEMENT_APP(Application); bool Application::OnInit(void) { + /*----------------------------------*/ + /* Variable Declaration */ + /*----------------------------------*/ + bool bReturn; + + /*----------------------------------*/ + /* Initialize */ + /*----------------------------------*/ + bReturn = true; + + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + // Register image media handle. wxInitAllImageHandlers(); + // Read virtual device parameter. + SetDefaultParameterData(&g_stParameters); + // Create main frame instance. + LCDFrame::Initialize((wxFrame*)NULL); - m_pclsMainFrame = new LCD_VirtualDevice((wxWindow*)NULL); - - SetTopWindow(m_pclsMainFrame); - - m_pclsMainFrame->Show(); - - return true; -} + m_pclsMainFrame = LCDFrame::GetInstance(); + + if(NULL != m_pclsMainFrame) + { + SetTopWindow(m_pclsMainFrame); + m_pclsMainFrame->Show(); + } + else + { + // Create instance failed. + bReturn = false; + } + return bReturn; +} + int Application::OnExit() { diff --git a/Common/inc/Common.h b/Common/inc/Common.h index 64435c1..e84915e 100644 --- a/Common/inc/Common.h +++ b/Common/inc/Common.h @@ -1,5 +1,6 @@ -#ifndef __INCLUDE_LCD_COMMON_H__ -#define __INCLUDE_LCD_COMMON_H__ +#ifndef __INCLUDE_COMMON_H__ +#define __INCLUDE_COMMON_H__ +#include #include #define LCD_COLOR_OBJ_PIX (0xFF168363) @@ -15,6 +16,20 @@ #define _TRANS_TEXT(STR) _(STR) +#define LCD_COLOR_OBJ_PIX (0xFF168363) +#define LCD_COLOR_OBJ_BKG (0xFF00F0D7) +#define LCD_COLOR_OBJ_EDGE (0xFF383834) +#define LCD_COLOR_OBJ_GRID (0xFF383834) + +#define LCD_DEFAULT_CONFIG_FILE ("Config.xml") + +#define PARAM_DEFAULT_PIXEL_NUM_H (128) +#define PARAM_DEFAULT_PIXEL_NUM_V (64) +#define PARAM_DEFAULT_PIXEL_SIZE (2) +#define PARAM_DEFAULT_EDGE_WIDTH (5) +#define PARAM_DEFAULT_GRID_ENABLE (true) +#define PARAM_DEFAULT_GRID_DISABLE (false) + typedef union { uint8_t Channel[4]; @@ -35,4 +50,8 @@ typedef struct }PixelPanelParameter; +extern PixelPanelParameter g_stParameters; + +void SetDefaultParameterData(PixelPanelParameter* pstParameter); + #endif // __INCLUDE_LCD_COMMON_H__ diff --git a/Common/src/Common.cpp b/Common/src/Common.cpp new file mode 100644 index 0000000..1fc6e8e --- /dev/null +++ b/Common/src/Common.cpp @@ -0,0 +1,23 @@ +#include "Common.h" + +PixelPanelParameter g_stParameters; + + +void SetDefaultParameterData(PixelPanelParameter* pstParameter) +{ + if(NULL != pstParameter) + { + // Appearance + pstParameter->HorizontalPixelNumber = PARAM_DEFAULT_PIXEL_NUM_H; + pstParameter->VerticalPixelNumber = PARAM_DEFAULT_PIXEL_NUM_V; + pstParameter->PixelSize = PARAM_DEFAULT_PIXEL_SIZE; + pstParameter->EdgeWidth = PARAM_DEFAULT_EDGE_WIDTH; + pstParameter->EnableGrid = PARAM_DEFAULT_GRID_DISABLE; + + // ScreenColor + pstParameter->PanelColor.RGBA = LCD_COLOR_OBJ_BKG; + pstParameter->PixelColor.RGBA = LCD_COLOR_OBJ_PIX; + pstParameter->EdgeColor.RGBA = LCD_COLOR_OBJ_EDGE; + pstParameter->EdgeColor.RGBA = LCD_COLOR_OBJ_GRID; + } +} diff --git a/Demo/inc/DemoProc.h b/Demo/inc/DemoProc.h index fbdfce7..d9fc913 100644 --- a/Demo/inc/DemoProc.h +++ b/Demo/inc/DemoProc.h @@ -48,10 +48,16 @@ extern HMI_SCREEN_OBJECT g_stHMIDemo_VariableBox; extern HMI_SCREEN_OBJECT g_stHMI_DemoRealtimeGraph; //=======================================================================// //= Function declare. =// -//=======================================================================// -void SimpleGUI_DemoProcess(void); +//=======================================================================// +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ +void SimpleGUI_DemoProcessInitialize(void); HMI_ENGINE_RESULT InitializeEngine(HMI_ENGINE_OBJECT* pstHMIEngineObject); HMI_ENGINE_RESULT EventProcess(HMI_EVENT_TYPE eEventType, const HMI_EVENT* pstEvent); - +#ifdef __cplusplus +} +#endif /* __cplusplus */ #endif // __INCLUDE_DEMO_PROC_H__ diff --git a/Demo/inc/DemoProcText.h b/Demo/inc/DemoProcText.h new file mode 100644 index 0000000..aef259e --- /dev/null +++ b/Demo/inc/DemoProcText.h @@ -0,0 +1,13 @@ +#ifndef __INCLUDE_DEMO_PROC_TEXT__ +#define __INCLUDE_DEMO_PROC_TEXT__ +#include "SGUI_Typedef.h" + + +#defien DEMO_START_NOTICE (\ +" 欢迎来到SimpleGUI演示工程,本工程用于演示SimpleGUI各API的显示效果、\ +使用方法以及运作机理,在演示过程中,您可以通过键盘输入与SimpleGUI演示工\ +程进行交互。\n\ + 按“空格”键开始演示。"\ +) + +#endif // __INCLUDE_DEMO_PROC_TEXT__ diff --git a/Demo/src/DemoProc.c b/Demo/src/DemoProc.c index fb85595..d5af5e8 100644 --- a/Demo/src/DemoProc.c +++ b/Demo/src/DemoProc.c @@ -1,6 +1,6 @@ /*************************************************************************/ /** Copyright. **/ -/** FileName: HMI_Data.c **/ +/** FileName: DemoProc.c **/ /** Author: Polarix **/ /** Version: 1.0.0.0 **/ /** Description: User operation interface. **/ @@ -24,7 +24,7 @@ //=======================================================================// HMI_ENGINE_OBJECT g_stDemoEngine; //=======================================================================// -//= Function implementation. =// +//= Function define. =// //=======================================================================// /*****************************************************************************/ @@ -33,10 +33,9 @@ HMI_ENGINE_OBJECT g_stDemoEngine; /** Parameters: None. **/ /** Return: None. **/ /** Notice: This function demonstrates how to use the interface and **/ -/** HMI engine of Simple GUI. - **/ +/** HMI engine of Simple GUI. **/ /*****************************************************************************/ -void SimpleGUI_DemoProcess(void) +void SimpleGUI_DemoProcessInitialize(void) { InitializeEngine(&g_stDemoEngine); } @@ -45,7 +44,7 @@ void SimpleGUI_DemoProcess(void) /** Function Name: InitializeEngine **/ /** Purpose: Initialize HMI demo engine. **/ /** Parameters: **/ -/** @pstHMIEngineObject[in]: HMI engine object pointer. **/ +/** @ pstHMIEngineObject[in]: HMI engine object pointer. **/ /** Return: HMI_ENGINE_RESULT. **/ /** Notice: This function must be called when initialize. **/ /*****************************************************************************/ @@ -119,7 +118,8 @@ HMI_ENGINE_RESULT InitializeEngine(HMI_ENGINE_OBJECT* pstHMIEngineObject) /** Function Name: EventProcess **/ /** Purpose: Process posted event. **/ /** Parameters: **/ -/** @pstHMIEngineObject[in]: HMI engine object pointer. **/ +/** @ eEventType[in]: HMI event type. **/ +/** @ pstEvent[in]: HMI event data. **/ /** Return: HMI_ENGINE_RESULT. **/ /** Notice: This function must be called when initialize. **/ /*****************************************************************************/ diff --git a/Demo/src/DemoProcText_UTF-8.c b/Demo/src/DemoProcText_UTF-8.c new file mode 100644 index 0000000..874d287 --- /dev/null +++ b/Demo/src/DemoProcText_UTF-8.c @@ -0,0 +1,2 @@ +#include "DemoProcText.h" + diff --git a/Demo/src/List.c b/Demo/src/List.c index a65dac3..5944f72 100644 --- a/Demo/src/List.c +++ b/Demo/src/List.c @@ -67,7 +67,7 @@ HMI_SCREEN_OBJECT g_stHMIDemo_List = { HMI_SCREEN_ID_DEMO_LIST, }; //=======================================================================// -//= Function implementation. =// +//= Function define. =// //=======================================================================// HMI_ENGINE_RESULT HMI_DemoList_Initialize(void) { diff --git a/Demo/src/RTCNotice.c b/Demo/src/RTCNotice.c index b9008bd..aa8fa66 100644 --- a/Demo/src/RTCNotice.c +++ b/Demo/src/RTCNotice.c @@ -45,7 +45,7 @@ HMI_SCREEN_OBJECT g_stHMIDemo_RTCNotice = { HMI_SCREEN_ID_DEMO_RTC_NOTIC }; //=======================================================================// -//= Function implementation. =// +//= Function define. =// //=======================================================================// HMI_ENGINE_RESULT HMI_DemoRTCNotice_Initialize(void) { diff --git a/Demo/src/RealtimeGraph.c b/Demo/src/RealtimeGraph.c index e44d1f1..415a4b9 100644 --- a/Demo/src/RealtimeGraph.c +++ b/Demo/src/RealtimeGraph.c @@ -40,7 +40,7 @@ HMI_SCREEN_OBJECT g_stHMI_DemoRealtimeGraph = { HMI_SCREEN_ID_DEMO_REAL_TIME }; //=======================================================================// -//= Function implementation. =// +//= Function define. =// //=======================================================================// HMI_ENGINE_RESULT HMI_DemoRealGraph_Initialize(void) { @@ -107,7 +107,7 @@ HMI_ENGINE_RESULT HMI_DemoRealGraph_ProcessEvent(HMI_EVENT_TYPE eEventType, cons } else { - uiTimer = 10; + uiTimer = 5; iNewValue = *((SGUI_INT*)pstEvent->Data); SGUI_RealtimeGraph_AppendValue(&s_stRealtimeGraph, iNewValue); HMI_DemoRealGraph_RefreshScreen(NULL); diff --git a/Demo/src/ScrollingText.c b/Demo/src/ScrollingText.c index d6f7907..82c96be 100644 --- a/Demo/src/ScrollingText.c +++ b/Demo/src/ScrollingText.c @@ -41,7 +41,7 @@ static HMI_ENGINE_RESULT HMI_DemoScrollingText_PostProcess(SGUI_INT iActionRe //= Static variable declaration. =// //=======================================================================// // Demo text. -static char s_szDemoText[] = +static SGUI_CCHAR s_szDemoText[] = { " 娆㈣繋鏉ュ埌SimpleGUI婕旂ず宸ョ▼锛屾湰宸ョ▼鐢ㄤ簬婕旂ずSimpleGUI鍚凙PI鐨勬樉绀烘晥鏋溿乗 浣跨敤鏂规硶浠ュ強杩愪綔鏈虹悊锛屽湪婕旂ず杩囩▼涓紝鎮ㄥ彲浠ラ氳繃閿洏杈撳叆涓嶴impleGUI婕旂ず宸 @@ -72,7 +72,7 @@ HMI_SCREEN_OBJECT g_stHMIDemo_ScrollingText = { &s_stDemoScrollingTextActions}; //=======================================================================// -//= Function implementation. =// +//= Function define. =// //=======================================================================// /*****************************************************************************/ /** Function Name: HMI_DemoScrollingText_Initialize **/ @@ -139,7 +139,7 @@ HMI_ENGINE_RESULT HMI_DemoScrollingText_ProcessEvent(HMI_EVENT_TYPE eEventType, /* Variable Declaration */ /*----------------------------------*/ HMI_ENGINE_RESULT eProcessResult; - static SGUI_UINT uiTimer = 3; + static SGUI_UINT uiTimer = 1; SGUI_UINT16* parrKeyValue; /*----------------------------------*/ @@ -176,7 +176,8 @@ HMI_ENGINE_RESULT HMI_DemoScrollingText_ProcessEvent(HMI_EVENT_TYPE eEventType, uiTimer--; } else - { + { + SGUI_Frame_DrawFullScreenFrame(&s_stTextFrame); SGUI_Text_DrawMultipleLinesText(s_szDemoText, SGUI_FONT_SIZE_H12, &s_stTextDisplayArea, s_iTextOffset, SGUI_DRAW_NORMAL); if(s_iTextOffset + s_iTextHeight == 0) { @@ -186,7 +187,7 @@ HMI_ENGINE_RESULT HMI_DemoScrollingText_ProcessEvent(HMI_EVENT_TYPE eEventType, { s_iTextOffset--; } - uiTimer = 2; + uiTimer = 1; } eProcessResult = HMI_RET_NOACTION; break; diff --git a/Demo/src/TextNotice.c b/Demo/src/TextNotice.c index ded15b2..561df36 100644 --- a/Demo/src/TextNotice.c +++ b/Demo/src/TextNotice.c @@ -46,7 +46,7 @@ HMI_SCREEN_OBJECT g_stHMIDemo_TextNotice = { HMI_SCREEN_ID_DEMO_TEXT_NOTI }; //=======================================================================// -//= Function implementation. =// +//= Function define. =// //=======================================================================// HMI_ENGINE_RESULT HMI_DemoTextNotice_Initialize(void) { diff --git a/Demo/src/VariableBox.c b/Demo/src/VariableBox.c index e4b87b8..d2f3eab 100644 --- a/Demo/src/VariableBox.c +++ b/Demo/src/VariableBox.c @@ -73,7 +73,7 @@ HMI_SCREEN_OBJECT g_stHMIDemo_VariableBox = { HMI_SCREEN_ID_DEMO_VARIABL }; //=======================================================================// -//= Function implementation. =// +//= Function define. =// //=======================================================================// HMI_ENGINE_RESULT HMI_DemoVariableBox_Initialize(void) { diff --git a/Documents/API鏂囨。.pdf b/Documents/API.pdf similarity index 100% rename from Documents/API鏂囨。.pdf rename to Documents/API.pdf diff --git a/Documents/SimpleGUI.pdf b/Documents/ReadMe.pdf similarity index 100% rename from Documents/SimpleGUI.pdf rename to Documents/ReadMe.pdf diff --git a/Frame/inc/LCDFrame.h b/Frame/inc/LCDFrame.h new file mode 100644 index 0000000..9f1cbf3 --- /dev/null +++ b/Frame/inc/LCDFrame.h @@ -0,0 +1,107 @@ +#ifndef __INCLUDE_CLASS_LCD_FRAME_H__ +#define __INCLUDE_CLASS_LCD_FRAME_H__ +//=======================================================================// +//= Include files. =// +//=======================================================================// +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "MonochromeDotLCD.h" + +//=======================================================================// +//= User Macro definition. =// +//=======================================================================// +#define FRAME_TITLE (_T("SimpleGUI Simulator")) + +#define wxID_MAIN 1000 +#define wxID_TOOLBAR 2000 +#define wxID_TOOLBAR_QUICKSHOTS 2100 +#define wxID_TOOLBAR_COPY 2101 +#define wxID_TOOLBAR_SCREENSHOTS_FOLDER 2102 +#define wxID_TOOLBAR_ABOUT 2103 +#define wxID_TOOLBAR_EXIT 2104 +#define wxID_STATUSBAR 3000 +#define wxID_PANEL 4000 +#define WXID_MILLISECOND_TIMER 5001 +#define WXID_RTC_TIMER 5002 + +#define SCREENSHOTS_FOLDER_T "ScreenShots" +#define SCREENSHOTS_FILE_NAME_T "LCD_%04u%02u%02u_%02u%02u-%u.bmp" +#define SCREENSHOTS_FILE_FULLNAME_T wxString::Format("%s\\%s", SCREENSHOTS_FOLDER_T, SCREENSHOTS_FILE_NAME_T) +#define N_YEAR wxDateTime::Now().GetYear() +#define N_MONTH wxDateTime::Now().GetMonth() +#define N_DAY wxDateTime::Now().GetDay() +#define N_HOUR wxDateTime::Now().GetHour() +#define N_MINUTE wxDateTime::Now().GetMinute() +#define SCREENSHOTS_FOLDER _T(SCREENSHOTS_FOLDER_T) +#define SCREENSHOTS_FILE_NAME(IDX) wxString::Format(SCREENSHOTS_FILE_NAME_T, N_YEAR, N_MONTH, N_DAY, N_HOUR, N_MINUTE, IDX) +#define SCREENSHOTS_FILE_FULLNAME(IDX) wxString::Format(SCREENSHOTS_FILE_FULLNAME_T, N_YEAR, N_MONTH, N_DAY, N_HOUR, N_MINUTE, IDX) + +//=======================================================================// +//= Class declare. =// +//=======================================================================// +class LCDFrame : public wxFrame +{ + private: + // Controlers + wxStatusBar* m_pclsCtrlStatusBar; + wxToolBar* m_pclsCtrlToolBar; + MonochromeDotLCD* m_pclsCtrlPaintPanel; + wxTimer* m_pclsMilliSecondTimer; + wxTimer* m_pclsRTCTimer; + static LCDFrame* m_pclsInstance; + + // Members. + void _setStatusText(const wxString& strString); + void _wxEvent_OnUpdateUI(wxUpdateUIEvent& clsEventObject) {OnUpdateUI(clsEventObject);} + void _wxEvent_OnSetFocus(wxFocusEvent& clsEventObject) {SetFocus();} + void _wxEvent_OnClose(wxCloseEvent& clsEventObject) {OnClose();} + void _wxEvent_OnKeyDown(wxKeyEvent& clsEventObject) {OnKeyDown(clsEventObject);} + void _wxEvent_OnPaint(wxPaintEvent& clsEventObject) {OnPaint(clsEventObject);clsEventObject.Skip();} + void _wxEvent_OnScreenshots(wxCommandEvent& clsEventObject) {Screenshots();} + void _wxEvent_OnToolCopy(wxCommandEvent& clsEventObject) {Copy();} + void _wxEvent_OnOpenScreenshotsFolder(wxCommandEvent &clsEventObject){OpenScreenshotsFolder();} + void _wxEvent_OnAbout(wxCommandEvent& clsEventObject) {;} + void _wxEvent_OnExit(wxCommandEvent& clsEventObject) {OnClose();} + void _wxEvent_OnTimerEvent(wxTimerEvent& event) {OnTimerEvent(event);} + void _wxEvent_OnRTCUpdate(wxTimerEvent& event) {OnRTCUpdate(event);} + void _createToolbar(void); + void _initializeTimer(void); + void _startTimer(int32_t iMilliSecondTimerInterval); + + protected: + virtual void OnUpdateUI(wxUpdateUIEvent& clsEventObject); + virtual void OnClose(void); + virtual void OnKeyDown(wxKeyEvent& clsEventObject); + virtual void OnPaint(wxPaintEvent &clsEventObject); + virtual void Screenshots(void); + virtual void Copy(void); + virtual void OpenScreenshotsFolder(void); + virtual void OnTimerEvent(wxTimerEvent& event); + virtual void OnRTCUpdate(wxTimerEvent& event); + public: + LCDFrame( wxWindow* pclsParent, + wxWindowID iID = wxID_MAIN, + const wxString& strTitle = FRAME_TITLE); + + ~LCDFrame(); + static void Initialize( wxWindow* pclsParent, + wxWindowID iID = wxID_MAIN, + const wxString& strTitle = FRAME_TITLE); + static LCDFrame* GetInstance(void); + void SetLCDPixel(uint32_t uiPosX, uint32_t uiPosY, uint32_t uiPixelValue); + uint32_t GetLCDPixel(uint32_t uiPosX, uint32_t uiPosY); + void RefreshLCD(void); + void ClearLCD(void); + DECLARE_EVENT_TABLE(); + +}; + +#endif //__INCLUDE_CLASS_LCD_FRAME_H__ diff --git a/Frame/inc/LCD_OperationIF.h b/Frame/inc/LCD_OperationIF.h deleted file mode 100644 index 4fc2b47..0000000 --- a/Frame/inc/LCD_OperationIF.h +++ /dev/null @@ -1,52 +0,0 @@ -#ifndef __INCLUDE_LCD_OPERATIONIF_H__ -#define __INCLUDE_LCD_OPERATIONIF_H__ -#include "LCD_VirtualDeviceParameter.h" -#include -#include -#include - -#define RECT_START_X(R) (R.StartPosX) -#define RECT_START_Y(R) (R.StartPosY) -#define RECT_END_X(R) (R.EndPosX) -#define RECT_END_Y(R) (R.EndPosY) -#define RECT_INVALID_POSITION (-1) -#define RECT_RESET(R) {R.StartPosX=RECT_INVALID_POSITION;R.EndPosX=RECT_INVALID_POSITION;R.StartPosY=RECT_INVALID_POSITION;R.EndPosY=RECT_INVALID_POSITION;} - -#ifdef __cplusplus -extern "C" -{ -#endif - -typedef struct -{ - uint16_t StartPosX; - uint16_t StartPosY; - uint16_t EndPosX; - uint16_t EndPosY; -}TRect; - -typedef struct -{ - uint8_t Pixregister[LCD_SIZE_WIDTH][LCD_SIZE_HEIGHT]; - bool InUpdating; - TRect ChangedArea; -}TPixArray; - -// LCD Pix data array. -extern TPixArray g_LCDPixArray; - -// Interface function declare -void VTIF_KeyBoardEvent(bool bShift, bool bCtrl, bool bAlt, uint16_t uiKeyCode); -void VTIF_TimerEvent(void); -void VTIF_RTCUpdateEvent(uint16_t uiYear, uint16_t uiMonth, uint16_t uiDay, uint16_t uiHour, uint16_t uiMinute, uint16_t uiSecond); -void VTIF_LCDInitializeDisplay(void); -void VTIF_SetPoint(uint16_t uiPosX, uint16_t uiPosY, uint8_t uiPixValue); -uint8_t VTIF_GetPoint(uint16_t uiPosX, uint16_t uiPosY); -void VTIF_ClearScreen(void); - - -#ifdef __cplusplus -} -#endif - -#endif // __INCLUDE_LCD_OPERATIONIF_H__ diff --git a/Frame/inc/LCD_VirtualDevice.h b/Frame/inc/LCD_VirtualDevice.h deleted file mode 100644 index d107af5..0000000 --- a/Frame/inc/LCD_VirtualDevice.h +++ /dev/null @@ -1,150 +0,0 @@ -/////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version Jun 17 2015) -// http://www.wxformbuilder.org/ -// -// PLEASE DO "NOT" EDIT THIS FILE! -/////////////////////////////////////////////////////////////////////////// - -#ifndef __INCLUDE_LCD_VIRTUAL_DEVICE_H__ -#define __INCLUDE_LCD_VIRTUAL_DEVICE_H__ - -#include "LCD_VirtualDeviceParameter.h" -#include "LCD_OperationIF.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////// -#define FRAME_TITLE (_T("SimpleGUI Simulator")) - -#define wxID_MAIN 1000 -#define wxID_TOOLBAR 2000 -#define wxID_TOOLBAR_SCREENSHOTS 2100 -#define wxID_TOOLBAR_COPY 2101 -#define wxID_TOOLBAR_SCREENSHOTS_FOLDER 2102 -#define wxID_TOOLBAR_ABOUT 2103 -#define wxID_TOOLBAR_EXIT 2104 -#define wxID_STATUSBAR 3000 -#define wxID_PANEL 4000 - -#define WXID_TIMER 9001 -#define WXID_RTCTIMER 9002 - -#define DC_PREPARE(DC) {DC.SetBrush(m_CBrush); DC.SetPen(m_CPen);} -#define DC_RELEASE(DC) {DC.SetBrush(wxNullBrush); DC.SetPen(wxNullPen);} -#if LCD_PIXSIZE > 1 -#define DC_DRAW_POINT(DC, POSX, POSY) {DC.DrawRectangle(wxPoint(LCD_SIZE_MARGIN+POSX*LCD_PIXSIZE, LCD_SIZE_MARGIN+POSY*LCD_PIXSIZE), wxSize(LCD_PIXSIZE, LCD_PIXSIZE));} -#else -#define DC_DRAW_POINT(DC, POSX, POSY) {DC.DrawPoint(wxPoint(LCD_SIZE_MARGIN+POSX*LCD_PIXSIZE, LCD_SIZE_MARGIN+POSY*LCD_PIXSIZE));} -#endif // LCD_PIXSIZE -#define DC_SET_COLOR(COLOR) {m_CPen.SetColour(COLOR);m_CBrush.SetColour(COLOR);} - -#define SCREENSHOTS_FOLDER_T "..\\..\\ScreenShots" -#define SCREENSHOTS_FILE_NAME_T "LCD_%04u%02u%02u_%02u%02u-%u.bmp" -#define SCREENSHOTS_FILE_FULLNAME_T wxString::Format("%s\\%s", SCREENSHOTS_FOLDER_T, SCREENSHOTS_FILE_NAME_T) -#define N_YEAR wxDateTime::Now().GetYear() -#define N_MONTH wxDateTime::Now().GetMonth() -#define N_DAY wxDateTime::Now().GetDay() -#define N_HOUR wxDateTime::Now().GetHour() -#define N_MINUTE wxDateTime::Now().GetMinute() -#define SCREENSHOTS_FOLDER _T(SCREENSHOTS_FOLDER_T) -#define SCREENSHOTS_FILE_NAME(IDX) wxString::Format(SCREENSHOTS_FILE_NAME_T, N_YEAR, N_MONTH, N_DAY, N_HOUR, N_MINUTE, IDX) -#define SCREENSHOTS_FILE_FULLNAME(IDX) wxString::Format(SCREENSHOTS_FILE_FULLNAME_T, N_YEAR, N_MONTH, N_DAY, N_HOUR, N_MINUTE, IDX) - -/////////////////////////////////////////////////////////////////////////////// -/// Class LCD_DisplayPanel -/////////////////////////////////////////////////////////////////////////////// -class LCD_DisplayPanel : public wxPanel -{ - private: - // Private object - wxPen m_CPen; - wxBrush m_CBrush; - wxClientDC m_CDC; - TPixArray* m_PixRegister; - void wxEvent_OnKeyDown(wxKeyEvent& event); - void wxEvent_OnSetFocus(wxFocusEvent& event); - protected: - public: - - LCD_DisplayPanel( wxWindow* parent, - wxWindowID id = wxID_PANEL, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxSize(LCD_SIZE_WIDTH*LCD_PIXSIZE+2*LCD_SIZE_MARGIN, LCD_SIZE_HEIGHT*LCD_PIXSIZE+2*LCD_SIZE_MARGIN), - long style = wxTAB_TRAVERSAL); - ~LCD_DisplayPanel(void); - void Paint(void); - void PartialPaint(void); - virtual bool SaveToFile(const wxString& CStrFilePath); - virtual bool CopyToClipBoard(void); - DECLARE_EVENT_TABLE(); -}; - -/////////////////////////////////////////////////////////////////////////////// -/// Class LCD_VirtualDevice -/////////////////////////////////////////////////////////////////////////////// -class LCD_VirtualDevice : public wxFrame -{ - private: - void SetStatusText(const wxString& cString); - - void wxEvent_OnUpdateUI(wxUpdateUIEvent& event) {OnUpdateUI(event);} - void wxEvent_OnSetFocus(wxFocusEvent& event) {SetFocus();} - void wxEvent_OnClose(wxCloseEvent& event) {OnClose(event);} - void wxEvent_OnKeyDown(wxKeyEvent& event) {OnKeyDown(event);} - void wxEvent_OnPaint(wxPaintEvent &event) {OnPaint(event);event.Skip();} - void wxEvent_OnScreenshots(wxCommandEvent &event){Screenshots();} - void wxEvent_OnToolCopy(wxCommandEvent &event) {Copy();} - void wxEvent_OnOpenScreenshotsFolder(wxCommandEvent &event){OpenScreenshotsFolder();} - void wxEvent_OnAbout(wxCommandEvent &event) {;} - void wxEvent_OnExit(wxCommandEvent &event) {Destroy();} - void wxEvent_OnTimerEvent(wxTimerEvent& event) {OnTimer(event);} - void wxEvent_OnRTCUpdate(wxTimerEvent& event) {OnRTCUpdate(event);} - protected: - // Controlers - wxStatusBar* m_CtrlStatusBar; - wxToolBar* m_CtrlToolBar; - wxToolBarToolBase* m_CtrlToolButton_Screenshots; - wxToolBarToolBase* m_CtrlToolButton_ScreenCpoy; - wxToolBarToolBase* m_CtrlToolButton_OpenFolder; - wxToolBarToolBase* m_CtrlToolButton_About; - wxToolBarToolBase* m_CtrlToolButton_Exit; - LCD_DisplayPanel* m_CtrlPaintPanel; - wxTimer* m_pclsTimer; - wxTimer* m_pclsRTCTimer; - - virtual void OnUpdateUI(wxUpdateUIEvent& event); - virtual void OnClose(wxCloseEvent& event) {Destroy();} - virtual void OnKeyDown(wxKeyEvent& event); - virtual void OnPaint(wxPaintEvent &event); - virtual void Screenshots(void); - virtual void Copy(void); - virtual void OpenScreenshotsFolder(void); - virtual void OnTimer(wxTimerEvent& event); - virtual void OnRTCUpdate(wxTimerEvent& event); - - public: - - LCD_VirtualDevice( wxWindow* parent, - wxWindowID id = wxID_MAIN, - const wxString& title = FRAME_TITLE, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxSize(500,300), - long style = wxSYSTEM_MENU | wxCAPTION | wxCLOSE_BOX | wxCLIP_CHILDREN); - - ~LCD_VirtualDevice(); - - DECLARE_EVENT_TABLE(); - -}; - -#endif //__INCLUDE_LCD_VIRTUAL_DEVICE_H__ diff --git a/Frame/inc/LCD_VirtualDeviceParameter.h b/Frame/inc/LCD_VirtualDeviceParameter.h deleted file mode 100644 index 25ab106..0000000 --- a/Frame/inc/LCD_VirtualDeviceParameter.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef __INCLUDE_LCD_VIRTUALDEVICEPARAMETER_H_INCLUDED__ -#define __INCLUDE_LCD_VIRTUALDEVICEPARAMETER_H_INCLUDED__ - -// Parameter -#define LCD_SIZE_MARGIN (10) -#define LCD_DISPLAY_EDGE (2) -#define LCD_PIXSIZE (2) - -#define LCD_SIZE_WIDTH (192) -#define LCD_SIZE_HEIGHT (64) -#define LCD_COLOR_OBJ_PIX (wxColor(88,120,20)) -#define LCD_COLOR_OBJ_BKG (wxColor(202,246,22)) -#define LCD_COLOR_OBJ_EDGE (wxColor(116,164,25)) - -#define FRM_COLOR_OBJ_BKG (wxColor(51,100,195)) - -#if LCD_SIZE_WIDTH < 16 -#error Define width of LCD size must greater then 16. -#endif -#if LCD_SIZE_HEIGHT < 16 -#error Define height of LCD size must greater then 16. -#endif - -//Common operation -//#define SET_BIT(PAGE, Bit) ((PAGE) = (PAGE) | (0x01 << (Bit))) -//#define CLR_BIT(PAGE, Bit) ((PAGE) = (PAGE) & (~(0x01 << (Bit)))) -#define GET_BIT(PAGE, Bit) ((((PAGE) & (0x01 << (Bit)))>0)?1:0) - -#endif //__INCLUDE_LCD_VIRTUALDEVICEPARAMETER_H_INCLUDED__ diff --git a/Frame/inc/MonochromeDotLCD.h b/Frame/inc/MonochromeDotLCD.h new file mode 100644 index 0000000..244fcf9 --- /dev/null +++ b/Frame/inc/MonochromeDotLCD.h @@ -0,0 +1,50 @@ +#ifndef __INCLUDE_CLASS_PIXEL_PANEL_H__ +#define __INCLUDE_CLASS_PIXEL_PANEL_H__ +//=======================================================================// +//= Include files. =// +//=======================================================================// +#include "wxDotLCD.h" +#include "Common.h" +#include + +//=======================================================================// +//= Class declare. =// +//=======================================================================// +class MonochromeDotLCD : public wxDotLCD +{ + private: + uint32_t m_uiPageCount; + uint32_t m_uiColumnCount; + wxColor* m_pclsPanelColor; + wxColor* m_pclsPixelColor; + + void wxEvent_OnSetFocus(wxFocusEvent& event) {OnSetFocus(event);} + + protected: + void OnSetFocus(wxFocusEvent& event); + + public: + typedef enum + { + LCD_PIXEL_COLOR_L = 0, + LCD_PIXEL_COLOR_H, + }LCD_PIXEL_COLOR_T; + + MonochromeDotLCD(wxWindow *parent, + wxWindowID winid = wxID_ANY, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxTAB_TRAVERSAL | wxNO_BORDER, + const wxString& name = wxPanelNameStr); + ~MonochromeDotLCD(void); + + void SetParameter(PixelPanelParameter* pstPanelParameter); + void SetPixel(uint32_t uiPosX, uint32_t uiPosY, LCD_PIXEL_COLOR_T ePixelValue); + LCD_PIXEL_COLOR_T GetPixel(uint32_t uiPosX, uint32_t uiPosY); + void DrawPixel(uint32_t uiPosX, uint32_t uiPosY, LCD_PIXEL_COLOR_T ePixelValue); + void CleanScreen(void); + DECLARE_EVENT_TABLE(); +}; + + +#endif // __INCLUDE_CLASS_PIXEL_PANEL_H__ diff --git a/Frame/inc/PixelPanel.h b/Frame/inc/PixelPanel.h deleted file mode 100644 index 906e9b6..0000000 --- a/Frame/inc/PixelPanel.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef __INCLUDE_CLS_LCD_SCREENPANEL_H__ -#define __INCLUDE_CLS_LCD_SCREENPANEL_H__ - -#include - -#include "wxPixelPanel.h" -#include "Common.h" - -class LCD_ScreenPanel : public wxPixelPanel -{ -private: - uint32_t m_uiPageCount; - uint32_t m_uiColumnCount; - uint32_t m_uiPosColumn; - uint32_t m_uiPosPage; - - wxColor* m_pclsPanelColor; - wxColor* m_pclsPixelColor; - - void wxEvent_OnMouseClick(wxMouseEvent& event) {OnMouseClick(event);} - -protected: - void OnMouseClick(wxMouseEvent& event); - -public: - LCD_ScreenPanel( wxWindow *parent, - wxWindowID winid = wxID_ANY, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxTAB_TRAVERSAL | wxNO_BORDER, - const wxString& name = wxPanelNameStr); - ~LCD_ScreenPanel(void); - - void SetParameter(PixelPanelParameter* pstPanelParameter); - void SetColumn(uint32_t uiColumn); - void SetPage(uint32_t uiPage); - void SetPosition(uint32_t uiColumn, uint32_t uiPage); - void SetData(uint8_t uiData); - uint8_t GetData(void); - void CleanPanel(void); - - DECLARE_EVENT_TABLE(); -}; - - -#endif // __INCLUDE_CLS_LCD_SCREENPANEL_H__ diff --git a/Frame/src/LCDFrame.cpp b/Frame/src/LCDFrame.cpp new file mode 100644 index 0000000..b07cf2e --- /dev/null +++ b/Frame/src/LCDFrame.cpp @@ -0,0 +1,498 @@ +/*************************************************************************/ +/** Copyright. **/ +/** FileName: LCDFrame.cpp **/ +/** Author: Polarix **/ +/** Version: 1.7.0.0 **/ +/** Description: Main frame class define. **/ +/*************************************************************************/ +//=======================================================================// +//= Include files. =// +//=======================================================================// +#include +#include "LCDFrame.h" +#include "UserActionInterface.h" + +//=======================================================================// +//= Static class member define. =// +//=======================================================================// +LCDFrame* LCDFrame::m_pclsInstance = NULL; + +//=======================================================================// +//= Event table. =// +//=======================================================================// +BEGIN_EVENT_TABLE(LCDFrame,wxFrame) + EVT_UPDATE_UI(wxID_MAIN, LCDFrame::_wxEvent_OnUpdateUI) + EVT_SET_FOCUS(LCDFrame::_wxEvent_OnSetFocus) + EVT_CLOSE(LCDFrame::_wxEvent_OnClose) + EVT_SET_FOCUS(LCDFrame::_wxEvent_OnSetFocus) + EVT_KEY_DOWN(LCDFrame::_wxEvent_OnKeyDown) + EVT_PAINT(LCDFrame::_wxEvent_OnPaint) + EVT_TOOL(wxID_TOOLBAR_QUICKSHOTS, LCDFrame::_wxEvent_OnScreenshots) + EVT_TOOL(wxID_TOOLBAR_COPY, LCDFrame::_wxEvent_OnToolCopy) + EVT_TOOL(wxID_TOOLBAR_SCREENSHOTS_FOLDER, LCDFrame::_wxEvent_OnOpenScreenshotsFolder) + EVT_TOOL(wxID_TOOLBAR_EXIT, LCDFrame::_wxEvent_OnExit) + EVT_TIMER(WXID_MILLISECOND_TIMER, LCDFrame::_wxEvent_OnTimerEvent) + EVT_TIMER(WXID_RTC_TIMER , LCDFrame::_wxEvent_OnRTCUpdate) +END_EVENT_TABLE() + +//=======================================================================// +//= Function define. =// +//=======================================================================// +/*************************************************************************/ +/** Function Name: LCDFrame **/ +/** Purpose: Constructor of main frame object. **/ +/** Params: **/ +/** @ pclsParent[in]: Parent object pointer. **/ +/** @ iID[in]: Frame object ID. **/ +/** @ strTitle[in]: Frame window title. **/ +/** Return: None. **/ +/** Notice: None. **/ +/*************************************************************************/ +LCDFrame::LCDFrame(wxWindow* pclsParent, wxWindowID iID, const wxString& strTitle) : +wxFrame(pclsParent, iID, strTitle, wxDefaultPosition, wxDefaultSize, wxSYSTEM_MENU | wxCAPTION | wxCLOSE_BOX | wxCLIP_CHILDREN) +{ + SetSizeHints( wxDefaultSize, wxDefaultSize ); + // Set frame icon. + SetIcon(wxIcon(_T("ID_ICON_MAIN"), wxBITMAP_TYPE_ICO_RESOURCE)); + // Create tools bar and tool button. + _createToolbar(); + // Create status bar. + m_pclsCtrlStatusBar = CreateStatusBar(1, wxST_SIZEGRIP, wxID_STATUSBAR); + // Create LCD screen panel. + m_pclsCtrlPaintPanel = new MonochromeDotLCD(this, wxID_PANEL); + m_pclsCtrlPaintPanel->SetParameter(&g_stParameters); + m_pclsCtrlPaintPanel->ResizeParent(); + + // Set frame object position on monitor. + Centre( wxBOTH ); + // Update frame object UI. + UpdateWindowUI(); + + if(false == wxDirExists(SCREENSHOTS_FOLDER)) + { + wxMkdir(SCREENSHOTS_FOLDER); + } +} + +/*************************************************************************/ +/** Function Name: ~LCDFrame **/ +/** Purpose: Destructor of main frame object. **/ +/** Params: None. **/ +/** Return: None. **/ +/** Notice: None. **/ +/*************************************************************************/ +LCDFrame::~LCDFrame() +{ + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + delete m_pclsCtrlStatusBar; + delete m_pclsCtrlToolBar; + delete m_pclsCtrlPaintPanel; +} + +/*************************************************************************/ +/** Function Name: _setStatusText **/ +/** Purpose: Set frame status bar text. **/ +/** Params: **/ +/** @ strString[in]: Set text. **/ +/** Return: None. **/ +/** Notice: None. **/ +/*************************************************************************/ +void LCDFrame::_setStatusText(const wxString& strString) +{ + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + m_pclsCtrlStatusBar->SetStatusText(strString, 0); +} + +/*************************************************************************/ +/** Function Name: _createToolbar **/ +/** Purpose: Create main frame tool bar. **/ +/** Params: None. **/ +/** Return: None. **/ +/** Notice: None. **/ +/*************************************************************************/ +void LCDFrame::_createToolbar(void) +{ + /*----------------------------------*/ + /* Variable Declaration */ + /*----------------------------------*/ + wxToolBar* pclsNewToolBar; + + /*----------------------------------*/ + /* Initialize */ + /*----------------------------------*/ + pclsNewToolBar = NULL; + + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + // Create tools bar. + pclsNewToolBar = CreateToolBar(wxTB_HORIZONTAL, wxID_TOOLBAR); + if(NULL != pclsNewToolBar) + { + // Screen shot button. + pclsNewToolBar->AddTool(wxID_TOOLBAR_QUICKSHOTS, _TRANS_TEXT("Quick Shot"), + wxBitmap(_T("ID_TOOL_QUICKSHOTS"), wxBITMAP_TYPE_PNG_RESOURCE), + wxBitmap(_T("ID_TOOL_QUICKSHOTS"), wxBITMAP_TYPE_PNG_RESOURCE), + wxITEM_NORMAL, + _TRANS_TEXT("Quick Shot"), + _TRANS_TEXT("Quick save screen shot to file.")); + + pclsNewToolBar->AddTool(wxID_TOOLBAR_COPY, _TRANS_TEXT("Copy Screen Image"), + wxBitmap(_T("ID_TOOL_COPYSCREENSHOT"), wxBITMAP_TYPE_PNG_RESOURCE), + wxBitmap(_T("ID_TOOL_COPYSCREENSHOT"), wxBITMAP_TYPE_PNG_RESOURCE), + wxITEM_NORMAL, + _TRANS_TEXT("Copy Screen Image"), + _TRANS_TEXT("Copy screenshots picture to clipboard.")); + + + pclsNewToolBar->AddTool(wxID_TOOLBAR_SCREENSHOTS_FOLDER, _TRANS_TEXT("Open Screenshots Folder"), + wxBitmap(_T("ID_TOOL_OPENSCREENSHOTSFOLDER"), wxBITMAP_TYPE_PNG_RESOURCE), + wxBitmap(_T("ID_TOOL_OPENSCREENSHOTSFOLDER"), wxBITMAP_TYPE_PNG_RESOURCE), + wxITEM_NORMAL, + _TRANS_TEXT("Open Screenshots Folder"), + _TRANS_TEXT("Open screenshots saved folder.")); + // Add a separator. + pclsNewToolBar->AddSeparator(); + + pclsNewToolBar->AddTool(wxID_TOOLBAR_EXIT, _TRANS_TEXT("Exit"), + wxBitmap(_T("ID_TOOL_EXIT"), wxBITMAP_TYPE_PNG_RESOURCE), + wxBitmap(_T("ID_TOOL_EXIT"), wxBITMAP_TYPE_PNG_RESOURCE), + wxITEM_NORMAL, + _TRANS_TEXT("Exit(Alt+F4)"), + _TRANS_TEXT("Exit.")); + + pclsNewToolBar->Realize(); + } + m_pclsCtrlToolBar = pclsNewToolBar; +} + +/*************************************************************************/ +/** Function Name: _initializeTimer **/ +/** Purpose: Create and initialize interrupt timer and RTC timer.**/ +/** Params: None. **/ +/** Return: None. **/ +/** Notice: None. **/ +/*************************************************************************/ +void LCDFrame::_initializeTimer(void) +{ + m_pclsMilliSecondTimer = new wxTimer(this, WXID_MILLISECOND_TIMER); + m_pclsRTCTimer = new wxTimer(this, WXID_RTC_TIMER); +} + +/*************************************************************************/ +/** Function Name: _startTimer **/ +/** Purpose: Create and initialize interrupt timer and RTC timer.**/ +/** Params: None. **/ +/** Return: None. **/ +/** Notice: None. **/ +/*************************************************************************/ +void LCDFrame::_startTimer(int32_t iMilliSecondTimerInterval) +{ + if(NULL != m_pclsMilliSecondTimer) + { + if(0 < iMilliSecondTimerInterval) + { + m_pclsMilliSecondTimer->Start(iMilliSecondTimerInterval); + } + } + + if(NULL != m_pclsRTCTimer) + { + m_pclsRTCTimer->Start(1000); + } +} + + +/*************************************************************************/ +/** Function Name: OnKeyDown **/ +/** Purpose: Key press event process. **/ +/** Params: **/ +/** @ clsEventObject[in]: Event data object. **/ +/** Return: None. **/ +/** Notice: None. **/ +/*************************************************************************/ +void LCDFrame::OnKeyDown(wxKeyEvent& clsEventObject) +{ + /*----------------------------------*/ + /* Variable Declaration */ + /*----------------------------------*/ + int iKeyCode; + + /*----------------------------------*/ + /* Initialize */ + /*----------------------------------*/ + iKeyCode = clsEventObject.GetKeyCode(); + + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + //wxMessageBox(wxString::Format("Key value: %d.", iKeyCode)); + UAIF_OnKeyPress(clsEventObject.ShiftDown(), clsEventObject.ControlDown(), clsEventObject.AltDown(), iKeyCode); +} + +/*************************************************************************/ +/** Function Name: Copy **/ +/** Purpose: Copy screen image to clipboard. **/ +/** Params: None. **/ +/** Return: None. **/ +/** Notice: None. **/ +/*************************************************************************/ +void LCDFrame::Copy(void) +{ + /*----------------------------------*/ + /* Variable Declaration */ + /*----------------------------------*/ + bool bResult; + + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + bResult = m_pclsCtrlPaintPanel->CopyScreenImageToClipBoard(); + if(true == bResult) + { + _setStatusText(_T("Copied to clipboard.")); + } + else + { + _setStatusText(_T("Copy failed.")); + } + +} + +/*************************************************************************/ +/** Function Name: Screenshots **/ +/** Purpose: Save now time screen image to a bit map file. **/ +/** Params: None. **/ +/** Return: None. **/ +/** Notice: None. **/ +/*************************************************************************/ +void LCDFrame::Screenshots(void) +{ + /*----------------------------------*/ + /* Variable Declaration */ + /*----------------------------------*/ + uint32_t uiFileCounter; + + /*----------------------------------*/ + /* Initialize */ + /*----------------------------------*/ + uiFileCounter = 1; + + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + // Check image file existed and + while(true == wxFileExists(SCREENSHOTS_FILE_FULLNAME(uiFileCounter))) + { + uiFileCounter++; + } + // Try to save image file. + if(true == m_pclsCtrlPaintPanel->SaveScreenImageToFile(SCREENSHOTS_FILE_FULLNAME(uiFileCounter))) + { + _setStatusText(wxString::Format("Save screen to %s.", SCREENSHOTS_FILE_NAME(uiFileCounter))); + } + else + { + _setStatusText(_T("Save screen failed.")); + } +} + +/*************************************************************************/ +/** Function Name: OnUpdateUI **/ +/** Purpose: Update UI event process. **/ +/** Params: **/ +/** @ clsEventObject[in]: Event data object. **/ +/** Return: None. **/ +/** Notice: This function process used initialize pixel panel **/ +/** display when UI is ready. **/ +/*************************************************************************/ +void LCDFrame::OnUpdateUI(wxUpdateUIEvent& clsEventObject) +{ + /*----------------------------------*/ + /* Variable Declaration */ + /*----------------------------------*/ + static bool bInitialized = false; + + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + if(false == bInitialized) + { + // Initialize display. + m_pclsCtrlPaintPanel->CleanScreen(); + _setStatusText(_T("Initialzied.")); + bInitialized = true; + _initializeTimer(); + _startTimer(1); + + UAIF_OnInitialize(); + m_pclsCtrlPaintPanel->RefreshDisplay(); + } + +} + +/*************************************************************************/ +/** Function Name: OnPaint **/ +/** Purpose: Paint or repaint UI event process. **/ +/** Params: **/ +/** @ clsEventObject[in]: Event data object. **/ +/** Return: None. **/ +/** Notice: None. **/ +/*************************************************************************/ +void LCDFrame::OnPaint(wxPaintEvent &clsEventObject) +{ + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + m_pclsCtrlPaintPanel->RefreshDisplay(); +} + +/*************************************************************************/ +/** Function Name: OpenScreenshotsFolder **/ +/** Purpose: Open screen shots image file folder. **/ +/** Params: None. **/ +/** Return: None. **/ +/** Notice: None. **/ +/*************************************************************************/ +void LCDFrame::OpenScreenshotsFolder(void) +{ + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + wxExecute(wxString::Format(_T("explorer %s\\%s"), wxGetCwd(), _T(SCREENSHOTS_FOLDER_T))); +} + +/*************************************************************************/ +/** Function Name: OnClose **/ +/** Purpose: Called when frame close and object destroyed. **/ +/** Params: None. **/ +/** Return: None. **/ +/** Notice: None. **/ +/*************************************************************************/ +void LCDFrame::OnClose(void) +{ + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + if(NULL != m_pclsMilliSecondTimer) + { + m_pclsMilliSecondTimer->Stop(); + delete m_pclsMilliSecondTimer; + } + if(NULL != m_pclsRTCTimer) + { + m_pclsRTCTimer->Stop(); + delete m_pclsRTCTimer; + } + + Destroy(); +} + +/*************************************************************************/ +/** Function Name: RefreshLCD **/ +/** Purpose: Refresh screen display by pixel color data. **/ +/** Params: None. **/ +/** Return: None. **/ +/** Notice: None. **/ +/*************************************************************************/ +void LCDFrame::RefreshLCD(void) +{ + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + m_pclsCtrlPaintPanel->RefreshDisplay(); +} + +/*************************************************************************/ +/** Function Name: ClearLCD **/ +/** Purpose: Clear screen display. **/ +/** Params: None. **/ +/** Return: None. **/ +/** Notice: None. **/ +/*************************************************************************/ +void LCDFrame::ClearLCD(void) +{ + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + m_pclsCtrlPaintPanel->CleanScreen(); +} + +/*************************************************************************/ +/** Function Name: Initialize **/ +/** Purpose: Create a main frame object. **/ +/** Params: **/ +/** @ pclsParent[in]: Parent object pointer. **/ +/** @ iID[in]: Frame object ID. **/ +/** @ strTitle[in]: Frame window title. **/ +/** Return: None. **/ +/** Notice: None. **/ +/*************************************************************************/ +void LCDFrame::Initialize(wxWindow* pclsParent, wxWindowID iID, const wxString& strTitle) +{ + m_pclsInstance = new LCDFrame(pclsParent, iID, strTitle); +} + +/*************************************************************************/ +/** Function Name: OnThreadEnd **/ +/** Purpose: Thread end event process. **/ +/** Params: None. **/ +/** Return: None. **/ +/** Notice: None. **/ +/*************************************************************************/ +LCDFrame* LCDFrame::GetInstance(void) +{ + return m_pclsInstance; +} + +/*************************************************************************/ +/** Function Name: SetLCDPixel **/ +/** Purpose: Set a pixel value. **/ +/** Params: **/ +/** @ uiPosX[in]: X-Coordinate of pixel. **/ +/** @ uiPosY[in]: Y-Coordinate of pixel. **/ +/** @ strTitle[in]: Pixel value, 0 for clear, 1 for set. **/ +/** Return: None. **/ +/** Notice: This function only change the pixel register, To **/ +/** update the screen display, need to call RefreshLCD **/ +/** function or Or use the DrawPixel function directly. **/ +/*************************************************************************/ +void LCDFrame::SetLCDPixel(uint32_t uiPosX, uint32_t uiPosY, uint32_t uiPixelValue) +{ + if(0 == uiPixelValue) + { + m_pclsCtrlPaintPanel->SetPixel(uiPosX, uiPosY, MonochromeDotLCD::LCD_PIXEL_COLOR_L); + } + else + { + m_pclsCtrlPaintPanel->SetPixel(uiPosX, uiPosY, MonochromeDotLCD::LCD_PIXEL_COLOR_H); + } +} + +uint32_t LCDFrame::GetLCDPixel(uint32_t uiPosX, uint32_t uiPosY) +{ + uint32_t uiPixelValue; + uiPixelValue = (uint32_t)m_pclsCtrlPaintPanel->GetPixel(uiPosX, uiPosY); + return uiPixelValue; +} + +void LCDFrame::OnTimerEvent(wxTimerEvent& event) +{ + UAIF_OnTimerEventProcess(); +} + +void LCDFrame::OnRTCUpdate(wxTimerEvent& event) +{ + wxDateTime clsTime = wxDateTime::Now(); + UAIF_OnRTCUpdateEventProcess( clsTime.GetYear(), + clsTime.GetMonth(), + clsTime.GetDay(), + clsTime.GetHour(), + clsTime.GetMinute(), + clsTime.GetSecond()); +} + diff --git a/Frame/src/LCD_OperationIF.c b/Frame/src/LCD_OperationIF.c deleted file mode 100644 index 63a7fb9..0000000 --- a/Frame/src/LCD_OperationIF.c +++ /dev/null @@ -1,109 +0,0 @@ -/*************************************************************************/ -/** Copyright. **/ -/** FileName: LCD_OperationIF.c **/ -/** Author: XuYulin **/ -/** Version: 1.0.0.0 **/ -/** Description: Virtual LCD operation interface. **/ -/** History: **/ -/** XuyYulin 2017/2/27 2.0.0.0 New create. **/ -/** XuYulin 2017/2/27 1.0 build this moudle **/ -/*************************************************************************/ - -//=======================================================================// -//= Include files. =// -//=======================================================================// -#include "LCD_OperationIF.h" -#include "VirtualDeviceInterface.h" -#include -#include -#include -#include - -//=======================================================================// -//= Static variable declaration. =// -//=======================================================================// -TPixArray g_LCDPixArray; -//=======================================================================// -//= Static function declaration. =// -//=======================================================================// -static void VTIF_UpdateChangedArea(uint16_t uiPosX, uint16_t uiPosY); - -//=======================================================================// -//= Function implementation. =// -//=======================================================================// -void VTIF_KeyBoardEvent(bool bShift, bool bCtrl, bool bAlt, uint16_t uiKeyCode) -{ - USR_ACT_OnKeyPress(bShift, bCtrl, bAlt, uiKeyCode); -} - -void VTIF_TimerEvent(void) -{ - USR_ACT_OnTimerEventProcess(); -} - -void VTIF_RTCUpdateEvent(uint16_t uiYear, uint16_t uiMonth, uint16_t uiDay, uint16_t uiHour, uint16_t uiMinute, uint16_t uiSecond) -{ - USR_ACT_OnRTCUpdateEventProcess(uiYear, uiMonth, uiDay, uiHour, uiMinute, uiSecond); -} - -void VTIF_LCDInitializeDisplay(void) -{ - USR_ACT_OnInitialize(); -} - -void VTIF_SetPoint(uint16_t uiPosX, uint16_t uiPosY, uint8_t uiPixValue) -{ - if((uiPosX < LCD_SIZE_WIDTH) && (uiPosY < LCD_SIZE_HEIGHT)) - { - VTIF_UpdateChangedArea(uiPosX, uiPosY); - g_LCDPixArray.Pixregister[uiPosX][uiPosY] = uiPixValue; - } -} - -uint8_t VTIF_GetPoint(uint16_t uiPosX, uint16_t uiPosY) -{ - return g_LCDPixArray.Pixregister[uiPosX][uiPosY]; -} - -void VTIF_ClearScreen(void) -{ - memset(&(g_LCDPixArray.Pixregister), 0x00, sizeof(g_LCDPixArray.Pixregister)); - g_LCDPixArray.InUpdating = true; - g_LCDPixArray.ChangedArea.StartPosX = 0; - g_LCDPixArray.ChangedArea.EndPosX = LCD_SIZE_WIDTH-1; - g_LCDPixArray.ChangedArea.StartPosY = 0; - g_LCDPixArray.ChangedArea.EndPosY = LCD_SIZE_HEIGHT-1; -} - -void VTIF_UpdateChangedArea(uint16_t uiPosX, uint16_t uiPosY) -{ - if(false == g_LCDPixArray.InUpdating) - { - g_LCDPixArray.ChangedArea.StartPosX = uiPosX; - g_LCDPixArray.ChangedArea.EndPosX = uiPosX; - g_LCDPixArray.ChangedArea.StartPosY = uiPosY; - g_LCDPixArray.ChangedArea.EndPosY = uiPosY; - g_LCDPixArray.InUpdating = true; - } - else - { - if(g_LCDPixArray.ChangedArea.StartPosX > uiPosX) - { - g_LCDPixArray.ChangedArea.StartPosX = uiPosX; - } - if(g_LCDPixArray.ChangedArea.EndPosX < uiPosX) - { - g_LCDPixArray.ChangedArea.EndPosX = uiPosX; - } - if(g_LCDPixArray.ChangedArea.StartPosY > uiPosY) - { - g_LCDPixArray.ChangedArea.StartPosY = uiPosY; - } - if(g_LCDPixArray.ChangedArea.EndPosY < uiPosY) - { - g_LCDPixArray.ChangedArea.EndPosY = uiPosY; - } - } -} - - diff --git a/Frame/src/LCD_VirtualDevice.cpp b/Frame/src/LCD_VirtualDevice.cpp deleted file mode 100644 index b03fe12..0000000 --- a/Frame/src/LCD_VirtualDevice.cpp +++ /dev/null @@ -1,322 +0,0 @@ -/////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version Jun 17 2015) -// http://www.wxformbuilder.org/ -// -// PLEASE DO "NOT" EDIT THIS FILE! -/////////////////////////////////////////////////////////////////////////// -#include "wx\wx.h" -#include "LCD_VirtualDevice.h" -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////// -BEGIN_EVENT_TABLE(LCD_DisplayPanel,wxPanel) - EVT_KEY_DOWN(LCD_DisplayPanel::wxEvent_OnKeyDown) - EVT_SET_FOCUS(LCD_DisplayPanel::wxEvent_OnSetFocus) -END_EVENT_TABLE() - -LCD_DisplayPanel::LCD_DisplayPanel( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style ): - wxPanel(parent, id, pos, size, style), - m_CDC(this), - m_PixRegister(&g_LCDPixArray) -{ - SetSizeHints(wxDefaultSize, wxDefaultSize); -} - -LCD_DisplayPanel::~LCD_DisplayPanel() -{ -} - -void LCD_DisplayPanel::wxEvent_OnKeyDown(wxKeyEvent& event) -{ - event.ResumePropagation(1); - event.Skip(); -} - -void LCD_DisplayPanel::wxEvent_OnSetFocus(wxFocusEvent& event) -{ - event.ResumePropagation(1); - event.Skip(); -} - -void LCD_DisplayPanel::Paint(void) -{ - wxBitmap CDCBufferImage(LCD_SIZE_WIDTH*LCD_PIXSIZE+2*LCD_SIZE_MARGIN, LCD_SIZE_HEIGHT*LCD_PIXSIZE+2*LCD_SIZE_MARGIN, wxBITMAP_SCREEN_DEPTH); - wxBufferedDC CDCBuffer(&m_CDC, CDCBufferImage); - - // Clear background - DC_SET_COLOR(FRM_COLOR_OBJ_BKG); - DC_PREPARE(CDCBuffer); - CDCBuffer.DrawRectangle(wxPoint(0, 0), wxSize(LCD_SIZE_WIDTH*LCD_PIXSIZE+2*LCD_SIZE_MARGIN, LCD_SIZE_HEIGHT*LCD_PIXSIZE+2*LCD_SIZE_MARGIN)); - // Draw LCD edge. - DC_SET_COLOR(LCD_COLOR_OBJ_EDGE); - DC_PREPARE(CDCBuffer); - CDCBuffer.DrawRectangle( wxPoint(LCD_SIZE_MARGIN-LCD_DISPLAY_EDGE, LCD_SIZE_MARGIN-LCD_DISPLAY_EDGE), - wxSize((LCD_SIZE_WIDTH * LCD_PIXSIZE)+(2*LCD_DISPLAY_EDGE), (LCD_SIZE_HEIGHT * LCD_PIXSIZE)+(2*LCD_DISPLAY_EDGE))); - - // Draw LCD display area - DC_SET_COLOR(LCD_COLOR_OBJ_BKG); - DC_PREPARE(CDCBuffer); - CDCBuffer.DrawRectangle(wxPoint(LCD_SIZE_MARGIN, LCD_SIZE_MARGIN), wxSize((LCD_SIZE_WIDTH * LCD_PIXSIZE), (LCD_SIZE_HEIGHT * LCD_PIXSIZE))); - - for(size_t i_W=0; i_WPixregister[i_W][i_H]) - { - DC_SET_COLOR(LCD_COLOR_OBJ_BKG); - } - else - { - DC_SET_COLOR(LCD_COLOR_OBJ_PIX); - } - - DC_PREPARE(CDCBuffer); - DC_DRAW_POINT(CDCBuffer, i_W, i_H); - } - } -} - -void LCD_DisplayPanel::PartialPaint(void) -{ - if(true == m_PixRegister->InUpdating) - { - wxBitmap CDCBufferImage(LCD_SIZE_WIDTH*LCD_PIXSIZE+2*LCD_SIZE_MARGIN, LCD_SIZE_HEIGHT*LCD_PIXSIZE+2*LCD_SIZE_MARGIN, wxBITMAP_SCREEN_DEPTH); - wxBufferedDC CDCBuffer(&m_CDC, CDCBufferImage); - - CDCBuffer.Blit( wxPoint(0,0), - wxSize(LCD_SIZE_WIDTH*LCD_PIXSIZE+2*LCD_SIZE_MARGIN, LCD_SIZE_HEIGHT*LCD_PIXSIZE+2*LCD_SIZE_MARGIN), - &m_CDC, - wxPoint(0, 0)); - - for(uint32_t i_W=m_PixRegister->ChangedArea.StartPosX; i_W<=m_PixRegister->ChangedArea.EndPosX; i_W++) - { - for(uint32_t i_H=m_PixRegister->ChangedArea.StartPosY; i_H<=m_PixRegister->ChangedArea.EndPosY; i_H++) - { - if(0 == m_PixRegister->Pixregister[i_W][i_H]) - { - DC_SET_COLOR(LCD_COLOR_OBJ_BKG); - } - else - { - DC_SET_COLOR(LCD_COLOR_OBJ_PIX); - } - DC_PREPARE(CDCBuffer); - DC_DRAW_POINT(CDCBuffer, i_W, i_H); - } - } - m_PixRegister->InUpdating = false; - m_PixRegister->ChangedArea.StartPosX = LCD_SIZE_WIDTH; - m_PixRegister->ChangedArea.StartPosY = LCD_SIZE_HEIGHT; - m_PixRegister->ChangedArea.EndPosX = 0; - m_PixRegister->ChangedArea.EndPosY = 0; - DC_RELEASE(CDCBuffer); - } -} - -bool LCD_DisplayPanel::SaveToFile(const wxString& CStrFilePath) -{ - // Create and initialize bitmap. - wxBitmap CBitMap(LCD_SIZE_WIDTH*LCD_PIXSIZE+(2*LCD_DISPLAY_EDGE)+2, LCD_SIZE_HEIGHT*LCD_PIXSIZE+(2*LCD_DISPLAY_EDGE)+2, wxBITMAP_SCREEN_DEPTH); - wxMemoryDC CMemoryDC(CBitMap); - CMemoryDC.Blit( wxPoint(0, 0), - wxSize(LCD_SIZE_WIDTH*LCD_PIXSIZE+(2*LCD_DISPLAY_EDGE)+2, LCD_SIZE_HEIGHT*LCD_PIXSIZE+(2*LCD_DISPLAY_EDGE)+2), - &m_CDC, - wxPoint(LCD_SIZE_MARGIN-(LCD_DISPLAY_EDGE+1), LCD_SIZE_MARGIN-(LCD_DISPLAY_EDGE+1))); - return CBitMap.SaveFile(CStrFilePath, wxBITMAP_TYPE_BMP); -} - -bool LCD_DisplayPanel::CopyToClipBoard(void) -{ - // Create and initialize bitmap. - wxBitmap CBitMap(LCD_SIZE_WIDTH*LCD_PIXSIZE+(2*LCD_DISPLAY_EDGE)+2, LCD_SIZE_HEIGHT*LCD_PIXSIZE+(2*LCD_DISPLAY_EDGE)+2, wxBITMAP_SCREEN_DEPTH); - wxMemoryDC CMemoryDC(CBitMap); - CMemoryDC.Blit( wxPoint(0, 0), - wxSize(LCD_SIZE_WIDTH*LCD_PIXSIZE+(2*LCD_DISPLAY_EDGE)+2, LCD_SIZE_HEIGHT*LCD_PIXSIZE+(2*LCD_DISPLAY_EDGE)+2), - &m_CDC, - wxPoint(LCD_SIZE_MARGIN-(LCD_DISPLAY_EDGE+1), LCD_SIZE_MARGIN-(LCD_DISPLAY_EDGE+1))); - - if(wxTheClipboard->Open()) - { - wxTheClipboard->SetData(new wxBitmapDataObject(CBitMap)); - wxTheClipboard->Close(); - return true; - } - else - { - return false; - } -} - - -/////////////////////////////////////////////////////////////////////////// -BEGIN_EVENT_TABLE(LCD_VirtualDevice,wxFrame) - EVT_UPDATE_UI(wxID_MAIN, LCD_VirtualDevice::wxEvent_OnUpdateUI) - EVT_SET_FOCUS(LCD_VirtualDevice::wxEvent_OnSetFocus) - EVT_CLOSE(LCD_VirtualDevice::wxEvent_OnClose) - EVT_SET_FOCUS(LCD_VirtualDevice::wxEvent_OnSetFocus) - EVT_KEY_DOWN(LCD_VirtualDevice::wxEvent_OnKeyDown) - EVT_PAINT(LCD_VirtualDevice::wxEvent_OnPaint) - EVT_TOOL(wxID_TOOLBAR_SCREENSHOTS, LCD_VirtualDevice::wxEvent_OnScreenshots) - EVT_TOOL(wxID_TOOLBAR_COPY, LCD_VirtualDevice::wxEvent_OnToolCopy) - EVT_TOOL(wxID_TOOLBAR_SCREENSHOTS_FOLDER, LCD_VirtualDevice::wxEvent_OnOpenScreenshotsFolder) - EVT_TOOL(wxID_TOOLBAR_EXIT, LCD_VirtualDevice::wxEvent_OnExit) - EVT_TIMER(WXID_TIMER , LCD_VirtualDevice::wxEvent_OnTimerEvent) - EVT_TIMER(WXID_RTCTIMER , LCD_VirtualDevice::wxEvent_OnRTCUpdate) -END_EVENT_TABLE() - -LCD_VirtualDevice::LCD_VirtualDevice(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style) : - wxFrame(parent, id, title, pos, size, style) -{ - SetSizeHints( wxDefaultSize, wxDefaultSize ); - //Layout(); - SetIcon(wxIcon(_T("ID_ICON_MAIN"), wxBITMAP_TYPE_ICO_RESOURCE)); - m_CtrlStatusBar = CreateStatusBar(1, wxST_SIZEGRIP, wxID_STATUSBAR); - m_CtrlToolBar = CreateToolBar(wxTB_HORIZONTAL, wxID_TOOLBAR); - m_CtrlToolButton_Screenshots = m_CtrlToolBar->AddTool( wxID_TOOLBAR_SCREENSHOTS, _T("Screenshots"), - wxBitmap(_T("ID_TOOL_SCREENSHOTS")), - wxBitmap(_T("ID_TOOL_SCREENSHOTS")), - wxITEM_NORMAL, - _T("Screenshots"), - _T("Save LCD screenshots to file.")); - m_CtrlToolButton_ScreenCpoy = m_CtrlToolBar->AddTool( wxID_TOOLBAR_COPY, _T("Copy LCD screen"), - wxBitmap(_T("ID_TOOL_COPY")), - wxBitmap(_T("ID_TOOL_COPY")), - wxITEM_NORMAL, - _T("Copy"), - _T("Copy current LCD Screen image to clipboard.")); - m_CtrlToolButton_OpenFolder = m_CtrlToolBar->AddTool( wxID_TOOLBAR_SCREENSHOTS_FOLDER, _T("Open folder"), - wxBitmap(_T("ID_TOOL_OPENFOLDER")), - wxBitmap(_T("ID_TOOL_OPENFOLDER")), - wxITEM_NORMAL, - _T("Open screenshots folder"), - _T("Open screenshots image saved folder.")); - m_CtrlToolBar->AddSeparator(); - m_CtrlToolButton_Exit = m_CtrlToolBar->AddTool( wxID_TOOLBAR_EXIT, _T("Exit"), - wxBitmap(_T("ID_TOOL_EXIT")), - wxBitmap(_T("ID_TOOL_EXIT")), - wxITEM_NORMAL, - _T("Exit"), - _T("Exit.")); - m_CtrlToolBar->Realize(); - SetClientSize(LCD_SIZE_WIDTH*LCD_PIXSIZE+2*LCD_SIZE_MARGIN, LCD_SIZE_HEIGHT*LCD_PIXSIZE+2*LCD_SIZE_MARGIN); - m_CtrlPaintPanel = new LCD_DisplayPanel(this, wxID_PANEL, wxPoint(0, 0), wxSize(LCD_SIZE_WIDTH*LCD_PIXSIZE+2*LCD_SIZE_MARGIN, LCD_SIZE_HEIGHT*LCD_PIXSIZE+2*LCD_SIZE_MARGIN)); - m_CtrlPaintPanel->SetBackgroundColour(FRM_COLOR_OBJ_BKG); - Centre( wxBOTH ); - - if(false == wxDirExists(SCREENSHOTS_FOLDER)) - { - wxMkdir(SCREENSHOTS_FOLDER); - } - UpdateWindow(GetHandle()); - - // Register timer. - m_pclsTimer = new wxTimer(this, WXID_TIMER); - m_pclsRTCTimer = new wxTimer(this, WXID_RTCTIMER); -} - -LCD_VirtualDevice::~LCD_VirtualDevice() -{ - delete m_CtrlStatusBar; - delete m_CtrlToolBar; - if(NULL != m_pclsTimer) - { - m_pclsTimer->Stop(); - delete m_pclsTimer; - } - if(NULL != m_pclsRTCTimer) - { - m_pclsRTCTimer->Stop(); - delete m_pclsRTCTimer; - } -} - -void LCD_VirtualDevice::SetStatusText(const wxString& cString) -{ - m_CtrlStatusBar->SetStatusText(cString, 0); -} - -void LCD_VirtualDevice::OnKeyDown(wxKeyEvent& event) -{ - uint16_t uiKeyCode; - uiKeyCode = (uint16_t)event.GetKeyCode(); - - VTIF_KeyBoardEvent(event.ShiftDown(), event.ControlDown(), event.AltDown(), uiKeyCode); - m_CtrlPaintPanel->PartialPaint(); -} - -void LCD_VirtualDevice::Copy(void) -{ - bool bResult = m_CtrlPaintPanel->CopyToClipBoard(); - if(true == bResult) - { - SetStatusText(_T("Copied to clipboard.")); - } - else - { - SetStatusText(_T("Copy failed.")); - } -} - -void LCD_VirtualDevice::Screenshots(void) -{ - uint32_t uiFileCounter = 1; - while(true == wxFileExists(SCREENSHOTS_FILE_FULLNAME(uiFileCounter))) - { - uiFileCounter++; - } - if(true == m_CtrlPaintPanel->SaveToFile(SCREENSHOTS_FILE_FULLNAME(uiFileCounter))) - { - SetStatusText(wxString::Format("Save screen to %s.", SCREENSHOTS_FILE_NAME(uiFileCounter))); - } - else - { - SetStatusText(_T("Save screen failed.")); - } -} - -void LCD_VirtualDevice::OnUpdateUI(wxUpdateUIEvent& event) -{ - static bool bInitialized = false; - - if(false == bInitialized) - { - VTIF_LCDInitializeDisplay(); - bInitialized = true; - m_CtrlPaintPanel->Paint(); - SetStatusText(_T("Initialzied.")); - - // Start timer - m_pclsTimer->Start(1); - m_pclsRTCTimer->Start(1000); - } -} - -void LCD_VirtualDevice::OnPaint(wxPaintEvent &event) -{ - m_CtrlPaintPanel->Paint(); -} - -void LCD_VirtualDevice::OpenScreenshotsFolder(void) -{ - wxExecute(wxString::Format(_T("explorer %s\\%s"), wxGetCwd(), _T(SCREENSHOTS_FOLDER_T))); -} - -void LCD_VirtualDevice::OnTimer(wxTimerEvent& event) -{ - VTIF_TimerEvent(); - m_CtrlPaintPanel->PartialPaint(); -} -void LCD_VirtualDevice::OnRTCUpdate(wxTimerEvent& event) -{ - wxDateTime clsTime = wxDateTime::Now(); - VTIF_RTCUpdateEvent( clsTime.GetYear(), - clsTime.GetMonth(), - clsTime.GetDay(), - clsTime.GetHour(), - clsTime.GetMinute(), - clsTime.GetSecond()); - //m_CtrlPaintPanel->PartialPaint(); -} diff --git a/Frame/src/MonochromeDotLCD.cpp b/Frame/src/MonochromeDotLCD.cpp new file mode 100644 index 0000000..df46574 --- /dev/null +++ b/Frame/src/MonochromeDotLCD.cpp @@ -0,0 +1,127 @@ +/*************************************************************************/ +/** Copyright. **/ +/** FileName: LCDScreenPanel.cpp **/ +/** Author: Polarix **/ +/** Version: 1.7.0.0 **/ +/** Description: Main frame class define. **/ +/*************************************************************************/ +//=======================================================================// +//= Include files. =// +//=======================================================================// +#include "MonochromeDotLCD.h" + +//=======================================================================// +//= Event table. =// +//=======================================================================// +BEGIN_EVENT_TABLE(MonochromeDotLCD,wxDotLCD) + EVT_SET_FOCUS (MonochromeDotLCD::wxEvent_OnSetFocus) +END_EVENT_TABLE() + +//=======================================================================// +//= Function define. =// +//=======================================================================// +MonochromeDotLCD::MonochromeDotLCD(wxWindow *parent, wxWindowID winid, const wxPoint& pos, const wxSize& size, long style, const wxString& name): +wxDotLCD(parent, winid, pos, size, style, name) +{ + m_pclsPanelColor = new wxColor(0x00, 0x00, 0x00, 0x00); + m_pclsPixelColor = new wxColor(0x00, 0x00, 0x00, 0x00); +} + +MonochromeDotLCD::~MonochromeDotLCD(void) +{ + delete m_pclsPanelColor; + delete m_pclsPixelColor; +} + +void MonochromeDotLCD::SetParameter(PixelPanelParameter* pstPanelParameter) +{ + if(NULL != pstPanelParameter) + { + wxDotLCD::SetDisplaySizes( pstPanelParameter->EdgeWidth, + pstPanelParameter->HorizontalPixelNumber, + pstPanelParameter->VerticalPixelNumber, + pstPanelParameter->PixelSize, + pstPanelParameter->EnableGrid); + m_uiColumnCount = pstPanelParameter->HorizontalPixelNumber; + m_uiPageCount = pstPanelParameter->VerticalPixelNumber/8; + + m_pclsPanelColor->SetRGBA(pstPanelParameter->PanelColor.RGBA); + m_pclsPixelColor->SetRGBA(pstPanelParameter->PixelColor.RGBA); + wxDotLCD::SetDisplayColors( wxColor(pstPanelParameter->EdgeColor.RGBA), + wxColor(pstPanelParameter->PanelColor.RGBA), + wxColor(pstPanelParameter->GridColor.RGBA)); + } + CleanScreen(); +} + +void MonochromeDotLCD::SetPixel(uint32_t uiPosX, uint32_t uiPosY, LCD_PIXEL_COLOR_T ePixelValue) +{ + if(LCD_PIXEL_COLOR_L == ePixelValue) + { + wxDotLCD::SetPixelColor(uiPosX, uiPosY, *m_pclsPanelColor); + } + else + { + wxDotLCD::SetPixelColor(uiPosX, uiPosY, *m_pclsPixelColor); + } +} + +MonochromeDotLCD::LCD_PIXEL_COLOR_T MonochromeDotLCD::GetPixel(uint32_t uiPosX, uint32_t uiPosY) +{ + /*----------------------------------*/ + /* Variable Declaration */ + /*----------------------------------*/ + MonochromeDotLCD::LCD_PIXEL_COLOR_T eReturn; + uint32_t uiPixelColor; + + /*----------------------------------*/ + /* Initialize */ + /*----------------------------------*/ + uiPixelColor = GetPixelColor(uiPosX, uiPosY); + + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + if(uiPixelColor == m_pclsPixelColor->GetRGBA()) + { + eReturn = MonochromeDotLCD::LCD_PIXEL_COLOR_H; + } + else + { + eReturn = MonochromeDotLCD::LCD_PIXEL_COLOR_L; + } + + return eReturn; +} + +void MonochromeDotLCD::DrawPixel(uint32_t uiPosX, uint32_t uiPosY, LCD_PIXEL_COLOR_T ePixelValue) +{ + if(LCD_PIXEL_COLOR_L == ePixelValue) + { + wxDotLCD::DrawPixel(uiPosX, uiPosY, *m_pclsPanelColor); + } + else + { + wxDotLCD::DrawPixel(uiPosX, uiPosY, *m_pclsPixelColor); + } +} + +void MonochromeDotLCD::OnSetFocus(wxFocusEvent& event) +{ + event.ResumePropagation(1); + event.Skip(); +} + +void MonochromeDotLCD::CleanScreen(void) +{ + uint32_t uiHorizontalPixelNumber, uiVerticalPixelNumber; + + GetDisplaySize(NULL, &uiHorizontalPixelNumber, &uiVerticalPixelNumber, NULL, NULL); + for(uint32_t i_V=0; i_VEdgeWidth, - pstPanelParameter->HorizontalPixelNumber, - pstPanelParameter->VerticalPixelNumber, - pstPanelParameter->PixelSize, - pstPanelParameter->EnableGrid); - m_uiColumnCount = pstPanelParameter->HorizontalPixelNumber; - m_uiPageCount = pstPanelParameter->VerticalPixelNumber/8; - - m_pclsPanelColor->SetRGBA(pstPanelParameter->PanelColor.RGBA); - m_pclsPixelColor->SetRGBA(pstPanelParameter->PixelColor.RGBA); - wxPixelPanel::SetDisplayColors( wxColor(pstPanelParameter->EdgeColor.RGBA), - wxColor(pstPanelParameter->PanelColor.RGBA), - wxColor(pstPanelParameter->GridColor.RGBA)); - } - CleanPanel(); -} - - -void LCD_ScreenPanel::SetPosition(uint32_t uiColumn, uint32_t uiPage) -{ - SetColumn(uiColumn); - SetPage(uiPage); -} - -void LCD_ScreenPanel::SetData(uint8_t uiData) -{ - for(uint32_t i=0; i<8; i++) - { - wxPixelPanel::SetPixel(m_uiPosColumn, m_uiPosPage*8+i, (0<(uiData & 0x01)?(*m_pclsPixelColor):(*m_pclsPanelColor))); - uiData = uiData >> 1; - } - m_uiPosColumn++; - m_uiPosColumn = m_uiPosColumn%m_uiColumnCount; -} - -uint8_t LCD_ScreenPanel::GetData(void) -{ - uint8_t uiReadByte = 0x00; - - for(uint32_t i=0; i<8; i++) - { - uiReadByte = uiReadByte >> 1; - if(m_pclsPixelColor->GetRGBA() == wxPixelPanel::GetPixel(m_uiPosColumn, m_uiPosPage*8+i)) - { - uiReadByte = uiReadByte | 0x80; - } - } - m_uiPosColumn++; - m_uiPosColumn = m_uiPosColumn%m_uiColumnCount; - return uiReadByte; -} - -void LCD_ScreenPanel::SetColumn(uint32_t uiColumn) -{ - m_uiPosColumn = uiColumn; - m_uiPosColumn = m_uiPosColumn%m_uiColumnCount; -} - -void LCD_ScreenPanel::SetPage(uint32_t uiPage) -{ - m_uiPosPage = uiPage; - m_uiPosPage = m_uiPosPage%m_uiPageCount; -} - - -void LCD_ScreenPanel::OnMouseClick(wxMouseEvent& event) -{ - uint32_t uiEdgeWidth, uiHorizontalPixelNumber, uiVerticalPixelNumber, uiPixelSize; - bool bGridVisible; - long uiPixelPosX, uiPixelPosY; - wxPoint clsMousePositoin = event.GetPosition(); - if(true == event.LeftDown()) - { - GetDisplaySize(&uiEdgeWidth, &uiHorizontalPixelNumber, &uiVerticalPixelNumber, &uiPixelSize,&bGridVisible); - - uiPixelPosX = (clsMousePositoin.x - uiEdgeWidth)/GetPixelSize(); - uiPixelPosY = (clsMousePositoin.y - uiEdgeWidth)/GetPixelSize(); - - - if( (uiPixelPosX >= 0) && (uiPixelPosY >= 0) && - (uiPixelPosX < (long)uiHorizontalPixelNumber) && (uiPixelPosY < (long)uiVerticalPixelNumber)) - { - if(m_pclsPanelColor->GetRGBA() == GetPixel(uiPixelPosX, uiPixelPosY)) - { - DrawPixel(uiPixelPosX, uiPixelPosY, *m_pclsPixelColor); - } - else - { - DrawPixel(uiPixelPosX, uiPixelPosY, *m_pclsPanelColor); - } - } - } -} diff --git a/GUI/inc/SGUI_Common.h b/GUI/inc/SGUI_Common.h index c98674c..b5f508e 100644 --- a/GUI/inc/SGUI_Common.h +++ b/GUI/inc/SGUI_Common.h @@ -2,11 +2,14 @@ #define __INCLUDE_GUI_COMMON_H__ //=======================================================================// //= Include files. =// -//=======================================================================// +//=======================================================================// +#include + #include "SGUI_Config.h" #include "SGUI_Typedef.h" #if (_SIMPLE_GUI_VIRTUAL_ENVIRONMENT_SIMULATOR_ > 0) -#include "LCD_OperationIF.h" +//#include "LCD_OperationIF.h" +#include "VirtualDeviceInterface.h" #else // Insert platform driver head file here. #endif //_SIMPLE_GUI_ENABLE_SIMULATOR_ diff --git a/GUI/src/SGUI_Basic.c b/GUI/src/SGUI_Basic.c index 87f01e3..cc75be4 100644 --- a/GUI/src/SGUI_Basic.c +++ b/GUI/src/SGUI_Basic.c @@ -9,7 +9,12 @@ //=======================================================================// //= Include files. =// //=======================================================================// -#include "SGUI_Basic.h" +#include "SGUI_Basic.h" +#if (_SIMPLE_GUI_VIRTUAL_ENVIRONMENT_SIMULATOR_ > 0) +#include "VirtualDeviceInterface.h" +#else +// Include your device driver interface here. +#endif //_SIMPLE_GUI_ENABLE_SIMULATOR_ //=======================================================================// //= Static variable declaration. =// @@ -140,7 +145,7 @@ SGUI_CBYTE SGUI_BASIC_FONT_H8[] = { }; //=======================================================================// -//= Function implementation. =// +//= Function define. =// //=======================================================================// /*************************************************************************/ /** Function Name: SGUI_Basic_DrawPoint **/ @@ -163,7 +168,7 @@ void SGUI_Basic_DrawPoint(SGUI_UINT uiCoordinateX, SGUI_UINT uiCoordinateY, SGUI if(SGUI_COLOR_FRGCLR == eColor) { #if (_SIMPLE_GUI_VIRTUAL_ENVIRONMENT_SIMULATOR_ > 0) - VTIF_SetPoint(uiCoordinateX, uiCoordinateY, 1); + VDIF_SetPixel(uiCoordinateX, uiCoordinateY, 1); #else // Call draw pix interface here. #endif //_SIMPLE_GUI_ENABLE_SIMULATOR_ @@ -171,7 +176,7 @@ void SGUI_Basic_DrawPoint(SGUI_UINT uiCoordinateX, SGUI_UINT uiCoordinateY, SGUI else if(SGUI_COLOR_BKGCLR == eColor) { #if (_SIMPLE_GUI_VIRTUAL_ENVIRONMENT_SIMULATOR_ > 0) - VTIF_SetPoint(uiCoordinateX, uiCoordinateY, 0); + VDIF_SetPixel(uiCoordinateX, uiCoordinateY, 0); #else // Call draw pix interface here. #endif //_SIMPLE_GUI_ENABLE_SIMULATOR_ @@ -208,7 +213,7 @@ SGUI_COLOR SGUI_Basic_GetPoint(SGUI_UINT uiCoordinateX, SGUI_UINT uiCoordinateY) if((uiCoordinateX < LCD_SIZE_WIDTH) && (uiCoordinateY < LCD_SIZE_HEIGHT)) { #if (_SIMPLE_GUI_VIRTUAL_ENVIRONMENT_SIMULATOR_ > 0) - uiPixValue = VTIF_GetPoint(uiCoordinateX, uiCoordinateY); + uiPixValue = VDIF_GetPixel(uiCoordinateX, uiCoordinateY); #else // Call read pix interface here. #endif //_SIMPLE_GUI_ENABLE_SIMULATOR_ @@ -238,7 +243,7 @@ void SGUI_Basic_ClearScreen(void) /* Process */ /*----------------------------------*/ #if (_SIMPLE_GUI_VIRTUAL_ENVIRONMENT_SIMULATOR_ > 0) - VTIF_ClearScreen(); + VDIF_ClearDisplay(); #else // Call clear screen function here; #endif //_SIMPLE_GUI_ENABLE_SIMULATOR_ diff --git a/GUI/src/SGUI_Common.c b/GUI/src/SGUI_Common.c index 3a7f7ad..8512509 100644 --- a/GUI/src/SGUI_Common.c +++ b/GUI/src/SGUI_Common.c @@ -42,7 +42,7 @@ static SGUI_CHAR g_arrcEncodeBuffer[_SIMPLE_GUI_ENCODE_BUFFER_SIZE]; #endif //=======================================================================// -//= Function implementation. =// +//= Function define. =// //=======================================================================// /*************************************************************************/ /** Function Name: SGUI_Common_IntegerToStringWithDecimalPoint **/ diff --git a/GUI/src/SGUI_Frame.c b/GUI/src/SGUI_Frame.c index 30ce930..849a895 100644 --- a/GUI/src/SGUI_Frame.c +++ b/GUI/src/SGUI_Frame.c @@ -12,7 +12,7 @@ #include "SGUI_Frame.h" //=======================================================================// -//= Function implementation. =// +//= Function define. =// //=======================================================================// /*************************************************************************/ /** Function Name: SGUI_Frame_DrawFullScreenFrame **/ diff --git a/GUI/src/SGUI_List.c b/GUI/src/SGUI_List.c index 3a57195..8c594b3 100644 --- a/GUI/src/SGUI_List.c +++ b/GUI/src/SGUI_List.c @@ -46,7 +46,7 @@ static inline void SGUI_LIST_RefreshListItems(SGUI_LIST_STRUCT* pstList); static inline void SGUI_LIST_DrawItem(SGUI_LIST_STRUCT* pstList, SGUI_SIZE uiIndex); //=======================================================================// -//= Function implementation. =// +//= Function define. =// //=======================================================================// /*************************************************************************/ /** Function Name: SGUI_LIST_InitializeListData **/ diff --git a/GUI/src/SGUI_Notice.c b/GUI/src/SGUI_Notice.c index 1d492b1..82ce18f 100644 --- a/GUI/src/SGUI_Notice.c +++ b/GUI/src/SGUI_Notice.c @@ -99,7 +99,7 @@ const uint8_t* g_arrNoticeIcon[] = { }; //=======================================================================// -//= Function implementation. =// +//= Function define. =// //=======================================================================// /*************************************************************************/ /** Function Name: SGUI_Notice_RefreshNotice **/ diff --git a/GUI/src/SGUI_ProcessBar.c b/GUI/src/SGUI_ProcessBar.c index 553651e..167c5ee 100644 --- a/GUI/src/SGUI_ProcessBar.c +++ b/GUI/src/SGUI_ProcessBar.c @@ -13,7 +13,7 @@ #include "SGUI_ProcessBar.h" //=======================================================================// -//= Function implementation. =// +//= Function define. =// //=======================================================================// /*************************************************************************/ /** Function Name: SGUI_RefreshProcessBar **/ diff --git a/GUI/src/SGUI_RealtimeGraph.c b/GUI/src/SGUI_RealtimeGraph.c index 54f4167..33ab155 100644 --- a/GUI/src/SGUI_RealtimeGraph.c +++ b/GUI/src/SGUI_RealtimeGraph.c @@ -26,7 +26,7 @@ static SGUI_INT SGUI_RealtimeGraph_GetValuePointYCoordinate(SGUI_RTGRAPH* pstRTGraph, SGUI_INT iValue); //=======================================================================// -//= Function implementation. =// +//= Function define. =// //=======================================================================// /*************************************************************************/ /** Function Name: SGUI_RealtimeGraph_Initialize **/ diff --git a/GUI/src/SGUI_ScrollBar.c b/GUI/src/SGUI_ScrollBar.c index 4567983..bb6952d 100644 --- a/GUI/src/SGUI_ScrollBar.c +++ b/GUI/src/SGUI_ScrollBar.c @@ -13,7 +13,7 @@ #include "SGUI_ScrollBar.h" //=======================================================================// -//= Function implementation. =// +//= Function define. =// //=======================================================================// /*************************************************************************/ /** Function Name: SGUI_ScrollBar_RefreshScrollBar **/ diff --git a/GUI/src/SGUI_Text.c b/GUI/src/SGUI_Text.c index 0aef061..a9eb927 100644 --- a/GUI/src/SGUI_Text.c +++ b/GUI/src/SGUI_Text.c @@ -35,7 +35,7 @@ static void SGUI_Text_ReadFontData(SGUI_FONT_SIZE eFontSize, SGU static SGUI_SIZE SGUI_Text_GetCharacterTableIndex(SGUI_UINT16 uiCharacterCode); //=======================================================================// -//= Function implementation. =// +//= Function define. =// //=======================================================================// /*************************************************************************/ diff --git a/GUI/src/SGUI_VariableBox.c b/GUI/src/SGUI_VariableBox.c index 0fba29c..9721177 100644 --- a/GUI/src/SGUI_VariableBox.c +++ b/GUI/src/SGUI_VariableBox.c @@ -25,7 +25,7 @@ static char arrTextBuffer[VARBOX_TEXT_BUFFER_SIZE] = {0x00}; //Used when conv void SGUI_TextVariableBox_UpdateCharacter(SGUI_TEXT_VARBOX_STRUCT* pstTextValue, char cNewCharacters, SGUI_DRAW_MODE eMode); //=======================================================================// -//= Function implementation. =// +//= Function define. =// //=======================================================================// /*************************************************************************/ /** Function Name: GUI_RefreshVariableBox **/ diff --git a/HMI/inc/HMI_Engine.h b/HMI/inc/HMI_Engine.h index a4a1816..aef5a69 100644 --- a/HMI/inc/HMI_Engine.h +++ b/HMI/inc/HMI_Engine.h @@ -1,5 +1,5 @@ -#ifndef HMI_PROCESS_H_INCLUDED -#define HMI_PROCESS_H_INCLUDED +#ifndef __INCLUDE_HMI_ENGINE_H__ +#define __INCLUDE_HMI_ENGINE_H__ //=======================================================================// //= Include files. =// //=======================================================================// @@ -128,4 +128,4 @@ HMI_ENGINE_RESULT HMI_ProcessEvent(HMI_EVENT_TYPE eEventType, const HMI_EVENT* HMI_ENGINE_RESULT HMI_PostProcess(SGUI_INT iActionResult); HMI_ENGINE_RESULT HMI_Goto(SGUI_INT iDestScreenID, const void* pstParameters); HMI_ENGINE_RESULT HMI_GoBack(const void* pstParameters); -#endif // HMI_PROCESS_H_INCLUDED +#endif // __INCLUDE_HMI_ENGINE_H__ diff --git a/HMI/src/HMI_Engine.c b/HMI/src/HMI_Engine.c index 30cfbb3..c6c9ad6 100644 --- a/HMI/src/HMI_Engine.c +++ b/HMI/src/HMI_Engine.c @@ -23,7 +23,7 @@ static HMI_ENGINE_OBJECT* g_pstActivedEngineObject; static inline HMI_SCREEN_OBJECT* HMI_GetScreenObjectInEngine(HMI_ENGINE_OBJECT* pstHMIEngineObject, SGUI_INT iScreenID); //=======================================================================// -//= Function implementation. =// +//= Function define. =// //=======================================================================// /*****************************************************************************/ /** Function Name: HMI_PrepareEngine. **/ diff --git a/Interface/inc/UserActionInterface.h b/Interface/inc/UserActionInterface.h new file mode 100644 index 0000000..b1a44b7 --- /dev/null +++ b/Interface/inc/UserActionInterface.h @@ -0,0 +1,24 @@ +#ifndef __INCLUDE_USER_ACTION_INTERFACE__ +#define __INCLUDE_USER_ACTION_INTERFACE__ +//=======================================================================// +//= Include files. =// +//=======================================================================// +#include +#include + +//=======================================================================// +//= Public function declaration. =// +//=======================================================================// +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ +void UAIF_OnInitialize(void); +void UAIF_OnKeyPress(bool bShift, bool bCtrl, bool bAlt, uint16_t uiKeyCode); +void UAIF_OnTimerEventProcess(void); +void UAIF_OnRTCUpdateEventProcess(uint16_t uiYear, uint16_t uiMonth, uint16_t uiDay, uint16_t uiHour, uint16_t uiMinute, uint16_t uiSecond); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ +#endif // __INCLUDE_USER_ACTION_INTERFACE__ diff --git a/User/inc/VirtualDeviceInterface.h b/Interface/inc/VirtualDeviceInterface.h similarity index 61% rename from User/inc/VirtualDeviceInterface.h rename to Interface/inc/VirtualDeviceInterface.h index e2a9ac0..ff7b4fc 100644 --- a/User/inc/VirtualDeviceInterface.h +++ b/Interface/inc/VirtualDeviceInterface.h @@ -1,10 +1,10 @@ -#ifndef __INCLUDE_VIRTUAL_DEVICE_INTERFACE_H__ -#define __INCLUDE_VIRTUAL_DEVICE_INTERFACE_H__ -#include -#include -#include -#include - +#ifndef __INCLUDE_VIRTUAL_DEVICE_INTERFACE_H__ +#define __INCLUDE_VIRTUAL_DEVICE_INTERFACE_H__ +//=======================================================================// +//= Include files. =// +//=======================================================================// +#include + //=======================================================================// //= User definition. =// //=======================================================================// @@ -36,14 +36,40 @@ #define KEY_OPTION_ALT (0x0002) #define KEY_OPTION_SHIFT (0x0004) -#define KEY_PRESS_EVENT_VALUE_MAX (4) +#define KEY_PRESS_EVENT_VALUE_MAX (4) + +// Parameter +#define LCD_SIZE_WIDTH (128) +#define LCD_SIZE_HEIGHT (64) +#if LCD_SIZE_WIDTH < 16 +#error Define width of LCD size must greater then 16. +#endif +#if LCD_SIZE_HEIGHT < 16 +#error Define height of LCD size must greater then 16. +#endif + +//Common operation +//#define SET_BIT(PAGE, Bit) ((PAGE) = (PAGE) | (0x01 << (Bit))) +//#define CLR_BIT(PAGE, Bit) ((PAGE) = (PAGE) & (~(0x01 << (Bit)))) +#define GET_BIT(PAGE, Bit) ((((PAGE) & (0x01 << (Bit)))>0)?1:0) + //=======================================================================// //= Public function declaration. =// -//=======================================================================// -void USR_ACT_OnInitialize(void); -void USR_ACT_OnKeyPress(bool bShift, bool bCtrl, bool bAlt, uint16_t uiKeyCode); -void USR_ACT_OnTimerEventProcess(void); -void USR_ACT_OnRTCUpdateEventProcess(uint16_t uiYear, uint16_t uiMonth, uint16_t uiDay, uint16_t uiHour, uint16_t uiMinute, uint16_t uiSecond); - -#endif // __INCLUDE_VIRTUAL_DEVICE_INTERFACE_H__ +//=======================================================================// +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ +void VDIF_SetPixel(uint32_t uiPosX, uint32_t uiPosY, uint32_t uiPixelValue); +uint32_t VDIF_GetPixel(uint32_t uiPosX, uint32_t uiPosY); +void VDIF_RefreshDisplay(void); +void VDIF_ClearDisplay(void); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + + + +#endif // __INCLUDE_VIRTUAL_DEVICE_INTERFACE_H__ diff --git a/User/src/VirtualDeviceInterface.c b/Interface/src/UserActionInterface.cpp similarity index 50% rename from User/src/VirtualDeviceInterface.c rename to Interface/src/UserActionInterface.cpp index 72ae726..c90ee9d 100644 --- a/User/src/VirtualDeviceInterface.c +++ b/Interface/src/UserActionInterface.cpp @@ -1,155 +1,123 @@ /*************************************************************************/ /** Copyright. **/ -/** FileName: UserAction.c **/ -/** Author: XuYulin **/ +/** FileName: VirtualDeviceInterface.c **/ +/** Author: Polarix **/ /** Version: 1.0.0.0 **/ -/** Description: User operation interface. **/ -/** History: **/ -/** XuyYulin 2017/2/27 2.0.0.0 New create. **/ -/** XuYulin 2017/2/27 1.0 build this moudle **/ -/*************************************************************************/ - +/** Description: Virtual device operation interface. **/ +/*************************************************************************/ //=======================================================================// //= Include files. =// +//=======================================================================// +#include "UserActionInterface.h" +#include "VirtualDeviceInterface.h" +#include "DemoProc.h" +#include + //=======================================================================// -#include "VirtualDeviceInterface.h" -#include "LCD_OperationIF.h" -#include "DemoProc.h" -#include "HMI_Engine.h" -#include "SGUI_Common.h" - -//=======================================================================// -//= Function implementation. =// -//=======================================================================// -/*************************************************************************/ -/** Function Name: USR_ACT_OnInitialize **/ -/** Purpose: Process with application startup. **/ -/** Resources: None. **/ -/** Params: None. **/ -/** Return: None. **/ -/** Notice: None. **/ -/*************************************************************************/ -void USR_ACT_OnInitialize(void) -{ - /*----------------------------------*/ - /* Process */ - /*----------------------------------*/ - SimpleGUI_DemoProcess(); -} - -/*************************************************************************/ -/** Function Name: USR_ACT_OnKeyPress **/ -/** Purpose: Recive and process keyboard event. **/ -/** Resources: None. **/ -/** Params: **/ -/** @uiKeyCode: Key code. **/ -/** Return: None. **/ -/** Notice: None. **/ -/*************************************************************************/ -void USR_ACT_OnKeyPress(bool bShift, bool bCtrl, bool bAlt, uint16_t uiKeyCode) -{ - /*----------------------------------*/ - /* Variable Declaration */ - /*----------------------------------*/ - SGUI_UINT16 arruiPressedKey[HMI_EVENT_KEY_VALUE_LENGTH_MAX]; - HMI_EVENT stEvent; - - /*----------------------------------*/ - /* Initialize */ - /*----------------------------------*/ - arruiPressedKey[0] = KEY_OPTION_NONE; - stEvent.Action = HMI_ENGINE_ACTION_KEY_PRESS; - if(true == bShift) - { - arruiPressedKey[0] |= KEY_OPTION_SHIFT; - } - if(true == bCtrl) - { - arruiPressedKey[0] |= KEY_OPTION_CTRL; - } - if(true == bAlt) - { - arruiPressedKey[0] |= KEY_OPTION_ALT; - } - arruiPressedKey[1] = uiKeyCode; - stEvent.Data = (void*)arruiPressedKey; - /*----------------------------------*/ - /* Process */ - /*----------------------------------*/ - // Call demo process. - EventProcess(HMI_ENGINE_EVENT_ACTION, (void*)(&stEvent)); -} - -/*************************************************************************/ -/** Function Name: USR_ACT_OnTimerEventProcess **/ -/** Purpose: Timer event process. **/ -/** Resources: None. **/ -/** Params: None. **/ -/** Return: None. **/ -/** Notice: None. **/ -/*************************************************************************/ -void USR_ACT_OnTimerEventProcess(void) -{ - /*----------------------------------*/ - /* Variable Declaration */ - /*----------------------------------*/ - HMI_EVENT stEvent; - SGUI_INT iRandomNumber; - - /*----------------------------------*/ - /* Initialize */ - /*----------------------------------*/ - stEvent.Action = HMI_ENGINE_ACTION_ON_TIMER; - stEvent.Data = NULL; - - /*----------------------------------*/ - /* Process */ - /*----------------------------------*/ - iRandomNumber = rand(); - - iRandomNumber = (iRandomNumber % 200)-100; - stEvent.Data = (void*)(&iRandomNumber); - // Post timer event. - HMI_ProcessEvent(HMI_ENGINE_EVENT_ACTION, &stEvent); -} - -/*************************************************************************/ -/** Function Name: USR_ACT_OnRTCUpdateEventProcess **/ -/** Purpose: RTC timer event process. **/ -/** Resources: None. **/ -/** Params: None. **/ -/**@uiYear :Year. **/ -/**@uiMonth :Month. **/ -/**@uiDay :Day. **/ -/**@uiHour :Hour. **/ -/**@uiMinute :Minute. **/ -/**@uiSecond :Second. **/ -/** Return: None. **/ -/** Notice: None. **/ -/*************************************************************************/ -void USR_ACT_OnRTCUpdateEventProcess(uint16_t uiYear, uint16_t uiMonth, uint16_t uiDay, uint16_t uiHour, uint16_t uiMinute, uint16_t uiSecond) -{ - /*----------------------------------*/ - /* Variable Declaration */ - /*----------------------------------*/ - SGUI_TIME stRTCTime; - HMI_EVENT stEvent; - - /*----------------------------------*/ - /* Initialize */ - /*----------------------------------*/ - stRTCTime.Year = uiYear; - stRTCTime.Month = uiMonth; - stRTCTime.Day = uiDay; - stRTCTime.Hour = uiHour; - stRTCTime.Minute = uiMinute; - stRTCTime.Second = uiSecond; - stEvent.Action = HMI_ENGINE_ACTION_ON_TIMER_RTC; - stEvent.Data = (void*)(&stRTCTime); - - /*----------------------------------*/ - /* Process */ - /*----------------------------------*/ - // Post RTC update message to a screen. - HMI_ProcessEvent(HMI_ENGINE_EVENT_DATA, &stEvent); -} +//= Function define. =// +//=======================================================================// +void UAIF_OnInitialize(void) +{ + SimpleGUI_DemoProcessInitialize(); +} + +/*************************************************************************/ +/** Function Name: USR_ACT_OnKeyPress **/ +/** Purpose: Recive and process key press event. **/ +/** Resources: None. **/ +/** Params: **/ +/** @ bShift: Shift key is pressed. **/ +/** @ bCtrl: Ctrl key is pressed. **/ +/** @ bAlt: Alt key is pressed. **/ +/** @ uiKeyCode: Key code. **/ +/** Return: None. **/ +/** Notice: None. **/ +/*************************************************************************/ +void UAIF_OnKeyPress(bool bShift, bool bCtrl, bool bAlt, uint16_t uiKeyCode) +{ + /*----------------------------------*/ + /* Variable Declaration */ + /*----------------------------------*/ + SGUI_UINT16 arruiPressedKey[HMI_EVENT_KEY_VALUE_LENGTH_MAX]; + HMI_EVENT stEvent; + + /*----------------------------------*/ + /* Initialize */ + /*----------------------------------*/ + arruiPressedKey[0] = KEY_OPTION_NONE; + stEvent.Action = HMI_ENGINE_ACTION_KEY_PRESS; + if(true == bShift) + { + arruiPressedKey[0] |= KEY_OPTION_SHIFT; + } + if(true == bCtrl) + { + arruiPressedKey[0] |= KEY_OPTION_CTRL; + } + if(true == bAlt) + { + arruiPressedKey[0] |= KEY_OPTION_ALT; + } + arruiPressedKey[1] = uiKeyCode; + stEvent.Data = (SGUI_BYTE*)arruiPressedKey; + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + // Call demo process. + EventProcess(HMI_ENGINE_EVENT_ACTION, &stEvent); + VDIF_RefreshDisplay(); +} + +void UAIF_OnTimerEventProcess(void) +{ + /*----------------------------------*/ + /* Variable Declaration */ + /*----------------------------------*/ + HMI_EVENT stEvent; + SGUI_INT iRandomNumber; + + /*----------------------------------*/ + /* Initialize */ + /*----------------------------------*/ + stEvent.Action = HMI_ENGINE_ACTION_ON_TIMER; + stEvent.Data = NULL; + + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + iRandomNumber = rand(); + + iRandomNumber = (iRandomNumber % 200)-100; + stEvent.Data = (SGUI_BYTE*)(&iRandomNumber); + // Post timer event. + EventProcess(HMI_ENGINE_EVENT_ACTION, &stEvent); + VDIF_RefreshDisplay(); +} + +void UAIF_OnRTCUpdateEventProcess(uint16_t uiYear, uint16_t uiMonth, uint16_t uiDay, uint16_t uiHour, uint16_t uiMinute, uint16_t uiSecond) +{ + /*----------------------------------*/ + /* Variable Declaration */ + /*----------------------------------*/ + SGUI_TIME stRTCTime; + HMI_EVENT stEvent; + + /*----------------------------------*/ + /* Initialize */ + /*----------------------------------*/ + stRTCTime.Year = uiYear; + stRTCTime.Month = uiMonth; + stRTCTime.Day = uiDay; + stRTCTime.Hour = uiHour; + stRTCTime.Minute = uiMinute; + stRTCTime.Second = uiSecond; + stEvent.Action = HMI_ENGINE_ACTION_ON_TIMER_RTC; + stEvent.Data = (SGUI_BYTE*)(&stRTCTime); + + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + // Post RTC update message to a screen. + EventProcess(HMI_ENGINE_EVENT_DATA, &stEvent); + VDIF_RefreshDisplay(); +} diff --git a/Interface/src/VirtualDeviceInterface.cpp b/Interface/src/VirtualDeviceInterface.cpp new file mode 100644 index 0000000..e8f1ed3 --- /dev/null +++ b/Interface/src/VirtualDeviceInterface.cpp @@ -0,0 +1,141 @@ +/*************************************************************************/ +/** Copyright. **/ +/** FileName: VirtualDeviceInterface.c **/ +/** Author: Polarix **/ +/** Version: 1.0.0.0 **/ +/** Description: Virtual device operation interface. **/ +/*************************************************************************/ +//=======================================================================// +//= Include files. =// +//=======================================================================// +#include "VirtualDeviceInterface.h" +#include "LCDFrame.h" + +//=======================================================================// +//= Function define. =// +//=======================================================================// +/*************************************************************************/ +/** Function Name: VDIF_SetPixel **/ +/** Purpose: Set virtual device pixel register data. **/ +/** Params: **/ +/** @ uiPosX[in]: Pixel x-coordinate on display panel. **/ +/** @ uiPosY[in]: Pixel y-coordinate on display panel. **/ +/** @ uiPixelValue[out]: Pixel value, 0 for clear, 1 for set. **/ +/** Return: None. **/ +/** Notice: None. **/ +/*************************************************************************/ +void VDIF_SetPixel(uint32_t uiPosX, uint32_t uiPosY, uint32_t uiPixelValue) +{ + /*----------------------------------*/ + /* Variable Declaration */ + /*----------------------------------*/ + LCDFrame* pclsMainFrameObjectPtr; + + /*----------------------------------*/ + /* Initialize */ + /*----------------------------------*/ + pclsMainFrameObjectPtr = LCDFrame::GetInstance(); + + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + if(NULL != pclsMainFrameObjectPtr) + { + pclsMainFrameObjectPtr->SetLCDPixel(uiPosX, uiPosY, uiPixelValue); + } +} + +/*************************************************************************/ +/** Function Name: VDIF_GetPixel **/ +/** Purpose: Get a pixel value form virtual device register. **/ +/** Params: **/ +/** @ uiPosX[in]: Pixel x-coordinate on display panel. **/ +/** @ uiPosY[in]: Pixel y-coordinate on display panel. **/ +/** Return: Pixel state, 0 for cleared, 1 for set. **/ +/** Notice: None. **/ +/*************************************************************************/ +uint32_t VDIF_GetPixel(uint32_t uiPosX, uint32_t uiPosY) +{ + /*----------------------------------*/ + /* Variable Declaration */ + /*----------------------------------*/ + LCDFrame* pclsMainFrameObjectPtr; + uint32_t uiPixelValue; + + /*----------------------------------*/ + /* Initialize */ + /*----------------------------------*/ + pclsMainFrameObjectPtr = LCDFrame::GetInstance(); + + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + if(NULL != pclsMainFrameObjectPtr) + { + uiPixelValue = pclsMainFrameObjectPtr->GetLCDPixel(uiPosX, uiPosY); + } + else + { + uiPixelValue = 0; + } + + return uiPixelValue; +} + +/*************************************************************************/ +/** Function Name: VDIF_RefreshDisplay. **/ +/** Purpose: Refresh virtual device display. **/ +/** Params: None. **/ +/** Return: None. **/ +/** Notice: None. **/ +/*************************************************************************/ +void VDIF_RefreshDisplay(void) +{ + /*----------------------------------*/ + /* Variable Declaration */ + /*----------------------------------*/ + LCDFrame* pclsMainFrameObjectPtr; + + /*----------------------------------*/ + /* Initialize */ + /*----------------------------------*/ + pclsMainFrameObjectPtr = LCDFrame::GetInstance(); + + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + if(NULL != pclsMainFrameObjectPtr) + { + pclsMainFrameObjectPtr->RefreshLCD(); + } +} + +/*************************************************************************/ +/** Function Name: VDIF_ClearDisplay. **/ +/** Purpose: Clear screen display. **/ +/** Params: None. **/ +/** Return: None. **/ +/** Notice: None. **/ +/*************************************************************************/ +void VDIF_ClearDisplay(void) +{ + /*----------------------------------*/ + /* Variable Declaration */ + /*----------------------------------*/ + LCDFrame* pclsMainFrameObjectPtr; + + /*----------------------------------*/ + /* Initialize */ + /*----------------------------------*/ + pclsMainFrameObjectPtr = LCDFrame::GetInstance(); + + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + if(NULL != pclsMainFrameObjectPtr) + { + pclsMainFrameObjectPtr->ClearLCD(); + pclsMainFrameObjectPtr->RefreshLCD(); + } +} + diff --git a/Project/CodeBlocks/SimpleGUI.cbp b/Project/CodeBlocks/SimpleGUI.cbp index 3e60e88..77375e0 100644 --- a/Project/CodeBlocks/SimpleGUI.cbp +++ b/Project/CodeBlocks/SimpleGUI.cbp @@ -8,12 +8,12 @@ + @@ -55,7 +57,6 @@ - @@ -63,6 +64,7 @@ + @@ -75,7 +77,9 @@ + + @@ -97,15 +101,10 @@ - - - - - - - - + + + + @@ -159,16 +158,22 @@ + + + + + + + - - - - - + + diff --git a/Project/CodeBlocks/SimpleGUI.depend b/Project/CodeBlocks/SimpleGUI.depend new file mode 100644 index 0000000..2602264 --- /dev/null +++ b/Project/CodeBlocks/SimpleGUI.depend @@ -0,0 +1,2946 @@ +# depslib dependency file v1.0 +1514532032 source:e:\workspace\git\simplegui\application\src\application.cpp + "wx\wx.h" + "Application.h" + "Common.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\wx.h + "wx/defs.h" + "wx/object.h" + "wx/dynarray.h" + "wx/list.h" + "wx/hash.h" + "wx/string.h" + "wx/hashmap.h" + "wx/arrstr.h" + "wx/intl.h" + "wx/log.h" + "wx/event.h" + "wx/app.h" + "wx/utils.h" + "wx/stream.h" + "wx/memory.h" + "wx/math.h" + "wx/stopwatch.h" + "wx/timer.h" + "wx/module.h" + "wx/wxcrt.h" + "wx/wxcrtvararg.h" + "wx/window.h" + "wx/containr.h" + "wx/panel.h" + "wx/toplevel.h" + "wx/frame.h" + "wx/gdicmn.h" + "wx/gdiobj.h" + "wx/region.h" + "wx/bitmap.h" + "wx/image.h" + "wx/colour.h" + "wx/font.h" + "wx/dc.h" + "wx/dcclient.h" + "wx/dcmemory.h" + "wx/dcprint.h" + "wx/dcscreen.h" + "wx/button.h" + "wx/menuitem.h" + "wx/menu.h" + "wx/pen.h" + "wx/brush.h" + "wx/palette.h" + "wx/icon.h" + "wx/cursor.h" + "wx/dialog.h" + "wx/settings.h" + "wx/msgdlg.h" + "wx/dataobj.h" + "wx/control.h" + "wx/ctrlsub.h" + "wx/bmpbuttn.h" + "wx/checkbox.h" + "wx/checklst.h" + "wx/choice.h" + "wx/scrolbar.h" + "wx/stattext.h" + "wx/statbmp.h" + "wx/statbox.h" + "wx/listbox.h" + "wx/radiobox.h" + "wx/radiobut.h" + "wx/textctrl.h" + "wx/slider.h" + "wx/gauge.h" + "wx/scrolwin.h" + "wx/dirdlg.h" + "wx/toolbar.h" + "wx/combobox.h" + "wx/layout.h" + "wx/sizer.h" + "wx/statusbr.h" + "wx/choicdlg.h" + "wx/textdlg.h" + "wx/filedlg.h" + "wx/mdi.h" + "wx/validate.h" + "wx/valtext.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\defs.h + "wx/platform.h" + "wx/version.h" + "wx/dlimpexp.h" + + "wx/debug.h" + + + "wx/windowid.h" + + "wx/qt/defs.h" + "wx/msw/winundef.h" + "wx/features.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\platform.h + + + + "wx/osx/config_xcode.h" + "wx/android/config_android.h" + "wx/compiler.h" + "wx/setup.h" + "wx/msw/libraries.h" + "wx/msw/gccpriv.h" + + + "wx/chkconf.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\config_xcode.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\android\config_android.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\compiler.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\lib\gcc_dll\mswu\wx\setup.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\libraries.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\gccpriv.h + <_mingw.h> + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\chkconf.h + "wx/msw/chkconf.h" + "wx/gtk/chkconf.h" + "wx/gtk/chkconf.h" + "wx/osx/chkconf.h" + "wx/dfb/chkconf.h" + "wx/motif/chkconf.h" + "wx/x11/chkconf.h" + "wx/android/chkconf.h" + "wx/unix/chkconf.h" + "wx/univ/chkconf.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\chkconf.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\chkconf.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\chkconf.h + "wx/osx/iphone/chkconf.h" + "wx/osx/cocoa/chkconf.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\iphone\chkconf.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\cocoa\chkconf.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\dfb\chkconf.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\motif\chkconf.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\x11\chkconf.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\android\chkconf.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\unix\chkconf.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\univ\chkconf.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\version.h + "wx/cpp.h" + +1507985588 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\cpp.h + "wx/compiler.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\dlimpexp.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\debug.h + + + "wx/chartype.h" + "wx/cpp.h" + "wx/dlimpexp.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\chartype.h + "wx/platform.h" + + + + + + + + + + + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\windowid.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\defs.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\winundef.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\features.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\object.h + "wx/memory.h" + "wx/xti.h" + "wx/rtti.h" + "wx/xti2.h" + "wx/msw/msvcrt.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\memory.h + "wx/defs.h" + "wx/string.h" + "wx/msgout.h" + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\string.h + "wx/defs.h" + + + + + + + "wx/wxcrtbase.h" + "wx/strvararg.h" + "wx/buffer.h" + "wx/strconv.h" + "wx/stringimpl.h" + "wx/stringops.h" + "wx/unichar.h" + "wx/tls.h" + + "wx/iosfwrap.h" + "wx/crt.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\wxcrtbase.h + "wx/chartype.h" + + + + + + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\strvararg.h + "wx/platform.h" + "wx/cpp.h" + "wx/chartype.h" + "wx/strconv.h" + "wx/buffer.h" + "wx/unichar.h" + + + + "wx/stringimpl.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\strconv.h + "wx/defs.h" + "wx/chartype.h" + "wx/buffer.h" + + "wx/fontenc.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\buffer.h + "wx/chartype.h" + "wx/wxcrtbase.h" + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\fontenc.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\unichar.h + "wx/defs.h" + "wx/chartype.h" + "wx/stringimpl.h" + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\stringimpl.h + "wx/defs.h" + "wx/chartype.h" + "wx/wxcrtbase.h" + + "wx/beforestd.h" + + "wx/afterstd.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\beforestd.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\afterstd.h + "wx/msw/winundef.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\stringops.h + "wx/chartype.h" + "wx/stringimpl.h" + "wx/unichar.h" + "wx/buffer.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\tls.h + "wx/defs.h" + "wx/msw/tls.h" + "wx/unix/tls.h" + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\tls.h + "wx/msw/wrapwin.h" + "wx/thread.h" + "wx/vector.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\wrapwin.h + "wx/platform.h" + + + "wx/msw/winundef.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\thread.h + "wx/defs.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\vector.h + "wx/defs.h" + + + "wx/scopeguard.h" + "wx/meta/movable.h" + "wx/meta/if.h" + "wx/beforestd.h" + + "wx/afterstd.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\scopeguard.h + "wx/defs.h" + "wx/except.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\except.h + "wx/defs.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\meta\movable.h + "wx/meta/pod.h" + "wx/string.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\meta\pod.h + "wx/defs.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\meta\if.h + "wx/defs.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\unix\tls.h + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\iosfwrap.h + + + "wx/msw/winundef.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\crt.h + "wx/defs.h" + "wx/chartype.h" + "wx/wxcrt.h" + "wx/wxcrtvararg.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\wxcrt.h + "wx/wxcrtbase.h" + "wx/string.h" + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\wxcrtvararg.h + "wx/wxcrt.h" + "wx/strvararg.h" + "wx/string.h" + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msgout.h + "wx/defs.h" + "wx/chartype.h" + "wx/strvararg.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\xti.h + "wx/defs.h" + "wx/xtitypes.h" + "wx/xtihandler.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\xtitypes.h + "wx/defs.h" + "wx/string.h" + "wx/hashmap.h" + "wx/arrstr.h" + "wx/flags.h" + "wx/intl.h" + "wx/log.h" + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\hashmap.h + "wx/string.h" + "wx/wxcrt.h" + + + + + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\arrstr.h + "wx/defs.h" + "wx/string.h" + + "wx/dynarray.h" + "wx/beforestd.h" + + "wx/afterstd.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\dynarray.h + "wx/defs.h" + "wx/beforestd.h" + + + "wx/afterstd.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\flags.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\intl.h + "wx/defs.h" + "wx/string.h" + "wx/translation.h" + "wx/fontenc.h" + "wx/language.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\translation.h + "wx/defs.h" + "wx/string.h" + "wx/buffer.h" + "wx/language.h" + "wx/hashmap.h" + "wx/strconv.h" + "wx/scopedptr.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\language.h + "wx/defs.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\scopedptr.h + "wx/defs.h" + "wx/checkeddelete.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\checkeddelete.h + "wx/cpp.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\log.h + "wx/defs.h" + "wx/cpp.h" + "wx/string.h" + "wx/strvararg.h" + "wx/arrstr.h" + + "wx/dynarray.h" + "wx/hashmap.h" + "wx/thread.h" + "wx/iosfwrap.h" + "wx/generic/logg.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\generic\logg.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\xtihandler.h + "wx/defs.h" + "wx/xti.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\rtti.h + "wx/memory.h" + "wx/flags.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\xti2.h + "wx/xtiprop.h" + "wx/xtictor.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\xtiprop.h + "wx/defs.h" + "wx/xti.h" + "wx/any.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\any.h + "wx/defs.h" + + "wx/string.h" + "wx/meta/if.h" + "wx/typeinfo.h" + "wx/list.h" + "wx/datetime.h" + "wx/variant.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\typeinfo.h + "wx/defs.h" + + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\list.h + "wx/defs.h" + "wx/object.h" + "wx/string.h" + "wx/vector.h" + "wx/beforestd.h" + + + + "wx/afterstd.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\datetime.h + "wx/defs.h" + + + "wx/longlong.h" + "wx/anystr.h" + "wx/dynarray.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\longlong.h + "wx/defs.h" + "wx/string.h" + + "wx/iosfwrap.h" + + "wx/strvararg.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\anystr.h + "wx/string.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\variant.h + "wx/defs.h" + "wx/object.h" + "wx/string.h" + "wx/arrstr.h" + "wx/list.h" + "wx/cpp.h" + "wx/longlong.h" + "wx/datetime.h" + "wx/iosfwrap.h" + "wx/any.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\xtictor.h + "wx/defs.h" + "wx/xti.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\msvcrt.h + + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\hash.h + "wx/defs.h" + "wx/string.h" + "wx/object.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\event.h + "wx/defs.h" + "wx/cpp.h" + "wx/object.h" + "wx/clntdata.h" + "wx/gdicmn.h" + "wx/cursor.h" + "wx/mousestate.h" + "wx/dynarray.h" + "wx/thread.h" + "wx/tracker.h" + "wx/typeinfo.h" + "wx/any.h" + "wx/vector.h" + "wx/meta/convertible.h" + "wx/meta/removeref.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\clntdata.h + "wx/defs.h" + "wx/string.h" + "wx/hashmap.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gdicmn.h + "wx/defs.h" + "wx/list.h" + "wx/string.h" + "wx/fontenc.h" + "wx/hashmap.h" + "wx/math.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\math.h + "wx/defs.h" + + + + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\cursor.h + "wx/gdiobj.h" + "wx/gdicmn.h" + "wx/msw/gdiimage.h" + "wx/msw/cursor.h" + "wx/motif/cursor.h" + "wx/gtk/cursor.h" + "wx/gtk1/cursor.h" + "wx/x11/cursor.h" + "wx/dfb/cursor.h" + "wx/osx/cursor.h" + "wx/qt/cursor.h" + "wx/utils.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gdiobj.h + "wx/object.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\gdiimage.h + "wx/gdiobj.h" + "wx/gdicmn.h" + "wx/list.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\cursor.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\motif\cursor.h + "wx/gdicmn.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\cursor.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk1\cursor.h + "wx/gdicmn.h" + "wx/image.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\image.h + "wx/defs.h" + "wx/object.h" + "wx/string.h" + "wx/gdicmn.h" + "wx/hashmap.h" + "wx/arrstr.h" + "wx/stream.h" + "wx/variant.h" + "wx/imagbmp.h" + "wx/imagpng.h" + "wx/imaggif.h" + "wx/imagpcx.h" + "wx/imagjpeg.h" + "wx/imagtga.h" + "wx/imagtiff.h" + "wx/imagpnm.h" + "wx/imagxpm.h" + "wx/imagiff.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\stream.h + "wx/defs.h" + + "wx/object.h" + "wx/string.h" + "wx/filefn.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\filefn.h + "wx/list.h" + "wx/arrstr.h" + + + + + + + + + + + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\imagbmp.h + "wx/image.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\imagpng.h + "wx/defs.h" + "wx/image.h" + "wx/versioninfo.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\versioninfo.h + "wx/string.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\imaggif.h + "wx/image.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\imagpcx.h + "wx/image.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\imagjpeg.h + "wx/defs.h" + "wx/image.h" + "wx/versioninfo.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\imagtga.h + "wx/image.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\imagtiff.h + "wx/defs.h" + "wx/image.h" + "wx/versioninfo.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\imagpnm.h + "wx/image.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\imagxpm.h + "wx/image.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\imagiff.h + "wx/image.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\x11\cursor.h + "wx/colour.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\colour.h + "wx/defs.h" + "wx/gdiobj.h" + "wx/variant.h" + "wx/msw/colour.h" + "wx/motif/colour.h" + "wx/gtk/colour.h" + "wx/gtk1/colour.h" + "wx/generic/colour.h" + "wx/x11/colour.h" + "wx/osx/colour.h" + "wx/qt/colour.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\colour.h + "wx/object.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\motif\colour.h + "wx/object.h" + "wx/string.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\colour.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk1\colour.h + "wx/defs.h" + "wx/object.h" + "wx/string.h" + "wx/gdiobj.h" + "wx/palette.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\palette.h + "wx/defs.h" + "wx/object.h" + "wx/gdiobj.h" + "wx/msw/palette.h" + "wx/x11/palette.h" + "wx/generic/paletteg.h" + "wx/osx/palette.h" + "wx/qt/palette.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\palette.h + "wx/gdiobj.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\x11\palette.h + "wx/list.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\generic\paletteg.h + "wx/defs.h" + "wx/object.h" + "wx/gdiobj.h" + "wx/gdicmn.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\palette.h + "wx/gdiobj.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\palette.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\generic\colour.h + "wx/object.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\x11\colour.h + "wx/defs.h" + "wx/object.h" + "wx/string.h" + "wx/gdiobj.h" + "wx/palette.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\colour.h + "wx/osx/core/colour.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\core\colour.h + "wx/object.h" + "wx/string.h" + "wx/osx/core/cfref.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\core\cfref.h + + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\colour.h + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\dfb\cursor.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\cursor.h + "wx/bitmap.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\bitmap.h + "wx/string.h" + "wx/gdicmn.h" + "wx/colour.h" + "wx/image.h" + "wx/variant.h" + "wx/msw/bitmap.h" + "wx/x11/bitmap.h" + "wx/gtk/bitmap.h" + "wx/gtk1/bitmap.h" + "wx/x11/bitmap.h" + "wx/dfb/bitmap.h" + "wx/osx/bitmap.h" + "wx/qt/bitmap.h" + "wx/generic/mask.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\bitmap.h + "wx/msw/gdiimage.h" + "wx/math.h" + "wx/palette.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\x11\bitmap.h + "wx/defs.h" + "wx/object.h" + "wx/string.h" + "wx/palette.h" + "wx/gdiobj.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\bitmap.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk1\bitmap.h + "wx/defs.h" + "wx/object.h" + "wx/string.h" + "wx/palette.h" + "wx/gdiobj.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\dfb\bitmap.h + "wx/dfb/dfbptr.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\dfb\dfbptr.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\bitmap.h + "wx/palette.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\bitmap.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\generic\mask.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\cursor.h + "wx/image.h" + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\utils.h + "wx/object.h" + "wx/list.h" + "wx/filefn.h" + "wx/hashmap.h" + "wx/versioninfo.h" + "wx/meta/implicitconversion.h" + "wx/gdicmn.h" + "wx/mousestate.h" + "wx/longlong.h" + "wx/platinfo.h" + + + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\meta\implicitconversion.h + "wx/defs.h" + "wx/meta/if.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\mousestate.h + "wx/gdicmn.h" + "wx/kbdstate.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\kbdstate.h + "wx/defs.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\platinfo.h + "wx/string.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\tracker.h + "wx/defs.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\meta\convertible.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\meta\removeref.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\app.h + "wx/event.h" + "wx/eventfilter.h" + "wx/build.h" + "wx/cmdargs.h" + "wx/init.h" + "wx/intl.h" + "wx/log.h" + "wx/unix/app.h" + "wx/msw/app.h" + "wx/motif/app.h" + "wx/dfb/app.h" + "wx/gtk/app.h" + "wx/gtk1/app.h" + "wx/x11/app.h" + "wx/osx/app.h" + "wx/qt/app.h" + "wx/univ/theme.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\eventfilter.h + "wx/defs.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\build.h + "wx/version.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\cmdargs.h + "wx/arrstr.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\init.h + "wx/defs.h" + "wx/chartype.h" + "wx/msw/init.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\init.h + "wx/msw/wrapwin.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\unix\app.h + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\app.h + "wx/event.h" + "wx/icon.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\icon.h + "wx/iconloc.h" + "wx/msw/icon.h" + "wx/motif/icon.h" + "wx/generic/icon.h" + "wx/generic/icon.h" + "wx/generic/icon.h" + "wx/generic/icon.h" + "wx/osx/icon.h" + "wx/generic/icon.h" + "wx/generic/icon.h" + "wx/variant.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\iconloc.h + "wx/string.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\icon.h + "wx/msw/gdiimage.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\motif\icon.h + "wx/bitmap.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\generic\icon.h + "wx/bitmap.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\icon.h + "wx/bitmap.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\motif\app.h + "wx/event.h" + "wx/hashmap.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\dfb\app.h + "wx/dfb/dfbptr.h" + "wx/vidmode.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\vidmode.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\app.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk1\app.h + "wx/frame.h" + "wx/icon.h" + "wx/strconv.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\frame.h + "wx/toplevel.h" + "wx/statusbr.h" + "wx/univ/frame.h" + "wx/msw/frame.h" + "wx/gtk/frame.h" + "wx/gtk1/frame.h" + "wx/motif/frame.h" + "wx/osx/frame.h" + "wx/qt/frame.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\toplevel.h + "wx/nonownedwnd.h" + "wx/iconbndl.h" + "wx/weakref.h" + "wx/msw/toplevel.h" + "wx/gtk/toplevel.h" + "wx/gtk1/toplevel.h" + "wx/x11/toplevel.h" + "wx/dfb/toplevel.h" + "wx/osx/toplevel.h" + "wx/motif/toplevel.h" + "wx/qt/toplevel.h" + "wx/univ/toplevel.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\nonownedwnd.h + "wx/window.h" + "wx/dfb/nonownedwnd.h" + "wx/gtk/nonownedwnd.h" + "wx/osx/nonownedwnd.h" + "wx/msw/nonownedwnd.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\window.h + "wx/event.h" + "wx/list.h" + "wx/cursor.h" + "wx/font.h" + "wx/colour.h" + "wx/region.h" + "wx/utils.h" + "wx/intl.h" + "wx/validate.h" + "wx/palette.h" + "wx/accel.h" + "wx/access.h" + "wx/msw/window.h" + "wx/motif/window.h" + "wx/gtk/window.h" + "wx/gtk1/window.h" + "wx/x11/window.h" + "wx/dfb/window.h" + "wx/osx/window.h" + "wx/qt/window.h" + "wx/univ/window.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\font.h + "wx/defs.h" + "wx/fontenc.h" + "wx/gdiobj.h" + "wx/gdicmn.h" + "wx/msw/font.h" + "wx/motif/font.h" + "wx/gtk/font.h" + "wx/gtk1/font.h" + "wx/x11/font.h" + "wx/dfb/font.h" + "wx/osx/font.h" + "wx/qt/font.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\font.h + "wx/gdicmn.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\motif\font.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\font.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk1\font.h + "wx/hash.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\x11\font.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\dfb\font.h + "wx/dfb/dfbptr.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\font.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\font.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\region.h + "wx/gdiobj.h" + "wx/gdicmn.h" + "wx/msw/region.h" + "wx/gtk/region.h" + "wx/gtk1/region.h" + "wx/x11/region.h" + "wx/dfb/region.h" + "wx/osx/region.h" + "wx/qt/region.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\region.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\region.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk1\region.h + "wx/list.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\x11\region.h + "wx/list.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\dfb\region.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\region.h + "wx/osx/carbon/region.h" + "wx/generic/region.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\carbon\region.h + "wx/list.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\generic\region.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\region.h + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\validate.h + "wx/defs.h" + "wx/event.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\accel.h + "wx/defs.h" + "wx/object.h" + "wx/generic/accel.h" + "wx/msw/accel.h" + "wx/motif/accel.h" + "wx/gtk/accel.h" + "wx/gtk1/accel.h" + "wx/osx/accel.h" + "wx/qt/accel.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\generic\accel.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\accel.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\motif\accel.h + "wx/object.h" + "wx/string.h" + "wx/event.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\accel.h + "wx/generic/accel.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk1\accel.h + "wx/generic/accel.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\accel.h + "wx/string.h" + "wx/event.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\accel.h + + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\access.h + "wx/defs.h" + "wx/variant.h" + "wx/msw/ole/access.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\ole\access.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\window.h + "wx/settings.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\settings.h + "wx/colour.h" + "wx/font.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\motif\window.h + "wx/region.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\window.h + "wx/dynarray.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk1\window.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\x11\window.h + "wx/region.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\dfb\window.h + "wx/dfb/dfbptr.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\window.h + "wx/brush.h" + "wx/dc.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\brush.h + "wx/defs.h" + "wx/object.h" + "wx/gdiobj.h" + "wx/gdicmn.h" + "wx/msw/brush.h" + "wx/x11/brush.h" + "wx/gtk/brush.h" + "wx/gtk1/brush.h" + "wx/dfb/brush.h" + "wx/osx/brush.h" + "wx/qt/brush.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\brush.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\x11\brush.h + "wx/gdiobj.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\brush.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk1\brush.h + "wx/defs.h" + "wx/object.h" + "wx/string.h" + "wx/gdiobj.h" + "wx/bitmap.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\dfb\brush.h + "wx/defs.h" + "wx/object.h" + "wx/string.h" + "wx/gdiobj.h" + "wx/bitmap.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\brush.h + "wx/gdicmn.h" + "wx/gdiobj.h" + "wx/bitmap.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\brush.h + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\dc.h + "wx/object.h" + "wx/intl.h" + "wx/colour.h" + "wx/font.h" + "wx/bitmap.h" + "wx/brush.h" + "wx/pen.h" + "wx/palette.h" + "wx/dynarray.h" + "wx/math.h" + "wx/image.h" + "wx/region.h" + "wx/affinematrix2d.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\pen.h + "wx/gdiobj.h" + "wx/gdicmn.h" + "wx/msw/pen.h" + "wx/x11/pen.h" + "wx/gtk/pen.h" + "wx/gtk1/pen.h" + "wx/dfb/pen.h" + "wx/osx/pen.h" + "wx/qt/pen.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\pen.h + "wx/gdiobj.h" + "wx/gdicmn.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\x11\pen.h + "wx/gdicmn.h" + "wx/gdiobj.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\pen.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk1\pen.h + "wx/defs.h" + "wx/object.h" + "wx/string.h" + "wx/gdiobj.h" + "wx/gdicmn.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\dfb\pen.h + "wx/defs.h" + "wx/object.h" + "wx/string.h" + "wx/gdiobj.h" + "wx/gdicmn.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\pen.h + "wx/gdiobj.h" + "wx/colour.h" + "wx/bitmap.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\pen.h + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\affinematrix2d.h + "wx/defs.h" + "wx/affinematrix2dbase.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\affinematrix2dbase.h + "wx/defs.h" + "wx/geometry.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\geometry.h + "wx/defs.h" + "wx/utils.h" + "wx/gdicmn.h" + "wx/math.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\window.h + + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\univ\window.h + "wx/bitmap.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\dfb\nonownedwnd.h + "wx/window.h" + "wx/dfb/dfbptr.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\nonownedwnd.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\nonownedwnd.h + "wx/window.h" + "wx/graphics.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\graphics.h + "wx/defs.h" + "wx/affinematrix2d.h" + "wx/geometry.h" + "wx/colour.h" + "wx/dynarray.h" + "wx/font.h" + "wx/image.h" + "wx/vector.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\nonownedwnd.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\iconbndl.h + "wx/gdiobj.h" + "wx/gdicmn.h" + "wx/icon.h" + "wx/dynarray.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\weakref.h + "wx/tracker.h" + "wx/meta/convertible.h" + "wx/meta/int2type.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\meta\int2type.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\toplevel.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\toplevel.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk1\toplevel.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\x11\toplevel.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\dfb\toplevel.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\toplevel.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\motif\toplevel.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\toplevel.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\univ\toplevel.h + "wx/univ/inpcons.h" + "wx/univ/inphand.h" + "wx/icon.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\univ\inpcons.h + "wx/object.h" + "wx/event.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\univ\inphand.h + "wx/univ/inpcons.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\statusbr.h + "wx/defs.h" + "wx/control.h" + "wx/list.h" + "wx/dynarray.h" + "wx/univ/statusbr.h" + "wx/msw/statusbar.h" + "wx/generic/statusbr.h" + "wx/osx/statusbr.h" + "wx/qt/statusbar.h" + "wx/generic/statusbr.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\control.h + "wx/defs.h" + "wx/window.h" + "wx/gdicmn.h" + "wx/univ/control.h" + "wx/msw/control.h" + "wx/motif/control.h" + "wx/gtk/control.h" + "wx/gtk1/control.h" + "wx/osx/control.h" + "wx/qt/control.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\univ\control.h + "wx/univ/inphand.h" + "wx/univ/inpcons.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\control.h + "wx/dynarray.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\motif\control.h + "wx/window.h" + "wx/list.h" + "wx/validate.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\control.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk1\control.h + "wx/defs.h" + "wx/object.h" + "wx/list.h" + "wx/window.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\control.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\control.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\univ\statusbr.h + "wx/univ/inpcons.h" + "wx/arrstr.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\statusbar.h + "wx/vector.h" + "wx/tooltip.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\tooltip.h + "wx/defs.h" + "wx/msw/tooltip.h" + "wx/gtk/tooltip.h" + "wx/gtk1/tooltip.h" + "wx/osx/tooltip.h" + "wx/qt/tooltip.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\tooltip.h + "wx/object.h" + "wx/gdicmn.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\tooltip.h + "wx/string.h" + "wx/object.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk1\tooltip.h + "wx/defs.h" + "wx/string.h" + "wx/object.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\tooltip.h + "wx/string.h" + "wx/event.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\tooltip.h + "wx/object.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\generic\statusbr.h + "wx/defs.h" + "wx/pen.h" + "wx/arrstr.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\statusbr.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\statusbar.h + "wx/statusbr.h" + + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\univ\frame.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\frame.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\frame.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk1\frame.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\motif\frame.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\frame.h + "wx/toolbar.h" + "wx/accel.h" + "wx/icon.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\toolbar.h + "wx/defs.h" + "wx/tbarbase.h" + "wx/univ/toolbar.h" + "wx/msw/toolbar.h" + "wx/motif/toolbar.h" + "wx/gtk/toolbar.h" + "wx/gtk1/toolbar.h" + "wx/osx/toolbar.h" + "wx/qt/toolbar.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\tbarbase.h + "wx/defs.h" + "wx/bitmap.h" + "wx/list.h" + "wx/control.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\univ\toolbar.h + "wx/button.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\button.h + "wx/defs.h" + "wx/anybutton.h" + "wx/univ/button.h" + "wx/msw/button.h" + "wx/motif/button.h" + "wx/gtk/button.h" + "wx/gtk1/button.h" + "wx/osx/button.h" + "wx/qt/button.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\anybutton.h + "wx/defs.h" + "wx/bitmap.h" + "wx/control.h" + "wx/univ/anybutton.h" + "wx/msw/anybutton.h" + "wx/gtk/anybutton.h" + "wx/osx/anybutton.h" + "wx/qt/anybutton.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\univ\anybutton.h + "wx/univ/inphand.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\anybutton.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\anybutton.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\anybutton.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\anybutton.h + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\univ\button.h + "wx/bitmap.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\button.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\motif\button.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\button.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk1\button.h + "wx/defs.h" + "wx/object.h" + "wx/list.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\button.h + "wx/control.h" + "wx/gdicmn.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\button.h + "wx/control.h" + "wx/button.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\toolbar.h + "wx/dynarray.h" + "wx/imaglist.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\imaglist.h + "wx/defs.h" + "wx/generic/imaglist.h" + "wx/msw/imaglist.h" + "wx/osx/imaglist.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\generic\imaglist.h + "wx/gdicmn.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\imaglist.h + "wx/bitmap.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\imaglist.h + "wx/defs.h" + "wx/list.h" + "wx/icon.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\motif\toolbar.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\toolbar.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk1\toolbar.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\toolbar.h + "wx/tbarbase.h" + "wx/dynarray.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\toolbar.h + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\frame.h + "wx/frame.h" + + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\x11\app.h + "wx/gdicmn.h" + "wx/event.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\app.h + "wx/defs.h" + "wx/object.h" + "wx/gdicmn.h" + "wx/event.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\app.h + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\univ\theme.h + "wx/string.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\stopwatch.h + "wx/defs.h" + "wx/longlong.h" + "wx/time.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\time.h + "wx/longlong.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\timer.h + "wx/defs.h" + "wx/object.h" + "wx/longlong.h" + "wx/event.h" + "wx/stopwatch.h" + "wx/utils.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\module.h + "wx/object.h" + "wx/list.h" + "wx/arrstr.h" + "wx/dynarray.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\containr.h + "wx/defs.h" + "wx/event.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\panel.h + "wx/window.h" + "wx/containr.h" + "wx/univ/panel.h" + "wx/msw/panel.h" + "wx/generic/panelg.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\univ\panel.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\panel.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\generic\panelg.h + "wx/bitmap.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\dcclient.h + "wx/dc.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\dcmemory.h + "wx/dc.h" + "wx/bitmap.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\dcprint.h + "wx/defs.h" + "wx/dc.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\dcscreen.h + "wx/defs.h" + "wx/dc.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\menuitem.h + "wx/defs.h" + "wx/object.h" + "wx/univ/menuitem.h" + "wx/msw/menuitem.h" + "wx/motif/menuitem.h" + "wx/gtk/menuitem.h" + "wx/gtk1/menuitem.h" + "wx/osx/menuitem.h" + "wx/qt/menuitem.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\univ\menuitem.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\menuitem.h + "wx/bitmap.h" + "wx/ownerdrw.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\ownerdrw.h + "wx/defs.h" + "wx/font.h" + "wx/colour.h" + "wx/msw/ownerdrw.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\ownerdrw.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\motif\menuitem.h + "wx/bitmap.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\menuitem.h + "wx/bitmap.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk1\menuitem.h + "wx/bitmap.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\menuitem.h + "wx/defs.h" + "wx/bitmap.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\menuitem.h + "wx/menuitem.h" + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\menu.h + "wx/defs.h" + "wx/list.h" + "wx/window.h" + "wx/menuitem.h" + "wx/univ/menu.h" + "wx/msw/menu.h" + "wx/motif/menu.h" + "wx/gtk/menu.h" + "wx/gtk1/menu.h" + "wx/osx/menu.h" + "wx/qt/menu.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\univ\menu.h + "wx/accel.h" + "wx/dynarray.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\menu.h + "wx/accel.h" + "wx/dynarray.h" + "wx/arrstr.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\motif\menu.h + "wx/colour.h" + "wx/font.h" + "wx/arrstr.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\menu.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk1\menu.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\menu.h + "wx/arrstr.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\menu.h + + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\dialog.h + "wx/toplevel.h" + "wx/containr.h" + "wx/sharedptr.h" + "wx/univ/dialog.h" + "wx/msw/dialog.h" + "wx/motif/dialog.h" + "wx/gtk/dialog.h" + "wx/gtk1/dialog.h" + "wx/osx/dialog.h" + "wx/qt/dialog.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\sharedptr.h + "wx/defs.h" + "wx/atomic.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\atomic.h + "wx/defs.h" + "wx/msw/wrapwin.h" + "libkern/OSAtomic.h" + + "wx/thread.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\univ\dialog.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\dialog.h + "wx/panel.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\motif\dialog.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\dialog.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk1\dialog.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\dialog.h + "wx/panel.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\dialog.h + "wx/dialog.h" + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msgdlg.h + "wx/defs.h" + "wx/dialog.h" + "wx/stockitem.h" + "wx/generic/msgdlgg.h" + "wx/msw/msgdlg.h" + "wx/motif/msgdlg.h" + "wx/gtk/msgdlg.h" + "wx/osx/msgdlg.h" + "wx/qt/msgdlg.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\stockitem.h + "wx/defs.h" + "wx/chartype.h" + "wx/string.h" + "wx/accel.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\generic\msgdlgg.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\msgdlg.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\motif\msgdlg.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\msgdlg.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\msgdlg.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\msgdlg.h + "wx/msgdlg.h" + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\dataobj.h + "wx/defs.h" + "wx/string.h" + "wx/bitmap.h" + "wx/list.h" + "wx/arrstr.h" + "wx/msw/ole/dataform.h" + "wx/motif/dataform.h" + "wx/gtk/dataform.h" + "wx/gtk1/dataform.h" + "wx/x11/dataform.h" + "wx/osx/dataform.h" + "wx/qt/dataform.h" + "wx/msw/ole/dataobj.h" + "wx/motif/dataobj.h" + "wx/x11/dataobj.h" + "wx/gtk/dataobj.h" + "wx/gtk1/dataobj.h" + "wx/osx/dataobj.h" + "wx/qt/dataobj.h" + "wx/msw/ole/dataobj2.h" + "wx/gtk/dataobj2.h" + "wx/gtk1/dataobj2.h" + "wx/x11/dataobj2.h" + "wx/motif/dataobj2.h" + "wx/osx/dataobj2.h" + "wx/qt/dataobj2.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\ole\dataform.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\motif\dataform.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\dataform.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk1\dataform.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\x11\dataform.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\dataform.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\dataform.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\ole\dataobj.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\motif\dataobj.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\x11\dataobj.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\dataobj.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk1\dataobj.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\dataobj.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\dataobj.h + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\ole\dataobj2.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\dataobj2.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk1\dataobj2.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\x11\dataobj2.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\motif\dataobj2.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\dataobj2.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\dataobj2.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\ctrlsub.h + "wx/defs.h" + "wx/arrstr.h" + "wx/control.h" + + "wx/msw/ctrlsub.h" + "wx/motif/ctrlsub.h" + "wx/qt/ctrlsub.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\ctrlsub.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\motif\ctrlsub.h + "wx/dynarray.h" + "wx/generic/ctrlsub.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\generic\ctrlsub.h + "wx/dynarray.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\ctrlsub.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\bmpbuttn.h + "wx/defs.h" + "wx/button.h" + "wx/univ/bmpbuttn.h" + "wx/msw/bmpbuttn.h" + "wx/motif/bmpbuttn.h" + "wx/gtk/bmpbuttn.h" + "wx/gtk1/bmpbuttn.h" + "wx/osx/bmpbuttn.h" + "wx/qt/bmpbuttn.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\univ\bmpbuttn.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\bmpbuttn.h + "wx/button.h" + "wx/bitmap.h" + "wx/brush.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\motif\bmpbuttn.h + "wx/motif/bmpmotif.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\motif\bmpmotif.h + "wx/defs.h" + "wx/bitmap.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\bmpbuttn.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk1\bmpbuttn.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\bmpbuttn.h + "wx/button.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\bmpbuttn.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\checkbox.h + "wx/defs.h" + "wx/control.h" + "wx/univ/checkbox.h" + "wx/msw/checkbox.h" + "wx/motif/checkbox.h" + "wx/gtk/checkbox.h" + "wx/gtk1/checkbox.h" + "wx/osx/checkbox.h" + "wx/qt/checkbox.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\univ\checkbox.h + "wx/button.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\checkbox.h + "wx/msw/ownerdrawnbutton.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\ownerdrawnbutton.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\motif\checkbox.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\checkbox.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk1\checkbox.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\checkbox.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\checkbox.h + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\checklst.h + "wx/defs.h" + "wx/listbox.h" + "wx/univ/checklst.h" + "wx/msw/checklst.h" + "wx/motif/checklst.h" + "wx/gtk/checklst.h" + "wx/gtk1/checklst.h" + "wx/osx/checklst.h" + "wx/qt/checklst.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\listbox.h + "wx/defs.h" + "wx/ctrlsub.h" + "wx/univ/listbox.h" + "wx/msw/listbox.h" + "wx/motif/listbox.h" + "wx/gtk/listbox.h" + "wx/gtk1/listbox.h" + "wx/osx/listbox.h" + "wx/qt/listbox.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\univ\listbox.h + "wx/scrolwin.h" + "wx/dynarray.h" + "wx/arrstr.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\scrolwin.h + "wx/panel.h" + "wx/gtk/scrolwin.h" + "wx/gtk1/scrolwin.h" + "wx/generic/scrolwin.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\scrolwin.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk1\scrolwin.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\generic\scrolwin.h + "wx/recguard.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\recguard.h + "wx/defs.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\listbox.h + "wx/dynarray.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\motif\listbox.h + "wx/ctrlsub.h" + "wx/clntdata.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\listbox.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk1\listbox.h + "wx/list.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\listbox.h + "wx/dynarray.h" + "wx/arrstr.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\listbox.h + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\univ\checklst.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\checklst.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\motif\checklst.h + "wx/listbox.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\checklst.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk1\checklst.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\checklst.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\checklst.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\choice.h + "wx/defs.h" + "wx/ctrlsub.h" + "wx/univ/choice.h" + "wx/msw/choice.h" + "wx/motif/choice.h" + "wx/gtk/choice.h" + "wx/gtk1/choice.h" + "wx/osx/choice.h" + "wx/qt/choice.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\univ\choice.h + "wx/combobox.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\combobox.h + "wx/defs.h" + "wx/textctrl.h" + "wx/ctrlsub.h" + "wx/textentry.h" + "wx/univ/combobox.h" + "wx/msw/combobox.h" + "wx/motif/combobox.h" + "wx/gtk/combobox.h" + "wx/gtk1/combobox.h" + "wx/osx/combobox.h" + "wx/qt/combobox.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\textctrl.h + "wx/defs.h" + "wx/control.h" + "wx/textentry.h" + "wx/dynarray.h" + "wx/gdicmn.h" + "wx/ioswrap.h" + "wx/x11/textctrl.h" + "wx/univ/textctrl.h" + "wx/msw/textctrl.h" + "wx/motif/textctrl.h" + "wx/gtk/textctrl.h" + "wx/gtk1/textctrl.h" + "wx/osx/textctrl.h" + "wx/qt/textctrl.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\textentry.h + "wx/filefn.h" + "wx/gdicmn.h" + "wx/gtk/textentry.h" + "wx/osx/textentry.h" + "wx/msw/textentry.h" + "wx/motif/textentry.h" + "wx/qt/textentry.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\textentry.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\textentry.h + "wx/control.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\textentry.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\motif\textentry.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\textentry.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\ioswrap.h + "wx/beforestd.h" + + + "wx/afterstd.h" + "wx/msw/winundef.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\x11\textctrl.h + "wx/univ/textctrl.h" + "wx/scrolwin.h" + "wx/arrstr.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\univ\textctrl.h + "wx/scrolwin.h" + "wx/univ/inphand.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\textctrl.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\motif\textctrl.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\textctrl.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk1\textctrl.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\textctrl.h + "wx/control.h" + "wx/textctrl.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\textctrl.h + + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\univ\combobox.h + "wx/combo.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\combo.h + "wx/defs.h" + "wx/control.h" + "wx/renderer.h" + "wx/bitmap.h" + "wx/textentry.h" + "wx/time.h" + "wx/msw/combo.h" + "wx/generic/combo.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\renderer.h + "wx/gdicmn.h" + "wx/colour.h" + "wx/font.h" + "wx/bitmap.h" + "wx/string.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\combo.h + "wx/timer.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\generic\combo.h + "wx/dcbuffer.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\dcbuffer.h + "wx/dcmemory.h" + "wx/dcclient.h" + "wx/window.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\combobox.h + "wx/choice.h" + "wx/textentry.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\motif\combobox.h + "wx/choice.h" + "wx/textentry.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\combobox.h + "wx/choice.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk1\combobox.h + "wx/defs.h" + "wx/object.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\combobox.h + "wx/containr.h" + "wx/choice.h" + "wx/textctrl.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\combobox.h + "wx/choice.h" + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\choice.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\motif\choice.h + "wx/clntdata.h" + "wx/dynarray.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\choice.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk1\choice.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\choice.h + "wx/control.h" + "wx/dynarray.h" + "wx/arrstr.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\choice.h + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\scrolbar.h + "wx/defs.h" + "wx/control.h" + "wx/univ/scrolbar.h" + "wx/msw/scrolbar.h" + "wx/motif/scrolbar.h" + "wx/gtk/scrolbar.h" + "wx/gtk1/scrolbar.h" + "wx/osx/scrolbar.h" + "wx/qt/scrolbar.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\univ\scrolbar.h + "wx/univ/scrarrow.h" + "wx/renderer.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\univ\scrarrow.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\scrolbar.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\motif\scrolbar.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\scrolbar.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk1\scrolbar.h + "wx/defs.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\scrolbar.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\scrolbar.h + "wx/scrolbar.h" + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\stattext.h + "wx/defs.h" + "wx/control.h" + "wx/univ/stattext.h" + "wx/msw/stattext.h" + "wx/motif/stattext.h" + "wx/gtk/stattext.h" + "wx/gtk1/stattext.h" + "wx/osx/stattext.h" + "wx/qt/stattext.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\univ\stattext.h + "wx/generic/stattextg.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\generic\stattextg.h + "wx/stattext.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\stattext.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\motif\stattext.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\stattext.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk1\stattext.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\stattext.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\stattext.h + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\statbmp.h + "wx/defs.h" + "wx/control.h" + "wx/bitmap.h" + "wx/icon.h" + "wx/univ/statbmp.h" + "wx/msw/statbmp.h" + "wx/motif/statbmp.h" + "wx/gtk/statbmp.h" + "wx/gtk1/statbmp.h" + "wx/osx/statbmp.h" + "wx/qt/statbmp.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\univ\statbmp.h + "wx/bitmap.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\statbmp.h + "wx/control.h" + "wx/icon.h" + "wx/bitmap.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\motif\statbmp.h + "wx/motif/bmpmotif.h" + "wx/icon.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\statbmp.h + "wx/icon.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk1\statbmp.h + "wx/icon.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\statbmp.h + "wx/generic/statbmpg.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\generic\statbmpg.h + "wx/statbmp.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\statbmp.h + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\statbox.h + "wx/defs.h" + "wx/control.h" + "wx/containr.h" + "wx/univ/statbox.h" + "wx/msw/statbox.h" + "wx/motif/statbox.h" + "wx/gtk/statbox.h" + "wx/gtk1/statbox.h" + "wx/osx/statbox.h" + "wx/qt/statbox.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\univ\statbox.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\statbox.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\motif\statbox.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\statbox.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk1\statbox.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\statbox.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\statbox.h + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\radiobox.h + "wx/defs.h" + "wx/ctrlsub.h" + "wx/dynarray.h" + "wx/univ/radiobox.h" + "wx/msw/radiobox.h" + "wx/motif/radiobox.h" + "wx/gtk/radiobox.h" + "wx/gtk1/radiobox.h" + "wx/osx/radiobox.h" + "wx/qt/radiobox.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\univ\radiobox.h + "wx/statbox.h" + "wx/dynarray.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\radiobox.h + "wx/statbox.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\motif\radiobox.h + "wx/dynarray.h" + "wx/arrstr.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\radiobox.h + "wx/bitmap.h" + "wx/list.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk1\radiobox.h + "wx/bitmap.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\radiobox.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\radiobox.h + + + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\radiobut.h + "wx/defs.h" + "wx/control.h" + "wx/univ/radiobut.h" + "wx/msw/radiobut.h" + "wx/motif/radiobut.h" + "wx/gtk/radiobut.h" + "wx/gtk1/radiobut.h" + "wx/osx/radiobut.h" + "wx/qt/radiobut.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\univ\radiobut.h + "wx/checkbox.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\radiobut.h + "wx/msw/ownerdrawnbutton.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\motif\radiobut.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\radiobut.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk1\radiobut.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\radiobut.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\radiobut.h + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\slider.h + "wx/defs.h" + "wx/control.h" + "wx/univ/slider.h" + "wx/msw/slider.h" + "wx/motif/slider.h" + "wx/gtk/slider.h" + "wx/gtk1/slider.h" + "wx/osx/slider.h" + "wx/qt/slider.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\univ\slider.h + "wx/univ/scrthumb.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\univ\scrthumb.h + "wx/timer.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\slider.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\motif\slider.h + "wx/control.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\slider.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk1\slider.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\slider.h + "wx/compositewin.h" + "wx/stattext.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\compositewin.h + "wx/window.h" + "wx/containr.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\slider.h + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gauge.h + "wx/defs.h" + "wx/control.h" + "wx/univ/gauge.h" + "wx/msw/gauge.h" + "wx/motif/gauge.h" + "wx/gtk/gauge.h" + "wx/gtk1/gauge.h" + "wx/osx/gauge.h" + "wx/qt/gauge.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\univ\gauge.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\gauge.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\motif\gauge.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\gauge.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk1\gauge.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\gauge.h + "wx/control.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\gauge.h + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\dirdlg.h + "wx/defs.h" + "wx/dialog.h" + "wx/generic/dirdlgg.h" + "wx/generic/dirdlgg.h" + "wx/msw/dirdlg.h" + "wx/gtk/dirdlg.h" + "wx/generic/dirdlgg.h" + "wx/osx/dirdlg.h" + "wx/generic/dirdlgg.h" + "wx/qt/dirdlg.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\generic\dirdlgg.h + "wx/dialog.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\dirdlg.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\dirdlg.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\dirdlg.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\dirdlg.h + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\layout.h + "wx/object.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\sizer.h + "wx/defs.h" + "wx/window.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\choicdlg.h + "wx/defs.h" + "wx/generic/choicdgg.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\generic\choicdgg.h + "wx/dynarray.h" + "wx/dialog.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\textdlg.h + "wx/generic/textdlgg.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\generic\textdlgg.h + "wx/defs.h" + "wx/dialog.h" + "wx/valtext.h" + "wx/textctrl.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\valtext.h + "wx/defs.h" + "wx/validate.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\filedlg.h + "wx/defs.h" + "wx/dialog.h" + "wx/arrstr.h" + "wx/generic/filedlgg.h" + "wx/msw/filedlg.h" + "wx/motif/filedlg.h" + "wx/gtk/filedlg.h" + "wx/gtk1/filedlg.h" + "wx/osx/filedlg.h" + "wx/qt/filedlg.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\generic\filedlgg.h + "wx/listctrl.h" + "wx/datetime.h" + "wx/filefn.h" + "wx/artprov.h" + "wx/filedlg.h" + "wx/generic/filectrlg.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\listctrl.h + "wx/defs.h" + "wx/listbase.h" + "wx/msw/listctrl.h" + "wx/qt/listctrl.h" + "wx/generic/listctrl.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\listbase.h + "wx/colour.h" + "wx/font.h" + "wx/gdicmn.h" + "wx/event.h" + "wx/control.h" + "wx/systhemectrl.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\systhemectrl.h + "wx/defs.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\listctrl.h + "wx/textctrl.h" + "wx/dynarray.h" + "wx/vector.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\listctrl.h + "wx/textctrl.h" + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\generic\listctrl.h + "wx/containr.h" + "wx/scrolwin.h" + "wx/textctrl.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\artprov.h + "wx/string.h" + "wx/bitmap.h" + "wx/icon.h" + "wx/iconbndl.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\generic\filectrlg.h + "wx/containr.h" + "wx/listctrl.h" + "wx/filectrl.h" + "wx/filename.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\filectrl.h + "wx/defs.h" + "wx/string.h" + "wx/event.h" + "wx/gtk/filectrl.h" + "wx/generic/filectrlg.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\filectrl.h + "wx/control.h" + "wx/filectrl.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\filename.h + "wx/arrstr.h" + "wx/filefn.h" + "wx/datetime.h" + "wx/intl.h" + "wx/longlong.h" + "wx/file.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\file.h + "wx/defs.h" + "wx/string.h" + "wx/filefn.h" + "wx/convauto.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\convauto.h + "wx/strconv.h" + "wx/fontenc.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\filedlg.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\motif\filedlg.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\filedlg.h + "wx/gtk/filectrl.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk1\filedlg.h + "wx/generic/filedlgg.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\filedlg.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\filedlg.h + + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\mdi.h + "wx/defs.h" + "wx/frame.h" + "wx/menu.h" + "wx/generic/mdig.h" + "wx/msw/mdi.h" + "wx/gtk/mdi.h" + "wx/gtk1/mdi.h" + "wx/osx/mdi.h" + "wx/qt/mdi.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\generic\mdig.h + "wx/panel.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\mdi.h + "wx/frame.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\mdi.h + "wx/frame.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk1\mdi.h + "wx/frame.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\mdi.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\mdi.h + +1514205167 e:\workspace\git\simplegui\application\inc\application.h + + + "LCDFrame.h" + +1514539718 e:\workspace\git\simplegui\frame\inc\lcdframe.h + + + + + + + + + + "MonochromeDotLCD.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\clipbrd.h + "wx/defs.h" + "wx/event.h" + "wx/chartype.h" + "wx/dataobj.h" + "wx/vector.h" + "wx/msw/clipbrd.h" + "wx/motif/clipbrd.h" + "wx/gtk/clipbrd.h" + "wx/gtk1/clipbrd.h" + "wx/x11/clipbrd.h" + "wx/osx/clipbrd.h" + "wx/qt/clipbrd.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\clipbrd.h + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\motif\clipbrd.h + "wx/list.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk\clipbrd.h + "wx/weakref.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\gtk1\clipbrd.h + "wx/object.h" + "wx/list.h" + "wx/dataobj.h" + "wx/control.h" + "wx/module.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\x11\clipbrd.h + "wx/object.h" + "wx/list.h" + "wx/dataobj.h" + "wx/control.h" + "wx/module.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\osx\clipbrd.h + "wx/osx/core/cfref.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\qt\clipbrd.h + "wx/weakref.h" + +1514539690 e:\workspace\git\simplegui\frame\inc\monochromedotlcd.h + "wxDotLCD.h" + "Common.h" + + +1514539571 e:\workspace\git\simplegui\wxexpand\inc\wxdotlcd.h + + + + +1514614053 e:\workspace\git\simplegui\common\inc\common.h + + + +1514539074 source:e:\workspace\git\simplegui\common\src\common.cpp + "Common.h" + +1514518784 source:e:\workspace\git\simplegui\demo\src\demoproc.c + "DemoProc.h" + +1514552780 e:\workspace\git\simplegui\demo\inc\demoproc.h + "SGUI_Typedef.h" + "HMI_Engine.h" + + +1513692014 e:\workspace\git\simplegui\gui\inc\sgui_typedef.h + "SGUI_Config.h" + "stdint.h" + "stddef.h" + +1514613863 e:\workspace\git\simplegui\gui\inc\sgui_config.h + +1514388830 e:\workspace\git\simplegui\hmi\inc\hmi_engine.h + "VirtualDeviceInterface.h" + "SGUI_Typedef.h" + +1514518256 e:\workspace\git\simplegui\user\inc\virtualdeviceinterface.h + + + + + +1514471372 source:e:\workspace\git\simplegui\demo\src\list.c + "DemoProc.h" + "SGUI_List.h" + "HMI_Engine.h" + +1513692014 e:\workspace\git\simplegui\gui\inc\sgui_list.h + "SGUI_Config.h" + "SGUI_Common.h" + "SGUI_Basic.h" + "SGUI_Text.h" + "SGUI_ScrollBar.h" + +1514554465 e:\workspace\git\simplegui\gui\inc\sgui_common.h + + "SGUI_Config.h" + "SGUI_Typedef.h" + "VirtualDeviceInterface.h" + +1513862805 e:\workspace\git\simplegui\frame\inc\lcd_virtualdeviceparameter.h + +1513692014 e:\workspace\git\simplegui\gui\inc\sgui_basic.h + "SGUI_Config.h" + "SGUI_Common.h" + +1513692014 e:\workspace\git\simplegui\gui\inc\sgui_text.h + "SGUI_Config.h" + "SGUI_Common.h" + "SGUI_Basic.h" + +1513692014 e:\workspace\git\simplegui\gui\inc\sgui_scrollbar.h + "SGUI_Config.h" + "SGUI_Common.h" + +1514613985 source:e:\workspace\git\simplegui\demo\src\realtimegraph.c + "DemoProc.h" + "SGUI_RealtimeGraph.h" + +1513866836 e:\workspace\git\simplegui\gui\inc\sgui_realtimegraph.h + "SGUI_Config.h" + "SGUI_Common.h" + "SGUI_Basic.h" + +1514471372 source:e:\workspace\git\simplegui\demo\src\rtcnotice.c + "DemoProc.h" + "HMI_Engine.h" + "SGUI_Notice.h" + "SGUI_Common.h" + +1513692014 e:\workspace\git\simplegui\gui\inc\sgui_notice.h + "SGUI_Config.h" + "SGUI_Common.h" + "SGUI_Basic.h" + +1514614018 source:e:\workspace\git\simplegui\demo\src\scrollingtext.c + "DemoProc.h" + "SGUI_Text.h" + "SGUI_Frame.h" + "HMI_Engine.h" + +1513692014 e:\workspace\git\simplegui\gui\inc\sgui_frame.h + "SGUI_Config.h" + "SGUI_Common.h" + "SGUI_Basic.h" + "SGUI_Text.h" + +1514471372 source:e:\workspace\git\simplegui\demo\src\textnotice.c + "DemoProc.h" + "SGUI_Notice.h" + "string.h" + +1514471372 source:e:\workspace\git\simplegui\demo\src\variablebox.c + "DemoProc.h" + "SGUI_Frame.h" + "SGUI_Notice.h" + "SGUI_VariableBox.h" + +1513692014 e:\workspace\git\simplegui\gui\inc\sgui_variablebox.h + "SGUI_Config.h" + "SGUI_Common.h" + "SGUI_Basic.h" + "SGUI_Text.h" + +1514609485 source:e:\workspace\git\simplegui\frame\src\lcdframe.cpp + + "LCDFrame.h" + "UserActionInterface.h" + +1514546564 e:\workspace\git\simplegui\user\inc\processmain.h + "VirtualDeviceInterface.h" + + +1514539690 source:e:\workspace\git\simplegui\frame\src\monochromedotlcd.cpp + "MonochromeDotLCD.h" + +1514546794 source:e:\workspace\git\simplegui\gui\src\sgui_basic.c + "SGUI_Basic.h" + "VirtualDeviceInterface.h" + +1514471321 source:e:\workspace\git\simplegui\gui\src\sgui_common.c + "SGUI_Common.h" + + + + + + +1513692014 e:\workspace\git\simplegui\library\inc\iconv.h + "iconv.h" + + + + + + + +1513692014 source:e:\workspace\git\simplegui\gui\src\sgui_flashdata.c + "SGUI_Common.h" + +1514471372 source:e:\workspace\git\simplegui\gui\src\sgui_frame.c + "SGUI_Frame.h" + +1514471372 source:e:\workspace\git\simplegui\gui\src\sgui_list.c + "SGUI_Common.h" + "SGUI_Basic.h" + "SGUI_Text.h" + "SGUI_ScrollBar.h" + "SGUI_List.h" + "SGUI_Frame.h" + +1514471372 source:e:\workspace\git\simplegui\gui\src\sgui_notice.c + "SGUI_Common.h" + "SGUI_Basic.h" + "SGUI_Text.h" + "SGUI_Notice.h" + +1514471372 source:e:\workspace\git\simplegui\gui\src\sgui_processbar.c + "SGUI_Basic.h" + "SGUI_ProcessBar.h" + +1513692014 e:\workspace\git\simplegui\gui\inc\sgui_processbar.h + "SGUI_Config.h" + "SGUI_Common.h" + +1514471372 source:e:\workspace\git\simplegui\gui\src\sgui_realtimegraph.c + "SGUI_Common.h" + "SGUI_Text.h" + "SGUI_RealtimeGraph.h" + +1514471372 source:e:\workspace\git\simplegui\gui\src\sgui_scrollbar.c + "SGUI_Basic.h" + "SGUI_ScrollBar.h" + +1514471372 source:e:\workspace\git\simplegui\gui\src\sgui_text.c + "SGUI_Common.h" + "SGUI_Text.h" + "SGUI_Basic.h" + + + + +1514471372 source:e:\workspace\git\simplegui\gui\src\sgui_variablebox.c + "SGUI_Common.h" + "SGUI_Basic.h" + "SGUI_Text.h" + "SGUI_VariableBox.h" + +1514609378 source:e:\workspace\git\simplegui\hmi\src\hmi_engine.c + "HMI_Engine.h" + "SGUI_Common.h" + +1514545660 source:e:\workspace\git\simplegui\interface\src\virtualdeviceinterface.cpp + "VirtualDeviceInterface.h" + "LCDFrame.h" + +1513254773 source:e:\workspace\git\simplegui\resource\resource.rc + "wx/msw/wx.rc" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\wx.rc + + "wx/msw/rcdefs.h" + +1456695217 d:\programs\codeblocks\wxwidgets-3.1.0\include\wx\msw\rcdefs.h + +1514546882 source:e:\workspace\git\simplegui\user\src\processmain.c + "ProcessMain.h" + "DemoProc.h" + + +1514546764 source:e:\workspace\git\simplegui\user\src\virtualdeviceinterface.c + "VirtualDeviceInterface.h" + +1514539571 source:e:\workspace\git\simplegui\wxexpand\src\wxdotlcd.cpp + + "wxDotLCD.h" + +1514614073 e:\workspace\git\simplegui\interface\inc\virtualdeviceinterface.h + + +1514554868 source:e:\workspace\git\simplegui\interface\src\useractioninterface.cpp + "UserActionInterface.h" + "VirtualDeviceInterface.h" + "DemoProc.h" + + +1514552658 e:\workspace\git\simplegui\interface\inc\useractioninterface.h + + + +1514609784 source:e:\workspace\git\simplegui\demo\src\demoproctext_utf-8.c + "DemoProcText.h" + +1514609864 e:\workspace\git\simplegui\demo\inc\demoproctext.h + "SGUI_Typedef.h" + diff --git a/Project/CodeBlocks/SimpleGUI.layout b/Project/CodeBlocks/SimpleGUI.layout new file mode 100644 index 0000000..5586b3a --- /dev/null +++ b/Project/CodeBlocks/SimpleGUI.layout @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Resource/Icons/ICON_Frame.bmp b/Resource/Icons/ICON_Frame.bmp deleted file mode 100644 index a1d0c6276186817c3878a775b1a6146d48269dff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6966 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 diff --git a/Resource/Icons/ICON_Main.ico b/Resource/Icons/ICON_Main.ico deleted file mode 100644 index 1e8c79a080f5370dd439cf74c8e0b99b0d50872f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 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 E0D^`&ivR!s diff --git a/Resource/Images/Application/About.png b/Resource/Images/Application/About.png new file mode 100644 index 0000000000000000000000000000000000000000..820697078e47433603a5746b8f23bcf273d370e5 GIT binary patch literal 16492 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 F{||np`_%vd literal 0 HcmV?d00001 diff --git a/Resource/Images/Application/ICON_LogFrame.ico b/Resource/Images/Application/ICON_LogFrame.ico new file mode 100644 index 0000000000000000000000000000000000000000..15e8eeda3d74accd044a10dc667cbc76b116c77a GIT binary patch literal 9278 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 literal 0 HcmV?d00001 diff --git a/Resource/Images/ToolBarIcons/About.png b/Resource/Images/ToolBarIcons/About.png new file mode 100644 index 0000000000000000000000000000000000000000..26bab7aeae379be2aafc81b58f1353e8656a8f41 GIT binary patch literal 644 zcmV-~0(&uw#fx|fEh2~qy-RNrgf^#ukYk`$(MrimyGh*L z?oVglb{7}C^}+Xc-pu#Sdo!67;y8x$EQz+p<6S71E1>I_fOD=fJW~U_2f{`}JayAYDjUWpLVT+$tOQZ(e}u$s~L@2%r8ZJb~1_rKfq%Owwm3L+tP-aQas(>%^4 z_%TQ{SravFV&`+$ry&AGQ8PSz@>AenpQ>``^b$>$KvgTPcDG;-EJ~n(EOPof zMv#o&U~6w5!r?80RoYozf%Q%o$Tu5+%2bFjet(6HUJueNfwt$dsY*Wu0T53<9w1Q( zLR$H|N4)&r08ObUqF#%Dx?+wuz;b{@-k{@c z!z8PZKpbx%X9Gk|5%k3HVK`R=;)u`72>J=pqQAQ2IPelh(6DXpKWX9=$3=@Hj3;Ts z5(YF|Eohb*H(mEDZm`0%`q&T^?kDW1K% zgL0taiYY-Ga-pFjE)H>WQ7SrfCk@XslB+%_8&WDy+t(&`^N(jnc^|D@FB4Q?OZ93Vi(X zhEIOTlbxqL+}bNFTSwORa01IA1z`6=ahB(rg8l8_==g}Gbcwh91J3*3SX;SGV|k66 zNsYjh)J|B!URm1JcIP-Yl`%2&+V?sk@BBCfFj$+a{5#c85D=i+h zM8LA+xj?(|7|-*lR;z?zNE}C`X-ut_NC=!75@~`l6;xFTb5)$w9|wOAd%ZI`qoH(9 zsiAx;27?*hZjSH!MUuUHa|gYCd5oW5z4+&gWLe$4ptBz=_9W!~b)5hH8h;5e06g!B U>9|C)UH||907*qoM6N<$f~VE?%m4rY literal 0 HcmV?d00001 diff --git a/Resource/Images/ToolBarIcons/DeviceConnect.png b/Resource/Images/ToolBarIcons/DeviceConnect.png new file mode 100644 index 0000000000000000000000000000000000000000..c1e6de857a8b82898be0619ff377fe7cdf36ebf4 GIT binary patch literal 1331 zcmaJ>ZAjc^98YJbrL*X2i?&qnS^P3wy(E`=OYl5%dA#;u=iGV28?@AT_o&%Byel2X_+$u_tsCM(|i_y}JtW*Y;;t!ovZxF=n=?9cEh65g{bhb_7Bx zsS`zzl;}ITfa(aMK$fF1GZuc8kEkst># zlRomPQ?YO}5LF!kmz}PS({38L89T!|Js!_t;Gh|rq8$|DsAW7n>)>e`Y&;~krYAc1 z2n=r6!Yd!yWttjKQR#Hro@VW;-bpbW$5|QWoi|pI- zic-7UWBN$!>C+HWT14*bGL21f#n?y|P8*exG>Wm)l%B&_@#R_J@b-*UY7=dk5%kRY z|J665eHx-7$WVLqIIdzx^%hgx8?t~KG4NqYPa<5!pww-k+(9_ZLp9!$LW&uJJ`zLi z2|2-wPTD~Sxqw@sy$l0`g2;+NmkW9r=;mk-m*<8Q!<3Xb%5&vsTwz--FX~7#RXwVz z-T7u{?ov(F=u$Nxwy>a8RuXF3up%6NH;^`0JVS`e9_qtVN< z4yOQv3?m2uujpbq8hTv;SAZoqh>0yB=ZGQ)StsXqI|WvRkYNI}R|o_GVlc>f9E{6N zQrHd3>W?k`lHbBjXiYb}A1^lV4^nWtb$mPamVDnp5IfpJP>5!JYHtI!46*j6?mG3{ z8h7<2nDmx>IQAplL4ld6>FISF6q#deSyg!Q$``E9cYJkzq`a76nEqzpIr^P*UZ?-g z!otnJAN=fjmpU;+pU(a}{oCzPTX8mfO6Vkwc2Q`tU?3^knw>b$)oT>^R$B z@px#i{`BK-A1-~}QrOx$y1%HTYItAyWc$+c^4V*PL*Ed7aH+Ja>f=9FZPf*3Wv|@2 zJ-S$N@nYQtn|~lSIWkh7yj)$h{Pxrod{R#RN)-HF9y>EVJ#lty?8S;qaq+3Yl*0Kl zdrQ^1mGmGO*tdV;pT%3%j|MgE@SX2Q&wuK_va@X0+-rijrsjeF{mO>!w_Ye*Zf!WU vbDnm;4vL5U1t(v=$=&yq9y$Nf0q_;^c}?$y51Ja>)^9A-*aU9`+J^oEEUC@L literal 0 HcmV?d00001 diff --git a/Resource/Images/ToolBarIcons/DeviceDisconnect.png b/Resource/Images/ToolBarIcons/DeviceDisconnect.png new file mode 100644 index 0000000000000000000000000000000000000000..c927744a9ac62eaf23fbdf02c5293e307283d131 GIT binary patch literal 1388 zcmaJ>eM}Q)96mnW2n(Gk*_1`Oog0~(w0FIJ&|8aM?|RTkSySpj|1ccwOM5BTJMONw zWt%}ZHjPtsun>ZoVRI-!w-`5P!lGtl6S9wN89HSe%?yEzI2UBZZNPR{0r_L$lDqfo zd7j_rd;7cCfuwW^b*^n25I6-< zA`aw%Q`H_XObHTz&3d#bfLc)4g6T2bWVKp1!A2BA4XDw88H+G0fg1@Fh36kcwI&7Y z2p`SN+fr8!B&;YRVKBtwaeW-u3sT5{*=#mV!)Pp05k+z`s<4TosJvl8fd+Cw;zWfL zqOhjO)(SDjfvBE72!R)UTqvx_i{epvK3Qto3<*{=V0zRbr7&823oMUkc?QofqGiPg z9yLf*2^Gu;PDW&5Qy<0s<>$f zqC)jSE=W)&)QB=R#zLaS7)CQBg;R{#Oj|M9VneOA1+F_PD{M3X7P#C)u4`E?K}mpB z1j#Q5^$X454GW4OhXoO)Dsi}qiw1?btkp^NO7jy)+%6DgB!P!hDI>Tg)?+c%G)ZBM z(N&D&MiWUh7)FxLV#6e8qwF$N9V)v_y#rp%IYPu!$c6i9k4hTx?bkn3iG1A`l-PUw+ z&DWP^h|*kVN3(8KOa8vnmrjp7`h0g*;Tt{H+#ST_?#S`E$GX4#wY%l}_dd^Jx4$)5 zl1FCzNS)}On0mV$K5^>&AAy_6&~#@CS#i%(-t>t5C~^H(NoToldi30wfA`3W z$B*>U2z%=1iD&W;?7*(1A7EU!+<9O9`Es9Yb)Q8_*0-J+vhVebZ-PcN|i@xbHU9#)b8k9-?-ZlDe?EdM@Hz#{U? LRnQ+fYnuN990l{; literal 0 HcmV?d00001 diff --git a/Resource/Images/ToolBarIcons/Exit.png b/Resource/Images/ToolBarIcons/Exit.png new file mode 100644 index 0000000000000000000000000000000000000000..aec67022bf4f8d30ed65ed298709be71a9880736 GIT binary patch literal 667 zcmV;M0%ZM(P)K#SX=FVMbSyC8z@BKid4q6k5{n{X!;8Qe$+x|*O}nVj)u z7-y#Q9Gy{n9e6lr=A8fU{GaDJBbcU%CpUzr0CM>M^O|ixG)%M&17IUu^p(Bj{CA$` zJRT34u>7;%Lmxqy^7OsU$@&I-xkO6=oQ;`$fC^wI-`+T6vYj()9K{#g{?Ol z4O$oXuHO{pVL$r$!@HuwKn@G=>&cdw=43aWPNUQ5pw((&C{M*}`?oWOjywm<^_5tX zBuuAMTTCMzK(&fQB8bQ1=yto%G!1iOSpx#t`Kl@pnukImxLhs{FqjR3(CGL3q3b#e zrX#>7$Au<|$RaJ2%Vi7(1N8fS?tl(h2Q1PuRu0~)q2}XK$?ny7JVuGVSF2T|QYqU3 z!DU&7q9}Y$U=B#mPI8q>#Re1#1=QJ!$z(XW zR;wYANFWxAEsD4XaItuC|JJ4hjZJ7H70l=J@%umk`bOQEFH_)dW9K0Tw-z<90ICMN z@8rUolbC{ajJI}iYZoALpjjzMGB*0YE~aNR0fNCGX0sU&3!qGv4n|`%AMWS>`UiQ> z;@CX(W-nd27!3phVz1ZZPMB`_Gnu$+UFSbN?la7#G}$>iY8|*e-r`<%JIdUO3d>5M z$`;)M{slM}WGQR`KiG-#1UoYg2P}g;lOF#RU;ulzGsevTih2M5002ovPDHLkV1h`J BD?0!H literal 0 HcmV?d00001 diff --git a/Resource/Images/ToolBarIcons/OpenScreenShotsFolder.png b/Resource/Images/ToolBarIcons/OpenScreenShotsFolder.png new file mode 100644 index 0000000000000000000000000000000000000000..87ff12017cecef023337de505cf617cc42300f09 GIT binary patch literal 390 zcmV;10eSw3P)D5GxJVQ~| z*hB-rL;t|Q&{Q}~PmBzV?-%qF%tS#AG*dV@FfzD6PVcevvU@Jl+ZEO=C}!C1s_ky3 zRg4i$K=)^=GN=`{_}H%qUxtWh;>!VZqb!3Huzeg(Mn!?)WP-2h6o>s527?j0PfMCp zcGPVLo!z6WcJ%&-SQ&%&msh?3t9d?WF7dmIy;Jf5Ch#AGztP&vlS%*Kv9t%#&J3J| zaIS@+#mf3xsaPs_yI}*D3>A!9TS|^djhAP$b2_z&|07YpM7rBw%QJE)*oErWC{w(jKhV7PX36 zHU3()GcUF6A(zyF*?sKn_cQZm-c#oDIhHXIkH;75r-z4!h{a-Wt_2{!OCCxj5@~W| zGMU|L=szgYXmmH7PQRQ?CRhG()fV}i5CX|$^0~-nv(HMUk_-fcL8MYCiM2KNUjX-j#k1M$cc*Viz{bW+6pLTs_uod)f7!HFtA+FPPw@Ey;OQ;^ z8tWSs1wPEoB#j- M07*qoM6N<$f-C4Evj6}9 literal 0 HcmV?d00001 diff --git a/Resource/Images/ToolBarIcons/SaveScreenShot.png b/Resource/Images/ToolBarIcons/SaveScreenShot.png new file mode 100644 index 0000000000000000000000000000000000000000..9a89d64ff4841c8c5c04e87201238f62899d1fc5 GIT binary patch literal 475 zcmV<10VMv3P)-f2*=SfpmNX`2X4R)K&5Aq2JC5nXKETHt(T zHkFKbh#&}ldXV%95>mcv#)G0xM^d3su*KNh9LT?44x^B!A_zH}PC@BrZ>GHmYZptJM5qzYn1*FAg-7oO`=Y`a6FMFaQ~!39)wO Rb8`Ry002ovPDHLkV1m>`$)W%N literal 0 HcmV?d00001 diff --git a/Resource/Images/ToolBarIcons/Settings.png b/Resource/Images/ToolBarIcons/Settings.png new file mode 100644 index 0000000000000000000000000000000000000000..fe8428588bcff7f6dce665339bca3ac501909307 GIT binary patch literal 907 zcmV;619bd}P)M^Y%OQfk+2__uO;t`F?)C^F8-aTCEn2H-=##5C|NOSuB=-qNogfjUnT{ zzP@4X>}s_d=#7nyt0Iv|j1y}Z1IGa<6huZwYIVAbvZSOl=_x5GMlzq7nYjlaA0HQ+ z&F1HPK0nFnbb{S(ht<_p@caG2@cDcSwfb6lY;3Fw`xg#}V?ZvK+XVuF6!j7o$*fQ) zYV~@(4l6Md(eCap?Ck6iF$t+mCQWZ`Z5^DM`O-^D$7E8hu+-!66cNC{($Z2(Wo2bg zO-+q1Dk{oIgzM|;;C8#g>-C=SdVP^qRaM1ud3pt|PfJWZRol_g@zCXRao7h&ZEkK( zPE1U28yXsPR;!h}wzf7I9v)8Nr!199S?F>(L8H-R(ljkG7z{TomihUip`lUsQTMmD zwkD^ir-KlS#lpo(qC-MLL|Iu`1rZSuK+|kUO-+@~&dz;pX=(Yiy}kXOg8#IHgaqS* zl9H-Kv)RYHrB5y${MdwB;_QF^jj_UJvxh@NLx0lv07B<*IER7f{)6A%&dY9W6!+KH z+qFXBufJ}0+cTOzOoD*D9`_j>90ZC>V`5@5E}zf2)c2%qy|}38dUWS*PuJt!9oJB_%_cruU9EIjtzHH|mK+F7YVnlf zF!eYE-HV=DE3VOm_CUrxJ-obDPJ5et_l=0G2-n12augpQkA5-Y7-E zJFKLK>|q~JmY;v|)xyGeCMPGa6Mv{Ou~-ZQfMT+^`7J^`b#)AiM@A^>{!u`=Qd!Ww zxM*i`b5&hD9?O{|$HxQS4?rIvVr2z{V`IR^-irb}g=RFf h&=1gx!|s0q3;;geOfYcTYux|<002ovPDHLkV1hp)p>+TN literal 0 HcmV?d00001 diff --git a/Resource/Images/ToolBarIcons/ShowLogWindow.png b/Resource/Images/ToolBarIcons/ShowLogWindow.png new file mode 100644 index 0000000000000000000000000000000000000000..95e571255ffe355806f0cf40e0db8cc2fd1f0449 GIT binary patch literal 584 zcmV-O0=NB%P)PbXFRCwB)Qol*rZ`ZKK z#&cly&6^+J&NuT!wOU;QFoo~Qos8pny47m^34-9iDhl~;lx76=J_oROv0I*!uI7oq#-drJ%hb# zYM-c-CR`XqA`Jbs1O70YPHWMv5jf5m6&aAGnJU{HqheOx3}|an)EfXO3KOFSf+SG` zQtP8rvXYN>4V`I{%~DKWkqthjkWk=oX;#sY{HJW+>OGKhJc|5x-bz`xR#YmLWlESG z-gUiR|DC@#o6Vi!90I?k4wKU)YmJ3o7bEXFj`Jb8-|y21B_t*4$I1mnQC&hEUoZ)WF2zu$i( zqC2|HzEx2a_w)JuGfmTfAzjy{!C>$V0%44y;c!U&|Ck_zASq?T9mk;{2xvN;B44OH z&m}uSLATqz>h{%YMZf?H0)Ze&654DwR}o}cb|4Un1BneNSg+S-Nl9YJn3PbNl#1)t zu4m= z&q)D(z@~LTVHp1b616S}s#IG7TSB|t=9)8>SF)Od9dl7|DOe@P(yD~DTK<7xUqV@y zG#{X$y8aHiBlQfc~$u{Y($wrgyCe7k=-ZZnU(vvQHcE0nz?|pZ6j-MOZsmW(Vy!Q)s z580u`L?s^4Pwv`cOVBg`|4rlSF|BoNOc4{cAut8r5Z2V#lRjqDwz4-27+!^!kXHKnCVVW^f@D% zuj)r*Yd6j~ouvh|Eemd~Cb8n9AZjnyg?Z4+j5>dI@{nOYe*}AV74=dnMCc$#;pv*KMNJYQeT`6jxTTlukqFl10-*lu~Y)dYFH8Vy|g`6?fNehd7P{ zp-UFUtW+u`VO^YmPdz;UoACoiM%5DJ)|Dq-@8kPV{_L}IzLN! z^m;w`zAyQ3`3Q*GvqulT%&7lQ#z(a;H&5%!_v8JIY7s#YU@#c`0X6pMp_iFxK7H$~ zR=PW(R})i?JNpuwwQu;<_a&^Uu}2TR+vO|wE^2n-O6>cCDMMfiydkU&_UQRLug>u= F>u+dq?onSAYEuqNUhK1`bFQl7AwF~>OVy^3D)za297caR68(5@8kr=E} zQg-n|cgu$idI?0ZhY9Thm4pywJrqK@+q&xd@64>F73z56t#Ps^`Wk387PdokuDaRfmx$+^B z91j$UNAE+BP;pPfD0gdQ#A-jn!FN>+Kwo}WkzlET-k84{lMS17$=~Vh)}*A3<*NQ| zPU-I~>xV{0UL}RaSj6ID5W(O)5x~NNpXOPZOfhZ>hWd}L=c&~Lh%4z)7z&-z4F(s; z31Du{k3hf+zyBAly|7vnT*}uqk^dOFqFahR#dY%Be_fw%n*86e+fy5qALr&-^+Sj) zyoqRAwy#hg%n!O>$or2g=|xojb!3+`%6_$)HFtXY z3w*vQR9Ej44TkzpJj>0eN03?fRFYmZ2y@jLc~_!e&F$;+K*MN^I;H&N^W4(%5_?_G z75T0<%+LFjE6yDn>L&$oxy)5WwDMCg^1KVLAbQX!c6+G)Kk}|bzh3VYhKC1{X083~ zc3YyzUw(h-ZQOQg9HIw9!!wDc@hWUh?TWJID{!=SW7GbYcbSE?EW_qp_IF?AMeT3t z-}fTYdJWr)ZzKN59r<2&l=dN};D&rx1#PdvD3@RYRezR;AMX4Jac^%%NAY273|}WF zC1Nf1M6A^F9*lAcCQ!bivx^xzxkP_%+M2*jGvo{EdytPb)!R{D(M5}olx USZ;1^4&hiLN9<{FIWPHt0k5`bg#Z8m diff --git a/Resource/Tools/Exit.bmp b/Resource/Tools/Exit.bmp deleted file mode 100644 index 937193301de3fb2af4bd41f251a038b73d5dea6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1078 zcmbu8J4gdT5Qaw(vXAU?oG(LRNR;G{R_riv ze^F=2GKiS@-y)iI5KRT3C?tN7j6v+I!+x8{AE>Qe)?F@PxZRKZlblXr)YJrZ$&~r| zsK;{)HV#(mq_o=SO3&%MHi+h@hGl#sBYHU0K zzohU%F*KxcN5?Vlb`cZ#ltX&9nwk#42Nixr3=iLNU*8$`_MUP>!#Zo4R*}Q)4uRh^ z)zY#DensI|#rXIG4-TGld;2ba3v;np2#Wt$t3H#4t9+_o(=BlIR?L~@F6iV zkzud*#$@eDp1<-&M-$*f3cn?MzC4eO-J6oUy|-7@lW!4iDg1VHdiuqfoP6TH=^6F2 zt<=v>pu77@pP6|z{Qh_TPIGf_?DG|juC7be?~YQxVf0S~JrO}~M9@D!O2!~I?7%nu HyLUeTqaR|w diff --git a/Resource/Tools/OpenFolder.bmp b/Resource/Tools/OpenFolder.bmp deleted file mode 100644 index a6369cb034ccbda5a6877a7d2d719427e4edaf88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1078 zcmc)Ju}cDB7{~D^Xpa7b#wJJi+WQk~XlZSTC@8|@^r$qDf(#^3h(d~JaEKfNp|lHw zh#;YY$nGfPr4!MPyI=2P3|T`#W&2KnM%0fmZtU+OIPy$#)}ee zxTWdC`0C9&!j}~#+;B^?nf0|&6_IP9gd1*Y?kE<2s3CT1E8&J)TF6GXo*LM=uPNb% zTMC>krz{7F$3{mf>jRx^zdGQSf;oMs;v)I%{E!wdw0s#e$9ElZOWLWnZv$!Jwc(j= zn9wiGw)yuxKIfLgg>fm^jpwcq=eL^ zGp93avsv3ZtV~PW5>tC^nNGvfAUuxLZ_hvLzQY6mmzU@Leg4n?dAI1J7VCblDD_;W zYWc5Pq+6-p)KcI5%NA;3L#G4&tJbbvdSuO-C8obEadP&?jVsPZA|s5C5BzaSUYvNn zes#vgM3{`~>zJCVF*z%_c(;P2n|bUupC+dG3`vFAT(K6DXU@fDD?sw%#79T3Gfqwp zbHQ1QrMrc~pcg|!Ddv|hsyjTGJ$9}(+oEzX~PT+SjSFHU@1+y=w+^cSApH$mt!GoR|{3O3O8 zWdP4mFE`sBaJ$37xyM$rT^20%3rJp^`1truCuU~860ARp)|^hrdy>bJ2CZTbnsqPQt^H^<2hr^D uXpRK5J4tBwlF^z{(A?>Y&9mUpWo7MB!~XsH<#ahY(Rx)0|4@2$s_qAU@7uHh diff --git a/wxExpand/inc/wxPixelPanel.h b/wxExpand/inc/wxDotLCD.h similarity index 69% rename from wxExpand/inc/wxPixelPanel.h rename to wxExpand/inc/wxDotLCD.h index 6b61421..3f0e8d0 100644 --- a/wxExpand/inc/wxPixelPanel.h +++ b/wxExpand/inc/wxDotLCD.h @@ -1,5 +1,5 @@ -#ifndef _INCLUDE_CLASS_PANELLCD_H__ -#define _INCLUDE_CLASS_PANELLCD_H__ +#ifndef _INCLUDE_CLASS_WXEX_PIXEL_PANEL_H__ +#define _INCLUDE_CLASS_WXEX_PIXEL_PANEL_H__ #include #include @@ -9,7 +9,7 @@ /// Class LCD_DisplayPanel /////////////////////////////////////////////////////////////////////////////// -class wxPixelPanel : public wxPanel +class wxDotLCD : public wxPanel { private: //Appearance parameters. // Colors @@ -27,20 +27,20 @@ private: //Appearance parameters. private: // Private data. uint32_t* m_parrDisplayBuffer; wxWindow* m_pclsParent; - void (wxPixelPanel::*m_pfDrawPoint)(wxMemoryDC& clsCDCObject, uint32_t uiPosX, uint32_t uiPosY, uint32_t uiPixelSize); + void (wxDotLCD::*m_pfDrawPoint)(wxMemoryDC& clsCDCObject, uint32_t uiPosX, uint32_t uiPosY, uint32_t uiPixelSize); private: // Private object; - wxClientDC m_CDC; - wxPen m_CPen; - wxBrush m_CBrush; + wxClientDC m_clsCDC; + wxPen m_clsPen; + wxBrush m_clsBrush; private: // Event callback function. - void wxEvent_OnPaint(wxPaintEvent &event) {OnPaint();event.Skip();} + void _wxEvent_OnPaint(wxPaintEvent &event) {OnPaint();event.Skip();} public: // Constructor/Destructor - wxPixelPanel(wxWindow *parent, wxWindowID winid = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxTAB_TRAVERSAL | wxNO_BORDER,const wxString& name = wxPanelNameStr); - ~wxPixelPanel(); + wxDotLCD(wxWindow *parent, wxWindowID winid = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxTAB_TRAVERSAL | wxNO_BORDER,const wxString& name = wxPanelNameStr); + ~wxDotLCD(); public: // Public interface void SetDisplaySizes(uint32_t uiEdgeWidth, uint32_t uiHorizontalPixelNumber, uint32_t uiVerticalPixelNumber, uint32_t uiPixelSize, bool bGridVisible); @@ -58,27 +58,26 @@ public: // Public interface void SetGridColor(const wxColor& clsColor); wxWindow* GetParentWindow(void); void OnPaint(void); - void SetPixel(uint32_t uiPosX, uint32_t uiPosY, wxColor& clsColor, bool bRefreshNow = false); + void SetPixelColor(uint32_t uiPosX, uint32_t uiPosY, wxColor& clsColor, bool bRefreshNow = false); void DrawPixel(uint32_t uiPosX, uint32_t uiPosY, wxColor& clsColor); - uint32_t GetPixel(uint32_t uiPosX, uint32_t uiPosY); + uint32_t GetPixelColor(uint32_t uiPosX, uint32_t uiPosY); void RefreshDisplay(void); void CleanPanel(void); - bool SaveToFile(const wxString& CStrFilePath); - bool CopyToClipBoard(void); + bool SaveScreenImageToFile(const wxString& strFilePath); + bool CopyScreenImageToClipBoard(void); void ResizeParent(void); private: // Private process function. - inline void DrawPointSinglePixel(wxMemoryDC& clsCDCObject, uint32_t uiPosX, uint32_t uiPosY, uint32_t uiPixelSize); inline void DrawPointMultiplePixel(wxMemoryDC& clsCDCObject, uint32_t uiPosX, uint32_t uiPosY, uint32_t uiPixelSize); inline void DrawPointMultiplePixelWithGrid(wxMemoryDC& clsCDCObject, uint32_t uiPosX, uint32_t uiPosY, uint32_t uiPixelSize); inline void ReleaseDC(wxMemoryDC& clsCDCObject) {clsCDCObject.SetBrush(wxNullBrush); clsCDCObject.SetPen(wxNullPen);} - inline void PrepareDC(wxMemoryDC& clsCDCObject) {clsCDCObject.SetBrush(m_CBrush); clsCDCObject.SetPen(m_CPen);} + inline void PrepareDC(wxMemoryDC& clsCDCObject) {clsCDCObject.SetBrush(m_clsBrush); clsCDCObject.SetPen(m_clsPen);} inline void ReleaseDC(wxClientDC& clsCDCObject) {clsCDCObject.SetBrush(wxNullBrush); clsCDCObject.SetPen(wxNullPen);} - inline void PrepareDC(wxClientDC& clsCDCObject) {clsCDCObject.SetBrush(m_CBrush); clsCDCObject.SetPen(m_CPen);} - inline void SetDCColor(const wxColor& clsColour) {m_CPen.SetColour(clsColour);m_CBrush.SetColour(clsColour);} + inline void PrepareDC(wxClientDC& clsCDCObject) {clsCDCObject.SetBrush(m_clsBrush); clsCDCObject.SetPen(m_clsPen);} + inline void SetDCColor(const wxColor& clsColour) {m_clsPen.SetColour(clsColour);m_clsBrush.SetColour(clsColour);} DECLARE_EVENT_TABLE(); }; -#endif // _INCLUDE_CLASS_PANELLCD_H__ +#endif // _INCLUDE_CLASS_WXEX_PIXEL_PANEL_H__ diff --git a/wxExpand/src/wxDotLCD.cpp b/wxExpand/src/wxDotLCD.cpp new file mode 100644 index 0000000..f7dbc46 --- /dev/null +++ b/wxExpand/src/wxDotLCD.cpp @@ -0,0 +1,549 @@ +//=======================================================================// +//= Include files. =// +//=======================================================================// +#include +#include "wxDotLCD.h" + +//=======================================================================// +//= Event table. =// +//=======================================================================// +BEGIN_EVENT_TABLE(wxDotLCD,wxPanel) + EVT_PAINT (wxDotLCD::_wxEvent_OnPaint) +END_EVENT_TABLE() + +//=======================================================================// +//= Function define. =// +//=======================================================================// +wxDotLCD::wxDotLCD(wxWindow *parent, wxWindowID winid, const wxPoint& pos, const wxSize& size, long style, const wxString& name): +wxPanel(parent, winid, pos, size, style, name), +m_clsCDC(this) +{ + m_pclsParent = parent; + m_parrDisplayBuffer = NULL; + m_pfDrawPoint = NULL; + + m_uiHorizontalPixelNumber = 0; + m_uiVerticalPixelNumber = 0; + m_uiPixelSize = 0; + m_uiEdgeWidth = 0; + m_bGridVisible = false; + + m_pclsEdgeColor = new wxColor(0x80, 0x80, 0x80, 0x00); + m_pclsBaseColor = new wxColor(0xFF, 0xFF, 0xFF, 0x00); + m_pclsGridColor = new wxColor(0x80, 0x80, 0x80, 0x00); +} + +wxDotLCD::~wxDotLCD() +{ + if(NULL != m_parrDisplayBuffer) + { + free(m_parrDisplayBuffer); + } + + delete m_pclsEdgeColor; + delete m_pclsBaseColor; + delete m_pclsGridColor; +} + +void wxDotLCD::SetDisplaySizes(uint32_t uiEdgeWidth, uint32_t uiHorizontalPixelNumber, uint32_t uiVerticalPixelNumber, uint32_t uiPixelSize, bool bGridVisible) +{ + // Set grid visible status. + m_uiEdgeWidth = uiEdgeWidth; + m_bGridVisible = bGridVisible; + m_uiPixelSize = uiPixelSize; + + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + if(m_uiPixelSize == 0) + { + m_pfDrawPoint = NULL; + } + else if(m_uiPixelSize == 1) + { + m_pfDrawPoint = &DrawPointSinglePixel; + } + else + { + if((true == bGridVisible) && (m_uiPixelSize > 2)) + { + m_pfDrawPoint = &DrawPointMultiplePixelWithGrid; + } + else + { + m_pfDrawPoint = &DrawPointMultiplePixel; + } + } + + // Free current buffer. + if(NULL != m_parrDisplayBuffer) + { + free(m_parrDisplayBuffer); + } + if((uiHorizontalPixelNumber > 0) && (uiVerticalPixelNumber > 0)) + { + uint32_t uiDisplayBufferSize; + // Recalculate buffer size. + m_uiHorizontalPixelNumber = uiHorizontalPixelNumber; + m_uiVerticalPixelNumber = uiVerticalPixelNumber; + uiDisplayBufferSize = m_uiHorizontalPixelNumber*m_uiVerticalPixelNumber; + // Reallocate display buffer; + m_parrDisplayBuffer = (uint32_t*)malloc(uiDisplayBufferSize*sizeof(uint32_t)); + if(NULL != m_parrDisplayBuffer) + { + // Clear memory. + memset(m_parrDisplayBuffer, 0x00, uiDisplayBufferSize); + } + } + else + { + m_uiHorizontalPixelNumber = 0; + m_uiVerticalPixelNumber = 0; + } +} + +void wxDotLCD::GetDisplaySize(uint32_t* puiEdgeWidth, uint32_t* puiHorizontalPixelNumber, uint32_t* puiVerticalPixelNumber, uint32_t* puiPixelSize, bool* pbGridVisible) +{ + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + if(NULL != puiEdgeWidth) + { + *puiEdgeWidth = m_uiEdgeWidth; + } + + if(NULL != puiHorizontalPixelNumber) + { + *puiHorizontalPixelNumber = m_uiHorizontalPixelNumber; + } + + if(NULL != puiVerticalPixelNumber) + { + *puiVerticalPixelNumber = m_uiVerticalPixelNumber; + } + + if(NULL != puiPixelSize) + { + *puiPixelSize = m_uiPixelSize; + } + + if(NULL != pbGridVisible) + { + *pbGridVisible = m_bGridVisible; + } +} + +void wxDotLCD::SetDisplayColors(const wxColor& clsEdgeColor, const wxColor& clsBaseColor, const wxColor& clsGridColor) +{ + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + if(NULL != m_pclsEdgeColor) + { + m_pclsEdgeColor->SetRGB(clsEdgeColor.GetRGB()); + } + if(NULL != m_pclsBaseColor) + { + m_pclsBaseColor->SetRGB(clsBaseColor.GetRGB()); + } + if(NULL != m_pclsGridColor) + { + m_pclsGridColor->SetRGB(clsGridColor.GetRGB()); + } +} + +void wxDotLCD::SetDisplayAreaSize( uint32_t uiHorizontalPixelNumber, uint32_t uiVerticalPixelNumber) +{ + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + m_uiHorizontalPixelNumber = uiHorizontalPixelNumber; + m_uiVerticalPixelNumber = uiVerticalPixelNumber; +} + +void wxDotLCD::SetEdgeWidth(uint32_t uiEdgeWidth) +{ + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + m_uiEdgeWidth = uiEdgeWidth; +} + +void wxDotLCD::SetPixelSize(uint32_t uiPixelSize) +{ + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + m_uiPixelSize = uiPixelSize; +} + +void wxDotLCD::SetGridVisibled(bool bGridVisible) +{ + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + m_bGridVisible = bGridVisible; +} + +void wxDotLCD::CleanPanel(void) +{ + /*----------------------------------*/ + /* Variable Declaration */ + /*----------------------------------*/ + uint32_t uiDisplayBufferSize; + + /*----------------------------------*/ + /* Initialize */ + /*----------------------------------*/ + uiDisplayBufferSize = m_uiHorizontalPixelNumber*m_uiVerticalPixelNumber; + + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + memset(m_parrDisplayBuffer, 0x00, sizeof(uint32_t)*uiDisplayBufferSize); + RefreshDisplay(); +} + +void wxDotLCD::SetEdgeColor(const wxColor& clsColor) +{ + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + if(NULL != m_pclsEdgeColor) + { + m_pclsEdgeColor->SetRGB(clsColor.GetRGB()); + } +} + +void wxDotLCD::SetBaseColor(const wxColor& clsColor) +{ + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + if(NULL != m_pclsBaseColor) + { + m_pclsBaseColor->SetRGB(clsColor.GetRGB()); + } +} + +void wxDotLCD::SetGridColor(const wxColor& clsColor) +{ + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + if(NULL != m_pclsGridColor) + { + m_pclsGridColor->SetRGB(clsColor.GetRGB()); + } +} + +void wxDotLCD::OnPaint(void) +{ + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + RefreshDisplay(); +} + + +void wxDotLCD::DrawPointSinglePixel(wxMemoryDC& clsCDCObject, uint32_t uiPosX, uint32_t uiPosY, uint32_t uiPixelSize) +{ + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + clsCDCObject.DrawPoint(wxPoint(m_uiEdgeWidth+uiPosX, m_uiEdgeWidth+uiPosY)); +} + +void wxDotLCD::DrawPointMultiplePixel(wxMemoryDC& clsCDCObject, uint32_t uiPosX, uint32_t uiPosY, uint32_t uiPixelSize) +{ + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + clsCDCObject.DrawRectangle(wxPoint(m_uiEdgeWidth+uiPosX*uiPixelSize, m_uiEdgeWidth+uiPosY*uiPixelSize), wxSize(uiPixelSize, uiPixelSize)); +} + +void wxDotLCD::DrawPointMultiplePixelWithGrid(wxMemoryDC& clsCDCObject, uint32_t uiPosX, uint32_t uiPosY, uint32_t uiPixelSize) +{ + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + clsCDCObject.DrawRectangle(wxPoint(m_uiEdgeWidth+uiPosX*uiPixelSize+1, m_uiEdgeWidth+uiPosY*uiPixelSize+1), wxSize(uiPixelSize-1, uiPixelSize-1)); +} + +/*************************************************************************/ +/** Function Name: SetPixelColor **/ +/** Purpose: Set a pixel RGBA color value. **/ +/** Params: **/ +/** @ uiPosX[in]: X-Coordinate of pixel. **/ +/** @ uiPosY[in]: Y-Coordinate of pixel. **/ +/** @ clsColor[in]: Color data object. **/ +/** @ bRefreshNow[in]: Refresh display at once, default to false. **/ +/** Return: None. **/ +/** Notice: This function only change the pixel color register **/ +/** if bRefreshNow is false(default), and when the **/ +/** parameter bRefreshNow is true, all pixel blocks of **/ +/** LCD screen panel will be repaint. if need to draw **/ +/** only one pixel, please use the DrawPixel function **/ +/** directly. **/ +/*************************************************************************/ +void wxDotLCD::SetPixelColor(uint32_t uiPosX, uint32_t uiPosY, wxColor& clsColor, bool bRefreshNow) +{ + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + if((uiPosX < m_uiHorizontalPixelNumber) && (uiPosY < m_uiVerticalPixelNumber)) + { + if(NULL != m_parrDisplayBuffer) + { + *(m_parrDisplayBuffer+uiPosX+(uiPosY*m_uiHorizontalPixelNumber)) = clsColor.GetRGBA(); + } + if(true == bRefreshNow) + { + RefreshDisplay(); + } + } +} + +uint32_t wxDotLCD::GetPixelColor(uint32_t uiPosX, uint32_t uiPosY) +{ + /*----------------------------------*/ + /* Variable Declaration */ + /*----------------------------------*/ + uint32_t uiReturnValue = 0x00; + + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + if((uiPosX < m_uiHorizontalPixelNumber) && (uiPosY < m_uiVerticalPixelNumber)) + { + if(NULL != m_parrDisplayBuffer) + { + uiReturnValue = *(m_parrDisplayBuffer+uiPosX+(uiPosY*m_uiHorizontalPixelNumber)); + } + } + + return uiReturnValue; +} + +/*************************************************************************/ +/** Function Name: DrawPixel **/ +/** Purpose: Draw a pixel. **/ +/** Params: **/ +/** @ uiPosX[in]: X-Coordinate of pixel. **/ +/** @ uiPosY[in]: Y-Coordinate of pixel. **/ +/** @ clsColor[in]: Color data object. **/ +/** Return: None. **/ +/** Notice: Draw only one pixel directly. **/ +/*************************************************************************/ +void wxDotLCD::DrawPixel(uint32_t uiPosX, uint32_t uiPosY, wxColor& clsColor) +{ + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + if(m_uiPixelSize != 0) + { + SetDCColor(clsColor); + PrepareDC(m_clsCDC); + if(m_uiPixelSize == 1) + { + m_clsCDC.DrawPoint(wxPoint(m_uiEdgeWidth+uiPosX, m_uiEdgeWidth+uiPosY)); + } + else + { + if((true == m_bGridVisible) && (m_uiPixelSize > 2)) + { + m_clsCDC.DrawRectangle(wxPoint(m_uiEdgeWidth+uiPosX*m_uiPixelSize+1, m_uiEdgeWidth+uiPosY*m_uiPixelSize+1), wxSize(m_uiPixelSize-1, m_uiPixelSize-1)); + } + else + { + m_clsCDC.DrawRectangle(wxPoint(m_uiEdgeWidth+uiPosX*m_uiPixelSize, m_uiEdgeWidth+uiPosY*m_uiPixelSize), wxSize(m_uiPixelSize, m_uiPixelSize)); + } + } + SetPixelColor(uiPosX, uiPosY, clsColor); + ReleaseDC(m_clsCDC); + } + + if(NULL != m_parrDisplayBuffer) + { + *(m_parrDisplayBuffer+uiPosX+(uiPosY*m_uiHorizontalPixelNumber)) = clsColor.GetRGBA(); + } + +} + +/*************************************************************************/ +/** Function Name: RefreshDisplay **/ +/** Purpose: Repaint LCD screen panel. **/ +/** Params: None. **/ +/** Return: None. **/ +/** Notice: Call this function after the SetPixelColor called, **/ +/** all pixels of the LCD panel will be repaint by the **/ +/** pixels's RGBA value register array. **/ +/*************************************************************************/ +void wxDotLCD::RefreshDisplay(void) +{ + /*----------------------------------*/ + /* Variable Declaration */ + /*----------------------------------*/ + uint32_t uiPaintSizeWidth, uiPaintSizeHeight; + + /*----------------------------------*/ + /* Initialize */ + /*----------------------------------*/ + uiPaintSizeWidth = m_uiHorizontalPixelNumber*m_uiPixelSize+m_uiEdgeWidth*2; + uiPaintSizeHeight = m_uiVerticalPixelNumber*m_uiPixelSize+m_uiEdgeWidth*2; + + // Set buffer size. + if((true == m_bGridVisible) && (2 < m_uiPixelSize)) + { + uiPaintSizeWidth++; + uiPaintSizeHeight++; + } + // Create buffer image and DC object. + wxBitmap clsBufferImage(uiPaintSizeWidth, uiPaintSizeHeight); + wxBufferedDC clsBufferedDC(&m_clsCDC, clsBufferImage); + + // Draw background. + SetDCColor(*m_pclsEdgeColor); + PrepareDC(clsBufferedDC); + clsBufferedDC.DrawRectangle(wxPoint(0, 0),wxSize(uiPaintSizeWidth, uiPaintSizeHeight)); + + // Draw grid line. + if((true == m_bGridVisible) && (2 < m_uiPixelSize)) + { + SetDCColor(*m_pclsGridColor); + PrepareDC(clsBufferedDC); + clsBufferedDC.DrawRectangle(wxPoint(m_uiEdgeWidth, m_uiEdgeWidth), + wxSize( m_uiHorizontalPixelNumber*m_uiPixelSize+1, + m_uiVerticalPixelNumber*m_uiPixelSize+1)); + } + + if(NULL != m_pfDrawPoint) + { + // Refresh each pixel on screen. + for(uint32_t i_H=0; i_H*m_pfDrawPoint)(clsBufferedDC, i_W, i_H, m_uiPixelSize); + } + } + } +} + +/*************************************************************************/ +/** Function Name: ResizeParent **/ +/** Purpose: Resize parent window to adapt current object size. **/ +/** Params: None. **/ +/** Return: None. **/ +/** Notice: Call this function after the SetPixelColor called, **/ +/** all pixels of the LCD panel will be repaint by the **/ +/** pixels's RGBA value register array. **/ +/*************************************************************************/ +void wxDotLCD::ResizeParent(void) +{ + /*----------------------------------*/ + /* Variable Declaration */ + /*----------------------------------*/ + uint32_t uiPaintSizeWidth, uiPaintSizeHeight; + + /*----------------------------------*/ + /* Initialize */ + /*----------------------------------*/ + // Get drawing area size. + uiPaintSizeWidth = m_uiHorizontalPixelNumber*m_uiPixelSize+m_uiEdgeWidth*2; + uiPaintSizeHeight = m_uiVerticalPixelNumber*m_uiPixelSize+m_uiEdgeWidth*2; + + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + if((true == m_bGridVisible) && (2 SetClientSize(uiPaintSizeWidth+1, uiPaintSizeHeight+1); + } + else + { + m_pclsParent->SetClientSize(uiPaintSizeWidth, uiPaintSizeHeight); + } +} + +/*************************************************************************/ +/** Function Name: SaveScreenImageToFile **/ +/** Purpose: Save current panel image to a jpeg file. **/ +/** Params: **/ +/** @ strFilePath[in]: Save file path. **/ +/** Return: **/ +/** @ true: Save successfully. **/ +/** @ false: Save failed. **/ +/** Notice: To support jpeg format, need add wxWidgets jpeg **/ +/** format handler in initialize(OnInit) function of **/ +/** the wxApp Object. **/ +/** wxImage::AddHandler(new wxJPEGHandler) **/ +/*************************************************************************/ +bool wxDotLCD::SaveScreenImageToFile(const wxString& strFilePath) +{ + /*----------------------------------*/ + /* Variable Declaration */ + /*----------------------------------*/ + // Create and initialize bitmap. + wxBitmap* pclsBitMap; + wxMemoryDC* pclsMemoryDC; + bool bReturn; + + /*----------------------------------*/ + /* Initialize */ + /*----------------------------------*/ + bReturn = false; + + /*----------------------------------*/ + /* Process */ + /*----------------------------------*/ + // Create bitmap buffer. + pclsBitMap = new wxBitmap(GetSize(), wxBITMAP_SCREEN_DEPTH); + if(NULL != pclsBitMap) + { + pclsMemoryDC = new wxMemoryDC(*pclsBitMap); + if(NULL != pclsMemoryDC) + { + bReturn = pclsMemoryDC->Blit(wxPoint(0, 0), GetSize(), &m_clsCDC, wxPoint(0, 0)); + if(true == bReturn) + { + bReturn = pclsBitMap->SaveFile(strFilePath, wxBITMAP_TYPE_JPEG); + } + } + } + // + delete pclsBitMap; + delete pclsMemoryDC; + + return bReturn; +} + +bool wxDotLCD::CopyScreenImageToClipBoard(void) +{ + uint32_t uiPictureWidth, uiPictureHeight; + // Get panel size + uiPictureWidth = GetSize().GetX(); + uiPictureHeight = GetSize().GetY(); + + wxBitmap CBitMap(uiPictureWidth, uiPictureHeight, wxBITMAP_SCREEN_DEPTH); + wxMemoryDC CMemoryDC(CBitMap); + CMemoryDC.Blit(wxPoint(0, 0), wxSize(uiPictureWidth, uiPictureHeight), &m_clsCDC, wxPoint(0, 0)); + + if(wxTheClipboard->Open()) + { + wxTheClipboard->SetData(new wxBitmapDataObject(CBitMap)); + wxTheClipboard->Close(); + return true; + } + else + { + return false; + } +} + +wxWindow* wxDotLCD::GetParentWindow(void) +{ + return m_pclsParent; +} diff --git a/wxExpand/src/wxPixelPanel.cpp b/wxExpand/src/wxPixelPanel.cpp deleted file mode 100644 index 7b75781..0000000 --- a/wxExpand/src/wxPixelPanel.cpp +++ /dev/null @@ -1,385 +0,0 @@ -#include -#include "wxPixelPanel.h" - -BEGIN_EVENT_TABLE(wxPixelPanel,wxPanel) - EVT_PAINT (wxPixelPanel::wxEvent_OnPaint) -END_EVENT_TABLE() -wxPixelPanel::wxPixelPanel(wxWindow *parent, wxWindowID winid, const wxPoint& pos, const wxSize& size, long style, const wxString& name): -wxPanel(parent, winid, pos, size, style, name), -m_CDC(this) -{ - m_pclsParent = parent; - m_parrDisplayBuffer = NULL; - m_pfDrawPoint = NULL; - - m_uiHorizontalPixelNumber = 0; - m_uiVerticalPixelNumber = 0; - m_uiPixelSize = 0; - m_uiEdgeWidth = 0; - m_bGridVisible = false; - - m_pclsEdgeColor = new wxColor(0x80, 0x80, 0x80, 0x00); - m_pclsBaseColor = new wxColor(0xFF, 0xFF, 0xFF, 0x00); - m_pclsGridColor = new wxColor(0x80, 0x80, 0x80, 0x00); -} - -wxPixelPanel::~wxPixelPanel() -{ - if(NULL != m_parrDisplayBuffer) - { - free(m_parrDisplayBuffer); - } - - delete m_pclsEdgeColor; - delete m_pclsBaseColor; - delete m_pclsGridColor; -} - -void wxPixelPanel::SetDisplaySizes(uint32_t uiEdgeWidth, uint32_t uiHorizontalPixelNumber, uint32_t uiVerticalPixelNumber, uint32_t uiPixelSize, bool bGridVisible) -{ - // Set grid visible status. - m_uiEdgeWidth = uiEdgeWidth; - m_bGridVisible = bGridVisible; - m_uiPixelSize = uiPixelSize; - - if(m_uiPixelSize == 0) - { - m_pfDrawPoint = NULL; - } - else if(m_uiPixelSize == 1) - { - m_pfDrawPoint = &DrawPointSinglePixel; - } - else - { - if((true == bGridVisible) && (m_uiPixelSize > 2)) - { - m_pfDrawPoint = &DrawPointMultiplePixelWithGrid; - } - else - { - m_pfDrawPoint = &DrawPointMultiplePixel; - } - } - - // Free current buffer. - if(NULL != m_parrDisplayBuffer) - { - free(m_parrDisplayBuffer); - } - if((uiHorizontalPixelNumber > 0) && (uiVerticalPixelNumber > 0)) - { - uint32_t uiDisplayBufferSize; - // Recalculate buffer size. - m_uiHorizontalPixelNumber = uiHorizontalPixelNumber; - m_uiVerticalPixelNumber = uiVerticalPixelNumber; - uiDisplayBufferSize = m_uiHorizontalPixelNumber*m_uiVerticalPixelNumber; - // Reallocate display buffer; - m_parrDisplayBuffer = (uint32_t*)malloc(uiDisplayBufferSize*sizeof(uint32_t)); - if(NULL != m_parrDisplayBuffer) - { - // Clear memory. - memset(m_parrDisplayBuffer, 0x00, uiDisplayBufferSize); - } - } - else - { - m_uiHorizontalPixelNumber = 0; - m_uiVerticalPixelNumber = 0; - } -} - -void wxPixelPanel::GetDisplaySize(uint32_t* puiEdgeWidth, uint32_t* puiHorizontalPixelNumber, uint32_t* puiVerticalPixelNumber, uint32_t* puiPixelSize, bool* pbGridVisible) -{ - if(NULL != puiEdgeWidth) - { - *puiEdgeWidth = m_uiEdgeWidth; - } - - if(NULL != puiHorizontalPixelNumber) - { - *puiHorizontalPixelNumber = m_uiHorizontalPixelNumber; - } - - if(NULL != puiVerticalPixelNumber) - { - *puiVerticalPixelNumber = m_uiVerticalPixelNumber; - } - - if(NULL != puiPixelSize) - { - *puiPixelSize = m_uiPixelSize; - } - - if(NULL != pbGridVisible) - { - *pbGridVisible = m_bGridVisible; - } -} - -void wxPixelPanel::SetDisplayColors(const wxColor& clsEdgeColor, const wxColor& clsBaseColor, const wxColor& clsGridColor) -{ - if(NULL != m_pclsEdgeColor) - { - m_pclsEdgeColor->SetRGB(clsEdgeColor.GetRGB()); - } - if(NULL != m_pclsBaseColor) - { - m_pclsBaseColor->SetRGB(clsBaseColor.GetRGB()); - } - if(NULL != m_pclsGridColor) - { - m_pclsGridColor->SetRGB(clsGridColor.GetRGB()); - } -} - -void wxPixelPanel::SetDisplayAreaSize( uint32_t uiHorizontalPixelNumber, uint32_t uiVerticalPixelNumber) -{ - m_uiHorizontalPixelNumber = uiHorizontalPixelNumber; - m_uiVerticalPixelNumber = uiVerticalPixelNumber; -} - -void wxPixelPanel::SetEdgeWidth(uint32_t uiEdgeWidth) -{ - m_uiEdgeWidth = uiEdgeWidth; -} - -void wxPixelPanel::SetPixelSize(uint32_t uiPixelSize) -{ - m_uiPixelSize = uiPixelSize; -} - -void wxPixelPanel::SetGridVisibled(bool bGridVisible) -{ - m_bGridVisible = bGridVisible; -} - -void wxPixelPanel::CleanPanel(void) -{ - uint32_t uiDisplayBufferSize; - uiDisplayBufferSize = m_uiHorizontalPixelNumber*m_uiVerticalPixelNumber; - memset(m_parrDisplayBuffer, 0x00, sizeof(uint32_t)*uiDisplayBufferSize); - RefreshDisplay(); -} - -void wxPixelPanel::SetEdgeColor(const wxColor& clsColor) -{ - if(NULL != m_pclsEdgeColor) - { - m_pclsEdgeColor->SetRGB(clsColor.GetRGB()); - } -} - -void wxPixelPanel::SetBaseColor(const wxColor& clsColor) -{ - if(NULL != m_pclsBaseColor) - { - m_pclsBaseColor->SetRGB(clsColor.GetRGB()); - } -} - -void wxPixelPanel::SetGridColor(const wxColor& clsColor) -{ - if(NULL != m_pclsGridColor) - { - m_pclsGridColor->SetRGB(clsColor.GetRGB()); - } -} - -void wxPixelPanel::OnPaint(void) -{ - RefreshDisplay(); -} - - -void wxPixelPanel::DrawPointSinglePixel(wxMemoryDC& clsCDCObject, uint32_t uiPosX, uint32_t uiPosY, uint32_t uiPixelSize) -{ - clsCDCObject.DrawPoint(wxPoint(m_uiEdgeWidth+uiPosX, m_uiEdgeWidth+uiPosY)); -} - -void wxPixelPanel::DrawPointMultiplePixel(wxMemoryDC& clsCDCObject, uint32_t uiPosX, uint32_t uiPosY, uint32_t uiPixelSize) -{ - clsCDCObject.DrawRectangle(wxPoint(m_uiEdgeWidth+uiPosX*uiPixelSize, m_uiEdgeWidth+uiPosY*uiPixelSize), wxSize(uiPixelSize, uiPixelSize)); -} - -void wxPixelPanel::DrawPointMultiplePixelWithGrid(wxMemoryDC& clsCDCObject, uint32_t uiPosX, uint32_t uiPosY, uint32_t uiPixelSize) -{ - clsCDCObject.DrawRectangle(wxPoint(m_uiEdgeWidth+uiPosX*uiPixelSize+1, m_uiEdgeWidth+uiPosY*uiPixelSize+1), wxSize(uiPixelSize-1, uiPixelSize-1)); -} - -void wxPixelPanel::SetPixel(uint32_t uiPosX, uint32_t uiPosY, wxColor& clsColor, bool bRefreshNow) -{ - if((uiPosX < m_uiHorizontalPixelNumber) && (uiPosY < m_uiVerticalPixelNumber)) - { - if(NULL != m_parrDisplayBuffer) - { - *(m_parrDisplayBuffer+uiPosX+(uiPosY*m_uiHorizontalPixelNumber)) = clsColor.GetRGBA(); - } - if(true == bRefreshNow) - { - RefreshDisplay(); - } - } -} - -uint32_t wxPixelPanel::GetPixel(uint32_t uiPosX, uint32_t uiPosY) -{ - uint32_t uiReturnValue = 0x00; - - if((uiPosX < m_uiHorizontalPixelNumber) && (uiPosY < m_uiVerticalPixelNumber)) - { - if(NULL != m_parrDisplayBuffer) - { - uiReturnValue = *(m_parrDisplayBuffer+uiPosX+(uiPosY*m_uiHorizontalPixelNumber)); - } - } - - return uiReturnValue; -} - -void wxPixelPanel::DrawPixel(uint32_t uiPosX, uint32_t uiPosY, wxColor& clsColor) -{ - /*----------------------------------*/ - /* Process */ - /*----------------------------------*/ - if(m_uiPixelSize != 0) - { - SetDCColor(clsColor); - PrepareDC(m_CDC); - if(m_uiPixelSize == 1) - { - m_CDC.DrawPoint(wxPoint(m_uiEdgeWidth+uiPosX, m_uiEdgeWidth+uiPosY)); - } - else - { - if((true == m_bGridVisible) && (m_uiPixelSize > 2)) - { - m_CDC.DrawRectangle(wxPoint(m_uiEdgeWidth+uiPosX*m_uiPixelSize+1, m_uiEdgeWidth+uiPosY*m_uiPixelSize+1), wxSize(m_uiPixelSize-1, m_uiPixelSize-1)); - } - else - { - m_CDC.DrawRectangle(wxPoint(m_uiEdgeWidth+uiPosX*m_uiPixelSize, m_uiEdgeWidth+uiPosY*m_uiPixelSize), wxSize(m_uiPixelSize, m_uiPixelSize)); - } - } - SetPixel(uiPosX, uiPosY, clsColor); - ReleaseDC(m_CDC); - } -} - - -void wxPixelPanel::RefreshDisplay(void) -{ - uint32_t uiPaintSizeWidth, uiPaintSizeHeight; - - uiPaintSizeWidth = m_uiHorizontalPixelNumber*m_uiPixelSize+m_uiEdgeWidth*2; - uiPaintSizeHeight = m_uiVerticalPixelNumber*m_uiPixelSize+m_uiEdgeWidth*2; - - // Set buffer size. - if((true == m_bGridVisible) && (2 < m_uiPixelSize)) - { - uiPaintSizeWidth++; - uiPaintSizeHeight++; - } - // Create buffer image and DC object. - wxBitmap clsBufferImage(uiPaintSizeWidth, uiPaintSizeHeight); - wxBufferedDC clsBufferedDC(&m_CDC, clsBufferImage); - - // Draw background. - SetDCColor(*m_pclsEdgeColor); - PrepareDC(clsBufferedDC); - clsBufferedDC.DrawRectangle(wxPoint(0, 0),wxSize(uiPaintSizeWidth, uiPaintSizeHeight)); - - // Draw grid line. - if((true == m_bGridVisible) && (2 < m_uiPixelSize)) - { - SetDCColor(*m_pclsGridColor); - PrepareDC(clsBufferedDC); - clsBufferedDC.DrawRectangle(wxPoint(m_uiEdgeWidth, m_uiEdgeWidth), - wxSize( m_uiHorizontalPixelNumber*m_uiPixelSize+1, - m_uiVerticalPixelNumber*m_uiPixelSize+1)); - } - - if(NULL != m_pfDrawPoint) - { - // Refresh each pixel on screen. - for(uint32_t i_H=0; i_H*m_pfDrawPoint)(clsBufferedDC, i_W, i_H, m_uiPixelSize); - } - } - } -} - -void wxPixelPanel::ResizeParent(void) -{ - /*----------------------------------*/ - /* Variable Declaration */ - /*----------------------------------*/ - uint32_t uiPaintSizeWidth, uiPaintSizeHeight; - - /*----------------------------------*/ - /* Initialize */ - /*----------------------------------*/ - // Get drawing area size. - uiPaintSizeWidth = m_uiHorizontalPixelNumber*m_uiPixelSize+m_uiEdgeWidth*2; - uiPaintSizeHeight = m_uiVerticalPixelNumber*m_uiPixelSize+m_uiEdgeWidth*2; - - /*----------------------------------*/ - /* Process */ - /*----------------------------------*/ - if((true == m_bGridVisible) && (2 SetClientSize(uiPaintSizeWidth+1, uiPaintSizeHeight+1); - } - else - { - m_pclsParent->SetClientSize(uiPaintSizeWidth, uiPaintSizeHeight); - } -} - -bool wxPixelPanel::SaveToFile(const wxString& CStrFilePath) -{ - // Create and initialize bitmap. - uint32_t uiPictureWidth, uiPictureHeight; - - // Get panel size - uiPictureWidth = GetSize().GetX(); - uiPictureHeight = GetSize().GetY(); - - wxBitmap CBitMap(uiPictureWidth, uiPictureHeight, wxBITMAP_SCREEN_DEPTH); - wxMemoryDC CMemoryDC(CBitMap); - CMemoryDC.Blit(wxPoint(0, 0), wxSize(uiPictureWidth, uiPictureHeight), &m_CDC, wxPoint(0, 0)); - return CBitMap.SaveFile(CStrFilePath, wxBITMAP_TYPE_JPEG); -} - -bool wxPixelPanel::CopyToClipBoard(void) -{ - uint32_t uiPictureWidth, uiPictureHeight; - // Get panel size - uiPictureWidth = GetSize().GetX(); - uiPictureHeight = GetSize().GetY(); - - wxBitmap CBitMap(uiPictureWidth, uiPictureHeight, wxBITMAP_SCREEN_DEPTH); - wxMemoryDC CMemoryDC(CBitMap); - CMemoryDC.Blit(wxPoint(0, 0), wxSize(uiPictureWidth, uiPictureHeight), &m_CDC, wxPoint(0, 0)); - - if(wxTheClipboard->Open()) - { - wxTheClipboard->SetData(new wxBitmapDataObject(CBitMap)); - wxTheClipboard->Close(); - return true; - } - else - { - return false; - } -} - -wxWindow* wxPixelPanel::GetParentWindow(void) -{ - return m_pclsParent; -}