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

📄 m2b4_lin.c

📁 nucleus 文件系统,内核和彩色图形系统,在小系统上非常好用
💻 C
📖 第 1 页 / 共 3 页
字号:
		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 masked, OR. */
/* #define M2_4BMOXMRL M2_4BMODRL */
/* Diagonal top->bottom, right->left masked, OR. */
void M2_4BMODRL(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 NOT dest. */
/* #define M2_4BMOYMLR_ND M2_4BMOV_ND */
/* Y major top->bottom, vertical masked, OR NOT dest. */
void M2_4BMOV_ND(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 masked, OR NOT dest. */
void M2_4BMOYMRL_ND(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 masked, OR NOT dest. */
/* #define M2_4BMOXMLR_ND M2_4BMOH_ND */
/* Diagonal top->bottom, left->right masked, OR NOT dest. */
/* #define M2_4BMODLR_ND M2_4BMOH_ND */
/* Horizontal left->right masked, OR NOT dest. */
void M2_4BMOH_ND(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 masked, OR NOT dest. */
/* #define M2_4BMOXMRL_ND M2_4BMODRL_ND */
/* Diagonal top->bottom, right->left masked, OR NOT dest. */
void M2_4BMODRL_ND(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;
}


/* Y major top->bottom, left->right masked, AND. */
/* #define M2_4BMAYMLR M2_4BMAV */
/* Y major top->bottom, vertical masked, AND. */
void M2_4BMAV(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 masked, AND. */
void M2_4BMAYMRL(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 masked, AND. */
/* #define M2_4BMAXMLR M2_4BMAH */
/* Diagonal top->bottom, left->right masked, AND. */
/* #define M2_4BMADLR M2_4BMAH */
/* Horizontal left->right masked, AND. */
void M2_4BMAH(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 masked, AND. */
/* #define M2_4BMAXMRL M2_4BMADRL */
/* Diagonal top->bottom, right->left masked, AND. */
void M2_4BMADRL(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;
}


/* Y major top->bottom, left->right masked, AND NOT dest. */
/* #define M2_4BMAYMLR_ND M2_4BMAV_ND */
/* Y major top->bottom, vertical masked, AND NOT dest. */
void M2_4BMAV_ND(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) & (~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 masked, AND NOT dest. */
void M2_4BMAYMRL_ND(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) & (~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 masked, AND NOT dest. */
/* #define M2_4BMAXMLR_ND M2_4BMAH_ND */
/* Diagonal top->bottom, left->right masked, AND NOT dest. */
/* #define M2_4BMADLR_ND M2_4BMAH_ND */
/* Horizontal left->right masked, AND NOT dest. */
void M2_4BMAH_ND(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) & (~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 masked, AND NOT dest. */
/* #define M2_4BMAXMRL_ND M2_4BMADRL_ND */
/* Diagonal top->bottom, right->left masked, AND NOT dest. */
void M2_4BMADRL_ND(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) & (~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;
}

⌨️ 快捷键说明

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