m16b_lin.c

来自「与Nucleus Plus配套的图形库」· C语言 代码 · 共 1,552 行 · 第 1/3 页

C
1,552 行
字号
	return;
}


/* Y major top->bottom, right->left masked, XOR. */
void M16BMXYMRL(void)
{
	int i;
	word lclMask;

	lclMask = lclPortMask & lclPenColor16;	/* we'll leave all
											masked-off bits unchanged */
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr16 = (word *) *rowTablePtr[0] + dRect.Xmin;
		*dstPtr16 = (*dstPtr16 ^ lclMask);
		rowTablePtr[0]++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			dRect.Xmin--;
		}
	}

	return;
}


/* X major top->bottom, left->right masked, XOR. */
/* #define M16BMXXMLR M16BMXH */
/* Diagonal top->bottom, left->right masked, XOR. */
/* #define M16BMXDLR M16BMXH */
/* Horizontal left->right masked, XOR. */
void M16BMXH(void)
{
	int i;
	word lclMask;

	lclMask = lclPortMask & lclPenColor16;	/* we'll leave all
											masked-off bits unchanged */
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr16 = (word *) *rowTablePtr[0] + dRect.Xmin;
		*dstPtr16 = (*dstPtr16 ^ lclMask);
		dRect.Xmin++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			rowTablePtr[0]++;
		}
	}

	return;
}


/* X major top->bottom, right->left masked, XOR. */
/* #define M16BMXXMRL M16BMXDRL */
/* Diagonal top->bottom, right->left masked, XOR. */
void M16BMXDRL(void)
{
	int i;
	word lclMask;

	lclMask = lclPortMask & lclPenColor16;	/* we'll leave all
											masked-off bits unchanged */
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr16 = (word *) *rowTablePtr[0] + dRect.Xmin;
		*dstPtr16 = (*dstPtr16 ^ lclMask);
		dRect.Xmin--;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			rowTablePtr[0]++;
		}
	}

	return;
}


/* Y major top->bottom, left->right masked, OR. */
/* #define M16BMOYMLR M16BMOV */
/* Y major top->bottom, vertical masked, OR. */
void M16BMOV(void)
{
	int i;
	word lclMask;

	lclMask = lclPortMask & lclPenColor16;	/* we'll leave all
											masked-off bits unchanged */
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr16 = (word *) *rowTablePtr[0] + dRect.Xmin;
		*dstPtr16 = (*dstPtr16 | lclMask);
		rowTablePtr[0]++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			dRect.Xmin++;
		}
	}

	return;
}


/* Y major top->bottom, right->left masked, OR. */
void M16BMOYMRL(void)
{
	int i;
	word lclMask;

	lclMask = lclPortMask & lclPenColor16;	/* we'll leave all
											masked-off bits unchanged */
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr16 = (word *) *rowTablePtr[0] + dRect.Xmin;
		*dstPtr16 = (*dstPtr16 | lclMask);
		rowTablePtr[0]++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			dRect.Xmin--;
		}
	}

	return;
}


/* X major top->bottom, left->right masked, OR. */
/* #define M16BMOXMLR M16BMOH */
/* Diagonal top->bottom, left->right masked, OR. */
/* #define M16BMODLR M16BMOH */
/* Horizontal left->right masked, OR. */
void M16BMOH(void)
{
	int i;
	word lclMask;

	lclMask = lclPortMask & lclPenColor16;	/* we'll leave all
											masked-off bits unchanged */
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr16 = (word *) *rowTablePtr[0] + dRect.Xmin;
		*dstPtr16 = (*dstPtr16 | lclMask);
		dRect.Xmin++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			rowTablePtr[0]++;
		}
	}

	return;
}


/* X major top->bottom, right->left masked, OR. */
/* #define M16BMOXMRL M16BMODRL */
/* Diagonal top->bottom, right->left masked, OR. */
void M16BMODRL(void)
{
	int i;
	word lclMask;

	lclMask = lclPortMask & lclPenColor16;	/* we'll leave all
											masked-off bits unchanged */
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr16 = (word *) *rowTablePtr[0] + dRect.Xmin;
		*dstPtr16 = (*dstPtr16 | lclMask);
		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 M16BMOYMLR_ND M16BMOV_ND */
/* Y major top->bottom, vertical masked, OR NOT dest. */
void M16BMOV_ND(void)
{
	int i;
	word lclMask;

	lclMask = lclPortMask & lclPenColor16;	/* we'll leave all
											masked-off bits unchanged */
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr16 = (word *) *rowTablePtr[0] + dRect.Xmin;
		*dstPtr16 = (*dstPtr16 ^ lclPortMask) | lclMask;
		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 M16BMOYMRL_ND(void)
{
	int i;
	word lclMask;

	lclMask = lclPortMask & lclPenColor16;	/* we'll leave all
											masked-off bits unchanged */
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr16 = (word *) *rowTablePtr[0] + dRect.Xmin;
		*dstPtr16 = (*dstPtr16 ^ lclPortMask) | lclMask;
		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 M16BMOXMLR_ND M16BMOH_ND */
/* Diagonal top->bottom, left->right masked, OR NOT dest. */
/* #define M16BMODLR_ND M16BMOH_ND */
/* Horizontal left->right masked, OR NOT dest. */
void M16BMOH_ND(void)
{
	int i;
	word lclMask;

	lclMask = lclPortMask & lclPenColor16;	/* we'll leave all
											masked-off bits unchanged */
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr16 = (word *) *rowTablePtr[0] + dRect.Xmin;
		*dstPtr16 = (*dstPtr16 ^ lclPortMask) | lclMask;
		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 M16BMOXMRL_ND M16BMODRL_ND */
/* Diagonal top->bottom, right->left masked, OR NOT dest. */
void M16BMODRL_ND(void)
{
	int i;
	word lclMask;

	lclMask = lclPortMask & lclPenColor16;	/* we'll leave all
											masked-off bits unchanged */
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr16 = (word *) *rowTablePtr[0] + dRect.Xmin;
		*dstPtr16 = (*dstPtr16 ^ lclPortMask) | lclMask;
		dRect.Xmin--;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			rowTablePtr[0]++;
		}
	}

	return;
}


/* Y major top->bottom, left->right masked, AND. */
/* #define M16BMAYMLR M16BMAV */
/* Y major top->bottom, vertical masked, AND. */
void M16BMAV(void)
{
	int i;
	word lclMask;

	lclMask = (~lclPortMask) | lclPenColor16;	/* we'll leave all
											masked-off bits unchanged */
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr16 = (word *) *rowTablePtr[0] + dRect.Xmin;
		*dstPtr16 = (*dstPtr16 & lclMask);
		rowTablePtr[0]++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			dRect.Xmin++;
		}
	}

	return;
}


/* Y major top->bottom, right->left masked, AND. */
void M16BMAYMRL(void)
{
	int i;
	word lclMask;

	lclMask = (~lclPortMask) | lclPenColor16;	/* we'll leave all
											masked-off bits unchanged */
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr16 = (word *) *rowTablePtr[0] + dRect.Xmin;
		*dstPtr16 = (*dstPtr16 & lclMask);
		rowTablePtr[0]++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			dRect.Xmin--;
		}
	}

	return;
}


/* X major top->bottom, left->right masked, AND. */
/* #define M16BMAXMLR M16BMAH */
/* Diagonal top->bottom, left->right masked, AND. */
/* #define M16BMADLR M16BMAH */
/* Horizontal left->right masked, AND. */
void M16BMAH(void)
{
	int i;
	word lclMask;

	lclMask = (~lclPortMask) | lclPenColor16;	/* we'll leave all
											masked-off bits unchanged */
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr16 = (word *) *rowTablePtr[0] + dRect.Xmin;
		*dstPtr16 = (*dstPtr16 & lclMask);
		dRect.Xmin++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			rowTablePtr[0]++;
		}
	}

	return;
}


/* X major top->bottom, right->left masked, AND. */
/* #define M16BMAXMRL M16BMADRL */
/* Diagonal top->bottom, right->left masked, AND. */
void M16BMADRL(void)
{
	int i;
	word lclMask;

	lclMask = (~lclPortMask) | lclPenColor16;	/* we'll leave all
											masked-off bits unchanged */
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr16 = (word *) *rowTablePtr[0] + dRect.Xmin;
		*dstPtr16 = (*dstPtr16 & lclMask);
		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 M16BMAYMLR_ND M16BMAV_ND */
/* Y major top->bottom, vertical masked, AND NOT dest. */
void M16BMAV_ND(void)
{
	int i;
	word lclMask;

	lclMask = (~lclPortMask) | lclPenColor16;	/* we'll leave all
											masked-off bits unchanged */
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr16 = (word *) *rowTablePtr[0] + dRect.Xmin;
		*dstPtr16 = (*dstPtr16 ^ lclPortMask) & lclMask;
		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 M16BMAYMRL_ND(void)
{
	int i;
	word lclMask;

	lclMask = (~lclPortMask) | lclPenColor16;	/* we'll leave all
											masked-off bits unchanged */
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr16 = (word *) *rowTablePtr[0] + dRect.Xmin;
		*dstPtr16 = (*dstPtr16 ^ lclPortMask) & lclMask;
		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 M16BMAXMLR_ND M16BMAH_ND */
/* Diagonal top->bottom, left->right masked, AND NOT dest. */
/* #define M16BMADLR_ND M16BMAH_ND */
/* Horizontal left->right masked, AND NOT dest. */
void M16BMAH_ND(void)
{
	int i;
	word lclMask;

	lclMask = (~lclPortMask) | lclPenColor16;	/* we'll leave all
											masked-off bits unchanged */
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr16 = (word *) *rowTablePtr[0] + dRect.Xmin;
		*dstPtr16 = (*dstPtr16 ^ lclPortMask) & lclMask;
		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 M16BMAXMRL_ND M16BMADRL_ND */
/* Diagonal top->bottom, right->left masked, AND NOT dest. */
void M16BMADRL_ND(void)
{
	int i;
	word lclMask;

	lclMask = (~lclPortMask) | lclPenColor16;	/* we'll leave all
											masked-off bits unchanged */
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr16 = (word *) *rowTablePtr[0] + dRect.Xmin;
		*dstPtr16 = (*dstPtr16 ^ lclPortMask) & lclMask;
		dRect.Xmin--;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			rowTablePtr[0]++;
		}
	}

	return;
}

⌨️ 快捷键说明

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