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

📄 m24b_lin.c

📁 与Nucleus Plus配套的图形库
💻 C
📖 第 1 页 / 共 3 页
字号:
	lclMaskR = lclPortMask & lclPenColorR;	/* we'll leave all
											masked-off bits unchanged */
	lclMaskG = lclPortMask & lclPenColorG;
	lclMaskB = lclPortMask & lclPenColorB;
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + (3 * dRect.Xmin);
		*dstPtr = (*dstPtr ^ lclMaskR);
		dstPtr++;
		*dstPtr = (*dstPtr ^ lclMaskG);
		dstPtr++;
		*dstPtr = (*dstPtr ^ lclMaskB);
		dRect.Xmin++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			rowTablePtr[0]++;
		}
	}

	return;
}


/* X major top->bottom, right->left masked, XOR. */
/* #define M24BMXXMRL M24BMXDRL */
/* Diagonal top->bottom, right->left masked, XOR. */
void M24BMXDRL(void)
{
	int i;
	byte lclMaskR, lclMaskG, lclMaskB;

	lclMaskR = lclPortMask & lclPenColorR;	/* we'll leave all
											masked-off bits unchanged */
	lclMaskG = lclPortMask & lclPenColorG;
	lclMaskB = lclPortMask & lclPenColorB;
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + (3 * dRect.Xmin);
		*dstPtr = (*dstPtr ^ lclMaskR);
		dstPtr++;
		*dstPtr = (*dstPtr ^ lclMaskG);
		dstPtr++;
		*dstPtr = (*dstPtr ^ lclMaskB);
		dRect.Xmin--;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			rowTablePtr[0]++;
		}
	}

	return;
}


/* Y major top->bottom, left->right masked, OR. */
/* #define M24BMOYMLR M24BMOV */
/* Y major top->bottom, vertical masked, OR. */
void M24BMOV(void)
{
	int i;
	byte lclMaskR, lclMaskG, lclMaskB;

	lclMaskR = lclPortMask & lclPenColorR;	/* we'll leave all
											masked-off bits unchanged */
	lclMaskG = lclPortMask & lclPenColorG;
	lclMaskB = lclPortMask & lclPenColorB;
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + (3 * dRect.Xmin);
		*dstPtr = (*dstPtr | lclMaskR);
		dstPtr++;
		*dstPtr = (*dstPtr | lclMaskG);
		dstPtr++;
		*dstPtr = (*dstPtr | lclMaskB);
		rowTablePtr[0]++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			dRect.Xmin++;
		}
	}

	return;
}


/* Y major top->bottom, right->left masked, OR. */
void M24BMOYMRL(void)
{
	int i;
	byte lclMaskR, lclMaskG, lclMaskB;

	lclMaskR = lclPortMask & lclPenColorR;	/* we'll leave all
											masked-off bits unchanged */
	lclMaskG = lclPortMask & lclPenColorG;
	lclMaskB = lclPortMask & lclPenColorB;
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + (3 * dRect.Xmin);
		*dstPtr = (*dstPtr | lclMaskR);
		dstPtr++;
		*dstPtr = (*dstPtr | lclMaskG);
		dstPtr++;
		*dstPtr = (*dstPtr | lclMaskB);
		rowTablePtr[0]++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			dRect.Xmin--;
		}
	}

	return;
}


/* X major top->bottom, left->right masked, OR. */
/* #define M24BMOXMLR M24BMOH */
/* Diagonal top->bottom, left->right masked, OR. */
/* #define M24BMODLR M24BMOH */
/* Horizontal left->right masked, OR. */
void M24BMOH(void)
{
	int i;
	byte lclMaskR, lclMaskG, lclMaskB;

	lclMaskR = lclPortMask & lclPenColorR;	/* we'll leave all
											masked-off bits unchanged */
	lclMaskG = lclPortMask & lclPenColorG;
	lclMaskB = lclPortMask & lclPenColorB;
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + (3 * dRect.Xmin);
		*dstPtr = (*dstPtr | lclMaskR);
		dstPtr++;
		*dstPtr = (*dstPtr | lclMaskG);
		dstPtr++;
		*dstPtr = (*dstPtr | lclMaskB);
		dRect.Xmin++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			rowTablePtr[0]++;
		}
	}

	return;
}


/* X major top->bottom, right->left masked, OR. */
/* #define M24BMOXMRL M24BMODRL */
/* Diagonal top->bottom, right->left masked, OR. */
void M24BMODRL(void)
{
	int i;
	byte lclMaskR, lclMaskG, lclMaskB;

	lclMaskR = lclPortMask & lclPenColorR;	/* we'll leave all
											masked-off bits unchanged */
	lclMaskG = lclPortMask & lclPenColorG;
	lclMaskB = lclPortMask & lclPenColorB;
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + (3 * dRect.Xmin);
		*dstPtr = (*dstPtr | lclMaskR);
		dstPtr++;
		*dstPtr = (*dstPtr | lclMaskG);
		dstPtr++;
		*dstPtr = (*dstPtr | lclMaskB);
		dRect.Xmin--;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			rowTablePtr[0]++;
		}
	}

	return;
}


/* Y major top->bottom, left->right masked, OR NOT dest. */
/* #define M24BMOYMLR_ND M24BMOV_ND */
/* Y major top->bottom, vertical masked, OR NOT dest. */
void M24BMOV_ND(void)
{
	int i;
	byte lclMaskR, lclMaskG, lclMaskB;

	lclMaskR = lclPortMask & lclPenColorR;	/* we'll leave all
											masked-off bits unchanged */
	lclMaskG = lclPortMask & lclPenColorG;
	lclMaskB = lclPortMask & lclPenColorB;
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + (3 * dRect.Xmin);
		*dstPtr = (*dstPtr ^ lclPortMask) | lclMaskR;
		dstPtr++;
		*dstPtr = (*dstPtr ^ lclPortMask) | lclMaskG;
		dstPtr++;
		*dstPtr = (*dstPtr ^ lclPortMask) | lclMaskB;
		rowTablePtr[0]++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			dRect.Xmin++;
		}
	}

	return;
}


/* Y major top->bottom, right->left masked, OR NOT dest. */
void M24BMOYMRL_ND(void)
{
	int i;
	byte lclMaskR, lclMaskG, lclMaskB;

	lclMaskR = lclPortMask & lclPenColorR;	/* we'll leave all
											masked-off bits unchanged */
	lclMaskG = lclPortMask & lclPenColorG;
	lclMaskB = lclPortMask & lclPenColorB;
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + (3 * dRect.Xmin);
		*dstPtr = (*dstPtr ^ lclPortMask) | lclMaskR;
		dstPtr++;
		*dstPtr = (*dstPtr ^ lclPortMask) | lclMaskG;
		dstPtr++;
		*dstPtr = (*dstPtr ^ lclPortMask) | lclMaskB;
		rowTablePtr[0]++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			dRect.Xmin--;
		}
	}

	return;
}


/* X major top->bottom, left->right masked, OR NOT dest. */
/* #define M24BMOXMLR_ND M24BMOH_ND */
/* Diagonal top->bottom, left->right masked, OR NOT dest. */
/* #define M24BMODLR_ND M24BMOH_ND */
/* Horizontal left->right masked, OR NOT dest. */
void M24BMOH_ND(void)
{
	int i;
	byte lclMaskR, lclMaskG, lclMaskB;

	lclMaskR = lclPortMask & lclPenColorR;	/* we'll leave all
											masked-off bits unchanged */
	lclMaskG = lclPortMask & lclPenColorG;
	lclMaskB = lclPortMask & lclPenColorB;
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + (3 * dRect.Xmin);
		*dstPtr = (*dstPtr ^ lclPortMask) | lclMaskR;
		dstPtr++;
		*dstPtr = (*dstPtr ^ lclPortMask) | lclMaskG;
		dstPtr++;
		*dstPtr = (*dstPtr ^ lclPortMask) | lclMaskB;
		dRect.Xmin++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			rowTablePtr[0]++;
		}
	}

	return;
}


/* X major top->bottom, right->left masked, OR NOT dest. */
/* #define M24BMOXMRL_ND M24BMODRL_ND */
/* Diagonal top->bottom, right->left masked, OR NOT dest. */
void M24BMODRL_ND(void)
{
	int i;
	byte lclMaskR, lclMaskG, lclMaskB;

	lclMaskR = lclPortMask & lclPenColorR;	/* we'll leave all
											masked-off bits unchanged */
	lclMaskG = lclPortMask & lclPenColorG;
	lclMaskB = lclPortMask & lclPenColorB;
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + (3 * dRect.Xmin);
		*dstPtr = (*dstPtr ^ lclPortMask) | lclMaskR;
		dstPtr++;
		*dstPtr = (*dstPtr ^ lclPortMask) | lclMaskG;
		dstPtr++;
		*dstPtr = (*dstPtr ^ lclPortMask) | lclMaskB;
		dRect.Xmin--;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			rowTablePtr[0]++;
		}
	}

	return;
}


/* Y major top->bottom, left->right masked, AND. */
/* #define M24BMAYMLR M24BMAV */
/* Y major top->bottom, vertical masked, AND. */
void M24BMAV(void)
{
	int i;
	byte lclMaskR, lclMaskG, lclMaskB;

	lclMaskR = lclPortMask & lclPenColorR;	/* we'll leave all
											masked-off bits unchanged */
	lclMaskG = lclPortMask & lclPenColorG;
	lclMaskB = lclPortMask & lclPenColorB;
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + (3 * dRect.Xmin);
		*dstPtr = (*dstPtr & lclMaskR);
		dstPtr++;
		*dstPtr = (*dstPtr & lclMaskG);
		dstPtr++;
		*dstPtr = (*dstPtr & lclMaskB);
		rowTablePtr[0]++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			dRect.Xmin++;
		}
	}

	return;
}


/* Y major top->bottom, right->left masked, AND. */
void M24BMAYMRL(void)
{
	int i;
	byte lclMaskR, lclMaskG, lclMaskB;

	lclMaskR = lclPortMask & lclPenColorR;	/* we'll leave all
											masked-off bits unchanged */
	lclMaskG = lclPortMask & lclPenColorG;
	lclMaskB = lclPortMask & lclPenColorB;
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + (3 * dRect.Xmin);
		*dstPtr = (*dstPtr & lclMaskR);
		dstPtr++;
		*dstPtr = (*dstPtr & lclMaskG);
		dstPtr++;
		*dstPtr = (*dstPtr & lclMaskB);
		rowTablePtr[0]++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			dRect.Xmin--;
		}
	}

	return;
}


/* X major top->bottom, left->right masked, AND. */
/* #define M24BMAXMLR M24BMAH */
/* Diagonal top->bottom, left->right masked, AND. */
/* #define M24BMADLR M24BMAH */
/* Horizontal left->right masked, AND. */
void M24BMAH(void)
{
	int i;
	byte lclMaskR, lclMaskG, lclMaskB;

	lclMaskR = lclPortMask & lclPenColorR;	/* we'll leave all
											masked-off bits unchanged */
	lclMaskG = lclPortMask & lclPenColorG;
	lclMaskB = lclPortMask & lclPenColorB;
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + (3 * dRect.Xmin);
		*dstPtr = (*dstPtr & lclMaskR);
		dstPtr++;
		*dstPtr = (*dstPtr & lclMaskG);
		dstPtr++;
		*dstPtr = (*dstPtr & lclMaskB);
		dRect.Xmin++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			rowTablePtr[0]++;
		}
	}

	return;
}


/* X major top->bottom, right->left masked, AND. */
/* #define M24BMAXMRL M24BMADRL */
/* Diagonal top->bottom, right->left masked, AND. */
void M24BMADRL(void)
{
	int i;
	byte lclMaskR, lclMaskG, lclMaskB;

	lclMaskR = lclPortMask & lclPenColorR;	/* we'll leave all
											masked-off bits unchanged */
	lclMaskG = lclPortMask & lclPenColorG;
	lclMaskB = lclPortMask & lclPenColorB;
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + (3 * dRect.Xmin);
		*dstPtr = (*dstPtr & lclMaskR);
		dstPtr++;
		*dstPtr = (*dstPtr & lclMaskG);
		dstPtr++;
		*dstPtr = (*dstPtr & lclMaskB);
		dRect.Xmin--;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			rowTablePtr[0]++;
		}
	}

	return;
}


/* Y major top->bottom, left->right masked, AND NOT dest. */
/* #define M24BMAYMLR_ND M24BMAV_ND */
/* Y major top->bottom, vertical masked, AND NOT dest. */
void M24BMAV_ND(void)
{
	int i;
	byte lclMaskR, lclMaskG, lclMaskB;

	lclMaskR = lclPortMask & lclPenColorR;	/* we'll leave all
											masked-off bits unchanged */
	lclMaskG = lclPortMask & lclPenColorG;
	lclMaskB = lclPortMask & lclPenColorB;
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + (3 * dRect.Xmin);
		*dstPtr = (*dstPtr ^ lclPortMask) & lclMaskR;
		dstPtr++;
		*dstPtr = (*dstPtr ^ lclPortMask) & lclMaskG;
		dstPtr++;
		*dstPtr = (*dstPtr ^ lclPortMask) & lclMaskB;
		rowTablePtr[0]++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			dRect.Xmin++;
		}
	}

	return;
}


/* Y major top->bottom, right->left masked, AND NOT dest. */
void M24BMAYMRL_ND(void)
{
	int i;
	byte lclMaskR, lclMaskG, lclMaskB;

	lclMaskR = lclPortMask & lclPenColorR;	/* we'll leave all
											masked-off bits unchanged */
	lclMaskG = lclPortMask & lclPenColorG;
	lclMaskB = lclPortMask & lclPenColorB;
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + (3 * dRect.Xmin);
		*dstPtr = (*dstPtr ^ lclPortMask) & lclMaskR;
		dstPtr++;
		*dstPtr = (*dstPtr ^ lclPortMask) & lclMaskG;
		dstPtr++;
		*dstPtr = (*dstPtr ^ lclPortMask) & lclMaskB;
		rowTablePtr[0]++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			dRect.Xmin--;
		}
	}

	return;
}


/* X major top->bottom, left->right masked, AND NOT dest. */
/* #define M24BMAXMLR_ND M24BMAH_ND */
/* Diagonal top->bottom, left->right masked, AND NOT dest. */
/* #define M24BMADLR_ND M24BMAH_ND */
/* Horizontal left->right masked, AND NOT dest. */
void M24BMAH_ND(void)
{
	int i;
	byte lclMaskR, lclMaskG, lclMaskB;

	lclMaskR = lclPortMask & lclPenColorR;	/* we'll leave all
											masked-off bits unchanged */
	lclMaskG = lclPortMask & lclPenColorG;
	lclMaskB = lclPortMask & lclPenColorB;
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + (3 * dRect.Xmin);
		*dstPtr = (*dstPtr ^ lclPortMask) & lclMaskR;
		dstPtr++;
		*dstPtr = (*dstPtr ^ lclPortMask) & lclMaskG;
		dstPtr++;
		*dstPtr = (*dstPtr ^ lclPortMask) & lclMaskB;
		dRect.Xmin++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			rowTablePtr[0]++;
		}
	}

	return;
}


/* X major top->bottom, right->left masked, AND NOT dest. */
/* #define M24BMAXMRL_ND M24BMADRL_ND */
/* Diagonal top->bottom, right->left masked, AND NOT dest. */
void M24BMADRL_ND(void)
{
	int i;
	byte lclMaskR, lclMaskG, lclMaskB;

	lclMaskR = lclPortMask & lclPenColorR;	/* we'll leave all
											masked-off bits unchanged */
	lclMaskG = lclPortMask & lclPenColorG;
	lclMaskB = lclPortMask & lclPenColorB;
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + (3 * dRect.Xmin);
		*dstPtr = (*dstPtr ^ lclPortMask) & lclMaskR;
		dstPtr++;
		*dstPtr = (*dstPtr ^ lclPortMask) & lclMaskG;
		dstPtr++;
		*dstPtr = (*dstPtr ^ lclPortMask) & lclMaskB;
		dRect.Xmin--;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			rowTablePtr[0]++;
		}
	}

	return;
}

⌨️ 快捷键说明

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