⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gdiobject.h

📁 一个更为先进的嵌入式操作系统.采用RMS线程调度算法,具有信号量等同步对象.亦包括GUI. 通过该系统您可以极大知道Windows的内部秘密.
💻 H
字号:
#ifndef _GOS_GIDOBJECT_H_
#define _GOS_GIDOBJECT_H_

#define RGB(r,g,b) (DWORD(r)|(DWORD(g)<<8)|(DWORD(b)<<16))
#define RGBA(r,g,b,a) (RGB(r,g,b)|DWORD(a<<24))
#define CLR_NONE 0xFFFFFFFEL

#define GETBMPWIDTHBYTES(wb,w,bpp) wb=(w)<0?-(w):(w);wb*=bpp;wb=((wb+31)>>5)<<2
#define GETBMPBITSBYTES(wb,w,h,bpp) GETBMPWIDTHBYTES(wb,w,bpp);wb*=(h)<0?-(h):(h)
#define MAKEBMPTYPE(rs,rw,gs,gw,bs,bw) ((rs)|((rw)<<5)|((gs)<<10)|((gw)<<15)|((bs)<<20)|((bw)<<25))

enum _tagGdiObject
{
	BMP_OWNBUFFER=0x80000000,
	BMP_TYPEMASK=0x7fffffff,
	BMP_TYPEVER2=0x40000000,
	BMP_TYPE888=MAKEBMPTYPE(16,8,8,8,0,8),
	BMP_TYPE565=MAKEBMPTYPE(11,5,5,6,0,5),
	BMP_TYPE555=MAKEBMPTYPE(10,5,5,5,0,5),
	BMP_TYPE332=MAKEBMPTYPE(5,3,2,3,0,2),
	BMP_TYPE32=BMP_TYPEVER2|BMP_TYPE888,
	BMP_TYPE24=BMP_TYPE888,
	BMP_TYPE8=BMP_TYPE332,
	BMP_TYPE4=BMP_TYPEVER2|0x20000000,
	BMP_TYPE1=BMP_TYPEVER2|0x10000000,

	PS_NULL=0,
	PS_SOLID=0xffffffff,
	PS_DASH=0x7777777,
	PS_DOT=0x55555555,
	PS_DASHDOT=0x75757575,
	PS_DASHDOTDOT=0x77557755,

	HS_NULL=0,
	HS_SOLID=-1,
	HS_DOT=0xAA55AA55,
	HS_BDIAGONAL=0x11224488,
	HS_CROSS=0x11FF1111,
	HS_FDIAGONAL=0x88442211,
	HS_HORIZONTAL=0x00FF0000,
	HS_VERTICAL=0x11111111,
	HS_VWAVE=0x22442211,
	HS_HWAVE=0x66990000,
};

typedef struct _tagBITMAP{
	LONG bmType;
	LONG bmWidth;
	LONG bmHeight;
	PRGBQUAD bmClrTable;
	SHORT bmClrUsed;
	SHORT bmBitsPixel;
	LPVOID bmBits;
}BITMAP, *PBITMAP;

typedef struct _tagBITMAPFILEHEADER{
	WORD bfType;
	WORD bfSizeL;
	WORD bfSizeH;
	WORD bfReserved1;
	WORD bfReserved2;
	WORD bfOffBitsL;
	WORD bfOffBitsH;
}BITMAPFILEHEADER, *PBITMAPFILEHEADER;

typedef struct _tagBITMAPINFOHEADER{
	DWORD biSize;
	LONG biWidth;
	LONG biHeight;
	WORD biPlanes;
	WORD biBitCount;
	DWORD biCompression;
	DWORD biSizeImage;
	LONG biXPelsPerMeter;
	LONG biYPelsPerMeter;
	DWORD biClrUsed;
	DWORD biClrImportant;
}BITMAPINFOHEADER, *PBITMAPINFOHEADER;

class CDC;
class CROP;
class CPalette;
class CCharSet;
class CFontFace;

class CBitmap
{
public:
	BOOL CreateBitmap(PBITMAPFILEHEADER pFile,CDC* pCompatible=NULL);
	BOOL CreateBitmap(LPCTSTR pszFileName,CDC* pCompatible=NULL);
	BOOL CreateBitmap(int nWidth,int nHeight,CDC* pCompatible);
	BOOL CreateBitmap(int nWidth,int nHeight,CBitmap* pCompatible);
	BOOL CreateBitmap(int nWidth,int nHeight,int nBitcount);
	void CreateBitmap(int nWidth,int nHeight,int nBitcount,LPVOID pBits);
	void CopyBitmap(CBitmap* pSrcBitmap);
	void DeleteObject();
	CPalette* GetPalette()
	{
		if(m_bmp.bmClrUsed>=0)return NULL;
		return (CPalette*)&m_bmp.bmClrTable;
	}
	CSize GetSize()
	{
		CSize size;
		size.cx=m_bmp.bmWidth<0?-m_bmp.bmWidth:m_bmp.bmWidth;
		size.cy=m_bmp.bmHeight<0?-m_bmp.bmHeight:m_bmp.bmHeight;
		return size;
	}
	const BITMAP& GetBitmap(){return m_bmp;}
	CBitmap(void){m_bmp.bmBits=NULL;}
	~CBitmap(void){DeleteObject();}
private:
	BITMAP m_bmp;
};

class CPalette
{
public:
	CPalette(){m_pTable=NULL;}
	~CPalette(){free(m_pTable);}
	BOOL CreatePalette(CDC* pCompatile,CBitmap* pBitmap);
	BOOL CreatePalette(CDC* pCompatile,PRGBQUAD pColorTable,int nCount);
	BOOL CreatePalette(CDC* pCompatile,PCOLORREF pColorTable,int nCount);
	void DeleteObject()
		{ free(m_pTable);m_pTable=NULL; }
	PDWORD GetTable()
		{ return m_pTable; }
	int GetSize()
		{ return _msize(m_pTable)>>2; }
private:
	PDWORD m_pTable;
};

class CPen
{
public:	
	CPen(){m_nStyle=0;}
	CPen(CBitmap* pBitmap)
		{ CreatePen(pBitmap); }
	CPen(int nStyle,int nWidth,COLORREF crColor)
		{ CreatePen(nStyle,nWidth,crColor); }
	void CreatePen(CBitmap* pBitmap)
	{
		m_nStyle=-1;
		m_crColor=COLORREF(pBitmap);
	}
	void CreatePen(int nStyle,int nWidth,COLORREF crColor)
	{
		m_nStyle=nStyle;
		m_nWidth=nWidth;
		m_crColor=crColor;
	}
public:
	int m_nStyle;
	int m_nWidth;
	COLORREF m_crColor;
};

class CBrush
{
public:	
	CBrush()
		{ m_nStyle=0; m_crColor=0; }
	CBrush(CBitmap* pBitmap)
		{ CreateBrush(pBitmap); }
	CBrush(int nStyle,COLORREF crColor)
		{ CreateBrush(nStyle,crColor); }
	void CreateBrush(CBitmap* pBitmap)
	{
		m_nStyle=-1;
		m_crColor=COLORREF(pBitmap);
	}
	void CreateBrush(int nStyle,COLORREF crColor)
	{
		m_nStyle=nStyle;
		m_crColor=crColor;
	}
public:
	int m_nStyle;
	COLORREF m_crColor;
};

class CFont
{
public:
	BOOL CreateFont(int nSize)
		{ return CreateFont(NULL,NULL,nSize); }
	BOOL CreateFont(CFontFace* pFontFace,int nSize)
		{ return CreateFont(NULL,pFontFace,nSize); }
	BOOL CreateFont(CCharSet* pCharSet,CFontFace* pFontFace,int nSize);
public:
	CCharSet* m_pCharSet;
	CFontFace* m_pFontFace;
	int m_nSize;
};

#endif //_GOS_GIDOBJECT_H_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -