/********************************************************************* * * GUIDEMO_ShowIntro * * This function has to be called by every sample */ void GUIDEMO_ShowIntro(const char * acTitle, const char * acDescription) { int xSize, ySize, xCenter, yCenter, FontDistY, TimeWait, i; xSize = LCD_GetXSize(); ySize = LCD_GetYSize(); xCenter = xSize >> 1; yCenter = ySize >> 1; GUIDEMO_HideInfoWin(); GUIDEMO_ShowControlWin(); GUI_Exec(); GUIDEMO_DrawBk(1); GUI_SetColor(GUI_WHITE); // // Title // GUI_SetTextMode(GUI_TM_TRANS); GUI_SetFont(&GUI_FontRounded22); GUI_DispStringHCenterAt(acTitle, xCenter, 60); // // Description // GUI_SetFont(&GUI_FontSouvenir18); FontDistY = GUI_GetFontDistY(); GUI_DispStringHCenterAt(acDescription, xCenter, yCenter - FontDistY + 10); // // Determine time to wait // i = 0; while (acDescription[i]) { i++; } TimeWait = i * 80; GUIDEMO_Wait(TimeWait); }
/********************************************************************* * * _cbBk */ static void _cbBk_test(WM_MESSAGE * pMsg) { switch (pMsg->MsgId) { case WM_PAINT: GUIDEMO_DrawBk(1); break; default: WM_DefaultProc(pMsg); } }
/********************************************************************* * * MainTask */ void GUIDEMO_AntialiasedText(void) { unsigned OldAlphaState; GUIDEMO_ShowIntro("Antialiased Text", "Output antialiased text\non different backgrounds."); GUIDEMO_DrawBk(); GUIDEMO_DispTitle("Antialiased text sample"); OldAlphaState = GUI_EnableAlpha(1); _DrawScreen(); GUIDEMO_Wait(4000); GUI_EnableAlpha(OldAlphaState); }
/********************************************************************* * * GUIDEMO_Intro * ********************************************************************** */ void GUIDEMO_Intro(void) { char acVersion[30] = "Version of emWin: "; int xCenter, xSize, ySize; xSize = LCD_GetXSize(); ySize = LCD_GetYSize(); xCenter = xSize >> 1; GUIDEMO_DrawBk(0); GUI_AA_SetFactor(3); GUI_AA_DrawArc(60*3,60*3,50*3,50*3,0,180); GUI_SetTextMode(GUI_TM_TRANS); // // emWin // GUI_SetColor(GUI_WHITE); GUI_SetFont(&GUI_FontRounded22); GUI_DispStringHCenterAt("emWin", xCenter, (FACTOR_EMWIN * ySize) >> SCREEN_DIV); // // emWin description // GUI_SetFont(&GUI_FontSouvenir18); GUI_DispStringHCenterAt("Universal graphic software\nfor embedded applications", xCenter, (FACTOR_DESC * ySize) >> SCREEN_DIV); // // Any text // GUI_SetColor(0x2288ff); GUI_DispStringHCenterAt("Any CPU - Any Display - Any Application", xCenter, (FACTOR_ANY_COMP * ySize) >> SCREEN_DIV); // // Compiled // GUI_SetFont(&GUI_Font10S_ASCII); GUI_DispStringHCenterAt("Compiled " __DATE__ " "__TIME__, xCenter, ((FACTOR_ANY_COMP * ySize) >> SCREEN_DIV) + DIST_ANY_COMP); // // Version // GUI_SetColor(GUI_WHITE); GUI_SetFont(&GUI_FontSouvenir18); strcat(acVersion, GUI_GetVersionString()); GUI_DispStringHCenterAt(acVersion, xCenter, (FACTOR_VERSION * ySize) >> SCREEN_DIV); // // Logo // GUI_DrawBitmap(&bmSeggerLogo, (xSize - bmSeggerLogo.XSize) >> 1, (FACTOR_LOGO * ySize) >> SCREEN_DIV); // // www.segger.com // GUI_SetColor(GUI_WHITE); GUI_SetFont(&GUI_FontRounded22); GUI_DispStringHCenterAt("www.segger.com", xCenter, (FACTOR_WWW * ySize) >> SCREEN_DIV); GUIDEMO_Delay(5000); }
/********************************************************************* * * GUIDEMO_Intro * ********************************************************************** */ void GUIDEMO_Intro(void) { char acVersion[30] = "Version of STemWin: "; int xCenter, xSize, ySize; xSize = LCD_GetXSize(); ySize = LCD_GetYSize(); xCenter = xSize >> 1; GUIDEMO_DrawBk(0); GUI_SetTextMode(GUI_TM_TRANS); // // emWin // GUI_SetColor(GUI_WHITE); GUI_SetFont(&GUI_FontRounded22); GUI_DispStringHCenterAt("STemWin", xCenter, (FACTOR_EMWIN * ySize) >> SCREEN_DIV); // // emWin description // GUI_SetFont(&GUI_Font16_ASCII); GUI_DispStringHCenterAt("Universal graphic software\nfor embedded applications", xCenter, (FACTOR_DESC * ySize) >> SCREEN_DIV); // // Any text // GUI_SetColor(0x2288ff); GUI_DispStringHCenterAt("For STM32 MCU Products - Cortex M3 - Cortex M4", xCenter, (FACTOR_ANY_COMP * ySize) >> SCREEN_DIV); // // Compiled // GUI_SetFont(&GUI_Font10S_ASCII); GUI_DispStringHCenterAt("Compiled " __DATE__ " "__TIME__, xCenter, ((FACTOR_ANY_COMP * ySize) >> SCREEN_DIV) + DIST_ANY_COMP); // // Version // GUI_SetColor(GUI_WHITE); GUI_SetFont(&GUI_Font16_ASCII); strcat(acVersion, GUI_GetVersionString()); GUI_DispStringHCenterAt(acVersion, xCenter, (FACTOR_VERSION * ySize) >> SCREEN_DIV); // // Logo // GUI_DrawBitmap(&bmSTLogo, (xSize - bmSeggerLogo.XSize) >> 1, (FACTOR_LOGO * ySize) >> SCREEN_DIV); // // www.segger.com // GUI_SetColor(GUI_WHITE); GUI_SetFont(&GUI_FontRounded22); GUI_DispStringHCenterAt("www.st.com/stm32", xCenter, (FACTOR_WWW * ySize) >> SCREEN_DIV); GUIDEMO_Delay(5000); }
/********************************************************************* * * GUIDEMO_VScreen */ void GUIDEMO_VScreen(void) { int ySize, vySize; ySize = LCD_GetYSize(); vySize = LCD_GetVYSize(); if (vySize < (ySize << 1)) { return; } GUIDEMO_ShowIntro("VScreen demo", "Demonstrates how to use\n" "virtual screens"); GUIDEMO_DrawBk(1); _DemoVScreen(); GUI_SetOrg(0, 0); }
/********************************************************************* * * GUIDEMO_VScreen */ void GUIDEMO_VScreen(void) { int vySize; int ySize; ySize = LCD_GetYSize(); vySize = LCD_GetVYSize(); if (vySize < (ySize * 2)) { GUIDEMO_ConfigureDemo("Virtual Screen", "Works only with a virtual screen with at least twice the ySize of the display.\nDemo will be skipped...", GUIDEMO_SHOW_CURSOR | GUIDEMO_SHOW_INFO | GUIDEMO_SHOW_CONTROL); return; } GUIDEMO_ConfigureDemo("Virtual Screen", "Demonstrates how to use\nvirtual screens", GUIDEMO_SHOW_CURSOR | GUIDEMO_SHOW_INFO | GUIDEMO_SHOW_CONTROL); GUIDEMO_DrawBk(); _DemoVScreen(); GUI_SetOrg(0, 0); }
/********************************************************************* * * _DispCursor */ static void _DispCursor(void) { int xSize; int ySize; xSize = LCD_GetXSize(); ySize = LCD_GetYSize(); _ScreenX0 = (xSize - XSIZE_MIN) / 2; _ScreenY0 = (ySize - YSIZE_MIN) / 2; GUIDEMO_DrawBk(); GUI_SetTextMode(GUI_TM_TRANS); GUI_SetFont(&GUI_FontRounded22); GUI_DispStringHCenterAt("Available cursors", xSize / 2, 12); // // Display the cursors // _ShowCursorType(&_CursorArrow, _ScreenX0 + 20, _ScreenY0 + 50); _ShowCursorType(&_CursorCross, _ScreenX0 + 20, _ScreenY0 + 120); _ShowCursorType(&_CursorArrowI, _ScreenX0 + 140, _ScreenY0 + 50); _ShowCursorType(&_CursorCrossI, _ScreenX0 + 140, _ScreenY0 + 120); }
/********************************************************************* * * GUIDEMO_Speed */ void GUIDEMO_Speed(void) { GUI_RECT ClipRect; GUI_RECT Rect; unsigned aColorIndex[8]; char cText[40] = { 0 }; U32 PixelsPerSecond; int TimeStart; int vySize; int xSize; int ySize; int i; xSize = LCD_GetXSize(); ySize = LCD_GetYSize(); vySize = LCD_GetVYSize(); if (vySize > ySize) { ClipRect.x0 = 0; ClipRect.y0 = 0; ClipRect.x1 = xSize; ClipRect.y1 = ySize; GUI_SetClipRect(&ClipRect); } GUIDEMO_ShowIntro("High speed", "Multi layer clipping\nHighly optimized drivers"); GUIDEMO_HideControlWin(); for (i = 0; i< 8; i++) { aColorIndex[i] = GUI_Color2Index(_aColor[i]); } TimeStart = GUIDEMO_GetTime(); for (i = 0; ((GUIDEMO_GetTime() - TimeStart) < 5000) && (GUIDEMO_CheckCancel() == 0); i++) { GUI_SetColorIndex(aColorIndex[i&7]); // // Calculate random positions // Rect.x0 = rand() % xSize - xSize / 2; Rect.y0 = rand() % ySize - ySize / 2; Rect.x1 = Rect.x0 + 20 + rand() % xSize; Rect.y1 = Rect.y0 + 20 + rand() % ySize; GUI_FillRect(Rect.x0, Rect.y0, Rect.x1, Rect.y1); // // Clip rectangle to visible area and add the number of pixels (for speed computation) // if (Rect.x1 >= xSize) { Rect.x1 = xSize - 1; } if (Rect.y1 >= ySize) { Rect.y1 = ySize - 1; } if (Rect.x0 < 0 ) { Rect.x0 = 0; } if (Rect.y1 < 0) { Rect.y1 = 0; } GUI_Exec(); // // Allow short breaks so we do not use all available CPU time ... // } GUIDEMO_NotifyStartNext(); PixelsPerSecond = _GetPixelsPerSecond(); GUI_SetClipRect(NULL); GUIDEMO_DrawBk(); GUI_SetColor(GUI_WHITE); GUI_SetTextMode(GUI_TM_TRANS); GUI_SetFont(&GUI_FontRounded22); GUI_DrawBitmap(&bmSeggerLogo70x35, 5, 5); GUIDEMO_AddStringToString(cText, "Pixels/sec: "); GUIDEMO_AddIntToString(cText, PixelsPerSecond); GUI_DispStringHCenterAt(cText, xSize / 2, (ySize - GUI_GetFontSizeY()) / 2); GUIDEMO_Delay(4000); }
void GUIDEMO_ColorBar(void) { GUI_COLOR ColorStartBlack, ColorStartWhite; char acText[80] = { 0 }; int NumColors, BitsPerPixel, xSize, ySize; int Time, TimeStart; int Dir, Index; xSize = LCD_GetXSize(); ySize = LCD_GetYSize(); GUIDEMO_ShowIntro("Color bar", "STemWin features an integrated\n" "color management which automatically finds\n" "the best available color for any logical color"); GUIDEMO_DrawBk(1); // // Heading // GUI_SetColor(GUI_WHITE); GUI_SetFont(&GUI_FontRounded22); GUI_DispStringHCenterAt("Color bars", xSize >> 1, 12); GUI_SetFont(&GUI_Font16_ASCII); // // Colors // GUI_DispStringAt("Red", 1, Y_START); GUI_DispStringAt("Green", 1, Y_START + Y_STEP * 2); GUI_DispStringAt("Blue", 1, Y_START + Y_STEP * 4); GUI_DispStringAt("Grey", 1, Y_START + Y_STEP * 5 + (Y_STEP >> 1)); GUI_DispStringAt("Yellow", 1, Y_START + Y_STEP * 7); GUI_DispStringAt("Cyan", 1, Y_START + Y_STEP * 9); GUI_DispStringAt("Magenta", 1, Y_START + Y_STEP * 11); // // Additional Information // GUI_SetFont(&GUI_Font8_ASCII); // // LCD Controller // #ifdef LCD_CONTROLLER GUIDEMO_AddStringToString(acText, "LCD Controller: "); GUIDEMO_AddStringToString(acText, LCD_CONTROLLER); GUI_DispStringAt (acText, 12, ySize - 45); GUIDEMO_ClearText (acText); #endif // // BPP and number of colors // BitsPerPixel = LCD_GetBitsPerPixel(); GUIDEMO_AddIntToString (acText, BitsPerPixel); GUIDEMO_AddStringToString(acText, " bpp"); NumColors = LCD_GetDevCap(LCD_DEVCAP_NUMCOLORS); if (NumColors) { GUIDEMO_AddStringToString(acText, ", "); GUIDEMO_AddIntToString (acText, NumColors); GUIDEMO_AddStringToString(acText, " colors"); } GUI_DispStringAt(acText, 12, ySize - 25); // // Gradients // TimeStart = GUIDEMO_GetTime(); while (((GUIDEMO_GetTime() - TimeStart) < TIME_RUN) && (GUIDEMO_CheckCancel() == 0)) { Time = (GUIDEMO_GetTime() - TimeStart) % ((TIME_PAUSE + TIME_STEP) << 1); Dir = Time / (TIME_PAUSE + TIME_STEP); Time -= Dir * (TIME_PAUSE + TIME_STEP); if (Time > TIME_PAUSE) { continue; } Index = ((Time * 0xFF) / TIME_STEP) ^ (Dir * 0xFF); ColorStartBlack = 0x000000 + 0x010101 * Index; ColorStartWhite = 0xFFFFFF - ColorStartBlack; GUI_DrawGradientH(GRADIENT_START_X, Y_START + Y_STEP * 0, xSize, (Y_START + Y_STEP * 1) - 1, GUI_RED, ColorStartBlack); GUI_DrawGradientH(GRADIENT_START_X, Y_START + Y_STEP * 1, xSize, (Y_START + Y_STEP * 2) - 1, GUI_RED, ColorStartWhite); GUI_DrawGradientH(GRADIENT_START_X, Y_START + Y_STEP * 2, xSize, (Y_START + Y_STEP * 3) - 1, GUI_GREEN, ColorStartBlack); GUI_DrawGradientH(GRADIENT_START_X, Y_START + Y_STEP * 3, xSize, (Y_START + Y_STEP * 4) - 1, GUI_GREEN, ColorStartWhite); GUI_DrawGradientH(GRADIENT_START_X, Y_START + Y_STEP * 4, xSize, (Y_START + Y_STEP * 5) - 1, GUI_BLUE, ColorStartBlack); GUI_DrawGradientH(GRADIENT_START_X, Y_START + Y_STEP * 5, xSize, (Y_START + Y_STEP * 6) - 1, GUI_BLUE, ColorStartWhite); GUI_DrawGradientH(GRADIENT_START_X, Y_START + Y_STEP * 6, xSize, (Y_START + Y_STEP * 7) - 1, GUI_GRAY, ColorStartBlack); GUI_DrawGradientH(GRADIENT_START_X, Y_START + Y_STEP * 7, xSize, (Y_START + Y_STEP * 8) - 1, GUI_YELLOW, ColorStartWhite); GUI_DrawGradientH(GRADIENT_START_X, Y_START + Y_STEP * 8, xSize, (Y_START + Y_STEP * 9) - 1, GUI_YELLOW, ColorStartBlack); GUI_DrawGradientH(GRADIENT_START_X, Y_START + Y_STEP * 9, xSize, (Y_START + Y_STEP * 10) - 1, GUI_CYAN, ColorStartWhite); GUI_DrawGradientH(GRADIENT_START_X, Y_START + Y_STEP * 10, xSize, (Y_START + Y_STEP * 11) - 1, GUI_CYAN, ColorStartBlack); GUI_DrawGradientH(GRADIENT_START_X, Y_START + Y_STEP * 11, xSize, (Y_START + Y_STEP * 12) - 1, GUI_MAGENTA, ColorStartWhite); GUI_DrawGradientH(GRADIENT_START_X, Y_START + Y_STEP * 12, xSize, (Y_START + Y_STEP * 13) - 1, GUI_MAGENTA, ColorStartBlack); GUI_Exec(); } }
/********************************************************************* * * GUIDEMO_Listview */ void GUIDEMO_Listview(void) { GUIDEMO_ShowIntro("Listview demo", "Shows some features of\nthe LISTVEW widget"); GUIDEMO_DrawBk(); GUIDEMO_ShowInfoWin(); _DemoListview(); }
void GUIDEMO_Unclassified(void) { int xSize = LCD_GetXSize(); int32_t acc_adc_data[3] = {0}; float acc_nkg[3] = {0}; uint32_t baro_data = 0; int32_t temp_data = 0; uint32_t humi_data = 0; uint32_t als_data = 0; uint32_t ps_data = 0; uint32_t step = 0; #if 0 if (sensor_all_open() != 0) return; #endif sensor_all_open(); // lighten GS-LED and ALS-LED hal_gpio_output_low(&brd_gpio_table[GPIO_LED_GS]); hal_gpio_output_low(&brd_gpio_table[GPIO_LED_ALS]); // set back screen black // GUIDEMO_HideInfoWin(); // GUIDEMO_ShowControlWin(); // GUI_Exec(); GUIDEMO_DrawBk(1); GUI_SetColor(GUI_BLACK); GUIDEMO_DrawBk(1); // set font GUI_SetColor(GUI_WHITE); GUI_SetFont(&GUI_Font16_ASCII); GUI_DispStringAt("step", GUIDEMO_UNCLASSIFIED_OFFSET, Y_START); GUI_DispStringAt("acc_x", GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP * 2); GUI_DispStringAt("acc_y", GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP * 4); GUI_DispStringAt("acc_z", GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP * 6); #if 0 GUI_DispStringAt("barometer", GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP * 6); GUI_DispStringAt("temperature", GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP * 8); GUI_DispStringAt("humidity", GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP * 10); #endif GUI_DispStringAt("als", GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP * 8); GUI_DispStringAt("proximity", GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP * 10); GUI_DispStringAt("sensor data upload:", GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP * 12); // GUI_HWIN hWnd; do{ // print value // GUI_SetOrientation(GUI_SWAP_XY); // hWnd = WM_CreateWindow(10, 10, 200, 200, WM_CF_HIDE, _cbDesktop, 0); // HAL_Delay(1000); // WM_DeleteWindow(hWnd); // print value type if (!get_acc_data(&acc_adc_data[0], &acc_adc_data[1], &acc_adc_data[2], &step)) { acc_nkg[0] = (float)acc_adc_data[0] * 9.8 / 1024; acc_nkg[1] = (float)acc_adc_data[1] * 9.8 / 1024; acc_nkg[2] = (float)acc_adc_data[2] * 9.8 / 1024; GUI_GotoXY((xSize >> 1) + GUIDEMO_UNCLASSIFIED_OFFSET, Y_START); GUI_DispDec(step, DEC_LEN_DEF); GUI_GotoXY((xSize >> 1) + GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP * 2); GUI_DispFloatFix(acc_nkg[0], 7, 3); GUI_DispString(" N/kg"); GUI_GotoXY((xSize >> 1) + GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP * 4); GUI_DispFloatFix(acc_nkg[1], 7, 3); GUI_DispString(" N/kg"); GUI_GotoXY((xSize >> 1) + GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP * 6); GUI_DispFloatFix(acc_nkg[2], 7, 3); GUI_DispString(" N/kg"); } else { GUI_DispStringAt("unknow", (xSize >> 1) + GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP * 2); GUI_DispStringAt("unknow", (xSize >> 1) + GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP * 4); GUI_DispStringAt("unknow", (xSize >> 1) + GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP * 6); } #if 0 if (!get_baro_data(&baro_data)) { GUI_GotoXY((xSize >> 1) + GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP * 6); GUI_DispDec(baro_data, DEC_LEN_DEF); }
/********************************************************************* * * GUIDEMO_BarGraph */ void GUIDEMO_BarGraph(void) { GUIDEMO_ConfigureDemo("Bar Graph", "Animated bar graph\nusing Alpha Blending.", GUIDEMO_SHOW_CURSOR | GUIDEMO_SHOW_CONTROL); GUIDEMO_DrawBk(); GUIDEMO_DispTitle("Bargraph demo"); _DemoBarGraph(); }