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

📄 rop2.h

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

#define R2_IFMODE2MODE(m) ((m&R2_IFMODEMASK)>>R2_IFMODESHIFT)

enum _tagROP
{
	R2_ZOOMIN		=0x0100L,
	R2_ZOOMOUT		=0x0200L,
	R2_ZOOM			=0x0300L,
	R2_STRETCH		=0x0400L,
	R2_ICONLIKE		=0x0800L,
	R2_LEFT			=0x1000L,
	R2_RIGHT		=0x2000L,
	R2_CENTER		=0x3000L,
	R2_TOP			=0x4000L,
	R2_BOTTOM		=0x8000L,
	R2_VCENTER		=0xC000L,

	R2_IFMODESHIFT	=5,
	R2_STYLESHIFT	=8,
	R2_USERSHIFT	=16,
	R2_ALPHASHIFT	=24,
	R2_MODEMASK		=31L,
	R2_IFMODEMASK	=7L<<R2_IFMODESHIFT,
	R2_STYLEMASK	=255<<R2_STYLESHIFT,
	R2_USERMASK		=255<<R2_USERSHIFT,
	R2_ALPHAMASK	=255<<R2_ALPHASHIFT,

	R2_COPYPEN=0,
	R2_PRVRPIFSCR,
	R2_PRVRPIFNOTSCR,
	R2_PRVRPIFPEN,
	R2_PRVRPIFNOTPEN,
	R2_XORPEN,
	R2_MASKPEN,
	R2_MASKNOTPEN,
	R2_MASKPENNOT,
	R2_MERGEPEN,
	R2_MERGENOTPEN,
	R2_MERGEPENNOT,
	R2_NOTCOPYPEN,
	R2_NOTMASKPEN,
	R2_NOTMERGEPEN,
	R2_NOTXORPEN,
	R2_ALPHAPEN,
	R2_ALPHABLEND,
	R2_ALPHABLENDPEN,
	R2_GETCOLORINDEX,
	R2_GETCOLOR1,
	R2_GETCOLOR4,
	R2_GETCOLOR8,
	R2_GETCOLOR16,
	R2_GETCOLOR24,
	R2_SETPENCOLOR,
	R2_COPYPALETTE,
	R2_NOP,

	R2_RPIFSCREEN=R2_PRVRPIFSCR<<R2_IFMODESHIFT,
	R2_RPIFNOTSCREEN=R2_PRVRPIFNOTSCR<<R2_IFMODESHIFT,
	R2_RPIFPEN=R2_PRVRPIFPEN<<R2_IFMODESHIFT,
	R2_RPIFNOTPEN=R2_PRVRPIFNOTPEN<<R2_IFMODESHIFT,
};

class CDC;
class CROP;
class CBitmap;
typedef void (*PFNROP)(CROP& rp);
class CROP
{
public:
	void SelectObject(CBitmap* pBitmap);
	void SetRopGetColor(CDC* pDestDC,CBitmap* pSrcBmp);
	void SetROP(DWORD nRop)
	{
		ROP=GetProc(nRop);
	}
	void SetRopAlpahBlend(DWORD nAlpha)
	{
		a=nAlpha;
		SetROP(R2_ALPHABLEND);
	}
	void SetRopByPenColor(DWORD nRop,COLORREF crRGB)
	{
		SetROP(R2_SETPENCOLOR);
		c=crRGB;ROP(*this);
		SetROP(a?R2_ALPHAPEN:nRop);
	}
	void CopyPalette(PDWORD pDest,const DWORD *pSrc,int nCount)
	{
		SetROP(R2_COPYPALETTE);
		i=DWORD(pDest);a=DWORD(pSrc);c=nCount;ROP(*this);
	}
	DWORD MoveTo(int x,int y)
	{ 
		x*=m_nStepX;y*=m_nStepY;
		p=DWORD(m_pBits+x+y); 
		return p;
	}
	void MoveTo(DWORD ptr){p=ptr;}
	int GetColStep(){return m_nStepX;}
	int GetRowStep(){return m_nStepY;}
	void StepCol(){p+=m_nStepX;}
	void StepRow(){p+=m_nStepY;}
	void Offset(int nOffset){p+=DWORD(nOffset);}
	void Offset(int dx,int dy){p+=m_nStepX*dx+m_nStepY*dy;}
	void OffsetX(int dx){p+=m_nStepX*dx;}
	void OffsetY(int dy){p+=m_nStepY*dy;}
	DWORD GetPosition(){return p;}
	DWORD StepCol(DWORD nAddr){p=nAddr+m_nStepX;return p;}
	DWORD StepRow(DWORD nAddr){p=nAddr+m_nStepY;return p;}
public:
	static void RpNone(CROP &rp);
	static void RpIfPen(CROP &rp);
	static void RpIfNotPen(CROP &rp);
	static void Color555To565(CROP &rp);
	static void Color32To24(CROP &rp);
public:
	DWORD p; //绘图点地址(相素位小于8则移位相素位)
	DWORD c,a,i;//Color,Alpha,if/palette
	DWORD r,g,b;//R G B 分量
	int m_nStepX,m_nStepY;//移动一像素步长
	PBYTE m_pBits;//位图
	PFNROP ROP;
	PFNROP (*GetProc)(int nRop); 
};

//24位设备的像素ROP
class CROP24 : public CROP
{
public:
	static PFNROP GetProc(int nRop);
	static void GetColorIndex(CROP &rp);
	static void GetColor1(CROP &rp);
	static void GetColor4(CROP &rp);
	static void GetColor8(CROP &rp);
	static void GetColor16(CROP &rp);
	static void GetColor24(CROP &rp);
	static void RpIfScr(CROP &rp);
	static void RpIfNotScr(CROP &rp);
	static void SetPenColor(CROP &rp);
	static void CopyPalette(CROP &rp);
public:
	static void CopyPen(CROP &rp);
	static void XorPen(CROP &rp);
	static void AndPen(CROP &rp);
	static void AndNotPen(CROP &rp);
	static void AndPenNot(CROP &rp);
	static void OrPen(CROP &rp);
	static void OrNotPen(CROP &rp);
	static void OrPenNot(CROP &rp);
	static void NotCopyPen(CROP &rp);
	static void NotAndPen(CROP &rp);
	static void NotOrPen(CROP &rp);
	static void NotXorPen(CROP &rp);
	static void AlphaBlend(CROP &rp);
	static void AlphaPen(CROP &rp);
	static void AlphaBlendPen(CROP &rp);
};
//16位设备的像素ROP
class CROP16 : public CROP
{
public:
	static PFNROP GetProc(int nRop);
	static void GetColorIndex(CROP &rp);
	static void GetColor1(CROP &rp);
	static void GetColor4(CROP &rp);
	static void GetColor8(CROP &rp);
	static void GetColor16(CROP &rp);
	static void GetColor24(CROP &rp);
	static void RpIfScr(CROP &rp);
	static void RpIfNotScr(CROP &rp);
	static void SetPenColor(CROP &rp);
	static void CopyPalette(CROP &rp);
public:
	static void CopyPen(CROP &rp);
	static void XorPen(CROP &rp);
	static void AndPen(CROP &rp);
	static void AndNotPen(CROP &rp);
	static void AndPenNot(CROP &rp);
	static void OrPen(CROP &rp);
	static void OrNotPen(CROP &rp);
	static void OrPenNot(CROP &rp);
	static void NotCopyPen(CROP &rp);
	static void NotAndPen(CROP &rp);
	static void NotOrPen(CROP &rp);
	static void NotXorPen(CROP &rp);
	static void AlphaBlend(CROP &rp);
	static void AlphaPen(CROP &rp);
	static void AlphaBlendPen(CROP &rp);
};
//8位设备的像素ROP
class CROP8 : public CROP
{
public:
	static PFNROP GetProc(int nRop);
	static void GetColorIndex(CROP &rp);
	static void GetColor1(CROP &rp);
	static void GetColor4(CROP &rp);
	static void GetColor8(CROP &rp);
	static void GetColor16(CROP &rp);
	static void GetColor24(CROP &rp);
	static void RpIfScr(CROP &rp);
	static void RpIfNotScr(CROP &rp);
	static void SetPenColor(CROP &rp);
	static void CopyPalette(CROP &rp);
	static void AlphaBlendPen(CROP &rp);
public:
	static void CopyPen(CROP &rp);
	static void XorPen(CROP &rp);
	static void AndPen(CROP &rp);
	static void AndNotPen(CROP &rp);
	static void AndPenNot(CROP &rp);
	static void OrPen(CROP &rp);
	static void OrNotPen(CROP &rp);
	static void OrPenNot(CROP &rp);
	static void NotCopyPen(CROP &rp);
	static void NotAndPen(CROP &rp);
	static void NotOrPen(CROP &rp);
	static void NotXorPen(CROP &rp);
	static void AlphaBlend(CROP &rp);
	static void AlphaPen(CROP &rp);
};

//4位设备的像素ROP
class CROP4 : public CROP
{
public:
	static PFNROP GetProc(int nRop);
	static void GetColorIndex(CROP &rp);
	static void GetColor1(CROP &rp);
	static void GetColor4(CROP &rp);
	static void GetColor8(CROP &rp);
	static void GetColor16(CROP &rp);
	static void GetColor24(CROP &rp);
	static void RpIfScr(CROP &rp);
	static void RpIfNotScr(CROP &rp);
	static void SetPenColor(CROP &rp);
	static void CopyPalette(CROP &rp);
public:
	static void CopyPen(CROP &rp);
	static void XorPen(CROP &rp);
	static void AndPen(CROP &rp);
	static void AndNotPen(CROP &rp);
	static void AndPenNot(CROP &rp);
	static void OrPen(CROP &rp);
	static void OrNotPen(CROP &rp);
	static void OrPenNot(CROP &rp);
	static void NotCopyPen(CROP &rp);
	static void NotAndPen(CROP &rp);
	static void NotOrPen(CROP &rp);
	static void NotXorPen(CROP &rp);
public:
	const static WORD m_aColor16[16];
	const static DWORD m_aColor32[16];
};

//1位设备的像素ROP
class CROP1 : public CROP
{
public:
	static PFNROP GetProc(int nRop);
	static void GetColorIndex(CROP &rp);
	static void GetColor1(CROP &rp);
	static void GetColor4(CROP &rp);
	static void GetColor8(CROP &rp);
	static void GetColor16(CROP &rp);
	static void GetColor24(CROP &rp);
	static void RpIfScr(CROP &rp);
	static void RpIfNotScr(CROP &rp);
	static void SetPenColor(CROP &rp);
	static void CopyPalette(CROP &rp);
public:
	static void CopyPen(CROP &rp);
	static void XorPen(CROP &rp);
	static void AndPen(CROP &rp);
	static void AndNotPen(CROP &rp);
	static void AndPenNot(CROP &rp);
	static void OrPen(CROP &rp);
	static void OrNotPen(CROP &rp);
	static void OrPenNot(CROP &rp);
	static void NotCopyPen(CROP &rp);
	static void NotAndPen(CROP &rp);
	static void NotOrPen(CROP &rp);
	static void NotXorPen(CROP &rp);
};

#endif //_GOS_ROP2_H_

⌨️ 快捷键说明

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