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

📄 m2b4_lin.c

📁 nucleus 文件系统,内核和彩色图形系统,在小系统上非常好用
💻 C
📖 第 1 页 / 共 3 页
字号:
/* Diagonal top->bottom, left->right replace. */
void M2_4BURDLR(void)
{
	int i;
	int pxShift;
	byte pxBit;
	byte pxColor;

	pxShift =  (dRect.Xmin & firstOffset) * shfCnt;
	pxColor = (byte) (lclPenColor >> pxShift);
	pxBit = (byte) (shiftMask >> pxShift);
	dstBgnByte = dRect.Xmin >> flipMask;
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + dstBgnByte;
		*dstPtr = (*dstPtr & ~pxBit) | pxColor;

		rowTablePtr[0]++;
		pxColor = pxColor >> shfCnt;
		pxBit = (pxBit >> shfCnt);
		if(pxBit == 0)
		{
			dstBgnByte++;
			pxBit = shiftMask;
			pxColor = lclPenColor;
		}
	}

	return;
}


/* Y major top->bottom, left->right replace. */
void M2_4BURYMLR(void)
{
	int i;
	int pxShift;
	byte pxBit;
	byte pxColor;

	pxShift =  (dRect.Xmin & firstOffset) * shfCnt;
	pxColor = (byte) (lclPenColor >> pxShift);
	pxBit = (byte) (shiftMask >> pxShift);
	dstBgnByte = dRect.Xmin >> flipMask;
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + dstBgnByte;
		*dstPtr = (*dstPtr & ~pxBit) | pxColor;

		rowTablePtr[0]++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			pxColor = pxColor >> shfCnt;
			pxBit = (pxBit >> shfCnt);
			if(pxBit == 0)
			{
				dstBgnByte++;
				pxBit = shiftMask;
				pxColor = lclPenColor;
			}
		}
	}

	return;
}


/* Y major top->bottom, right->left replace. */
void M2_4BURYMRL(void)
{
	int i;
	int pxShift;
	byte pxBit;
	byte pxColor;

	pxShift =  (dRect.Xmin & firstOffset) * shfCnt;
	pxColor = (byte) (lclPenColor >> pxShift);
	pxBit = (byte) (shiftMask >> pxShift);
	dstBgnByte = dRect.Xmin >> flipMask;
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + dstBgnByte;
		*dstPtr = (*dstPtr & ~pxBit) | pxColor;

		rowTablePtr[0]++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			pxColor = pxColor << shfCnt;
			pxBit = (pxBit << shfCnt);
			if(pxBit == 0)
			{
				dstBgnByte--;
				if (shfCnt == 2)
				{
					pxBit = 0x03;
					pxColor = lclPenColor >> 6;
				}
				else
				{
					pxBit = 0x0f;
					pxColor = lclPenColor >> 4;
				}
			}
		}
	}

	return;
}


/* X major top->bottom, left->right replace. */
void M2_4BURXMLR(void)
{
	int i;
	int pxShift;
	byte pxBit;
	byte pxColor;

	pxShift =  (dRect.Xmin & firstOffset) * shfCnt;
	pxColor = (byte) (lclPenColor >> pxShift);
	pxBit = (byte) (shiftMask >> pxShift);
	dstBgnByte = dRect.Xmin >> flipMask;
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + dstBgnByte;
		*dstPtr = (*dstPtr & ~pxBit) | pxColor;

		pxColor = pxColor >> shfCnt;
		pxBit = (pxBit >> shfCnt);
		if(pxBit == 0)
		{
			dstBgnByte++;
			pxBit = shiftMask;
			pxColor = lclPenColor;
		}

		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			rowTablePtr[0]++;
		}
	}

	return;
}


/* X major top->bottom, right->left replace. */
void M2_4BURXMRL(void)
{
	int i;
	int pxShift;
	byte pxBit;
	byte pxColor;

	pxShift =  (dRect.Xmin & firstOffset) * shfCnt;
	pxColor = (byte) (lclPenColor >> pxShift);
	pxBit = (byte) (shiftMask >> pxShift);
	dstBgnByte = dRect.Xmin >> flipMask;
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + dstBgnByte;
		*dstPtr = (*dstPtr & ~pxBit) | pxColor;

		pxColor = pxColor << shfCnt;
		pxBit = (pxBit << shfCnt);
		if(pxBit == 0)
		{
			dstBgnByte--;
			if (shfCnt == 2)
			{
				pxBit = 0x03;
				pxColor = lclPenColor >> 6;
			}
			else
			{
				pxBit = 0x0f;
				pxColor = lclPenColor >> 4;
			}
		}

		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			rowTablePtr[0]++;
		}
	}

	return;
}


/*	Horizontal left->right XOR.	*/
void M2_4BUXH(void)
{
	int i;
	int pxShift;
	byte pxBit;
	byte pxColor;

	pxShift =  (dRect.Xmin & firstOffset) * shfCnt;
	pxColor = (byte) (lclPenColor >> pxShift);
	pxBit = (byte) (shiftMask >> pxShift);
	dstPtr = (byte *) *rowTablePtr[0] + (dRect.Xmin >> flipMask);
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		*dstPtr = *dstPtr ^ pxColor;

		pxColor = pxColor >> shfCnt;
		pxBit = (pxBit >> shfCnt);
		if(pxBit == 0)
		{
			dstPtr++;
			pxBit = shiftMask;
			pxColor = lclPenColor;
		}
	}

	return;
}


/* Vertical top->bottom XOR. */
void M2_4BUXV()
{
	int i;
	int pxShift;
/* BobB 11/10/99 - removed the following variable since it is not used
	byte pxBit; */
	byte pxColor;

	pxShift =  (dRect.Xmin & firstOffset) * shfCnt;
	pxColor = (byte) (lclPenColor >> pxShift);
/* BobB 11/10/99 - removed the following line since it is not used
	pxBit = (byte) (shiftMask >> pxShift); */
	dstBgnByte = dRect.Xmin >> flipMask;
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + dstBgnByte;
		*dstPtr = *dstPtr ^ pxColor;

		rowTablePtr[0]++;
	}

	return;
}


/* Diagonal top->bottom, right->left XOR. */
void M2_4BUXDRL(void)
{
	int i;
	int pxShift;
	byte pxBit;
	byte pxColor;

	pxShift =  (dRect.Xmin & firstOffset) * shfCnt;
	pxColor = (byte) (lclPenColor >> pxShift);
	pxBit = (byte) (shiftMask >> pxShift);
	dstBgnByte = dRect.Xmin >> flipMask;
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + dstBgnByte;
		*dstPtr = *dstPtr ^ pxColor;

		rowTablePtr[0]++;
		pxColor = pxColor << shfCnt;
		pxBit = (pxBit << shfCnt);
		if(pxBit == 0)
		{
			dstBgnByte--;
			if (shfCnt == 2)
			{
				pxBit = 0x03;
				pxColor = lclPenColor >> 6;
			}
			else
			{
				pxBit = 0x0f;
				pxColor = lclPenColor >> 4;
			}
		}
	}

	return;
}


/* Diagonal top->bottom, left->right XOR. */
void M2_4BUXDLR(void)
{
	int i;
	int pxShift;
	byte pxBit;
	byte pxColor;

	pxShift =  (dRect.Xmin & firstOffset) * shfCnt;
	pxColor = (byte) (lclPenColor >> pxShift);
	pxBit = (byte) (shiftMask >> pxShift);
	dstBgnByte = dRect.Xmin >> flipMask;
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + dstBgnByte;
		*dstPtr = *dstPtr ^ pxColor;

		rowTablePtr[0]++;
		pxColor = pxColor >> shfCnt;
		pxBit = (pxBit >> shfCnt);
		if(pxBit == 0)
		{
			dstBgnByte++;
			pxBit = shiftMask;
			pxColor = lclPenColor;
		}
	}

	return;
}


/* Y major top->bottom, left->right XOR. */
void M2_4BUXYMLR(void)
{
	int i;
	int pxShift;
	byte pxBit;
	byte pxColor;

	pxShift =  (dRect.Xmin & firstOffset) * shfCnt;
	pxColor = (byte) (lclPenColor >> pxShift);
	pxBit = (byte) (shiftMask >> pxShift);
	dstBgnByte = dRect.Xmin >> flipMask;
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + dstBgnByte;
		*dstPtr = *dstPtr ^ pxColor;

		rowTablePtr[0]++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			pxColor = pxColor >> shfCnt;
			pxBit = (pxBit >> shfCnt);
			if(pxBit == 0)
			{
				dstBgnByte++;
				pxBit = shiftMask;
				pxColor = lclPenColor;
			}
		}
	}

	return;
}


/* Y major top->bottom, right->left XOR. */
void M2_4BUXYMRL(void)
{
	int i;
	int pxShift;
	byte pxBit;
	byte pxColor;

	pxShift =  (dRect.Xmin & firstOffset) * shfCnt;
	pxColor = (byte) (lclPenColor >> pxShift);
	pxBit = (byte) (shiftMask >> pxShift);
	dstBgnByte = dRect.Xmin >> flipMask;
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + dstBgnByte;
		*dstPtr = *dstPtr ^ pxColor;

		rowTablePtr[0]++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			pxColor = pxColor << shfCnt;
			pxBit = (pxBit << shfCnt);
			if(pxBit == 0)
			{
				dstBgnByte--;
				if (shfCnt == 2)
				{
					pxBit = 0x03;
					pxColor = lclPenColor >> 6;
				}
				else
				{
					pxBit = 0x0f;
					pxColor = lclPenColor >> 4;
				}
			}
		}
	}

	return;
}


/* X major top->bottom, left->right XOR. */
void M2_4BUXXMLR(void)
{
	int i;
	int pxShift;
	byte pxBit;
	byte pxColor;

	pxShift =  (dRect.Xmin & firstOffset) * shfCnt;
	pxColor = (byte) (lclPenColor >> pxShift);
	pxBit = (byte) (shiftMask >> pxShift);
	dstBgnByte = dRect.Xmin >> flipMask;
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + dstBgnByte;
		*dstPtr = *dstPtr ^ pxColor;

		pxColor = pxColor >> shfCnt;
		pxBit = (pxBit >> shfCnt);
		if(pxBit == 0)
		{
			dstBgnByte++;
			pxBit = shiftMask;
			pxColor = lclPenColor;
		}

		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			rowTablePtr[0]++;
		}
	}

	return;
}


/* X major top->bottom, right->left XOR. */
void M2_4BUXXMRL(void)
{
	int i;
	int pxShift;
	byte pxBit;
	byte pxColor;

	pxShift =  (dRect.Xmin & firstOffset) * shfCnt;
	pxColor = (byte) (lclPenColor >> pxShift);
	pxBit = (byte) (shiftMask >> pxShift);
	dstBgnByte = dRect.Xmin >> flipMask;
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + dstBgnByte;
		*dstPtr = *dstPtr ^ pxColor;

		pxColor = pxColor << shfCnt;
		pxBit = (pxBit << shfCnt);
		if(pxBit == 0)
		{
			dstBgnByte--;
			if (shfCnt == 2)
			{
				pxBit = 0x03;
				pxColor = lclPenColor >> 6;
			}
			else
			{
				pxBit = 0x0f;
				pxColor = lclPenColor >> 4;
			}
		}

		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			rowTablePtr[0]++;
		}
	}

	return;
}


/* Y major top->bottom, left->right masked, OR. */
/* #define M2_4BMOYMLR M2_4BMOV */
/* Y major top->bottom, vertical masked, OR. */
void M2_4BMOV(void)
{
	int i;
	int pxShift;
	byte pxBit;
	byte pxColor;

	pxShift =  (dRect.Xmin & firstOffset) * shfCnt;
	pxColor = (byte) (lclPenColor >> pxShift);
	pxBit = (byte) (shiftMask >> pxShift);
	dstBgnByte = dRect.Xmin >> flipMask;
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + dstBgnByte;
		*dstPtr = *dstPtr | pxColor;

		rowTablePtr[0]++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			pxColor = pxColor >> shfCnt;
			pxBit = (pxBit >> shfCnt);
			if(pxBit == 0)
			{
				dstBgnByte++;
				pxBit = shiftMask;
				pxColor = lclPenColor;
			}
		}
	}

	return;
}


/* Y major top->bottom, right->left masked, OR. */
void M2_4BMOYMRL(void)
{
	int i;
	int pxShift;
	byte pxBit;
	byte pxColor;

	pxShift =  (dRect.Xmin & firstOffset) * shfCnt;
	pxColor = (byte) (lclPenColor >> pxShift);
	pxBit = (byte) (shiftMask >> pxShift);
	dstBgnByte = dRect.Xmin >> flipMask;
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + dstBgnByte;
		*dstPtr = *dstPtr | pxColor;

		rowTablePtr[0]++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			pxColor = pxColor << shfCnt;
			pxBit = (pxBit << shfCnt);
			if(pxBit == 0)
			{
				dstBgnByte--;
				if (shfCnt == 2)
				{
					pxBit = 0x03;
					pxColor = lclPenColor >> 6;
				}
				else
				{
					pxBit = 0x0f;
					pxColor = lclPenColor >> 4;
				}
			}
		}
	}

	return;
}


/* X major top->bottom, left->right masked, OR. */
/* #define M2_4BMOXMLR M2_4BMOH */
/* Diagonal top->bottom, left->right masked, OR. */
/* #define M2_4BMODLR M2_4BMOH */
/* Horizontal left->right masked, OR. */
void M2_4BMOH(void)
{
	int i;
	int pxShift;
	byte pxBit;
	byte pxColor;

	pxShift =  (dRect.Xmin & firstOffset) * shfCnt;
	pxColor = (byte) (lclPenColor >> pxShift);
	pxBit = (byte) (shiftMask >> pxShift);
	dstBgnByte = dRect.Xmin >> flipMask;
	for (i = 0; i <= majorAxisLengthM1; i++)
	{

⌨️ 快捷键说明

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