www.pudn.com > multitaskRTC.rar > DISPLAY.H, change:2006-03-27,size:6632b


#ifndef __DISPLAY_H__ 
#define __DISPLAY_H__ 
 
#include "figure.h" 
 
#define DIRECT_DISPLAY			0 
 
 
#define FONTSIZE_SMALL		1 
#define FONTSIZE_MIDDLE		2 
#define FONTSIZE_BIG		3 
 
#define FONT_TRANSPARENT	4	//透明背景 
#define FONT_BLACKBK		8	//黑底白字 
 
#define GRAPH_MODE_NORMAL		0x00	//普通绘图模式 
#define GRAPH_MODE_OR			0x10	//绘图模式 或 
#define GRAPH_MODE_AND		0x20	//绘图模式 与 
#define GRAPH_MODE_XOR		0x30	//绘图模式 异或 
#define GRAPH_MODE_NOR		0x40	//绘图模式 或非 
 
#define COLOR_BLACK			0			//黑色前景色 
#define COLOR_WHITE			0xffffffff	//白色前景色 
 
//#define COLOR_BLACK			       0x0000000f			//黑色前景色 
//#define COLOR_WHITE			0	//白色前景色 
 
#define GRAPH_ARC_BACKWARD	0	//逆时针画圆 
#define GRAPH_ARC_FORWARD		1	//顺时针画圆 
 
#define GRAPH_3D_UP			0	//突起的3D矩形框 
#define GRAPH_3D_DOWN			1	//凹陷的3D矩形框 
 
//***********************************************/ 
#define TEXTOUT_MID_X			1 
#define TEXTOUT_MID_Y			2 
 
typedef struct tagBITMAPFILEHEADER { 
	U32 bfSize; 
	U32 bfReserved12; 
	U32 bfOffBits; 
} BITMAPFILEHEADER, *PBITMAPFILEHEADER; 
 
typedef struct tagBITMAPINFOHEADER { 
	U32 biSize; 
	U32 biWidth; 
	U32 biHeight; 
	U16 biPlanes; 
	U16 biBitCount; 
	U32 biCompression; 
	U32 biSizeImage; 
	U32 biXPelsPerMeter; 
	U32 biYPelsPerMeter; 
	U32 biClrUsed; 
	U32 biClrImportant; 
} BITMAPINFOHEADER; 
 
typedef U32 COLORREF; 
 
//定义绘图设备结构 
typedef struct{ 
	int DrawPointx; 
	int DrawPointy; //绘图所使用的坐标点 
	int PenWidth;	//画笔宽度 
	U32 PenMode; //画笔模式 
	COLORREF PenColor;	//画笔的颜色 
 
	int DrawOrgx;	//绘图的坐标原点位置 
	int DrawOrgy; 
 
	int WndOrgx;	//绘图的窗口坐标位置 
	int WndOrgy; 
 
	int DrawRangex;	//绘图的区域范围 
	int DrawRangey; 
 
	structRECT DrawRect;//绘图的有效范围 
 
	U8 bUpdataBuffer;	//是否更新后台缓冲区及显示 
	U32 Fontcolor; //字符颜色 
}DC,*PDC; 
 
#define RGB(r,g,b)	(((r)<<16)|((g)<<8)|(b)) 
 
 
#if  DIRECT_DISPLAY==0 
 
#define SetPixel(pdc, x, y, color)	  Buffer_SetPixel(pdc, x, y, color)  
#define ClearScreen()                        Buffer_ClearScreen() 
#define MoveTo( pdc,  x,  y)              Buffer_MoveTo( pdc, x,  y) 
#define LineTo( pdc,x,  y)                  Buffer_LineTo( pdc,x,  y) 
#define DrawSBresenham_Line( pdc,  x1,  y1, x2,  y2)                  Buffer_DrawSBresenham_Line( pdc,  x1,  y1, x2,  y2) 
 
#define  FillRect(pdc, left,top , right,  bottom,DrawMode, color)   Buffer_FillRect(pdc, left,top , right,  bottom,DrawMode, color) 
#define  FillRect2( pdc, rect,DrawMode,color)                                Buffer_FillRect2( pdc, rect,DrawMode,color) 
#define  Circle( pdc,x0,y0, r)                                                           Buffer_Circle( pdc,x0,y0, r) 
#define  CharactorOut( pdc, x, y, ch, bunicode,  fnt)                      Buffer_CharactorOut( pdc, x, y, ch, bunicode,  fnt) 
#define  CharactorOutRect( pdc, x, y, prect, ch, bunicode,  fnt)     Buffer_CharactorOutRect( pdc, x, y, prect, ch, bunicode,  fnt) 
#define  TextOut(pdc, x,  y,  ch,  bunicode,  fnt)                             Buffer_TextOut(pdc, x,  y,  ch,  bunicode,  fnt) 
#define  DrawRectFrame( pdc, left, top , right,  bottom)                Buffer_DrawRectFrame( pdc, left, top , right,  bottom) 
#define  DrawRectFrame2(pdc, rect)                                              Buffer_DrawRectFrame2(pdc, rect) 
#define  Draw3DRect( pdc, left, top, right,bottom,color1,color2)                Buffer_Draw3DRect( pdc, left, top, right,bottom,color1,color2) 
#define  ArcTo1(pdc,  x1, y1, R)                                                      Buffer_ArcTo1(pdc,  x1, y1, R) 
#define  ArcTo2(pdc,  x1, y1, R)                                                      Buffer_ArcTo2(pdc,  x1, y1, R) 
#define  ArcTo(pdc, x1,  y1,  arctype,  R)                                        Buffer_ArcTo(pdc, x1,  y1,  arctype,  R)          
 
#define  ShowBmp( pdc,  filename, x,  y)                                        Buffer_ShowBmp( pdc,  filename, x,  y) 
 
#endif /*#if  DIRECT_DISPLAY==0*/ 
 
/**********************与设备相关的绘图函数**********************/ 
void Buffer_SetPixel(PDC pdc, int x, int y, COLORREF color); 
void Buffer_ClearScreen(); 
void Buffer_MoveTo(PDC pdc, int x, int y); 
void Buffer_LineTo(PDC pdc, int x, int y); 
void Buffer_DrawSBresenham_Line(PDC pdc, int x1, int y1,int x2, int y2); 
void Buffer_FillRect(PDC pdc, int left,int top ,int right, int bottom,U32 DrawMode, U32 color); 
void Buffer_FillRect2(PDC pdc, structRECT *rect,U32 DrawMode, U32 color); 
void Buffer_Circle(PDC pdc, int x0, int y0, int r); 
void Buffer_CharactorOut(PDC pdc, int* x, int* y, U16 ch, U8 bunicode, U8 fnt); //显示单个字符 
void Buffer_CharactorOutRect(PDC pdc, int* x, int* y, structRECT* prect ,U16 ch, U8 bunicode, U8 fnt); //在指定矩形的范围内显示单个字符 
void Buffer_TextOut(PDC pdc,int x, int y, U16 *ch, U8 bunicode, U8 fnt);		//显示文字 
void Buffer_DrawRectFrame(PDC pdc, int left,int top ,int right, int bottom); 
void Buffer_DrawRectFrame2(PDC pdc, structRECT *rect); 
void Buffer_Draw3DRect(PDC pdc, int left,int top, int right, int botton, COLORREF color1, COLORREF color2); 
void Buffer_ArcTo1(PDC pdc, int x1, int y1, int R); 
void Buffer_ArcTo2(PDC pdc, int x1, int y1, int R); 
void Buffer_ArcTo(PDC pdc, int x1, int y1, U8 arctype, int R); 
void Buffer_ShowBmp(PDC pdc, char filename[], int x, int y); 
/*******************************************************************************/ 
 
 
void initOSDC(); 
PDC CreateDC(); 
void DestoryDC(PDC pdc); 
 
void SetPixelOR(PDC pdc,int x, int y, COLORREF color); 
void SetPixelAND(PDC pdc,int x, int y, COLORREF color); 
void SetPixelXOR(PDC pdc, int x, int y, COLORREF color); 
 
 
int GetFontHeight(U8 fnt); 
void TextOutRect(PDC pdc, structRECT* prect, U16* ch, U8 bunicode, U8 fnt, U32 outMode);	//在指定矩形的范围内显示文字 
 
U8 SetPenWidth(PDC pdc, U8 width); 
U32 SetPenMode(PDC pdc, U32 mode); 
 
int Getdelta1(int x0,int y0, int R); 
int Getdelta2(int x0,int y0, int R); 
 
U8 SetLCDUpdata(PDC pdc, U8 isUpdata); 
void Draw3DRect2(PDC pdc, structRECT *rect, COLORREF color1, COLORREF color2); 
U8 GetPenWidth(PDC pdc); 
U32 GetPenMode(PDC pdc); 
U32 SetPenColor(PDC pdc, U32 color); 
U32 GetPenColor(PDC pdc); 
void GetBmpSize(char filename[], int* Width, int *Height); 
void SetDrawOrg(PDC pdc, int x,int y, int* oldx, int *oldy);//设置绘图的原点 
void SetDrawRange(PDC pdc, int x,int y, int* oldx, int *oldy);//设置绘图的范围 
 
////////////////////有延时绘图///////////////// 
void LineToDelay(PDC pdc, int x, int y, int ticks); 
void ArcToDelay(PDC pdc, int x1, int y1, U8 arctype, int R, int ticks); 
 
 
#endif