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