void GUIDEMO_Circle(void) { int XSize = LCD_GetXSize(); int YSize = LCD_GetYSize(); GUIDEMO_ShowIntro("Circles", "\nArbitrary circles" "\nand arcs."); GUI_Clear(); GUI_SetFont(&GUI_Font8x16); GUI_SetColor(GUI_WHITE); #if GUIDEMO_LARGE GUI_DispStringAt("Circle", 0, 0); #endif GUI_FillCircle (XSize / 2, YSize / 2, 50); GUIDEMO_Wait(); GUI_SetDrawMode(GUI_DM_XOR); GUI_FillCircle (XSize / 2, YSize / 2, 60); GUI_SetDrawMode(0); GUIDEMO_Wait(); #if GUI_SUPPORT_AA #if GUIDEMO_LARGE GUIDEMO_ShowInfo("Circles with\nAntialiasing"); #endif GUI_Clear(); GUI_SetColor(GUI_WHITE); #if GUIDEMO_LARGE GUI_DispStringAt("Antialiased\ncircle", 0, 0); #endif GUI_AA_FillCircle(XSize / 2, YSize / 2, 47); GUIDEMO_Wait(); #endif }
/********************************************************************* * * 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); }
/********************************************************************* * * 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); }
static void _ShowJapaneseSample(void) { int i; _Label("Japanese text\nmixed with\nASCIItext"); GUI_SetFont(&_FontSJIS16); for (i=0;i<sizeof(_apSJIS)/sizeof(_apSJIS[0]);i++) { GUI_DispStringHCenterAt(_apSJIS[i], LCD_GetXSize() / 2, _GetYPos() + 20); GUI_DispNextLine(); } GUIDEMO_Wait(); GUIDEMO_NotifyStartNext(); }
/********************************************************************* * * GUIDEMO_Cursor */ void GUIDEMO_Cursor(void) { GUIDEMO_ShowIntro("Cursor", "emWin supports\nsoftware cursors"); _DispCursor(); GUIDEMO_Wait(4000); GUIDEMO_CursorShow(); #if (GUI_SUPPORT_CURSOR && GUI_SUPPORT_TOUCH) if (GUIDEMO_GetConfFlag(GUIDEMO_CF_SUPPORT_TOUCH)) { GUI_CURSOR_SetPosition(0,0); GUI_CURSOR_Select(&GUI_CursorArrowM); } #endif }
static void _ShowFonts(const char *s, const char *pMessage, const GUI_FONT **pPropFonts) { int i; _Label(s); GUI_GotoXY(0, _GetYPos()); for (i=0;pPropFonts[i];i++) { GUI_SetFont(pPropFonts[i]); GUI_DispString(pMessage); GUI_DispNextLine(); } GUIDEMO_Wait(); GUIDEMO_NotifyStartNext(); }
/********************************************************************* * * GUIDEMO_DemoFrameWin */ void GUIDEMO_DemoFrameWin(void) { FRAMEWIN_Handle hFrame; LISTBOX_Handle hListBox; int xSize = LCD_GetXSize(); int ySize = LCD_GetYSize(); int i, x, y, w, h; const GUI_FONT* pFont = &GUI_FontComic18B_1; GUI_COLOR DesktopColorOld; #if GUIDEMO_LARGE GUIDEMO_ShowIntro("Frame Window & Listbox", NULL); #else GUIDEMO_ShowIntro("Frame Window\n & Listbox", NULL); #endif DesktopColorOld = GUIDEMO_SetBkColor(GUI_RED); DesktopColorOld = WM_SetDesktopColor(DesktopColorOld); /* Automatically update desktop window */ x = BORDER; #if GUIDEMO_LARGE y = 75; #else y = BORDER; #endif w = xSize - x - BORDER; h = ySize - y - BORDER; if (w > 140) { w = 140; } if (h > 120) { h = 120; } hFrame = FRAMEWIN_Create("Select language", NULL, WM_CF_SHOW, x, y, w, h); FRAMEWIN_SetActive(hFrame, 1); FRAMEWIN_SetMoveable(hFrame, 1); FRAMEWIN_AddMaxButton(hFrame, FRAMEWIN_BUTTON_RIGHT, 0); FRAMEWIN_AddMinButton(hFrame, FRAMEWIN_BUTTON_RIGHT, 1); FRAMEWIN_SetFont(hFrame, &GUI_Font13_ASCII); hListBox = LISTBOX_CreateAsChild(_asLang, WM_GetClientWindow(hFrame), 0, 0, 0, 0, WM_CF_SHOW | WM_SF_ANCHOR_LEFT | WM_SF_ANCHOR_TOP | WM_SF_ANCHOR_RIGHT | WM_SF_ANCHOR_BOTTOM); WM_SetFocus(hListBox); LISTBOX_SetFont(hListBox, pFont); GUIDEMO_Wait(); for (i = 0; (i < 10) && !GUIDEMO_CheckCancel(); i++) { LISTBOX_IncSel(hListBox); GUIDEMO_Delay(250); } for (i = 0; (i < 10) && !GUIDEMO_CheckCancel(); i++) { LISTBOX_DecSel(hListBox); GUIDEMO_Delay(250); } GUIDEMO_Delay(500); LISTBOX_Delete(hListBox); FRAMEWIN_Delete(hFrame); WM_SetDesktopColor(DesktopColorOld); }
void GUIDEMO_Speed(void) { int t = GUI_GetTime(); int i = 0; int XSize = LCD_GET_XSIZE(); int YSize = LCD_GET_YSIZE(); I32 NumPixels=0; U16 aColorIndex[8]; GUIDEMO_ShowIntro("High speed", "Multi layer clipping" "\nHighly optimized drivers" ); for (i = 0; i< 8; i++) { aColorIndex[i] = GUI_Color2Index(_aColor[i]); } for (i = 0; (((t + 8000) - (int)GUI_GetTime()) > 0) && !GUIDEMO_CheckCancel(); i++) { GUI_RECT r; GUI_SetColorIndex(aColorIndex[i&7]); /* Calculate random positions */ r.x0 = rand() % XSize - XSize / 2; r.y0 = rand() % YSize - YSize / 2; r.x1 = r.x0 + rand() % XSize; r.y1 = r.y0 + rand() % YSize; GUI_FillRect(r.x0, r.y0, r.x1, r.y1); /* Clip rectangle to visible area and add the number of pixels (for speed computation) */ if (r.x1 >= XSize) r.x1 = XSize - 1; if (r.y1 >= YSize) r.y1 = YSize - 1; if (r.x0 < 0 ) r.x0 = 0; if (r.y1 < 0) r.y1 = 0; NumPixels += (r.x1 - r.x0) * (r.y1 - r.y0); /* Allow short breaks so we do not use all available CPU time ... */ } t = (GUI_GetTime() - t) / 100; GUI_Clear(); GUIDEMO_NotifyStartNext(); #if GUIDEMO_LARGE GUI_SetFont(&GUI_FontComic24B_ASCII); #else GUI_SetFont(&GUI_Font16B_ASCII); #endif GUI_SetColor(GUI_WHITE); GUI_DispStringAt("Pixels/sec: ", 10, (LCD_GetYSize() - GUI_GetFontSizeY()) / 2); if (t == 0) t++; GUI_DispDecMin(10 * (NumPixels / t)); GUIDEMO_Wait(); }
void GUIDEMO_DemoLUT(void) { int i; GUIDEMO_ShowIntro("Modify LUT", "... after drawing color bars"); GUIDEMO_ShowColorBar(); for (i = 100; (i >= 0) && !GUIDEMO_CheckCancel(); i -= 2) { _ModifyLUT(100, 100, i); GUI_Delay(20); } for (i = 100; (i >= 0) && !GUIDEMO_CheckCancel(); i -= 2) { _ModifyLUT(100, i, 0); GUI_Delay(20); } for (i = 100; (i >= 0) && !GUIDEMO_CheckCancel(); i -= 2) { _ModifyLUT(i, i, i); GUI_Delay(20); } LCD_InitLUT(); GUIDEMO_Wait(); }
void GUIDEMO_DemoPolygon(void) { int XMid = LCD_GetXSize() / 2; int YMid = LCD_GetYSize() / 2; GUIDEMO_ShowIntro("Arbitrary Polygons", "\nStandard and antialiased"); GUI_SetColor(GUI_WHITE); GUI_SetFont(&GUI_FontComic18B_ASCII); #if GUIDEMO_LARGE GUI_DispStringAt("Arbitrary\nPolygons", 0, 0); #endif GUI_FillPolygon(&_aArrow[0], 7, XMid - 50, YMid + 40); GUI_FillPolygon(&_aArrow[0], 7, XMid + 50, YMid + 40); GUI_SetColor(GUI_GREEN); GUI_FillPolygon(&_aTriangle[0], 3, XMid, YMid + 60); GUI_SetColor(GUI_WHITE); #if GUI_SUPPORT_AA GUI_AA_EnableHiRes(); GUI_AA_FillPolygon(&_aiCursor[0], 4, XMid * 3, (YMid - 40) * 3); #endif GUIDEMO_Wait(); }
void GUIDEMO_Bitmap(void) { int XSize = LCD_GetXSize(); int YSize = LCD_GetYSize(); GUIDEMO_ShowIntro("Bitmaps", "Showing" "\ndifferent bitmaps with" "\nand without compression"); GUI_SetBkColor(GUI_BLUE); GUI_Clear(); #if GUI_WINSUPPORT & GUI_SUPPORT_MEMDEV WM_EnableMemdev(WM_HBKWIN); #endif #if GUIDEMO_LARGE GUI_DrawBitmap(&_bmLadyBug, 20, 50); GUI_SetFont(&GUI_Font13_1); GUI_DispStringAt("RLE Compressed bitmaps", 10, 10); GUIDEMO_Wait(); GUI_Clear(); GUI_DispStringAt("1/2/4/8 bpp bitmaps", 10, 10); GUI_DrawBitmap(&GUIDEMO_bm4bpp, 20, 50); GUIDEMO_Delay(4000); GUIDEMO_NotifyStartNext(); /* Tile display with image */ { int ix, iy; for (ix = 0; ix < XSize / GUIDEMO_bm4bpp.XSize + 1; ix++) { for (iy = 0; iy < YSize / GUIDEMO_bm4bpp.YSize + 1; iy++) { GUI_DrawBitmap(&GUIDEMO_bm4bpp, GUIDEMO_bm4bpp.XSize * ix , GUIDEMO_bm4bpp.YSize * iy); } } } GUIDEMO_Delay(2000); GUIDEMO_NotifyStartNext(); GUIDEMO_ShowInfo("Bitmaps may also be\nmagnified and rotated"); GUI_SetTextMode(GUI_TM_TRANS); GUI_SetFont(&GUI_Font16_1); { int i, tm; double xMul, Angle; for (i = 200; (i < 3000) && !GUIDEMO_CheckCancel();) { tm = GUI_GetTime(); GUI_DrawBitmapEx(&GUIDEMO_bm4bpp, XSize / 2, YSize / 2, GUIDEMO_bm4bpp.XSize / 2, GUIDEMO_bm4bpp.YSize / 2, i, i); GUI_DispStringHCenterAt("Bitmaps can be magnified...", XSize / 2, 100); GUI_Exec(); while ((GUI_GetTime() < (tm + 10)) && !GUIDEMO_CheckCancel()); i += (GUI_GetTime() - tm) * 6; } GUIDEMO_Delay(2000); GUIDEMO_NotifyStartNext(); GUI_Clear(); GUI_DispStringHCenterAt("...and rotated.", XSize / 2, ((YSize + GUIDEMO_bm4bpp.YSize) >> 1) + 5); for (Angle = 0; Angle < PI4 && !GUIDEMO_CheckCancel();) { tm = GUI_GetTime(); xMul = cos(Angle) * 1000; GUI_ClearRect((XSize - GUIDEMO_bm4bpp.XSize) >> 1, (YSize - GUIDEMO_bm4bpp.YSize) >> 1, (XSize + GUIDEMO_bm4bpp.XSize) >> 1, (YSize + GUIDEMO_bm4bpp.YSize) >> 1); GUI_DrawBitmapEx(&GUIDEMO_bm4bpp, XSize / 2, YSize / 2, GUIDEMO_bm4bpp.XSize / 2, GUIDEMO_bm4bpp.YSize / 2, xMul, 1000); GUI_Exec(); while ((GUI_GetTime() < (tm + 10)) && !GUIDEMO_CheckCancel()); Angle += (GUI_GetTime() - tm) / 250.0f; } GUI_DrawBitmapEx(&GUIDEMO_bm4bpp, XSize / 2, YSize / 2, GUIDEMO_bm4bpp.XSize / 2, GUIDEMO_bm4bpp.YSize / 2, 1000, 1000); } GUIDEMO_Wait(); #else { const GUI_BITMAP * pBm; int TextModeOld = GUI_SetTextMode(GUI_TM_XOR); GUI_SetFont(&GUI_Font8_ASCII); pBm = &_bmLadyBug; GUI_DrawBitmap(pBm, (XSize - (int)pBm->XSize) / 2, (YSize - (int)pBm->YSize) / 2); GUI_DispStringAt("RLE Compressed bitmaps", 8, 10); GUIDEMO_Wait(); GUI_Clear(); GUI_SetTextMode(GUI_TM_TRANS); pBm = &GUIDEMO_bm4bpp; GUI_DrawBitmap(pBm, (XSize - (int)pBm->XSize) / 2, (YSize - (int)pBm->YSize) / 2); GUI_DispStringAt("1/2/4/8 bpp bitmaps", 8, 10); GUIDEMO_Wait(); GUI_Clear(); { int i, tm; double xMul, Angle; for (i = 200; (i < 2000) && !GUIDEMO_CheckCancel();) { tm = GUI_GetTime(); GUI_DrawBitmapEx(&GUIDEMO_bm4bpp, XSize / 2, YSize / 2, GUIDEMO_bm4bpp.XSize / 2, GUIDEMO_bm4bpp.YSize / 2, i, i); GUI_DispStringAt("Bitmaps can be magnified...", 8, 10); GUI_Exec(); while ((GUI_GetTime() < (tm + 10)) && !GUIDEMO_CheckCancel()); i += (GUI_GetTime() - tm) * 6; } GUIDEMO_Delay(2000); GUIDEMO_NotifyStartNext(); GUI_Clear(); for (Angle = 0; Angle < PI4 && !GUIDEMO_CheckCancel();) { tm = GUI_GetTime(); xMul = cos(Angle) * 1000; GUI_ClearRect((XSize - GUIDEMO_bm4bpp.XSize) >> 1, (YSize - GUIDEMO_bm4bpp.YSize) >> 1, (XSize + GUIDEMO_bm4bpp.XSize) >> 1, (YSize + GUIDEMO_bm4bpp.YSize) >> 1); GUI_DrawBitmapEx(&GUIDEMO_bm4bpp, XSize / 2, YSize / 2, GUIDEMO_bm4bpp.XSize / 2, GUIDEMO_bm4bpp.YSize / 2, xMul, 1000); GUI_DispStringAt("...and rotated.", 8, 10); GUI_Exec(); while ((GUI_GetTime() < (tm + 10)) && !GUIDEMO_CheckCancel()); Angle += (GUI_GetTime() - tm) / 250.0f; } GUI_DrawBitmapEx(&GUIDEMO_bm4bpp, XSize / 2, YSize / 2, GUIDEMO_bm4bpp.XSize / 2, GUIDEMO_bm4bpp.YSize / 2, 1000, 1000); GUI_DispStringAt("...and rotated.", 8, 10); } GUIDEMO_Wait(); GUI_SetTextMode(TextModeOld); } #endif #if GUI_WINSUPPORT & GUI_SUPPORT_MEMDEV WM_DisableMemdev(WM_HBKWIN); #endif }
void GUIDEMO_Bitmap(void) { int XSize = LCD_GetXSize(); int YSize = LCD_GetYSize(); GUIDEMO_ShowIntro("Bitmaps", "Showing different bitmaps" "\nwith and without compression"); GUI_SetBkColor(GUI_BLUE); GUI_Clear(); #if GUIDEMO_LARGE GUI_DrawBitmap(&_bmLadyBug, 20, 50); GUI_SetFont(&GUI_Font13_1); GUI_DispStringAt("RLE Compressed bitmaps", 10, 10); GUIDEMO_Wait(); GUI_Clear(); GUI_DispStringAt("1/2/4/8 bpp bitmaps", 10, 10); GUI_DrawBitmap(&GUIDEMO_bm4bpp, 20, 50); GUIDEMO_Delay(500); GUIDEMO_NotifyStartNext(); /* Tile display with image */ { int ix, iy; for (ix = 0; ix < XSize / GUIDEMO_bm4bpp.XSize + 1; ix++) { for (iy = 0; iy < YSize / GUIDEMO_bm4bpp.YSize + 1; iy++) { GUI_DrawBitmap(&GUIDEMO_bm4bpp, GUIDEMO_bm4bpp.XSize * ix , GUIDEMO_bm4bpp.YSize * iy); } } } GUIDEMO_Delay(2000); GUIDEMO_NotifyStartNext(); GUIDEMO_ShowInfo("Bitmaps may also\nbe magnified"); GUI_DrawBitmapMag(&GUIDEMO_bm4bpp, (XSize - GUIDEMO_bm4bpp.XSize * 3) / 2, 60, 3, 3); GUI_SetTextMode(GUI_TM_TRANS); GUI_SetFont(&GUI_Font16_1); GUI_DispStringHCenterAt("Bitmaps can be magnified", XSize / 2, 100); GUIDEMO_Wait(); #else { const GUI_BITMAP * pBm; int TextModeOld = GUI_SetTextMode(GUI_TM_XOR); GUI_SetFont(&GUI_Font8_ASCII); pBm = &_bmLadyBug; GUI_DrawBitmap(pBm, (XSize - (int)pBm->XSize) / 2, (YSize - (int)pBm->YSize) / 2); GUI_DispStringAt("RLE Compressed bitmaps", 10, 10); GUIDEMO_Wait(); GUI_Clear(); pBm = &GUIDEMO_bm4bpp; GUI_DrawBitmap(pBm, (XSize - (int)pBm->XSize) / 2, (YSize - (int)pBm->YSize) / 2); GUI_DispStringAt("1/2/4/8 bpp bitmaps", 10, 10); GUIDEMO_Wait(); /* { int i, nMax = 10; GUI_Clear(); for (i = 2; i < nMax; i++) { GUI_DrawBitmapMag(pBm, (XSize - (int)pBm->XSize * i) / 2, (YSize - (int)pBm->YSize * i) / 2, i, i); GUI_DispStringAt("Bitmaps can be magnified", 10, 10); GUIDEMO_Delay(100); } for (i = nMax; i > 2; i--) { GUI_DrawBitmapMag(pBm, (XSize - (int)pBm->XSize * i) / 2, (YSize - (int)pBm->YSize * i) / 2, i, i); GUI_DispStringAt("Bitmaps can be magnified", 10, 10); GUIDEMO_Delay(100); } } */ GUI_DrawBitmapMag(pBm, (XSize - (int)pBm->XSize * 2) / 2, (YSize - (int)pBm->YSize * 2) / 2, 2, 2); GUI_DispStringAt("Bitmaps can be magnified", 10, 10); GUIDEMO_Wait(); GUI_SetTextMode(TextModeOld); } #endif }
void GUIDEMO_ShowColorBar(void) { int nBars = 13; int YSize = LCD_GetYSize(); int y0 = 70; int yStep = (YSize - y0 - (YSize < 320 ? 0 : 60)) / nBars; int i; int x0 = 60; int NumColors = LCD_GetDevCap(LCD_DEVCAP_NUMCOLORS); int xsize = LCD_GetDevCap(LCD_DEVCAP_XSIZE); xsize -=x0; GUIDEMO_ShowIntro("Color bar", "uC/GUI integrated color" "\nmanagement always find the" "\nbest available color for any" "\nlogical color"); GUI_SetColor(GUI_WHITE); GUI_SetBkColor(GUI_BLACK); GUI_Clear(); GUI_SetFont(&GUI_Font8x16); GUI_DispString("Color bars\n"); GUI_SetFont(&GUI_Font8_ASCII); #ifdef LCD_CONTROLLER GUI_DispString("\nLCD_CONTROLLER: "); GUI_DispDecMin(LCD_CONTROLLER); GUI_DispString("\n"); #endif GUI_DispDecMin(LCD_BITSPERPIXEL); GUI_DispString(" bpp"); #ifdef LCD_BUSWIDTH GUI_DispString(", "); GUI_DispDecMin(LCD_BUSWIDTH); GUI_DispString(" bit bus"); #endif GUI_DispString(", "); GUI_DispDecMin(NumColors); GUI_DispString(" colors\n"); #if (LCD_FIXEDPALETTE) GUI_DispString("Fixed palette: "); GUI_DispDecMin(LCD_FIXEDPALETTE); #else GUI_DispString("(Custom)"); #endif GUI_SetFont(&GUI_Font8x8); GUI_SetColor(GUI_WHITE); GUI_DispStringAt("Red", 0, y0 + yStep); GUI_DispStringAt("Green", 0, y0 + 3 * yStep); GUI_DispStringAt("Blue", 0, y0 + 5 * yStep); GUI_DispStringAt("Grey", 0, y0 + 6 * yStep); GUI_DispStringAt("Yellow", 0, y0 + 8 * yStep); GUI_DispStringAt("Cyan", 0, y0 + 10 * yStep); GUI_DispStringAt("Magenta", 0, y0 + 12 * yStep); for (i = 0; (i < xsize) && !GUIDEMO_CheckCancel(); i++) { U16 cs = (255 * (U32)i) / xsize; U16 x = x0 + i;; /* Red */ GUI_SetColor(cs); GUI_DrawVLine(x, y0, y0 + yStep - 1); GUI_SetColor(0x0000ff + (255 - cs) * 0x10100L); GUI_DrawVLine(x, y0 + yStep, y0 + 2 * yStep - 1); /* Green */ GUI_SetColor(cs<<8); GUI_DrawVLine(x, y0 + 2 * yStep, y0 + 3 * yStep - 1); GUI_SetColor(0x00ff00 + (255 - cs) * 0x10001L); GUI_DrawVLine(x, y0 + 3 * yStep, y0 + 4 * yStep - 1); /* Blue */ GUI_SetColor(cs * 0x10000L); GUI_DrawVLine(x, y0 + 4 * yStep, y0 + 5 * yStep - 1); GUI_SetColor(0xff0000 + (255 - cs) * 0x00101L); GUI_DrawVLine(x, y0 + 5 * yStep, y0 + 6 * yStep - 1); /* Gray */ GUI_SetColor(cs * 0x10101L); GUI_DrawVLine(x, y0 + 6 * yStep, y0 + 7 * yStep - 1); /* Yellow */ GUI_SetColor(cs * 0x00101L); GUI_DrawVLine(x, y0 + 7 * yStep, y0 + 8 * yStep - 1); GUI_SetColor(0x00ffff + (255 - cs) * 0x10000L); GUI_DrawVLine(x, y0 + 8 * yStep, y0 + 9 * yStep - 1); /* Cyan */ GUI_SetColor(cs * 0x10100L); GUI_DrawVLine(x, y0 + 9 * yStep, y0 + 10 * yStep - 1); GUI_SetColor(0xffff00 + (255 - cs) * 0x00001L); GUI_DrawVLine(x, y0 + 10 * yStep, y0 + 11 * yStep - 1); /* Magenta */ GUI_SetColor(cs * 0x10001L); GUI_DrawVLine(x, y0 + 11 * yStep, y0 + 12 * yStep - 1); GUI_SetColor(0xff00ff + (255 - cs) * 0x00100L); GUI_DrawVLine(x, y0 + 12 * yStep, y0 + 13 * yStep - 1); } GUIDEMO_Wait(); }
void GUIDEMO_ColorBar(void) { int nBars = 13; int NumColors = LCD_GetDevCap(LCD_DEVCAP_NUMCOLORS); int XSize = LCD_GetXSize(); int i, yStep, y0, x0; int lcd_ysize; int BitsPerPixel; lcd_ysize = LCD_GetYSize(); y0 = 70; x0 = 60; GUIDEMO_ShowIntro("Color bar", "emWin features " "\nan integrated color" "\nmanagement" "\nwill always find the best available color" "\nfor any logical color"); XSize -= x0; yStep = (lcd_ysize - y0 - 60) / nBars; GUI_SetColor(GUI_WHITE); GUI_SetBkColor(GUI_BLACK); GUI_Clear(); GUI_SetFont(&GUI_Font8x16); GUI_DispString("Color bars\n"); GUI_SetFont(&GUI_Font8_ASCII); #ifdef LCD_CONTROLLER GUI_DispString("\nLCD_CONTROLLER: "); GUI_DispDecMin(LCD_CONTROLLER); GUI_DispString("\n"); #endif BitsPerPixel = LCD_GetBitsPerPixel(); GUI_DispDecMin(BitsPerPixel); GUI_DispString(" bpp"); #ifdef LCD_BUSWIDTH GUI_DispString(", "); GUI_DispDecMin(LCD_BUSWIDTH); GUI_DispString(" bit bus"); #endif GUI_DispString(", "); GUI_DispDecMin(NumColors); GUI_DispString(" colors\n"); GUI_SetFont(&GUI_Font8x8); GUI_SetColor(GUI_WHITE); GUI_DispStringAt("Red", 0, y0 + yStep); GUI_DispStringAt("Green", 0, y0 + 3 * yStep); GUI_DispStringAt("Blue", 0, y0 + 5 * yStep); GUI_DispStringAt("Grey", 0, y0 + 6 * yStep); GUI_DispStringAt("Yellow", 0, y0 + 8 * yStep); GUI_DispStringAt("Cyan", 0, y0 + 10 * yStep); GUI_DispStringAt("Magenta", 0, y0 + 12 * yStep); for (i = 0; (i < XSize) && !GUIDEMO_CheckCancel(); i++) { U16 cs = (255 * (U32)i) / XSize; U16 x = x0 + i;; /* Red */ GUI_SetColor(cs); GUI_DrawVLine(x, y0, y0 + yStep - 1); GUI_SetColor(0x0000ff + (255 - cs) * 0x10100L); GUI_DrawVLine(x, y0 + yStep, y0 + 2 * yStep - 1); /* Green */ GUI_SetColor(cs<<8); GUI_DrawVLine(x, y0 + 2 * yStep, y0 + 3 * yStep - 1); GUI_SetColor(0x00ff00 + (255 - cs) * 0x10001L); GUI_DrawVLine(x, y0 + 3 * yStep, y0 + 4 * yStep - 1); /* Blue */ GUI_SetColor(cs * 0x10000L); GUI_DrawVLine(x, y0 + 4 * yStep, y0 + 5 * yStep - 1); GUI_SetColor(0xff0000 + (255 - cs) * 0x00101L); GUI_DrawVLine(x, y0 + 5 * yStep, y0 + 6 * yStep - 1); /* Gray */ GUI_SetColor(cs * 0x10101L); GUI_DrawVLine(x, y0 + 6 * yStep, y0 + 7 * yStep - 1); /* Yellow */ GUI_SetColor(cs * 0x00101L); GUI_DrawVLine(x, y0 + 7 * yStep, y0 + 8 * yStep - 1); GUI_SetColor(0x00ffff + (255 - cs) * 0x10000L); GUI_DrawVLine(x, y0 + 8 * yStep, y0 + 9 * yStep - 1); /* Cyan */ GUI_SetColor(cs * 0x10100L); GUI_DrawVLine(x, y0 + 9 * yStep, y0 + 10 * yStep - 1); GUI_SetColor(0xffff00 + (255 - cs) * 0x00001L); GUI_DrawVLine(x, y0 + 10 * yStep, y0 + 11 * yStep - 1); /* Magenta */ GUI_SetColor(cs * 0x10001L); GUI_DrawVLine(x, y0 + 11 * yStep, y0 + 12 * yStep - 1); GUI_SetColor(0xff00ff + (255 - cs) * 0x00100L); GUI_DrawVLine(x, y0 + 12 * yStep, y0 + 13 * yStep - 1); } GUIDEMO_Wait(); }