GUIDEMO_Speed.c
上传用户:zbk8730
上传日期:2017-08-10
资源大小:12168k
文件大小:3k
源码类别:

uCOS

开发平台:

C/C++

  1. /*
  2. *********************************************************************************************************
  3. *                                                uC/GUI
  4. *                        Universal graphic software for embedded applications
  5. *
  6. *                       (c) Copyright 2002, Micrium Inc., Weston, FL
  7. *                       (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
  8. *
  9. *              礐/GUI is protected by international copyright laws. Knowledge of the
  10. *              source code may not be used to write a similar product. This file may
  11. *              only be used in accordance with a license and should not be redistributed
  12. *              in any way. We appreciate your understanding and fairness.
  13. *
  14. ----------------------------------------------------------------------
  15. File        : GUIDEMO_Speed.c
  16. Purpose     : Speed demo
  17. ----------------------------------------------------------------------
  18. */
  19. #include <stdlib.h>  /* for rand */
  20. #include "GUI.H"
  21. #include "GUIDEMO.H"
  22. static const GUI_COLOR _aColor[8] = {
  23.   0x000000, 
  24.   0x0000FF, 
  25.   0x00FF00, 
  26.   0x00FFFF, 
  27.   0xFF0000, 
  28.   0xFF00FF, 
  29.   0xFFFF00, 
  30.   0xFFFFFF
  31. };
  32. /*********************************************************************
  33. *
  34. *       GUIDEMO_Speed
  35. *
  36. **********************************************************************
  37. */
  38. void GUIDEMO_Speed(void) {
  39.   int t = GUI_GetTime();
  40.   int i = 0;
  41.   int XSize = LCD_GET_XSIZE();
  42.   int YSize = LCD_GET_YSIZE();
  43.   I32 NumPixels=0;
  44.   U16 aColorIndex[8];
  45.   GUIDEMO_ShowIntro("High speed",
  46.                     "Multi layer clipping"
  47.                     "nHighly optimized drivers"
  48.                     );
  49.   for (i = 0; i< 8; i++) {
  50.     aColorIndex[i] = GUI_Color2Index(_aColor[i]);
  51.   }  
  52.   for (i = 0; (((t + 8000) - (int)GUI_GetTime()) > 0) && !GUIDEMO_CheckCancel(); i++) {
  53.     GUI_RECT r;
  54.     GUI_SetColorIndex(aColorIndex[i&7]);
  55.     /* Calculate random positions */
  56.     r.x0 = rand() % XSize - XSize / 2;
  57.     r.y0 = rand() % YSize - YSize / 2;
  58.     r.x1 = r.x0 + rand() % XSize;
  59.     r.y1 = r.y0 + rand() % YSize;
  60.     GUI_FillRect(r.x0, r.y0, r.x1, r.y1);
  61.     /* Clip rectangle to visible area and add the number of pixels (for speed computation) */
  62.     if (r.x1 >= XSize)
  63.       r.x1 = XSize - 1;
  64.     if (r.y1 >= YSize)
  65.       r.y1 = YSize - 1;
  66.     if (r.x0 < 0 )
  67.       r.x0 = 0;
  68.     if (r.y1 < 0)
  69.       r.y1 = 0;
  70.     NumPixels += (r.x1 - r.x0) * (r.y1 - r.y0);
  71.     /* Allow short breaks so we do not use all available CPU time ... */
  72.   }
  73.   t = (GUI_GetTime() - t) / 100;
  74.   GUI_Clear();
  75.   GUIDEMO_NotifyStartNext();
  76.   #if GUIDEMO_LARGE
  77.     GUI_SetFont(&GUI_FontComic24B_ASCII);
  78.   #else
  79.     GUI_SetFont(&GUI_Font16B_ASCII);
  80.   #endif
  81.   GUI_SetColor(GUI_WHITE);
  82.   GUI_DispStringAt("Pixels/sec: ", 10, (LCD_GetYSize() - GUI_GetFontSizeY()) / 2);
  83.   if (t == 0)
  84.     t++;
  85.   GUI_DispDecMin(10 * (NumPixels / t));
  86.   GUIDEMO_Wait();
  87. }