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

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        : BUTTON.c
  16. Purpose     : emWin GSC button widget
  17. ---------------------------END-OF-HEADER------------------------------
  18. */
  19. #include <stdlib.h>
  20. #include <string.h>
  21. #include "WIDGET.h"
  22. #include "GUIDebug.h"
  23. #include "GUI.h"
  24. #include "GUI_Protected.h"
  25. #include "WM_Intern.h"
  26. #if GUI_WINSUPPORT
  27. /*********************************************************************
  28. *
  29. *       Private config defaults
  30. *
  31. **********************************************************************
  32. */
  33. /*********************************************************************
  34. *
  35. *       Object definition
  36. *
  37. **********************************************************************
  38. */
  39. /*********************************************************************
  40. *
  41. *       Static data
  42. *
  43. **********************************************************************
  44. */
  45. /*********************************************************************
  46. *
  47. *       Macros for internal use
  48. *
  49. **********************************************************************
  50. */
  51. #define WIDGET_H2P(hWin)        ((WIDGET*)WM_HMEM2Ptr(hWin))
  52. /*********************************************************************
  53. *
  54. *       Static routines
  55. *
  56. **********************************************************************
  57. */
  58. /*********************************************************************
  59. *
  60. *       Public routines
  61. *
  62. **********************************************************************
  63. */
  64. /*********************************************************************
  65. *
  66. *       WIDGET_Draw3DFrame
  67. */
  68. void WIDGET_EFFECT_3D_DrawUpRect(const GUI_RECT* pRect) {
  69.   GUI_RECT r;
  70.   GUI_CONTEXT Context;
  71.   GUI_SaveContext(&Context);
  72.   r = *pRect;
  73.   GUI_SetColor(0x000000);
  74.   GUI_DrawRect(r.x0, r.y0, r.x1, r.y1);          /* Draw rectangle around it */
  75.  /* Draw the bright sides */
  76.   GUI_SetColor(0xffffff);
  77.   GUI_DrawHLine(r.y0 + 1, r.x0 + 1, r.x1 - 2);    /* Draw top line */
  78.   GUI_DrawVLine(r.x0 + 1, r.y0 + 1, r.y1 - 2);
  79.   /* Draw the dark sides */
  80.   GUI_SetColor(0x555555);
  81.   GUI_DrawHLine(r.y1-1, r.x0 + 1, r.x1 - 1);
  82.   GUI_DrawVLine(r.x1-1, r.y0 + 1, r.y1 - 2);
  83.   GUI_RestoreContext(&Context);
  84. }
  85. /*********************************************************************
  86. *
  87. *       WIDGET_EFFECT_3D_DrawUp
  88. */
  89. void WIDGET_EFFECT_3D_DrawUp(void) {
  90.   GUI_RECT r;
  91.   WM_GetClientRect(&r);
  92.   WIDGET_EFFECT_3D_DrawUpRect(&r);
  93. }
  94. /*********************************************************************
  95. *
  96. *       WIDGET_EFFECT_3D_DrawDown
  97. */
  98. void WIDGET_EFFECT_3D_DrawDownRect(const GUI_RECT* pRect) {
  99.   GUI_RECT r;
  100.   r = *pRect;
  101.   GUI_SetColor(0x000000);  /// TBD: Use halftone
  102. //  GUI_DrawRect(0, 0, r.x1, r.y1);
  103.   /* Draw the upper left sides */
  104.   GUI_SetColor(0x808080);
  105.   GUI_DrawHLine(r.y0, r.x0, r.x1);
  106.   GUI_DrawVLine(r.x0, r.y0 + 1, r.y1);
  107.   GUI_SetColor(0x0);
  108.   GUI_DrawHLine(r.y0 + 1, r.x0 + 1, r.x1 - 1);
  109.   GUI_DrawVLine(r.x0 + 1, r.y0 + 2, r.y1 - 1);
  110.   /* Draw the lower right sides */
  111.   GUI_SetColor(0xffffff);
  112.   GUI_DrawHLine(r.y1, r.x0 + 1, r.x1);
  113.   GUI_DrawVLine(r.x1, r.y0 + 1, r.y1);
  114.   GUI_SetColor(0xc0c0c0);
  115.   GUI_DrawHLine(r.y1 - 1, r. x0 + 2, r.x1-1);
  116.   GUI_DrawVLine(r.x1 - 1, r. y0 + 2, r.y1-1);
  117. }
  118. void WIDGET_EFFECT_3D_DrawDown(void) {
  119.   GUI_RECT r;
  120.   WM_GetClientRect(&r);
  121.   WIDGET_EFFECT_3D_DrawDownRect(&r);
  122. }
  123. /*********************************************************************
  124. *
  125. *       WIDGET_EFFECT_3D_GetRect
  126. */
  127. void WIDGET_EFFECT_3D_GetRect(GUI_RECT* pRect) {
  128.   WM_GetClientRect(pRect);
  129.   GUI__ReduceRect(pRect, pRect, 2);
  130. }
  131. void WIDGET_SetDefaultEffect_3D(void) {
  132.   WIDGET_SetDefaultEffect(&WIDGET_Effect_3D);
  133. }
  134. /*********************************************************************
  135. *
  136. *       Effect tables --- Mainly function pointers
  137. *
  138. **********************************************************************
  139. */
  140. const WIDGET_EFFECT WIDGET_Effect_3D = {
  141.   WIDGET_EFFECT_3D_DrawUp, WIDGET_EFFECT_3D_DrawDown,
  142.   WIDGET_EFFECT_3D_DrawUpRect, WIDGET_EFFECT_3D_DrawDownRect,
  143.   WIDGET_EFFECT_3D_GetRect, 2
  144. };
  145. #else                            /* Avoid problems with empty object modules */
  146.   void WIDGET_3D_C(void) {}
  147. #endif /* GUI_WINSUPPORT */