📄 m2b4_lin.c
字号:
/* Diagonal top->bottom, left->right replace. */
void M2_4BURDLR(void)
{
int i;
int pxShift;
byte pxBit;
byte pxColor;
pxShift = (dRect.Xmin & firstOffset) * shfCnt;
pxColor = (byte) (lclPenColor >> pxShift);
pxBit = (byte) (shiftMask >> pxShift);
dstBgnByte = dRect.Xmin >> flipMask;
for (i = 0; i <= majorAxisLengthM1; i++)
{
dstPtr = (byte *) *rowTablePtr[0] + dstBgnByte;
*dstPtr = (*dstPtr & ~pxBit) | pxColor;
rowTablePtr[0]++;
pxColor = pxColor >> shfCnt;
pxBit = (pxBit >> shfCnt);
if(pxBit == 0)
{
dstBgnByte++;
pxBit = shiftMask;
pxColor = lclPenColor;
}
}
return;
}
/* Y major top->bottom, left->right replace. */
void M2_4BURYMLR(void)
{
int i;
int pxShift;
byte pxBit;
byte pxColor;
pxShift = (dRect.Xmin & firstOffset) * shfCnt;
pxColor = (byte) (lclPenColor >> pxShift);
pxBit = (byte) (shiftMask >> pxShift);
dstBgnByte = dRect.Xmin >> flipMask;
for (i = 0; i <= majorAxisLengthM1; i++)
{
dstPtr = (byte *) *rowTablePtr[0] + dstBgnByte;
*dstPtr = (*dstPtr & ~pxBit) | pxColor;
rowTablePtr[0]++;
errTermL += errTermAdjUpL;
if (errTermL >= 0)
{ /* minor axis advance */
errTermL -= errTermAdjDownL;
pxColor = pxColor >> shfCnt;
pxBit = (pxBit >> shfCnt);
if(pxBit == 0)
{
dstBgnByte++;
pxBit = shiftMask;
pxColor = lclPenColor;
}
}
}
return;
}
/* Y major top->bottom, right->left replace. */
void M2_4BURYMRL(void)
{
int i;
int pxShift;
byte pxBit;
byte pxColor;
pxShift = (dRect.Xmin & firstOffset) * shfCnt;
pxColor = (byte) (lclPenColor >> pxShift);
pxBit = (byte) (shiftMask >> pxShift);
dstBgnByte = dRect.Xmin >> flipMask;
for (i = 0; i <= majorAxisLengthM1; i++)
{
dstPtr = (byte *) *rowTablePtr[0] + dstBgnByte;
*dstPtr = (*dstPtr & ~pxBit) | pxColor;
rowTablePtr[0]++;
errTermL += errTermAdjUpL;
if (errTermL >= 0)
{ /* minor axis advance */
errTermL -= errTermAdjDownL;
pxColor = pxColor << shfCnt;
pxBit = (pxBit << shfCnt);
if(pxBit == 0)
{
dstBgnByte--;
if (shfCnt == 2)
{
pxBit = 0x03;
pxColor = lclPenColor >> 6;
}
else
{
pxBit = 0x0f;
pxColor = lclPenColor >> 4;
}
}
}
}
return;
}
/* X major top->bottom, left->right replace. */
void M2_4BURXMLR(void)
{
int i;
int pxShift;
byte pxBit;
byte pxColor;
pxShift = (dRect.Xmin & firstOffset) * shfCnt;
pxColor = (byte) (lclPenColor >> pxShift);
pxBit = (byte) (shiftMask >> pxShift);
dstBgnByte = dRect.Xmin >> flipMask;
for (i = 0; i <= majorAxisLengthM1; i++)
{
dstPtr = (byte *) *rowTablePtr[0] + dstBgnByte;
*dstPtr = (*dstPtr & ~pxBit) | pxColor;
pxColor = pxColor >> shfCnt;
pxBit = (pxBit >> shfCnt);
if(pxBit == 0)
{
dstBgnByte++;
pxBit = shiftMask;
pxColor = lclPenColor;
}
errTermL += errTermAdjUpL;
if (errTermL >= 0)
{ /* minor axis advance */
errTermL -= errTermAdjDownL;
rowTablePtr[0]++;
}
}
return;
}
/* X major top->bottom, right->left replace. */
void M2_4BURXMRL(void)
{
int i;
int pxShift;
byte pxBit;
byte pxColor;
pxShift = (dRect.Xmin & firstOffset) * shfCnt;
pxColor = (byte) (lclPenColor >> pxShift);
pxBit = (byte) (shiftMask >> pxShift);
dstBgnByte = dRect.Xmin >> flipMask;
for (i = 0; i <= majorAxisLengthM1; i++)
{
dstPtr = (byte *) *rowTablePtr[0] + dstBgnByte;
*dstPtr = (*dstPtr & ~pxBit) | pxColor;
pxColor = pxColor << shfCnt;
pxBit = (pxBit << shfCnt);
if(pxBit == 0)
{
dstBgnByte--;
if (shfCnt == 2)
{
pxBit = 0x03;
pxColor = lclPenColor >> 6;
}
else
{
pxBit = 0x0f;
pxColor = lclPenColor >> 4;
}
}
errTermL += errTermAdjUpL;
if (errTermL >= 0)
{ /* minor axis advance */
errTermL -= errTermAdjDownL;
rowTablePtr[0]++;
}
}
return;
}
/* Horizontal left->right XOR. */
void M2_4BUXH(void)
{
int i;
int pxShift;
byte pxBit;
byte pxColor;
pxShift = (dRect.Xmin & firstOffset) * shfCnt;
pxColor = (byte) (lclPenColor >> pxShift);
pxBit = (byte) (shiftMask >> pxShift);
dstPtr = (byte *) *rowTablePtr[0] + (dRect.Xmin >> flipMask);
for (i = 0; i <= majorAxisLengthM1; i++)
{
*dstPtr = *dstPtr ^ pxColor;
pxColor = pxColor >> shfCnt;
pxBit = (pxBit >> shfCnt);
if(pxBit == 0)
{
dstPtr++;
pxBit = shiftMask;
pxColor = lclPenColor;
}
}
return;
}
/* Vertical top->bottom XOR. */
void M2_4BUXV()
{
int i;
int pxShift;
/* BobB 11/10/99 - removed the following variable since it is not used
byte pxBit; */
byte pxColor;
pxShift = (dRect.Xmin & firstOffset) * shfCnt;
pxColor = (byte) (lclPenColor >> pxShift);
/* BobB 11/10/99 - removed the following line since it is not used
pxBit = (byte) (shiftMask >> pxShift); */
dstBgnByte = dRect.Xmin >> flipMask;
for (i = 0; i <= majorAxisLengthM1; i++)
{
dstPtr = (byte *) *rowTablePtr[0] + dstBgnByte;
*dstPtr = *dstPtr ^ pxColor;
rowTablePtr[0]++;
}
return;
}
/* Diagonal top->bottom, right->left XOR. */
void M2_4BUXDRL(void)
{
int i;
int pxShift;
byte pxBit;
byte pxColor;
pxShift = (dRect.Xmin & firstOffset) * shfCnt;
pxColor = (byte) (lclPenColor >> pxShift);
pxBit = (byte) (shiftMask >> pxShift);
dstBgnByte = dRect.Xmin >> flipMask;
for (i = 0; i <= majorAxisLengthM1; i++)
{
dstPtr = (byte *) *rowTablePtr[0] + dstBgnByte;
*dstPtr = *dstPtr ^ pxColor;
rowTablePtr[0]++;
pxColor = pxColor << shfCnt;
pxBit = (pxBit << shfCnt);
if(pxBit == 0)
{
dstBgnByte--;
if (shfCnt == 2)
{
pxBit = 0x03;
pxColor = lclPenColor >> 6;
}
else
{
pxBit = 0x0f;
pxColor = lclPenColor >> 4;
}
}
}
return;
}
/* Diagonal top->bottom, left->right XOR. */
void M2_4BUXDLR(void)
{
int i;
int pxShift;
byte pxBit;
byte pxColor;
pxShift = (dRect.Xmin & firstOffset) * shfCnt;
pxColor = (byte) (lclPenColor >> pxShift);
pxBit = (byte) (shiftMask >> pxShift);
dstBgnByte = dRect.Xmin >> flipMask;
for (i = 0; i <= majorAxisLengthM1; i++)
{
dstPtr = (byte *) *rowTablePtr[0] + dstBgnByte;
*dstPtr = *dstPtr ^ pxColor;
rowTablePtr[0]++;
pxColor = pxColor >> shfCnt;
pxBit = (pxBit >> shfCnt);
if(pxBit == 0)
{
dstBgnByte++;
pxBit = shiftMask;
pxColor = lclPenColor;
}
}
return;
}
/* Y major top->bottom, left->right XOR. */
void M2_4BUXYMLR(void)
{
int i;
int pxShift;
byte pxBit;
byte pxColor;
pxShift = (dRect.Xmin & firstOffset) * shfCnt;
pxColor = (byte) (lclPenColor >> pxShift);
pxBit = (byte) (shiftMask >> pxShift);
dstBgnByte = dRect.Xmin >> flipMask;
for (i = 0; i <= majorAxisLengthM1; i++)
{
dstPtr = (byte *) *rowTablePtr[0] + dstBgnByte;
*dstPtr = *dstPtr ^ pxColor;
rowTablePtr[0]++;
errTermL += errTermAdjUpL;
if (errTermL >= 0)
{ /* minor axis advance */
errTermL -= errTermAdjDownL;
pxColor = pxColor >> shfCnt;
pxBit = (pxBit >> shfCnt);
if(pxBit == 0)
{
dstBgnByte++;
pxBit = shiftMask;
pxColor = lclPenColor;
}
}
}
return;
}
/* Y major top->bottom, right->left XOR. */
void M2_4BUXYMRL(void)
{
int i;
int pxShift;
byte pxBit;
byte pxColor;
pxShift = (dRect.Xmin & firstOffset) * shfCnt;
pxColor = (byte) (lclPenColor >> pxShift);
pxBit = (byte) (shiftMask >> pxShift);
dstBgnByte = dRect.Xmin >> flipMask;
for (i = 0; i <= majorAxisLengthM1; i++)
{
dstPtr = (byte *) *rowTablePtr[0] + dstBgnByte;
*dstPtr = *dstPtr ^ pxColor;
rowTablePtr[0]++;
errTermL += errTermAdjUpL;
if (errTermL >= 0)
{ /* minor axis advance */
errTermL -= errTermAdjDownL;
pxColor = pxColor << shfCnt;
pxBit = (pxBit << shfCnt);
if(pxBit == 0)
{
dstBgnByte--;
if (shfCnt == 2)
{
pxBit = 0x03;
pxColor = lclPenColor >> 6;
}
else
{
pxBit = 0x0f;
pxColor = lclPenColor >> 4;
}
}
}
}
return;
}
/* X major top->bottom, left->right XOR. */
void M2_4BUXXMLR(void)
{
int i;
int pxShift;
byte pxBit;
byte pxColor;
pxShift = (dRect.Xmin & firstOffset) * shfCnt;
pxColor = (byte) (lclPenColor >> pxShift);
pxBit = (byte) (shiftMask >> pxShift);
dstBgnByte = dRect.Xmin >> flipMask;
for (i = 0; i <= majorAxisLengthM1; i++)
{
dstPtr = (byte *) *rowTablePtr[0] + dstBgnByte;
*dstPtr = *dstPtr ^ pxColor;
pxColor = pxColor >> shfCnt;
pxBit = (pxBit >> shfCnt);
if(pxBit == 0)
{
dstBgnByte++;
pxBit = shiftMask;
pxColor = lclPenColor;
}
errTermL += errTermAdjUpL;
if (errTermL >= 0)
{ /* minor axis advance */
errTermL -= errTermAdjDownL;
rowTablePtr[0]++;
}
}
return;
}
/* X major top->bottom, right->left XOR. */
void M2_4BUXXMRL(void)
{
int i;
int pxShift;
byte pxBit;
byte pxColor;
pxShift = (dRect.Xmin & firstOffset) * shfCnt;
pxColor = (byte) (lclPenColor >> pxShift);
pxBit = (byte) (shiftMask >> pxShift);
dstBgnByte = dRect.Xmin >> flipMask;
for (i = 0; i <= majorAxisLengthM1; i++)
{
dstPtr = (byte *) *rowTablePtr[0] + dstBgnByte;
*dstPtr = *dstPtr ^ pxColor;
pxColor = pxColor << shfCnt;
pxBit = (pxBit << shfCnt);
if(pxBit == 0)
{
dstBgnByte--;
if (shfCnt == 2)
{
pxBit = 0x03;
pxColor = lclPenColor >> 6;
}
else
{
pxBit = 0x0f;
pxColor = lclPenColor >> 4;
}
}
errTermL += errTermAdjUpL;
if (errTermL >= 0)
{ /* minor axis advance */
errTermL -= errTermAdjDownL;
rowTablePtr[0]++;
}
}
return;
}
/* Y major top->bottom, left->right masked, OR. */
/* #define M2_4BMOYMLR M2_4BMOV */
/* Y major top->bottom, vertical masked, OR. */
void M2_4BMOV(void)
{
int i;
int pxShift;
byte pxBit;
byte pxColor;
pxShift = (dRect.Xmin & firstOffset) * shfCnt;
pxColor = (byte) (lclPenColor >> pxShift);
pxBit = (byte) (shiftMask >> pxShift);
dstBgnByte = dRect.Xmin >> flipMask;
for (i = 0; i <= majorAxisLengthM1; i++)
{
dstPtr = (byte *) *rowTablePtr[0] + dstBgnByte;
*dstPtr = *dstPtr | pxColor;
rowTablePtr[0]++;
errTermL += errTermAdjUpL;
if (errTermL >= 0)
{ /* minor axis advance */
errTermL -= errTermAdjDownL;
pxColor = pxColor >> shfCnt;
pxBit = (pxBit >> shfCnt);
if(pxBit == 0)
{
dstBgnByte++;
pxBit = shiftMask;
pxColor = lclPenColor;
}
}
}
return;
}
/* Y major top->bottom, right->left masked, OR. */
void M2_4BMOYMRL(void)
{
int i;
int pxShift;
byte pxBit;
byte pxColor;
pxShift = (dRect.Xmin & firstOffset) * shfCnt;
pxColor = (byte) (lclPenColor >> pxShift);
pxBit = (byte) (shiftMask >> pxShift);
dstBgnByte = dRect.Xmin >> flipMask;
for (i = 0; i <= majorAxisLengthM1; i++)
{
dstPtr = (byte *) *rowTablePtr[0] + dstBgnByte;
*dstPtr = *dstPtr | pxColor;
rowTablePtr[0]++;
errTermL += errTermAdjUpL;
if (errTermL >= 0)
{ /* minor axis advance */
errTermL -= errTermAdjDownL;
pxColor = pxColor << shfCnt;
pxBit = (pxBit << shfCnt);
if(pxBit == 0)
{
dstBgnByte--;
if (shfCnt == 2)
{
pxBit = 0x03;
pxColor = lclPenColor >> 6;
}
else
{
pxBit = 0x0f;
pxColor = lclPenColor >> 4;
}
}
}
}
return;
}
/* X major top->bottom, left->right masked, OR. */
/* #define M2_4BMOXMLR M2_4BMOH */
/* Diagonal top->bottom, left->right masked, OR. */
/* #define M2_4BMODLR M2_4BMOH */
/* Horizontal left->right masked, OR. */
void M2_4BMOH(void)
{
int i;
int pxShift;
byte pxBit;
byte pxColor;
pxShift = (dRect.Xmin & firstOffset) * shfCnt;
pxColor = (byte) (lclPenColor >> pxShift);
pxBit = (byte) (shiftMask >> pxShift);
dstBgnByte = dRect.Xmin >> flipMask;
for (i = 0; i <= majorAxisLengthM1; i++)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -