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