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

📄 m24b_lin.c

📁 与Nucleus Plus配套的图形库
💻 C
📖 第 1 页 / 共 3 页
字号:
	case 4:	
		M24BMAXMLR_ND();
		break;
	case 5:	
		M24BMAH_ND();
		break;
	case 6:	
		M24BMADRL_ND();
		break;
	case 7:	
		M24BMAXMRL_ND();
		break;
	}

	return;
}


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

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

	dstPtr = (byte *) *rowTablePtr[0] + (3 * dRect.Xmin);
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		*dstPtr++ = lclPenColorR;
		*dstPtr++ = lclPenColorG;
		*dstPtr++ = lclPenColorB;
	}

	return;
}


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

	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + (3 * dRect.Xmin);
		*dstPtr++ = lclPenColorR;
		*dstPtr++ = lclPenColorG;
		*dstPtr = lclPenColorB;
		rowTablePtr[0]++;
	}

	return;
}


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

	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + (3 * dRect.Xmin);
		*dstPtr++ = lclPenColorR;
		*dstPtr++ = lclPenColorG;
		*dstPtr = lclPenColorB;
		rowTablePtr[0]++;
		dRect.Xmin--;
	}

	return;
}


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

	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + (3 * dRect.Xmin);
		*dstPtr++ = lclPenColorR;
		*dstPtr++ = lclPenColorG;
		*dstPtr = lclPenColorB;
		rowTablePtr[0]++;
		dRect.Xmin++;
	}

	return;
}


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

	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + (3 * dRect.Xmin);
		*dstPtr++ = lclPenColorR;
		*dstPtr++ = lclPenColorG;
		*dstPtr = lclPenColorB;
		rowTablePtr[0]++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			dRect.Xmin++;
		}
	}

	return;
}


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

	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + (3 * dRect.Xmin);
		*dstPtr++ = lclPenColorR;
		*dstPtr++ = lclPenColorG;
		*dstPtr = lclPenColorB;
		rowTablePtr[0]++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			dRect.Xmin--;
		}
	}

	return;
}


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

	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + (3 * dRect.Xmin);
		*dstPtr++ = lclPenColorR;
		*dstPtr++ = lclPenColorG;
		*dstPtr = lclPenColorB;
		dRect.Xmin++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			rowTablePtr[0]++;
		}
	}

	return;
}


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

	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + (3 * dRect.Xmin);
		*dstPtr++ = lclPenColorR;
		*dstPtr++ = lclPenColorG;
		*dstPtr = lclPenColorB;
		dRect.Xmin--;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			rowTablePtr[0]++;
		}
	}

	return;
}


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

	dstPtr = (byte *) *rowTablePtr[0] + (3 * dRect.Xmin);
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		*dstPtr = *dstPtr ^ lclPenColorR;
		dstPtr++;
		*dstPtr = *dstPtr ^ lclPenColorG;
		dstPtr++;
		*dstPtr = *dstPtr ^ lclPenColorB;
		dstPtr++;
	}

	return;
}


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

	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + (3 * dRect.Xmin);
		*dstPtr = *dstPtr ^ lclPenColorR;
		dstPtr++;
		*dstPtr = *dstPtr ^ lclPenColorG;
		dstPtr++;
		*dstPtr = *dstPtr ^ lclPenColorB;
		rowTablePtr[0]++;
	}

	return;
}


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

	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + (3 * dRect.Xmin);
		*dstPtr = *dstPtr ^ lclPenColorR;
		dstPtr++;
		*dstPtr = *dstPtr ^ lclPenColorG;
		dstPtr++;
		*dstPtr = *dstPtr ^ lclPenColorB;
		rowTablePtr[0]++;
		dRect.Xmin--;
	}

	return;
}


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

	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + (3 * dRect.Xmin);
		*dstPtr = *dstPtr ^ lclPenColorR;
		dstPtr++;
		*dstPtr = *dstPtr ^ lclPenColorG;
		dstPtr++;
		*dstPtr = *dstPtr ^ lclPenColorB;
		rowTablePtr[0]++;
		dRect.Xmin++;
	}

	return;
}


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

	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + (3 * dRect.Xmin);
		*dstPtr = *dstPtr ^ lclPenColorR;
		dstPtr++;
		*dstPtr = *dstPtr ^ lclPenColorG;
		dstPtr++;
		*dstPtr = *dstPtr ^ lclPenColorB;
		rowTablePtr[0]++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			dRect.Xmin++;
		}
	}

	return;
}


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

	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + (3 * dRect.Xmin);
		*dstPtr = *dstPtr ^ lclPenColorR;
		dstPtr++;
		*dstPtr = *dstPtr ^ lclPenColorG;
		dstPtr++;
		*dstPtr = *dstPtr ^ lclPenColorB;
		rowTablePtr[0]++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			dRect.Xmin--;
		}
	}

	return;
}


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

	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + (3 * dRect.Xmin);
		*dstPtr = *dstPtr ^ lclPenColorR;
		dstPtr++;
		*dstPtr = *dstPtr ^ lclPenColorG;
		dstPtr++;
		*dstPtr = *dstPtr ^ lclPenColorB;
		dRect.Xmin++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			rowTablePtr[0]++;
		}
	}

	return;
}


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

	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + (3 * dRect.Xmin);
		*dstPtr = *dstPtr ^ lclPenColorR;
		dstPtr++;
		*dstPtr = *dstPtr ^ lclPenColorG;
		dstPtr++;
		*dstPtr = *dstPtr ^ lclPenColorB;
		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 M24BMRYMLR M24BMRV */
/* Y major top->bottom, vertical masked, replace. */
void M24BMRV(void)
{
	int i;

	lclPortMask = ~lclPortMask;	/* set 1 bits to select the dest
								rather than the source */
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + (3 * dRect.Xmin);
		*dstPtr = (((*dstPtr ^ lclPenColorR) & lclPortMask) ^
			lclPenColorR);
		dstPtr++;
		*dstPtr = (((*dstPtr ^ lclPenColorG) & lclPortMask) ^
			lclPenColorG);
		dstPtr++;
		*dstPtr = (((*dstPtr ^ lclPenColorB) & lclPortMask) ^
			lclPenColorB);
		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 M24BMRYMRL(void)
{
	int i;

	lclPortMask = ~lclPortMask;	/* set 1 bits to select the dest
								rather than the source */
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + (3 * dRect.Xmin);
		*dstPtr = (((*dstPtr ^ lclPenColorR) & lclPortMask) ^
			lclPenColorR);
		dstPtr++;
		*dstPtr = (((*dstPtr ^ lclPenColorG) & lclPortMask) ^
			lclPenColorG);
		dstPtr++;
		*dstPtr = (((*dstPtr ^ lclPenColorB) & lclPortMask) ^
			lclPenColorB);
		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 M24BMRXMLR M24BMRH */
/* Diagonal top->bottom, left->right masked, replace. */
/* #define M24BMRDLR M24BMRH */
/* Horizontal left->right masked, replace. */
void M24BMRH(void)
{
	int i;

	lclPortMask = ~lclPortMask;	/* set 1 bits to select the dest
								rather than the source */
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + (3 * dRect.Xmin);
		*dstPtr = (((*dstPtr ^ lclPenColorR) & lclPortMask) ^
			lclPenColorR);
		dstPtr++;
		*dstPtr = (((*dstPtr ^ lclPenColorG) & lclPortMask) ^
			lclPenColorG);
		dstPtr++;
		*dstPtr = (((*dstPtr ^ lclPenColorB) & lclPortMask) ^
			lclPenColorB);
		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 M24BMRXMRL M24BMRDRL */
/* Diagonal top->bottom, right->left masked, replace. */
void M24BMRDRL(void)
{
	int i;

	lclPortMask = ~lclPortMask;	/* set 1 bits to select the dest
								rather than the source */
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + (3 * dRect.Xmin);
		*dstPtr = (((*dstPtr ^ lclPenColorR) & lclPortMask) ^
			lclPenColorR);
		dstPtr++;
		*dstPtr = (((*dstPtr ^ lclPenColorG) & lclPortMask) ^
			lclPenColorG);
		dstPtr++;
		*dstPtr = (((*dstPtr ^ lclPenColorB) & lclPortMask) ^
			lclPenColorB);
		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 M24BMXYMLR M24BMXV */
/* Y major top->bottom, vertical masked, XOR. */
void M24BMXV(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, XOR. */
void M24BMXYMRL(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, XOR. */
/* #define M24BMXXMLR M24BMXH */
/* Diagonal top->bottom, left->right masked, XOR. */
/* #define M24BMXDLR M24BMXH */
/* Horizontal left->right masked, XOR. */
void M24BMXH(void)
{
	int i;
	byte lclMaskR, lclMaskG, lclMaskB;

⌨️ 快捷键说明

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