/** * @brief Paints of the owner drawn button. * @param hObj: pointer to button handle * @retval None */ static void _OnPaint(BUTTON_Handle hObj) { int Index; GUI_RECT Rect; Index = (WIDGET_GetState(hObj) & BUTTON_STATE_PRESSED) ? 1 : 0; GUI_SetBkColor(FRAMEWIN_GetDefaultClientColor()); GUI_Clear(); WM_GetClientRect(&Rect); /* Draw button background */ if(Index) { GUI_SetColor(0x40000000 | GUI_GRAY); } else { GUI_SetColor(0x40000000 | GUI_DARKGRAY); } GUI_FillRectEx(&Rect); /* Draw black shape */ GUI_SetColor(GUI_DARKGRAY); GUI_DrawRectEx(&Rect); GUI_DrawBitmap(&bmSTLogo40x20, 0, 0); }
/******************************************************************* * * _DemoFade */ static void _DemoFade(void) { GUI_MEMDEV_Handle hMem0, hMem1; GUI_RECT Rect = {0}; int x, y, v = 0, vz = 4; int xSize, ySize; xSize = LCD_GetXSize(); ySize = LCD_GetYSize(); hMem0 = GUI_MEMDEV_CreateFixed(0, 0, 138, 65, GUI_MEMDEV_NOTRANS, GUI_MEMDEV_APILIST_32, GUICC_888); /* Contains the text */ hMem1 = GUI_MEMDEV_CreateFixed(0, 0, 138, 65, GUI_MEMDEV_NOTRANS, GUI_MEMDEV_APILIST_32, GUICC_888); /* Contains the bitmap */ x = (xSize - _bmSeggerLogoBlue.XSize) / 2; y = (ySize - _bmSeggerLogoBlue.YSize) / 3 * 2; Rect.x1 = _bmSeggerLogoBlue.XSize - 1; Rect.y1 = _bmSeggerLogoBlue.YSize - 1; /* Fill memory device with some text */ GUI_MEMDEV_Select(hMem0); GUI_SetColor(GUI_RED); GUI_SetFont(&GUI_Font32B_ASCII); GUI_SetTextMode(GUI_TM_TRANS); GUI_DispStringInRect("Fade in", &Rect, GUI_TA_HCENTER | GUI_TA_VCENTER); GUI_DrawRectEx(&Rect); /* Fill memory device with bitmap */ GUI_MEMDEV_Select(hMem1); GUI_DrawBitmap(&_bmSeggerLogoBlue, 0, 0); /* Set device positions */ GUI_MEMDEV_SetOrg(hMem0, x, y); GUI_MEMDEV_SetOrg(hMem1, x, y); GUI_MEMDEV_Select(0); /* Fading loop */ while (1) { GUI_MEMDEV_FadeDevices(hMem0, hMem1, 1000); GUI_MEMDEV_FadeDevices(hMem1, hMem0, 1000); } }
/********************************************************************* * * MYWIDGET_Callback */ void MYWIDGET_Callback(WM_MESSAGE * pMsg) { MYWIDGET_Handle hWin; GUI_PID_STATE * pState; MYWIDGET_Obj MyWidget; GUI_RECT WinRect; int ColorIndex; U8 Pressed; hWin = pMsg->hWin; WM_GetWindowRectEx(hWin, &WinRect); GUI_MoveRect(&WinRect, -WinRect.x0, -WinRect.y0); WM_GetUserData(hWin, &MyWidget, sizeof(MYWIDGET_Obj)); switch (pMsg->MsgId) { case WM_PAINT: if (WM_IsEnabled(hWin)) { if (MyWidget.Pressed) { ColorIndex = MYWIDGET_CI_PRESSED; } else { ColorIndex = MYWIDGET_CI_UNPRESSED; } } else { ColorIndex = MYWIDGET_CI_DISABLED; } GUI_SetColor(MyWidget.aBkColor[ColorIndex]); GUI_FillRectEx(&WinRect); if (WM_HasFocus(hWin)) { GUI_SetColor(MyWidget.FocusColor); GUI_DrawRectEx(&WinRect); } GUI_SetColor(MyWidget.aTextColor[ColorIndex]); GUI_SetTextMode(GUI_TM_TRANS); GUI_DispStringInRect(MyWidget.pText, &WinRect, GUI_TA_HCENTER | GUI_TA_VCENTER); break; case WM_TOUCH: pState = (GUI_PID_STATE *)pMsg->Data.p; if (pState) { Pressed = pState->Pressed; } else { Pressed = 0; } if (MyWidget.Pressed != Pressed) { MyWidget.Pressed = Pressed; WM_SetUserData(hWin, &MyWidget, sizeof(MYWIDGET_Obj)); if (Pressed) { WM_SetFocus(hWin); } WM_InvalidateWindow(hWin); } break; case WM_SET_FOCUS: if (pMsg->Data.v) { pMsg->Data.v = 0; } WM_InvalidateWindow(hWin); break; default: WM_DefaultProc(pMsg); } }
/******************************************************************* * * _cbWindow */ static void _cbWindow(WM_MESSAGE* pMsg) { GUI_RECT Rect; switch (pMsg->MsgId) { case WM_PAINT: WM_GetInsideRect(&Rect); GUI_SetBkColor(GUI_RED); GUI_SetColor(GUI_YELLOW); GUI_ClearRectEx(&Rect); GUI_DrawRectEx(&Rect); GUI_SetColor(GUI_BLACK); GUI_SetFont(&GUI_Font8x16); GUI_DispStringHCenterAt("Foreground window", 75, 40); break; default: WM_DefaultProc(pMsg); } }
/******************************************************************* * * _cbChild */ static void _cbChild(WM_MESSAGE* pMsg) { GUI_RECT Rect; int x, y; switch (pMsg->MsgId) { case WM_PAINT: WM_GetInsideRect(&Rect); GUI_SetBkColor(_ChildColor); GUI_SetColor(_ChildFrame); GUI_ClearRectEx(&Rect); GUI_DrawRectEx(&Rect); GUI_SetColor(GUI_RED); GUI_SetFont(&GUI_Font24_ASCII); x = WM_GetWindowSizeX(pMsg->hWin); y = WM_GetWindowSizeY(pMsg->hWin); GUI_DispStringHCenterAt("Child window", x / 2, (y / 2) - 12); break; default: WM_DefaultProc(pMsg); } }
/******************************************************************* * * _cbWindow2 */ static void _cbWindow2(WM_MESSAGE * pMsg) { GUI_RECT Rect; int x; int y; switch (pMsg->MsgId) { case WM_PAINT: WM_GetInsideRect(&Rect); GUI_SetBkColor(_WindowColor2); GUI_SetColor(_FrameColor2); GUI_ClearRectEx(&Rect); GUI_DrawRectEx(&Rect); GUI_SetColor(GUI_WHITE); GUI_SetFont(&GUI_Font24_ASCII); x = WM_GetWindowSizeX(pMsg->hWin); y = WM_GetWindowSizeY(pMsg->hWin); GUI_DispStringHCenterAt("Window 2", x / 2, (y / 4) - 12); break; default: WM_DefaultProc(pMsg); } }
/** * @brief Callback routine for informing user about exploring disk * @param pMsg: pointer to data structure of type WM_MESSAGE * @retval None */ static void _cbHint(WM_MESSAGE * pMsg) { GUI_RECT Rect; switch (pMsg->MsgId) { case WM_PAINT: GUI_SetBkColor(GUI_LIGHTBLUE); GUI_Clear(); GUI_SetColor(GUI_WHITE); GUI_SetFont(&GUI_Font16_1HK); GUI_DispStringHCenterAt("Populating Tree view...", 90 , 10); GUI_SetFont(GUI_DEFAULT_FONT); WM_GetClientRect(&Rect); GUI_SetColor(GUI_DARKGRAY); GUI_DrawRectEx(&Rect); break; default: WM_DefaultProc(pMsg); break; } }
/********************************************************************* * * MainTask */ void MainTask(void) { const char * pText; GUI_RECT Rect; U16 xSizeScreen; U16 ySizeScreen; U16 xSizeItem; U16 ySizeItem; U16 xSize; U16 ySize; U16 xOff; U16 yOff; U8 NumLanguagesCSV; U8 ItemCnt; U8 LangCnt; GUI_Init(); GUI_UC_SetEncodeUTF8(); xSizeScreen = LCD_GetXSize(); ySizeScreen = LCD_GetYSize(); if ((xSizeScreen < XSIZE_MIN) || (ySizeScreen < YSIZE_MIN)) { GUI_DEBUG_ERROROUT("Inaccurate display size."); } // // Stretch the sample up to a size of #define XSIZE_MAX * YSIZE_MAX. // Above that display size the sample is centered on the according axis. // if (xSizeScreen > XSIZE_MAX) { xOff = (xSizeScreen - XSIZE_MAX) / 2; xSize = XSIZE_MAX; } else { xOff = 0; xSize = xSizeScreen; } if (ySizeScreen > YSIZE_MAX) { yOff = (ySizeScreen - YSIZE_MAX) / 2; ySize = YSIZE_MAX; } else { yOff = 0; ySize = ySizeScreen; } #ifdef WIN32 _CreateLanguageResources(); #endif // // Draw background // xSizeItem = xSize / NUM_LANGUAGES; ySizeItem = (ySize - HEIGHT_TOP) / NUM_ITEMS; GUI_SetBkColor(GUI_DARKBLUE); GUI_Clear(); GUI_DrawGradientV(0, HEIGHT_TOP, xSizeScreen - 1, ySizeScreen - 1, GUI_DARKBLUE, GUI_DARKGRAY); // // Draw frames // Rect.x0 = xOff + BORDER_SIZE; Rect.x1 = xOff + xSizeItem * 2 - BORDER_SIZE; Rect.y0 = yOff + HEIGHT_TOP + BORDER_SIZE; Rect.y1 = ySizeScreen - yOff - BORDER_SIZE - 1; GUI_DrawRectEx(&Rect); GUI_DrawHLine(Rect.y0 + ySizeItem, Rect.x0, Rect.x1); Rect.x0 = xOff + xSizeItem * 2 + BORDER_SIZE; Rect.x1 = xSizeScreen - xOff - BORDER_SIZE; GUI_DrawRectEx(&Rect); GUI_DrawHLine(Rect.y0 + ySizeItem, Rect.x0, Rect.x1); // // Display headlines // GUI_SetFont(&GUI_Font20B_ASCII); GUI_SetTextMode(GUI_TM_TRANS); Rect.x0 = xOff; Rect.x1 = xOff + xSize - 1; Rect.y0 = yOff; Rect.y1 = yOff + HEIGHT_HEADLINE_1 - 1; GUI_DispStringInRect("emWin - Language Resources", &Rect, GUI_TA_HCENTER | GUI_TA_VCENTER); GUI_SetFont(&GUI_Font13B_ASCII); Rect.x1 = xOff + xSizeItem * 2 - 1; Rect.y0 = yOff + HEIGHT_HEADLINE_1; Rect.y1 = yOff + HEIGHT_TOP - 1; GUI_DispStringInRect("CSV file", &Rect, GUI_TA_HCENTER | GUI_TA_VCENTER); Rect.x0 = Rect.x1; Rect.x1 = xSizeScreen - xOff - 1; GUI_DispStringInRect("Text file", &Rect, GUI_TA_HCENTER | GUI_TA_VCENTER); // // Load resource files // GUI_LANG_SetMaxNumLang(NUM_LANGUAGES); #ifdef WIN32 NumLanguagesCSV = GUI_LANG_LoadCSVEx(_GetData, &_ResFileName[0]); GUI_LANG_LoadTextEx(_GetData, &_ResFileName[1], NumLanguagesCSV); #else NumLanguagesCSV = GUI_LANG_LoadCSV(_acGUI_LANG_CSV_Ger_Eng, sizeof(_acGUI_LANG_CSV_Ger_Eng)); GUI_LANG_LoadText(_acGUI_LANG_TXT_Jap, sizeof(_acGUI_LANG_TXT_Jap), NumLanguagesCSV); #endif // // Display the resource text in the calculated rectangle // using the according font for headline and body. // for (LangCnt = 0; LangCnt < NUM_LANGUAGES; LangCnt++) { Rect.x0 = xOff + LangCnt * xSizeItem; Rect.x1 = Rect.x0 + xSizeItem; for (ItemCnt = 0; ItemCnt < NUM_ITEMS; ItemCnt++) { pText = GUI_LANG_GetTextEx(ItemCnt, LangCnt); Rect.y0 = yOff + HEIGHT_TOP + (ItemCnt * ySizeItem); Rect.y1 = Rect.y0 + ySizeItem; if (ItemCnt == 0) { GUI_SetFont(_Languages[LangCnt].pFontHeadline); } else { GUI_SetFont(_Languages[LangCnt].pFontBody); } GUI_DispStringInRect(pText, &Rect, GUI_TA_HCENTER | GUI_TA_VCENTER); } } while (1) { GUI_Delay(100); } }