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

📄 lcd_lin.c

📁 与Nucleus Plus配套的图形库
💻 C
📖 第 1 页 / 共 3 页
字号:
		IMODRL_ND();
		break;
	case 7:	
		IMOXMRL_ND();
		break;
	}

	return;
}


void IMA_NDTable(void)
{
	void IMAYMRL_ND(void);
	void IMAV_ND(void);
	void IMAYMLR_ND(void);
	void IMADLR_ND(void);
	void IMAXMLR_ND(void);
	void IMAH_ND(void);
	void IMADRL_ND(void);
	void IMAXMRL_ND(void);

	switch (lineDir)	/* appropriate for the line direction */
	{
	case 0:	
		IMAYMRL_ND();
		break;
	case 1:	
		IMAV_ND();
		break;
	case 2:	
		IMAYMLR_ND();
		break;
	case 3:	
		IMADLR_ND();
		break;
	case 4:	
		IMAXMLR_ND();
		break;
	case 5:	
		IMAH_ND();
		break;
	case 6:	
		IMADRL_ND();
		break;
	case 7:	
		IMAXMRL_ND();
		break;
	}

	return;
}


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

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

/* BobB 5/7/98 - removed the following line for speed improvements
	dstBgnByte = ((dRect.Xmin & 0xfffe) << 1) + (dRect.Xmin & 1); */
	dstPtr = (byte *) *rowTablePtr[0] + ((dRect.Xmin & 0xfffe) << 1)
		+ (dRect.Xmin & 1);
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		*dstPtr = lclPenColor;
		if (((long) dstPtr) & 1)
		{	/* advance 3 bytes */
			dstPtr += 3;
		}
		else
		{	/* advance only 1 byte */
			dstPtr++;
		}
	}

	return;
}


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

/* BobB 5/7/98 - added the following line for speed improvements */
	dstBgnByte = ((dRect.Xmin & 0xfffe) << 1) + (dRect.Xmin & 1);
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
/* BobB 5/7/98 - changed the following line for speed imrpovements
		dstPtr = (byte *) *rowTablePtr[0] + ((dRect.Xmin & 0xfffe) << 1)
			+ (dRect.Xmin & 1); */
		dstPtr = (byte *) *rowTablePtr[0] + dstBgnByte;
		*dstPtr = lclPenColor;
		rowTablePtr[0]++;
	}

	return;
}


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

	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + ((dRect.Xmin & 0xfffe) << 1)
			+ (dRect.Xmin & 1);
		*dstPtr = lclPenColor;
		rowTablePtr[0]++;
		dRect.Xmin--;
	}

	return;
}


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

	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + ((dRect.Xmin & 0xfffe) << 1)
			+ (dRect.Xmin & 1);
		*dstPtr = lclPenColor;
		rowTablePtr[0]++;
		dRect.Xmin++;
	}

	return;
}


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

	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + ((dRect.Xmin & 0xfffe) << 1)
			+ (dRect.Xmin & 1);
		*dstPtr = lclPenColor;
		rowTablePtr[0]++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			dRect.Xmin++;
		}
	}

	return;
}


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

	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + ((dRect.Xmin & 0xfffe) << 1)
			+ (dRect.Xmin & 1);
		*dstPtr = lclPenColor;
		rowTablePtr[0]++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			dRect.Xmin--;
		}
	}

	return;
}


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

	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + ((dRect.Xmin & 0xfffe) << 1)
			+ (dRect.Xmin & 1);
		*dstPtr = lclPenColor;
		dRect.Xmin++;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			rowTablePtr[0]++;
		}
	}

	return;
}


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

	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + ((dRect.Xmin & 0xfffe) << 1)
			+ (dRect.Xmin & 1);
		*dstPtr = lclPenColor;
		dRect.Xmin--;
		errTermL += errTermAdjUpL;
		if (errTermL >= 0)
		{	/* minor axis advance */
			errTermL -= errTermAdjDownL;
			rowTablePtr[0]++;
		}
	}

	return;
}


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

	dstPtr = (byte *) *rowTablePtr[0] + ((dRect.Xmin & 0xfffe) << 1)
		+ (dRect.Xmin & 1);
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		*dstPtr = *dstPtr ^ lclPenColor;
		if (((long) dstPtr) & 1)
		{	/* advance 3 bytes */
			dstPtr += 3;
		}
		else
		{	/* advance only 1 byte */
			dstPtr++;
		}
	}

	return;
}


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

/* BobB 5/7/98 - added the following line for speed improvements */
	dstBgnByte = ((dRect.Xmin & 0xfffe) << 1) + (dRect.Xmin & 1);
	for (i = 0; i <= majorAxisLengthM1; i++)
	{
/* BobB 5/7/98 - changed the following line for speed imrpovements
		dstPtr = (byte *) *rowTablePtr[0] + ((dRect.Xmin & 0xfffe) << 1)
			+ (dRect.Xmin & 1); */
		dstPtr = (byte *) *rowTablePtr[0] + dstBgnByte;
		*dstPtr = *dstPtr ^ lclPenColor;
		rowTablePtr[0]++;
	}

	return;
}


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

	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + ((dRect.Xmin & 0xfffe) << 1)
			+ (dRect.Xmin & 1);
		*dstPtr = *dstPtr ^ lclPenColor;
		rowTablePtr[0]++;
		dRect.Xmin--;
	}

	return;
}


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

	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + ((dRect.Xmin & 0xfffe) << 1)
			+ (dRect.Xmin & 1);
		*dstPtr = *dstPtr ^ lclPenColor;
		rowTablePtr[0]++;
		dRect.Xmin++;
	}

	return;
}


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

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

	return;
}


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

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

	return;
}


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

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

	return;
}


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

	for (i = 0; i <= majorAxisLengthM1; i++)
	{
		dstPtr = (byte *) *rowTablePtr[0] + ((dRect.Xmin & 0xfffe) << 1)
			+ (dRect.Xmin & 1);
		*dstPtr = *dstPtr ^ lclPenColor;
		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 IMRYMLR IMRV */
/* Y major top->bottom, vertical masked, replace. */
void IMRV(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] + ((dRect.Xmin & 0xfffe) << 1)
			+ (dRect.Xmin & 1);
		*dstPtr = (((*dstPtr ^ lclPenColor) & lclPortMask) ^
			lclPenColor);
		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 IMRYMRL(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] + ((dRect.Xmin & 0xfffe) << 1)
			+ (dRect.Xmin & 1);
		*dstPtr = (((*dstPtr ^ lclPenColor) & lclPortMask) ^
			lclPenColor);
		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 IMRXMLR IMRH */
/* Diagonal top->bottom, left->right masked, replace. */
/* #define IMRDLR IMRH */
/* Horizontal left->right masked, replace. */
void IMRH(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] + ((dRect.Xmin & 0xfffe) << 1)
			+ (dRect.Xmin & 1);
		*dstPtr = (((*dstPtr ^ lclPenColor) & lclPortMask) ^
			lclPenColor);
		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 IMRXMRL IMRDRL */
/* Diagonal top->bottom, right->left masked, replace. */
void IMRDRL(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] + ((dRect.Xmin & 0xfffe) << 1)
			+ (dRect.Xmin & 1);
		*dstPtr = (((*dstPtr ^ lclPenColor) & lclPortMask) ^
			lclPenColor);
		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 IMXYMLR IMXV */
/* Y major top->bottom, vertical masked, XOR. */
void IMXV(void)
{
	int i;
	byte lclMask;

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

⌨️ 快捷键说明

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