/** * @brief callback for progress slider. * @param pMsg: pointer to a data structure of type WM_MESSAGE * @retval None */ static void _cbDrawProgressSlider(WM_MESSAGE * pMsg) { GUI_RECT Rect; switch (pMsg->MsgId) { case WM_CREATE: break; case WM_PAINT: WM_GetInsideRect(&Rect); GUI_DrawGradientH(Rect.x0, Rect.y0, Rect.x1, Rect.y1, GUI_WHITE, 0x3F0000); break; default: WM_DefaultProc(pMsg); } }
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(); } }
/********************************************************************* * * _DrawSample */ static void _DrawSample(GUI_RECT Rect, const GUI_FONT * pFont, const char * pText) { GUI_RECT CurrentRect; int yDistDiv3; Rect.x0 += BORDER; Rect.y0 += BORDER; Rect.x1 -= BORDER; Rect.y1 -= BORDER; yDistDiv3 = (Rect.y1 - Rect.y0) / 3; CurrentRect.x0 = Rect.x0; CurrentRect.y0 = Rect.y0; CurrentRect.x1 = Rect.x0 + 59; CurrentRect.y1 = Rect.y0 + 3 * yDistDiv3; GUI_SetClipRect(&CurrentRect); // // Display info text // GUI_SetFont(GUI_FONT_13_ASCII); GUI_SetColor(GUI_WHITE); GUI_DispStringInRectWrap(pText, &CurrentRect, GUI_TA_HCENTER | GUI_TA_VCENTER, GUI_WRAPMODE_WORD); // // Alpha circles // GUI_MoveRect(&CurrentRect, 63, 0); GUI_SetBkColor(GUI_BLACK); GUI_Clear(); _DrawAlphaCircles((CurrentRect.x0 + CurrentRect.x1) / 2, (CurrentRect.y0 + CurrentRect.y1) / 2, 35, 0, 4); GUI_SetColor(GUI_WHITE); GUI_SetFont(pFont); CurrentRect.y1 = CurrentRect.y0 + yDistDiv3; GUI_DispStringInRect("ABC", &CurrentRect, GUI_TA_HCENTER | GUI_TA_VCENTER); GUI_MoveRect(&CurrentRect, 0, yDistDiv3); GUI_DispStringInRect("ABC", &CurrentRect, GUI_TA_HCENTER | GUI_TA_VCENTER); GUI_MoveRect(&CurrentRect, 0, yDistDiv3); GUI_DispStringInRect("ABC", &CurrentRect, GUI_TA_HCENTER | GUI_TA_VCENTER); // // Black to white gradient // CurrentRect.y0 = Rect.y0; CurrentRect.y1 = Rect.y0 + 3 * yDistDiv3; GUI_MoveRect(&CurrentRect, 63, 0); GUI_DrawGradientH(CurrentRect.x0, CurrentRect.y0, CurrentRect.x1, CurrentRect.y1, GUI_BLACK, GUI_WHITE); CurrentRect.y1 = CurrentRect.y0 + yDistDiv3; GUI_SetColor(GUI_RED); GUI_DispStringInRect("ABC", &CurrentRect, GUI_TA_HCENTER | GUI_TA_VCENTER); GUI_MoveRect(&CurrentRect, 0, yDistDiv3); GUI_SetColor(GUI_GREEN); GUI_DispStringInRect("ABC", &CurrentRect, GUI_TA_HCENTER | GUI_TA_VCENTER); GUI_MoveRect(&CurrentRect, 0, yDistDiv3); GUI_SetColor(GUI_BLUE); GUI_DispStringInRect("ABC", &CurrentRect, GUI_TA_HCENTER | GUI_TA_VCENTER); // // RGB // CurrentRect.y0 = Rect.y0; CurrentRect.y1 = CurrentRect.y0 + yDistDiv3; GUI_MoveRect(&CurrentRect, 63, 0); GUI_SetBkColor(GUI_RED); GUI_Clear(); GUI_MoveRect(&CurrentRect, 0, yDistDiv3); GUI_SetBkColor(GUI_GREEN); GUI_Clear(); GUI_MoveRect(&CurrentRect, 0, yDistDiv3); GUI_SetBkColor(GUI_BLUE); GUI_Clear(); GUI_SetColor(GUI_WHITE); CurrentRect.y0 = Rect.y0; CurrentRect.y1 = CurrentRect.y0 + yDistDiv3; GUI_DispStringInRect("ABC", &CurrentRect, GUI_TA_HCENTER | GUI_TA_VCENTER); GUI_MoveRect(&CurrentRect, 0, yDistDiv3); GUI_DispStringInRect("ABC", &CurrentRect, GUI_TA_HCENTER | GUI_TA_VCENTER); GUI_MoveRect(&CurrentRect, 0, yDistDiv3); GUI_DispStringInRect("ABC", &CurrentRect, GUI_TA_HCENTER | GUI_TA_VCENTER); // // RGB gradients // CurrentRect.y0 = Rect.y0; CurrentRect.y1 = CurrentRect.y0 + yDistDiv3; GUI_MoveRect(&CurrentRect, 63, 0); GUI_DrawGradientV(CurrentRect.x0, CurrentRect.y0, CurrentRect.x1, CurrentRect.y1, GUI_RED, GUI_BLACK); GUI_MoveRect(&CurrentRect, 0, yDistDiv3); GUI_DrawGradientV(CurrentRect.x0, CurrentRect.y0, CurrentRect.x1, CurrentRect.y1, GUI_GREEN, GUI_BLACK); GUI_MoveRect(&CurrentRect, 0, yDistDiv3); GUI_DrawGradientV(CurrentRect.x0, CurrentRect.y0, CurrentRect.x1, CurrentRect.y1, GUI_BLUE, GUI_BLACK); CurrentRect.y0 = Rect.y0; CurrentRect.y1 = CurrentRect.y0 + yDistDiv3; GUI_SetColor(GUI_WHITE); GUI_DispStringInRect("ABC", &CurrentRect, GUI_TA_HCENTER | GUI_TA_VCENTER); GUI_MoveRect(&CurrentRect, 0, yDistDiv3); GUI_DispStringInRect("ABC", &CurrentRect, GUI_TA_HCENTER | GUI_TA_VCENTER); GUI_MoveRect(&CurrentRect, 0, yDistDiv3); GUI_DispStringInRect("ABC", &CurrentRect, GUI_TA_HCENTER | GUI_TA_VCENTER); // // Disable application defined clip rectangle // GUI_SetClipRect(NULL); }
void colorbar(void) { #define X_START 60 //????? X ?? #define Y_START 40 //????? Y ?? typedef struct { int NumBars; GUI_COLOR Color; const char * s; } BAR_DATA; static const BAR_DATA _aBarData[] = { { 2, GUI_RED , "Red" }, { 2, GUI_GREEN , "Green" }, { 2, GUI_BLUE , "Blue" }, { 1, GUI_WHITE , "Grey" }, { 2, GUI_YELLOW , "Yellow" }, { 2, GUI_CYAN , "Cyan" }, { 2, GUI_MAGENTA, "Magenta" }, }; static const GUI_COLOR _aColorStart[] = { GUI_BLACK, GUI_WHITE }; GUI_RECT Rect; int yStep; int i; int j; int xSize; int ySize; int NumBars; //????????? 2+2+2+1+2+2+2=13 int NumColors; //????????,??? 7 ? //?????? GUI_SetBkColor(GUI_BLUE); GUI_SetColor(GUI_YELLOW); GUI_Clear(); GUI_SetFont(&GUI_Font24_ASCII); GUI_SetTextMode(GUI_TM_TRANS); //???? GUI_DispStringHCenterAt("COLOR_BAR TEST!",120,0); xSize = LCD_GetXSize(); ySize = LCD_GetYSize(); //???????? NumColors = GUI_COUNTOF(_aBarData); for (i = NumBars = 0, NumBars = 0; i < NumColors; i++) { NumBars += _aBarData[i].NumBars; } yStep = (ySize - Y_START) / NumBars; //???? Rect.x0 = 0; Rect.x1 = X_START - 1; Rect.y0 = Y_START; GUI_SetFont(&GUI_Font8x16); for (i = 0; i < NumColors; i++) { Rect.y1 = Rect.y0 + yStep * _aBarData[i].NumBars - 1; GUI_DispStringInRect(_aBarData[i].s, &Rect, GUI_TA_LEFT | GUI_TA_VCENTER); Rect.y0 = Rect.y1 + 1; } //???? Rect.x0 = X_START; Rect.x1 = xSize - 1; Rect.y0 = Y_START; for (i = 0; i < NumColors; i++) { for (j = 0; j < _aBarData[i].NumBars; j++) { Rect.y1 = Rect.y0 + yStep - 1; GUI_DrawGradientH(Rect.x0, Rect.y0, Rect.x1, Rect.y1,_aColorStart[j], _aBarData[i].Color); //???? Rect.y0 = Rect.y1 + 1; } } }
/********************************************************************* * * _DrawSample */ static void _DrawSample(GUI_RECT * pRect, int yd) { GUI_RECT Rect; Rect = *pRect; // // Use application defined clip rectangle // GUI_SetClipRect(&Rect); // // Move clip rectangle // GUI_MoveRect(&Rect, 65, 0); // // Draw sample // _DrawAlphaCircles((Rect.x0 + Rect.x1) >> 1, (Rect.y0 + Rect.y1) >> 1, 35, 0, 4); GUI_SetColor(GUI_WHITE); GUI_DispStringInRectWrap("ABC\nABC\nABC", &Rect, GUI_TA_HCENTER | GUI_TA_VCENTER, GUI_WRAPMODE_WORD); // // Move clip rectangle // GUI_MoveRect(&Rect, 65, 0); GUI_DrawGradientH(Rect.x0, Rect.y0, Rect.x1, Rect.y1, GUI_BLACK, GUI_WHITE); Rect.y1 = Rect.y0 + yd; GUI_SetColor(GUI_RED); GUI_DispStringInRect("ABC", &Rect, GUI_TA_HCENTER | GUI_TA_VCENTER); GUI_MoveRect(&Rect, 0, yd); GUI_SetColor(GUI_GREEN); GUI_DispStringInRect("ABC", &Rect, GUI_TA_HCENTER | GUI_TA_VCENTER); GUI_MoveRect(&Rect, 0, yd); GUI_SetColor(GUI_BLUE); GUI_DispStringInRect("ABC", &Rect, GUI_TA_HCENTER | GUI_TA_VCENTER); GUI_MoveRect(&Rect, 0, -yd * 2); Rect.y1 = Rect.y0 + yd * 3; // // Move clip rectangle // GUI_MoveRect(&Rect, 65, 0); // // Draw sample // Rect.y1 = Rect.y0 + yd; GUI_SetBkColor(GUI_RED); GUI_Clear(); GUI_MoveRect(&Rect, 0, yd); GUI_SetBkColor(GUI_GREEN); GUI_Clear(); GUI_MoveRect(&Rect, 0, yd); GUI_SetBkColor(GUI_BLUE); GUI_Clear(); GUI_MoveRect(&Rect, 0, -yd * 2); Rect.y1 = Rect.y0 + yd * 3; GUI_SetColor(GUI_WHITE); GUI_DispStringInRectWrap("ABC\nABC\nABC", &Rect, GUI_TA_HCENTER | GUI_TA_VCENTER, GUI_WRAPMODE_WORD); // // Move clip rectangle // GUI_MoveRect(&Rect, 65, 0); // // Draw sample // Rect.y1 = Rect.y0 + yd; GUI_DrawGradientV(Rect.x0, Rect.y0, Rect.x1, Rect.y1, GUI_RED, GUI_BLACK); GUI_MoveRect(&Rect, 0, yd); GUI_DrawGradientV(Rect.x0, Rect.y0, Rect.x1, Rect.y1, GUI_GREEN, GUI_BLACK); GUI_MoveRect(&Rect, 0, yd); GUI_DrawGradientV(Rect.x0, Rect.y0, Rect.x1, Rect.y1, GUI_BLUE, GUI_BLACK); GUI_MoveRect(&Rect, 0, -yd * 2); Rect.y1 = Rect.y0 + yd * 3; GUI_SetColor(GUI_WHITE); GUI_DispStringInRectWrap("ABC\nABC\nABC", &Rect, GUI_TA_HCENTER | GUI_TA_VCENTER, GUI_WRAPMODE_WORD); // // Disable application defined clip rectangle // GUI_SetClipRect(NULL); }