GUIDEV_CmpWithLCD.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        : GUIDevRB.C
  16. Purpose     : Implementation of Checking for memory devices
  17. ----------------------------------------------------------------------
  18. Version-Date---Author-Explanation
  19. ----------------------------------------------------------------------
  20. 1.00    000418 RS     First version for release (all tests O.K.)
  21. ---------------------------END-OF-HEADER------------------------------
  22. */
  23. #include <string.h>
  24. #include "GUI_Private.h"
  25. #include "GUIDebug.h"
  26. /*
  27.  Memory device capabilities are compiled only if support for them is enabled.
  28. */ 
  29. #if GUI_SUPPORT_MEMDEV
  30. /*
  31.       *************************************************
  32.       *                                               *
  33.       *             CompareWithLCD                    *
  34.       *                                               *
  35.       *************************************************
  36. */
  37. int GUI_MEMDEV_CompareWithLCD(GUI_MEMDEV_Handle hMem, int*px, int*py, int *pExp, int*pAct) {
  38.   /* Make sure memory handle is valid */
  39.   if (!hMem) {
  40.     hMem = GUI_Context.hDevData;
  41.   }
  42.   if (!hMem) {
  43.     return 1;
  44.   }
  45.   {
  46.     GUI_MEMDEV* pDevData = (GUI_MEMDEV*) GUI_ALLOC_LOCK(hMem);  /* Convert to pointer */
  47.     int y     = pDevData->y0;
  48.     int x0    = pDevData->x0;
  49.     int XMax  = pDevData->XSize+x0;
  50.     int YMax  = pDevData->YSize+y;
  51.     int Max;
  52.     int MagX = LCD_GetXMag();
  53.     int MagY = LCD_GetYMag();
  54.     /* Calculate limits */
  55.     if (y < 0)
  56. y=0;
  57.     if (x0 < 0)
  58. x0=0;
  59.     Max = LCD_GET_YSIZE();
  60. if (YMax > Max)
  61. YMax = Max;
  62.     Max = LCD_GET_XSIZE();
  63. if (XMax > Max)
  64. XMax = Max;
  65.     for (; y < YMax; y++) {
  66.       int x=x0;
  67.       LCD_PIXELINDEX* pData = GUI_MEMDEV_XY2PTR(x,y);
  68.       for (x=x0; x<XMax; x++) {
  69.         int Exp = *pData++;
  70.         int Act = LCD_L0_GetPixelIndex(x * MagX, y * MagY);
  71.         if (Act != Exp) {
  72.           *px    = x;
  73.           *py    = y;
  74.           *pAct  = Act;
  75.           *pExp  = Exp;
  76.           return 1;
  77.         }
  78.       }
  79.     }
  80.   }
  81.   GUI_ALLOC_UNLOCK(hMem);
  82.   return 0;
  83. }
  84. void GUIDEV_CmpWithLCD(void) {}
  85. #else
  86. void GUIDEV_CmpWithLCD(void) {} /* avoid empty object files */
  87. #endif /* GUI_SUPPORT_MEMDEV */