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

uCOS

开发平台:

C/C++

  1. /*********************************************************************
  2. *                SEGGER MICROCONTROLLER SYSTEME GmbH                 *
  3. *        Solutions for real time microcontroller applications        *
  4. **********************************************************************
  5. *                                                                    *
  6. *        (c) 2002         SEGGER Microcontroller Systeme GmbH        *
  7. *                                                                    *
  8. *        Internet: www.segger.com    Support:  support@segger.com    *
  9. *                                                                    *
  10. **********************************************************************
  11. **** emWin/GSC Grafical user interface for embedded applications ****
  12. emWin is protected by international copyright laws. Knowledge of the
  13. source code may not be used to write a similar product. This file may
  14. only be used in accordance with a license and should not be re-
  15. distributed in any way. We appreciate your understanding and fairness.
  16. ----------------------------------------------------------------------
  17. File        : GUI_IntersectRects.c
  18. Purpose     : Implementation of GUI_IntersectRects
  19. ---------------------------END-OF-HEADER------------------------------
  20. */
  21. #include "GUI_Protected.h"
  22. /*********************************************************************
  23. *
  24. *             Macros
  25. *
  26. ********************************************************************
  27. */
  28. #define MIN(v0,v1) ((v0>v1) ? v1 : v0)
  29. #define MAX(v0,v1) ((v0>v1) ? v0 : v1)
  30. /*********************************************************************
  31. *
  32. *             GUI__IntersectRects
  33. *
  34. **********************************************************************
  35. Purpose:
  36.   Calc intersection of rectangles
  37. Return value:
  38.   1 if they do intersect,
  39.   0 if there is no intersection
  40. Add. info:
  41.   Rectangles are passed as pointers. These pointers need to be valid;
  42.   a NULL pointer may not be passed. There is no check for NULL pointers
  43.   implemented in order to avoid avoid performance penalty.
  44. */
  45. int GUI__IntersectRects(GUI_RECT* pDest, const GUI_RECT* pr0, const GUI_RECT* pr1) {
  46.   pDest->x0 = MAX (pr0->x0, pr1->x0);
  47.   pDest->y0 = MAX (pr0->y0, pr1->y0);
  48.   pDest->x1 = MIN (pr0->x1, pr1->x1);
  49.   pDest->y1 = MIN (pr0->y1, pr1->y1);
  50.   if (pDest->x1 < pDest->x0)
  51.     return 0;
  52.   if (pDest->y1 < pDest->y0)
  53.     return 0;
  54.   return 1;
  55. }