GUIDEV_Auto.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        : GUIAutoDev.c
  16. Purpose     : Implementation of automatic banding memory devices
  17. ---------------------------END-OF-HEADER------------------------------
  18. */
  19. #include "GUI_Protected.h"
  20. #include "GUIDebug.h"
  21. /*
  22.  Memory device capabilities are compiled only if support for them is enabled.
  23. */ 
  24. #if GUI_SUPPORT_MEMDEV
  25. /******************************************************************
  26. *
  27. *              GUI_MEMDEV_CreateAuto
  28. *
  29. *******************************************************************
  30. */
  31. int GUI_MEMDEV_CreateAuto(GUI_AUTODEV * pAutoDev) {
  32.   pAutoDev->FirstCall = 1;
  33.   return 0;
  34. }
  35. /******************************************************************
  36. *
  37. *              GUI_MEMDEV_DeleteAuto
  38. *
  39. *******************************************************************
  40. */
  41. void GUI_MEMDEV_DeleteAuto(GUI_AUTODEV * pAutoDev) {
  42.   GUI_USE_PARA(pAutoDev);
  43. }
  44. /******************************************************************
  45. *
  46. *              GUI_MEMDEV_DrawAuto
  47. *
  48. *******************************************************************
  49. */
  50. int GUI_MEMDEV_DrawAuto(GUI_AUTODEV * pAutoDev, GUI_AUTODEV_INFO * pAutoDevInfo, GUI_CALLBACK_VOID_P * pfDraw, void * pData) {
  51.   GUI_RECT rTemp;
  52.   GUI_HMEM hMem = GUI_MEASDEV_Create();
  53.   if (!hMem) {
  54.     return 1;
  55.   }
  56.   GUI_MEASDEV_Select(hMem);
  57.   /* Measure area to draw */
  58.   if (pAutoDev->FirstCall) {
  59.     /* Measure complete area */
  60.     pAutoDevInfo->DrawFixed = 1;
  61.     pfDraw(pData);
  62.     GUI_MEASDEV_GetRect(hMem, &pAutoDev->rView);
  63.     /* Measure variable area only */
  64.     GUI_MEASDEV_ClearRect(hMem);
  65.     pAutoDevInfo->DrawFixed = 0;
  66.     pfDraw(pData);
  67.     GUI_MEASDEV_GetRect(hMem, &pAutoDev->rPrev);
  68.   } else {
  69.     /* Measure variable area only */
  70.     pfDraw(pData);
  71.     GUI_MEASDEV_GetRect(hMem, &pAutoDev->rView);
  72.     rTemp = pAutoDev->rView;
  73.     GUI_MergeRect(&pAutoDev->rView, &pAutoDev->rView, &pAutoDev->rPrev);
  74.     pAutoDev->rPrev = rTemp;
  75.   }
  76.   GUI_MEASDEV_Delete(hMem);
  77.   /* Do the actual drawing */
  78.   pAutoDevInfo->DrawFixed = 1;
  79.   if (GUI_MEMDEV_Draw(&pAutoDev->rView, pfDraw, pData, 0, GUI_MEMDEV_NOTRANS)) {
  80.     return 1;
  81.   }
  82.   pAutoDevInfo->DrawFixed = 0;
  83.   pAutoDev->FirstCall = 0;
  84.   return 0;
  85. }
  86. #else
  87. void GUIDEV_Auto(void) {} /* avoid empty object files */
  88. #endif /* GUI_SUPPORT_MEMDEV */