display.h
上传用户:wealth48
上传日期:2022-06-24
资源大小:1701k
文件大小:7k
源码类别:

uCOS

开发平台:

C/C++

  1. #ifndef __DISPLAY_H__
  2. #define __DISPLAY_H__
  3. #define DIRECT_DISPLAY 0
  4. #include "../inc/sysconfig.h"
  5. #if USE_MINIGUI==0
  6. #include "figure.h"
  7. #define FONTSIZE_SMALL 1
  8. #define FONTSIZE_MIDDLE 2
  9. #define FONTSIZE_BIG 3
  10. #define FONT_TRANSPARENT 4 //透明背景
  11. #define FONT_BLACKBK 8 //黑底白字
  12. #define GRAPH_MODE_NORMAL 0x00 //普通绘图模式
  13. #define GRAPH_MODE_OR 0x10 //绘图模式 或
  14. #define GRAPH_MODE_AND 0x20 //绘图模式 与
  15. #define GRAPH_MODE_XOR 0x30 //绘图模式 异或
  16. #define GRAPH_MODE_NOR 0x40 //绘图模式 或非
  17. #define COLOR_BLACK 0 //黑色前景色
  18. #define COLOR_WHITE 0xffffffff //白色前景色
  19. //#define COLOR_BLACK        0x0000000f //黑色前景色
  20. //#define COLOR_WHITE 0 //白色前景色
  21. #define GRAPH_ARC_BACKWARD 0 //逆时针画圆
  22. #define GRAPH_ARC_FORWARD 1 //顺时针画圆
  23. #define GRAPH_3D_UP 0 //突起的3D矩形框
  24. #define GRAPH_3D_DOWN 1 //凹陷的3D矩形框
  25. //***********************************************/
  26. #define TEXTOUT_MID_X 1
  27. #define TEXTOUT_MID_Y 2
  28. typedef struct tagBITMAPFILEHEADER {
  29. U32 bfSize;
  30. U32 bfReserved12;
  31. U32 bfOffBits;
  32. } BITMAPFILEHEADER, *PBITMAPFILEHEADER;
  33. typedef struct tagBITMAPINFOHEADER {
  34. U32 biSize;
  35. U32 biWidth;
  36. U32 biHeight;
  37. U16 biPlanes;
  38. U16 biBitCount;
  39. U32 biCompression;
  40. U32 biSizeImage;
  41. U32 biXPelsPerMeter;
  42. U32 biYPelsPerMeter;
  43. U32 biClrUsed;
  44. U32 biClrImportant;
  45. } BITMAPINFOHEADER;
  46. typedef U32 COLORREF;
  47. //定义绘图设备结构
  48. typedef struct{
  49. int DrawPointx;
  50. int DrawPointy; //绘图所使用的坐标点
  51. int PenWidth; //画笔宽度
  52. U32 PenMode; //画笔模式
  53. COLORREF PenColor; //画笔的颜色
  54. int DrawOrgx; //绘图的坐标原点位置
  55. int DrawOrgy;
  56. int WndOrgx; //绘图的窗口坐标位置
  57. int WndOrgy;
  58. int DrawRangex; //绘图的区域范围
  59. int DrawRangey;
  60. structRECT DrawRect;//绘图的有效范围
  61. U8 bUpdataBuffer; //是否更新后台缓冲区及显示
  62. U32 Fontcolor; //字符颜色
  63. }DC,*PDC;
  64. #define RGB(r,g,b) (((b)<<16)|((g)<<8)|(r))
  65. #if  DIRECT_DISPLAY==0
  66. #define SetPixel(pdc, x, y, color)   Buffer_SetPixel(pdc, x, y, color) 
  67. #define ClearScreen()                        Buffer_ClearScreen()
  68. #define MoveTo( pdc,  x,  y)              Buffer_MoveTo( pdc, x,  y)
  69. #define LineTo( pdc,x,  y)                  Buffer_LineTo( pdc,x,  y)
  70. #define DrawSBresenham_Line( pdc,  x1,  y1, x2,  y2)                  Buffer_DrawSBresenham_Line( pdc,  x1,  y1, x2,  y2)
  71. #define  FillRect(pdc, left,top , right,  bottom,DrawMode, color)   Buffer_FillRect(pdc, left,top , right,  bottom,DrawMode, color)
  72. #define  FillRect2( pdc, rect,DrawMode,color)                                Buffer_FillRect2( pdc, rect,DrawMode,color)
  73. #define  Circle( pdc,x0,y0, r)                                                           Buffer_Circle( pdc,x0,y0, r)
  74. #define  CharactorOut( pdc, x, y, ch, bunicode,  fnt)                      Buffer_CharactorOut( pdc, x, y, ch, bunicode,  fnt)
  75. #define  CharactorOutRect( pdc, x, y, prect, ch, bunicode,  fnt)     Buffer_CharactorOutRect( pdc, x, y, prect, ch, bunicode,  fnt)
  76. #define  TextOut(pdc, x,  y,  ch,  bunicode,  fnt)                             Buffer_TextOut(pdc, x,  y,  ch,  bunicode,  fnt)
  77. #define  DrawRectFrame( pdc, left, top , right,  bottom)                Buffer_DrawRectFrame( pdc, left, top , right,  bottom)
  78. #define  DrawRectFrame2(pdc, rect)                                              Buffer_DrawRectFrame2(pdc, rect)
  79. #define  Draw3DRect( pdc, left, top, right,bottom,color1,color2)                Buffer_Draw3DRect( pdc, left, top, right,bottom,color1,color2)
  80. #define  ArcTo1(pdc,  x1, y1, R)                                                      Buffer_ArcTo1(pdc,  x1, y1, R)
  81. #define  ArcTo2(pdc,  x1, y1, R)                                                      Buffer_ArcTo2(pdc,  x1, y1, R)
  82. #define  ArcTo(pdc, x1,  y1,  arctype,  R)                                        Buffer_ArcTo(pdc, x1,  y1,  arctype,  R)         
  83. #define  ShowBmp( pdc,  filename, x,  y)                                        Buffer_ShowBmp( pdc,  filename, x,  y)
  84. #endif /*#if  DIRECT_DISPLAY==0*/
  85. /**********************与设备相关的绘图函数**********************/
  86. void Buffer_SetPixel(PDC pdc, int x, int y, COLORREF color);
  87. void Buffer_ClearScreen(void);
  88. void Buffer_MoveTo(PDC pdc, int x, int y);
  89. void Buffer_LineTo(PDC pdc, int x, int y);
  90. void Buffer_DrawSBresenham_Line(PDC pdc, int x1, int y1,int x2, int y2);
  91. void Buffer_FillRect(PDC pdc, int left,int top ,int right, int bottom,U32 DrawMode, U32 color);
  92. void Buffer_FillRect2(PDC pdc, structRECT *rect,U32 DrawMode, U32 color);
  93. void Buffer_Circle(PDC pdc, int x0, int y0, int r);
  94. void Buffer_CharactorOut(PDC pdc, int* x, int* y, U16 ch, U8 bunicode, U8 fnt); //显示单个字符
  95. void Buffer_CharactorOutRect(PDC pdc, int* x, int* y, structRECT* prect ,U16 ch, U8 bunicode, U8 fnt); //在指定矩形的范围内显示单个字符
  96. void Buffer_TextOut(PDC pdc,int x, int y, U16 *ch, U8 bunicode, U8 fnt); //显示文字
  97. void Buffer_DrawRectFrame(PDC pdc, int left,int top ,int right, int bottom);
  98. void Buffer_DrawRectFrame2(PDC pdc, structRECT *rect);
  99. void Buffer_Draw3DRect(PDC pdc, int left,int top, int right, int botton, COLORREF color1, COLORREF color2);
  100. void Buffer_ArcTo1(PDC pdc, int x1, int y1, int R);
  101. void Buffer_ArcTo2(PDC pdc, int x1, int y1, int R);
  102. void Buffer_ArcTo(PDC pdc, int x1, int y1, U8 arctype, int R);
  103. void Buffer_ShowBmp(PDC pdc, char filename[], int x, int y);
  104. /*******************************************************************************/
  105. void initOSDC(void);
  106. PDC CreateDC(void);
  107. void DestoryDC(PDC pdc);
  108. void SetPixelOR(PDC pdc,int x, int y, COLORREF color);
  109. void SetPixelAND(PDC pdc,int x, int y, COLORREF color);
  110. void SetPixelXOR(PDC pdc, int x, int y, COLORREF color);
  111. int GetFontHeight(U8 fnt);
  112. void TextOutRect(PDC pdc, structRECT* prect, U16* ch, U8 bunicode, U8 fnt, U32 outMode); //在指定矩形的范围内显示文字
  113. U8 SetPenWidth(PDC pdc, U8 width);
  114. U32 SetPenMode(PDC pdc, U32 mode);
  115. int Getdelta1(int x0,int y0, int R);
  116. int Getdelta2(int x0,int y0, int R);
  117. U8 SetLCDUpdata(PDC pdc, U8 isUpdata);
  118. void Draw3DRect2(PDC pdc, structRECT *rect, COLORREF color1, COLORREF color2);
  119. U8 GetPenWidth(PDC pdc);
  120. U32 GetPenMode(PDC pdc);
  121. U32 SetPenColor(PDC pdc, U32 color);
  122. U32 GetPenColor(PDC pdc);
  123. void GetBmpSize(char filename[], int* Width, int *Height);
  124. void SetDrawOrg(PDC pdc, int x,int y, int* oldx, int *oldy);//设置绘图的原点
  125. void SetDrawRange(PDC pdc, int x,int y, int* oldx, int *oldy);//设置绘图的范围
  126. ////////////////////有延时绘图/////////////////
  127. void LineToDelay(PDC pdc, int x, int y, int ticks);
  128. void ArcToDelay(PDC pdc, int x1, int y1, U8 arctype, int R, int ticks);
  129. #endif //#if USE_MINIGUI==0
  130. #endif