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

📄 m16b_lin.c

📁 与Nucleus Plus配套的图形库
💻 C
📖 第 1 页 / 共 3 页
字号:
		break;
	case 1:	
		M16BMOV_ND();
		break;
	case 2:	
		M16BMOYMLR_ND();
		break;
	case 3:	
		M16BMODLR_ND();
		break;
	case 4:	
		M16BMOXMLR_ND();
		break;
	case 5:	
		M16BMOH_ND();
		break;
	case 6:	
		M16BMODRL_ND();
		break;
	case 7:	
		M16BMOXMRL_ND();
		break;
	}

	return;
}


void M16BMA_NDTable(void)
{
	void M16BMAYMRL_ND(void);
	void M16BMAV_ND(void);
	void M16BMAYMLR_ND(void);
	void M16BMADLR_ND(void);
	void M16BMAXMLR_ND(void);
	void M16BMAH_ND(void);
	void M16BMADRL_ND(void);
	void M16BMAXMRL_ND(void);

	switch (lineDir)	/* appropriate for the line direction */
	{
	case 0:	
		M16BMAYMRL_ND();
		break;
	case 1:	
		M16BMAV_ND();
		break;
	case 2:	
		M16BMAYMLR_ND();
		break;
	case 3:	
		M16BMADLR_ND();
		break;
	case 4:	
		M16BMAXMLR_ND();
		break;
	case 5:	
		M16BMAH_ND();
		break;
	case 6:	
		M16BMADRL_ND();
		break;
	case 7:	
		M16BMAXMRL_ND();
		break;
	}

	return;
}


/* Low-level line drawing optimizations. */
/* Unmasked low-level optimizations. */

/*	Horizontal left->right replace.	*/
void M16BURH(void)
{
	int i;

	dstPtr16 = (word *) *rowTablePtr[0] + dRect.Xmin;
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		*dstPtr16 = lclPenColor16;
		dstPtr16++;
	}

	return;
}


/* Vertical top->bottom replace. */
void M16BURV()
{
	int i;

	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr16 = (word *) *rowTablePtr[0] + dRect.Xmin;
		*dstPtr16 = lclPenColor16;
		rowTablePtr[0]++;
	}

	return;
}


/* Diagonal top->bottom, right->left replace. */
void M16BURDRL(void)
{
	int i;

	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr16 = (word *) *rowTablePtr[0] + dRect.Xmin;
		*dstPtr16 = lclPenColor16;
		rowTablePtr[0]++;
		dRect.Xmin--;
	}

	return;
}


/* Diagonal top->bottom, left->right replace. */
void M16BURDLR(void)
{
	int i;

	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr16 = (word *) *rowTablePtr[0] + dRect.Xmin;
		*dstPtr16 = lclPenColor16;
		rowTablePtr[0]++;
		dRect.Xmin++;
	}

	return;
}


/* Y major top->bottom, left->right replace. */
void M16BURYMLR(void)
{
	int i;

	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr16 = (word *) *rowTablePtr[0] + dRect.Xmin;
		*dstPtr16 = lclPenColor16;
		rowTablePtr[0]++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			dRect.Xmin++;
		}
	}

	return;
}


/* Y major top->bottom, right->left replace. */
void M16BURYMRL(void)
{
	int i;

	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr16 = (word *) *rowTablePtr[0] + dRect.Xmin;
		*dstPtr16 = lclPenColor16;
		rowTablePtr[0]++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			dRect.Xmin--;
		}
	}

	return;
}


/* X major top->bottom, left->right replace. */
void M16BURXMLR(void)
{
	int i;

	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr16 = (word *) *rowTablePtr[0] + dRect.Xmin;
		*dstPtr16 = lclPenColor16;
		dRect.Xmin++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			rowTablePtr[0]++;
		}
	}

	return;
}


/* X major top->bottom, right->left replace. */
void M16BURXMRL(void)
{
	int i;

	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr16 = (word *) *rowTablePtr[0] + dRect.Xmin;
		*dstPtr16 = lclPenColor16;
		dRect.Xmin--;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			rowTablePtr[0]++;
		}
	}

	return;
}


/*	Horizontal left->right XOR.	*/
void M16BUXH(void)
{
	int i;

		dstPtr16 = (word *) *rowTablePtr[0] + dRect.Xmin;
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		*dstPtr16 = *dstPtr16 ^ lclPenColor16;
		dstPtr16++;
	}

	return;
}


/* Vertical top->bottom XOR. */
void M16BUXV()
{
	int i;

	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr16 = (word *) *rowTablePtr[0] + dRect.Xmin;
		*dstPtr16 = *dstPtr16 ^ lclPenColor16;
		rowTablePtr[0]++;
	}

	return;
}


/* Diagonal top->bottom, right->left XOR. */
void M16BUXDRL(void)
{
	int i;

	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr16 = (word *) *rowTablePtr[0] + dRect.Xmin;
		*dstPtr16 = *dstPtr16 ^ lclPenColor16;
		rowTablePtr[0]++;
		dRect.Xmin--;
	}

	return;
}


/* Diagonal top->bottom, left->right XOR. */
void M16BUXDLR(void)
{
	int i;

	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr16 = (word *) *rowTablePtr[0] + dRect.Xmin;
		*dstPtr16 = *dstPtr16 ^ lclPenColor16;
		rowTablePtr[0]++;
		dRect.Xmin++;
	}

	return;
}


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

	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr16 = (word *) *rowTablePtr[0] + dRect.Xmin;
		*dstPtr16 = *dstPtr16 ^ lclPenColor16;
		rowTablePtr[0]++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			dRect.Xmin++;
		}
	}

	return;
}


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

	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr16 = (word *) *rowTablePtr[0] + dRect.Xmin;
		*dstPtr16 = *dstPtr16 ^ lclPenColor16;
		rowTablePtr[0]++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			dRect.Xmin--;
		}
	}

	return;
}


/* X major top->bottom, left->right XOR. */
void M16BUXXMLR(void)
{
	int i;

	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr16 = (word *) *rowTablePtr[0] + dRect.Xmin;
		*dstPtr16 = *dstPtr16 ^ lclPenColor16;
		dRect.Xmin++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			rowTablePtr[0]++;
		}
	}

	return;
}


/* X major top->bottom, right->left XOR. */
void M16BUXXMRL(void)
{
	int i;

	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr16 = (word *) *rowTablePtr[0] + dRect.Xmin;
		*dstPtr16 = *dstPtr16 ^ lclPenColor16;
		dRect.Xmin--;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			rowTablePtr[0]++;
		}
	}

	return;
}


/* Masked low-level optimizations. */
/* Y major top->bottom, left->right masked, replace. */
 /* #define M16BMRYMLR M16BMRV */
/* Y major top->bottom, vertical masked, replace. */
void M16BMRV(void)
{
	int i;

	lclPortMask = ~lclPortMask;	/* set 1 bits to select the dest
								rather than the source */
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr16 = (word *) *rowTablePtr[0] + dRect.Xmin;
		*dstPtr16 = (((*dstPtr16 ^ lclPenColor16) & lclPortMask) ^
			lclPenColor16);
		rowTablePtr[0]++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			dRect.Xmin++;
		}
	}

	lclPortMask = ~lclPortMask;	/* restore the original setting */
	return;
}


/* Y major top->bottom, right->left masked, replace. */
void M16BMRYMRL(void)
{
	int i;

	lclPortMask = ~lclPortMask;	/* set 1 bits to select the dest
								rather than the source */
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr16 = (word *) *rowTablePtr[0] + dRect.Xmin;
		*dstPtr16 = (((*dstPtr16 ^ lclPenColor16) & lclPortMask) ^
			lclPenColor16);
		rowTablePtr[0]++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			dRect.Xmin--;
		}
	}

	lclPortMask = ~lclPortMask;	/* restore the original setting */
	return;
}


/* X major top->bottom, left->right masked, replace. */
/* #define M16BMRXMLR M16BMRH */
/* Diagonal top->bottom, left->right masked, replace. */
/* #define M16BMRDLR M16BMRH */
/* Horizontal left->right masked, replace. */
void M16BMRH(void)
{
	int i;

	lclPortMask = ~lclPortMask;	/* set 1 bits to select the dest
								rather than the source */
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr16 = (word *) *rowTablePtr[0] + dRect.Xmin;
		*dstPtr16 = (((*dstPtr16 ^ lclPenColor16) & lclPortMask) ^
			lclPenColor16);
		dRect.Xmin++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			rowTablePtr[0]++;
		}
	}

	lclPortMask = ~lclPortMask;	/* restore the original setting */
	return;
}


/* X major top->bottom, right->left masked, replace. */
/* #define M16BMRXMRL M16BMRDRL */
/* Diagonal top->bottom, right->left masked, replace. */
void M16BMRDRL(void)
{
	int i;

	lclPortMask = ~lclPortMask;	/* set 1 bits to select the dest
								rather than the source */
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr16 = (word *) *rowTablePtr[0] + dRect.Xmin;
		*dstPtr16 = (((*dstPtr16 ^ lclPenColor16) & lclPortMask) ^
			lclPenColor16);
		dRect.Xmin--;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			rowTablePtr[0]++;
		}
	}

	lclPortMask = ~lclPortMask;	/* restore the original setting */
	return;
}


/* Y major top->bottom, left->right masked, XOR. */
/* #define M16BMXYMLR M16BMXV */
/* Y major top->bottom, vertical masked, XOR. */
void M16BMXV(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++;
		}
	}

⌨️ 快捷键说明

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