/******************************************************************* * * _ShowComments * * Shows all comments of a GIF file */ static void _ShowComments(const char * pFile, int FileSize) { GUI_RECT Rect = {80, 100, 239, 199}; char acBuffer[256] = {0}; int CommentCnt; /* Display sample information */ GUI_SetFont(&GUI_Font8x16); GUI_ClearRect(0, 40, 319, 59); GUI_DispStringHCenterAt("Show all comments of a GIF file", 160, 40); /* Show all comments */ GUI_ClearRect(0, 60, 319, 239); /* Clear the image area */ CommentCnt = 0; while (!GUI_GIF_GetComment(pFile, FileSize, (unsigned char *)acBuffer, sizeof(acBuffer), CommentCnt)) { char acNumber[12] = "Comment #0:"; acNumber[9] = '0' + CommentCnt; GUI_DispStringHCenterAt(acNumber, 160, 80); GUI_SetBkColor(GUI_BLACK); GUI_SetColor(GUI_WHITE); GUI_ClearRectEx(&Rect); GUI_DispStringInRectWrap(acBuffer, &Rect, GUI_TA_HCENTER | GUI_TA_VCENTER, GUI_WRAPMODE_WORD); GUI_SetBkColor(GUI_WHITE); GUI_SetColor(GUI_BLACK); GUI_Delay(4000); /* Wait a while */ CommentCnt++; } }
/********************************************************************* * * _Paint */ static void _Paint(TEXT_Handle hObj, TEXT_Obj* pObj) { const char * s; GUI_RECT Rect; GUI_USE_PARA(hObj); LCD_SetColor(pObj->Props.TextColor); GUI_SetFont (pObj->Props.pFont); /* Fill with parents background color */ #if !TEXT_SUPPORT_TRANSPARENCY /* Not needed any more, since window is transparent*/ if (pObj->Props.BkColor == GUI_INVALID_COLOR) { LCD_SetBkColor(WIDGET__GetBkColor(hObj)); } else { LCD_SetBkColor(pObj->Props.BkColor); } GUI_Clear(); #else if (!WM_GetHasTrans(hObj)) { LCD_SetBkColor(pObj->Props.BkColor); GUI_Clear(); } #endif /* Show the text */ if (pObj->hpText) { s = (const char*) GUI_ALLOC_h2p(pObj->hpText); GUI_SetTextMode(GUI_TM_TRANS); WM_GetClientRect(&Rect); GUI_DispStringInRectWrap(s, &Rect, pObj->Align, pObj->Props.WrapMode); } }
/********************************************************************* * * _DrawJPEGs * * Function description * Draws the given JPEG image. */ static void _DrawJPEGs(const char * sFileName) { static int i; const char acError[] = "There is possibly not enough memory to display this JPEG image.\n\nPlease assign more memory to emWin in GUIConf.c."; GUI_JPEG_INFO Info; GUI_RECT Rect; HANDLE hFile; DWORD NumBytesRead; DWORD FileSize; char * pFile; int xSize, ySize; int xPos, yPos; int r; xSize = LCD_GetXSize(); ySize = LCD_GetYSize(); // // Display file name. // Rect.x0 = BORDER_SIZE; Rect.y0 = TITLE_HEIGHT; Rect.x1 = xSize - BORDER_SIZE - 1; Rect.y1 = YPOS_IMAGE - 1; GUI_ClearRectEx(&Rect); GUI_SetTextMode(GUI_TM_NORMAL); GUI_SetFont(&GUI_Font8x16); GUI_DispStringInRectWrap(sFileName, &Rect, GUI_TA_HCENTER | GUI_TA_VCENTER, GUI_WRAPMODE_CHAR); // // Clear the area in which the JPEG files are displayed. // Rect.x0 = BORDER_SIZE; Rect.y0 = YPOS_IMAGE; Rect.x1 = xSize - BORDER_SIZE - 1; Rect.y1 = ySize - BORDER_SIZE - 1; GUI_ClearRectEx(&Rect); // // Load image. // hFile = CreateFile(sFileName, GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); FileSize = GetFileSize(hFile, NULL); pFile = malloc(FileSize); ReadFile(hFile, pFile, FileSize, &NumBytesRead, NULL); CloseHandle(hFile); // // Check if the current JPEG image fits on the screen. // GUI_JPEG_GetInfo(pFile, FileSize, &Info); xSize -= BORDER_SIZE * 2 + 1; ySize -= YPOS_IMAGE + BORDER_SIZE + 1; // // Display the image centered. // xPos = BORDER_SIZE + (xSize - Info.XSize) / 2; yPos = YPOS_IMAGE + (ySize - Info.YSize) / 2; GUI_SetClipRect(&Rect); r = GUI_JPEG_Draw(pFile, FileSize, xPos, yPos); GUI_SetClipRect(NULL); if (r) { // // The image could not be displayed successfully. Show an error message. // GUI_DispStringInRectWrap(acError, &Rect, GUI_TA_HCENTER | GUI_TA_VCENTER, GUI_WRAPMODE_WORD); } else { GUI_Delay(2000); if ((Info.XSize > xSize) || (Info.YSize > ySize)) { // // Inform the user about the possibility of scaling JPEG images. // if (i == 0) { GUI_ClearRectEx(&Rect); GUI_DispStringInRectWrap("JPEG images can be scaled as it is shown in 2DGL_JPEG_DrawScaled.c.", &Rect, GUI_TA_BOTTOM | GUI_TA_HCENTER, GUI_WRAPMODE_WORD); GUI_Delay(3000); } i++; if (i == NUM_IMAGES_UNTIL_HINT) { i = 0; } } } free(pFile); }
/********************************************************************* * * _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); }
/********************************************************************* * * _DrawText */ static void _DrawText(char * s, GUI_RECT * pRect) { GUI_SetFont(GUI_FONT_13_ASCII); GUI_SetColor(GUI_WHITE); GUI_DispStringInRectWrap(s, pRect, GUI_TA_HCENTER | GUI_TA_VCENTER, GUI_WRAPMODE_WORD); GUI_SetTextMode(GUI_TM_TRANS); }
/********************************************************************* * * _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); }