summaryrefslogtreecommitdiff
path: root/fb/fbsolid.c
diff options
context:
space:
mode:
Diffstat (limited to 'fb/fbsolid.c')
-rw-r--r--fb/fbsolid.c252
1 files changed, 111 insertions, 141 deletions
diff --git a/fb/fbsolid.c b/fb/fbsolid.c
index 414378531..cad286a43 100644
--- a/fb/fbsolid.c
+++ b/fb/fbsolid.c
@@ -29,73 +29,56 @@
#include "fb.h"
void
-fbSolid (FbBits *dst,
- FbStride dstStride,
- int dstX,
- int bpp,
-
- int width,
- int height,
-
- FbBits and,
- FbBits xor)
+fbSolid(FbBits * dst,
+ FbStride dstStride,
+ int dstX, int bpp, int width, int height, FbBits and, FbBits xor)
{
- FbBits startmask, endmask;
- int n, nmiddle;
- int startbyte, endbyte;
+ FbBits startmask, endmask;
+ int n, nmiddle;
+ int startbyte, endbyte;
- if (bpp == 24 && (!FbCheck24Pix(and) || !FbCheck24Pix(xor)))
- {
- fbSolid24 (dst, dstStride, dstX, width, height, and, xor);
- return;
+ if (bpp == 24 && (!FbCheck24Pix(and) || !FbCheck24Pix(xor))) {
+ fbSolid24(dst, dstStride, dstX, width, height, and, xor);
+ return;
}
dst += dstX >> FB_SHIFT;
dstX &= FB_MASK;
- FbMaskBitsBytes(dstX, width, and == 0, startmask, startbyte,
- nmiddle, endmask, endbyte);
+ FbMaskBitsBytes(dstX, width, and == 0, startmask, startbyte,
+ nmiddle, endmask, endbyte);
if (startmask)
- dstStride--;
+ dstStride--;
dstStride -= nmiddle;
- while (height--)
- {
- if (startmask)
- {
- FbDoLeftMaskByteRRop(dst,startbyte,startmask,and,xor);
- dst++;
- }
- n = nmiddle;
- if (!and)
- while (n--)
- WRITE(dst++, xor);
- else
- while (n--)
- {
- WRITE(dst, FbDoRRop (READ(dst), and, xor));
+ while (height--) {
+ if (startmask) {
+ FbDoLeftMaskByteRRop(dst, startbyte, startmask, and, xor);
+ dst++;
+ }
+ n = nmiddle;
+ if (!and)
+ while (n--)
+ WRITE(dst++, xor);
+ else
+ while (n--) {
+ WRITE(dst, FbDoRRop(READ(dst), and, xor));
dst++;
- }
- if (endmask)
- FbDoRightMaskByteRRop(dst,endbyte,endmask,and,xor);
- dst += dstStride;
+ }
+ if (endmask)
+ FbDoRightMaskByteRRop(dst, endbyte, endmask, and, xor);
+ dst += dstStride;
}
}
void
-fbSolid24 (FbBits *dst,
- FbStride dstStride,
- int dstX,
-
- int width,
- int height,
-
- FbBits and,
- FbBits xor)
+fbSolid24(FbBits * dst,
+ FbStride dstStride,
+ int dstX, int width, int height, FbBits and, FbBits xor)
{
- FbBits startmask, endmask;
- FbBits xor0 = 0, xor1 = 0, xor2 = 0;
- FbBits and0 = 0, and1 = 0, and2 = 0;
- FbBits xorS = 0, andS = 0, xorE = 0, andE = 0;
- int n, nmiddle;
- int rotS, rot;
+ FbBits startmask, endmask;
+ FbBits xor0 = 0, xor1 = 0, xor2 = 0;
+ FbBits and0 = 0, and1 = 0, and2 = 0;
+ FbBits xorS = 0, andS = 0, xorE = 0, andE = 0;
+ int n, nmiddle;
+ int rotS, rot;
dst += dstX >> FB_SHIFT;
dstX &= FB_MASK;
@@ -103,107 +86,94 @@ fbSolid24 (FbBits *dst,
* Rotate pixel values this far across the word to align on
* screen pixel boundaries
*/
- rot = FbFirst24Rot (dstX);
- FbMaskBits (dstX, width, startmask, nmiddle, endmask);
+ rot = FbFirst24Rot(dstX);
+ FbMaskBits(dstX, width, startmask, nmiddle, endmask);
if (startmask)
- dstStride--;
+ dstStride--;
dstStride -= nmiddle;
-
+
/*
* Precompute rotated versions of the rasterop values
*/
rotS = rot;
- xor = FbRot24(xor,rotS);
- and = FbRot24(and,rotS);
- if (startmask)
- {
- xorS = xor;
- andS = and;
- xor = FbNext24Pix(xor);
- and = FbNext24Pix(and);
+ xor = FbRot24(xor, rotS);
+ and = FbRot24(and, rotS);
+ if (startmask) {
+ xorS = xor;
+ andS = and;
+ xor = FbNext24Pix(xor);
+ and = FbNext24Pix(and);
}
-
- if (nmiddle)
- {
- xor0 = xor;
- and0 = and;
- xor1 = FbNext24Pix(xor0);
- and1 = FbNext24Pix(and0);
- xor2 = FbNext24Pix(xor1);
- and2 = FbNext24Pix(and1);
+
+ if (nmiddle) {
+ xor0 = xor;
+ and0 = and;
+ xor1 = FbNext24Pix(xor0);
+ and1 = FbNext24Pix(and0);
+ xor2 = FbNext24Pix(xor1);
+ and2 = FbNext24Pix(and1);
}
-
- if (endmask)
- {
- switch (nmiddle % 3) {
- case 0:
- xorE = xor;
- andE = and;
- break;
- case 1:
- xorE = xor1;
- andE = and1;
- break;
- case 2:
- xorE = xor2;
- andE = and2;
- break;
- }
+
+ if (endmask) {
+ switch (nmiddle % 3) {
+ case 0:
+ xorE = xor;
+ andE = and;
+ break;
+ case 1:
+ xorE = xor1;
+ andE = and1;
+ break;
+ case 2:
+ xorE = xor2;
+ andE = and2;
+ break;
+ }
}
-
- while (height--)
- {
- if (startmask)
- {
- WRITE(dst, FbDoMaskRRop(READ(dst), andS, xorS, startmask));
+
+ while (height--) {
+ if (startmask) {
+ WRITE(dst, FbDoMaskRRop(READ(dst), andS, xorS, startmask));
dst++;
- }
- n = nmiddle;
- if (!and0)
- {
- while (n >= 3)
- {
- WRITE(dst++, xor0);
- WRITE(dst++, xor1);
- WRITE(dst++, xor2);
- n -= 3;
- }
- if (n)
- {
- WRITE(dst++, xor0);
- n--;
- if (n)
- {
- WRITE(dst++, xor1);
- }
- }
- }
- else
- {
- while (n >= 3)
- {
- WRITE(dst, FbDoRRop (READ(dst), and0, xor0));
+ }
+ n = nmiddle;
+ if (!and0) {
+ while (n >= 3) {
+ WRITE(dst++, xor0);
+ WRITE(dst++, xor1);
+ WRITE(dst++, xor2);
+ n -= 3;
+ }
+ if (n) {
+ WRITE(dst++, xor0);
+ n--;
+ if (n) {
+ WRITE(dst++, xor1);
+ }
+ }
+ }
+ else {
+ while (n >= 3) {
+ WRITE(dst, FbDoRRop(READ(dst), and0, xor0));
dst++;
- WRITE(dst, FbDoRRop (READ(dst), and1, xor1));
+ WRITE(dst, FbDoRRop(READ(dst), and1, xor1));
dst++;
- WRITE(dst, FbDoRRop (READ(dst), and2, xor2));
+ WRITE(dst, FbDoRRop(READ(dst), and2, xor2));
dst++;
- n -= 3;
- }
- if (n)
- {
- WRITE(dst, FbDoRRop (READ(dst), and0, xor0));
+ n -= 3;
+ }
+ if (n) {
+ WRITE(dst, FbDoRRop(READ(dst), and0, xor0));
dst++;
- n--;
- if (n)
- {
- WRITE(dst, FbDoRRop (READ(dst), and1, xor1));
+ n--;
+ if (n) {
+ WRITE(dst, FbDoRRop(READ(dst), and1, xor1));
dst++;
- }
- }
- }
- if (endmask)
- WRITE(dst, FbDoMaskRRop (READ(dst), andE, xorE, endmask));
- dst += dstStride;
+ }
+ }
+ }
+ if (endmask)
+ WRITE(dst, FbDoMaskRRop(READ(dst), andE, xorE, endmask));
+ dst += dstStride;
}
}