📄 lcd_lin.c
字号:
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 + -