Author: tkreuzer
Date: Sat Apr 11 23:04:06 2009
New Revision: 40465
URL:
http://svn.reactos.org/svn/reactos?rev=40465&view=rev
Log:
[FORMATTING]
Fix indentation, no code change
Modified:
trunk/reactos/subsystems/win32/win32k/dib/dib32bpp.c
Modified: trunk/reactos/subsystems/win32/win32k/dib/dib32bpp.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/di…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/dib/dib32bpp.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/dib/dib32bpp.c [iso-8859-1] Sat Apr 11 23:04:06
2009
@@ -26,19 +26,19 @@
VOID
DIB_32BPP_PutPixel(SURFOBJ *SurfObj, LONG x, LONG y, ULONG c)
{
- PBYTE byteaddr = (PBYTE)SurfObj->pvScan0 + y * SurfObj->lDelta;
- PDWORD addr = (PDWORD)byteaddr + x;
-
- *addr = c;
+ PBYTE byteaddr = (PBYTE)SurfObj->pvScan0 + y * SurfObj->lDelta;
+ PDWORD addr = (PDWORD)byteaddr + x;
+
+ *addr = c;
}
ULONG
DIB_32BPP_GetPixel(SURFOBJ *SurfObj, LONG x, LONG y)
{
- PBYTE byteaddr = (PBYTE)SurfObj->pvScan0 + y * SurfObj->lDelta;
- PDWORD addr = (PDWORD)byteaddr + x;
-
- return (ULONG)(*addr);
+ PBYTE byteaddr = (PBYTE)SurfObj->pvScan0 + y * SurfObj->lDelta;
+ PDWORD addr = (PDWORD)byteaddr + x;
+
+ return (ULONG)(*addr);
}
@@ -47,234 +47,250 @@
{
- PBYTE byteaddr = (PBYTE)SurfObj->pvScan0 + y1 * SurfObj->lDelta;
- PDWORD addr = (PDWORD)byteaddr + x;
- LONG lDelta = SurfObj->lDelta >> 2; // >> 2 == / sizeof(DWORD)
-
- byteaddr = (PBYTE)addr;
- while(y1++ < y2)
- {
- *addr = (DWORD)c;
- addr += lDelta;
- }
+ PBYTE byteaddr = (PBYTE)SurfObj->pvScan0 + y1 * SurfObj->lDelta;
+ PDWORD addr = (PDWORD)byteaddr + x;
+ LONG lDelta = SurfObj->lDelta >> 2; // >> 2 == / sizeof(DWORD)
+
+ byteaddr = (PBYTE)addr;
+ while (y1++ < y2)
+ {
+ *addr = (DWORD)c;
+ addr += lDelta;
+ }
}
BOOLEAN
DIB_32BPP_BitBltSrcCopy(PBLTINFO BltInfo)
{
- LONG i, j, sx, sy, xColor, f1;
- PBYTE SourceBits, DestBits, SourceLine, DestLine;
- PBYTE SourceBits_4BPP, SourceLine_4BPP;
- PDWORD Source32, Dest32;
-
- DestBits = (PBYTE)BltInfo->DestSurface->pvScan0 + (BltInfo->DestRect.top *
BltInfo->DestSurface->lDelta) + 4 * BltInfo->DestRect.left;
-
- switch(BltInfo->SourceSurface->iBitmapFormat)
- {
- case BMF_1BPP:
-
- sx = BltInfo->SourcePoint.x;
- sy = BltInfo->SourcePoint.y;
-
- for (j=BltInfo->DestRect.top; j<BltInfo->DestRect.bottom; j++)
- {
- sx = BltInfo->SourcePoint.x;
- for (i=BltInfo->DestRect.left; i<BltInfo->DestRect.right; i++)
- {
- if(DIB_1BPP_GetPixel(BltInfo->SourceSurface, sx, sy) == 0)
- {
- DIB_32BPP_PutPixel(BltInfo->DestSurface, i, j,
XLATEOBJ_iXlate(BltInfo->XlateSourceToDest, 0));
- } else {
- DIB_32BPP_PutPixel(BltInfo->DestSurface, i, j,
XLATEOBJ_iXlate(BltInfo->XlateSourceToDest, 1));
- }
- sx++;
- }
- sy++;
- }
- break;
-
- case BMF_4BPP:
- SourceBits_4BPP = (PBYTE)BltInfo->SourceSurface->pvScan0 +
(BltInfo->SourcePoint.y * BltInfo->SourceSurface->lDelta) +
(BltInfo->SourcePoint.x >> 1);
-
- for (j=BltInfo->DestRect.top; j<BltInfo->DestRect.bottom; j++)
- {
- SourceLine_4BPP = SourceBits_4BPP;
- sx = BltInfo->SourcePoint.x;
- f1 = sx & 1;
-
- for (i=BltInfo->DestRect.left; i<BltInfo->DestRect.right; i++)
- {
- xColor = XLATEOBJ_iXlate(BltInfo->XlateSourceToDest,
- (*SourceLine_4BPP & altnotmask[f1]) >> (4 * (1 - f1)));
- DIB_32BPP_PutPixel(BltInfo->DestSurface, i, j, xColor);
- if(f1 == 1) { SourceLine_4BPP++; f1 = 0; } else { f1 = 1; }
- sx++;
- }
-
- SourceBits_4BPP += BltInfo->SourceSurface->lDelta;
- }
- break;
-
- case BMF_8BPP:
- SourceLine = (PBYTE)BltInfo->SourceSurface->pvScan0 +
(BltInfo->SourcePoint.y * BltInfo->SourceSurface->lDelta) +
BltInfo->SourcePoint.x;
- DestLine = DestBits;
-
- for (j = BltInfo->DestRect.top; j < BltInfo->DestRect.bottom; j++)
- {
- SourceBits = SourceLine;
- DestBits = DestLine;
-
- for (i = BltInfo->DestRect.left; i < BltInfo->DestRect.right; i++)
- {
- xColor = *SourceBits;
- *((PDWORD) DestBits) = (DWORD)XLATEOBJ_iXlate(BltInfo->XlateSourceToDest,
xColor);
- SourceBits += 1;
- DestBits += 4;
- }
-
- SourceLine += BltInfo->SourceSurface->lDelta;
- DestLine += BltInfo->DestSurface->lDelta;
- }
- break;
-
- case BMF_16BPP:
- SourceLine = (PBYTE)BltInfo->SourceSurface->pvScan0 +
(BltInfo->SourcePoint.y * BltInfo->SourceSurface->lDelta) + 2 *
BltInfo->SourcePoint.x;
- DestLine = DestBits;
-
- for (j = BltInfo->DestRect.top; j < BltInfo->DestRect.bottom; j++)
- {
- SourceBits = SourceLine;
- DestBits = DestLine;
-
- for (i = BltInfo->DestRect.left; i < BltInfo->DestRect.right; i++)
- {
- xColor = *((PWORD) SourceBits);
- *((PDWORD) DestBits) = (DWORD)XLATEOBJ_iXlate(BltInfo->XlateSourceToDest,
xColor);
- SourceBits += 2;
- DestBits += 4;
- }
-
- SourceLine += BltInfo->SourceSurface->lDelta;
- DestLine += BltInfo->DestSurface->lDelta;
- }
- break;
-
- case BMF_24BPP:
- SourceLine = (PBYTE)BltInfo->SourceSurface->pvScan0 +
(BltInfo->SourcePoint.y * BltInfo->SourceSurface->lDelta) + 3 *
BltInfo->SourcePoint.x;
- DestLine = DestBits;
-
- for (j = BltInfo->DestRect.top; j < BltInfo->DestRect.bottom; j++)
- {
- SourceBits = SourceLine;
- DestBits = DestLine;
-
- for (i = BltInfo->DestRect.left; i < BltInfo->DestRect.right; i++)
- {
- xColor = (*(SourceBits + 2) << 0x10) +
- (*(SourceBits + 1) << 0x08) +
- (*(SourceBits));
- *((PDWORD)DestBits) = (DWORD)XLATEOBJ_iXlate(BltInfo->XlateSourceToDest,
xColor);
- SourceBits += 3;
- DestBits += 4;
- }
-
- SourceLine += BltInfo->SourceSurface->lDelta;
- DestLine += BltInfo->DestSurface->lDelta;
- }
- break;
-
- case BMF_32BPP:
- if (NULL == BltInfo->XlateSourceToDest || 0 !=
(BltInfo->XlateSourceToDest->flXlate & XO_TRIVIAL))
- {
- if (BltInfo->DestRect.top < BltInfo->SourcePoint.y)
- {
- SourceBits = (PBYTE)BltInfo->SourceSurface->pvScan0 +
(BltInfo->SourcePoint.y * BltInfo->SourceSurface->lDelta) + 4 *
BltInfo->SourcePoint.x;
- for (j = BltInfo->DestRect.top; j < BltInfo->DestRect.bottom; j++)
- {
- RtlMoveMemory(DestBits, SourceBits, 4 * (BltInfo->DestRect.right -
BltInfo->DestRect.left));
- SourceBits += BltInfo->SourceSurface->lDelta;
- DestBits += BltInfo->DestSurface->lDelta;
- }
- }
- else
- {
- SourceBits = (PBYTE)BltInfo->SourceSurface->pvScan0 +
((BltInfo->SourcePoint.y + BltInfo->DestRect.bottom - BltInfo->DestRect.top - 1)
* BltInfo->SourceSurface->lDelta) + 4 * BltInfo->SourcePoint.x;
- DestBits = (PBYTE)BltInfo->DestSurface->pvScan0 +
((BltInfo->DestRect.bottom - 1) * BltInfo->DestSurface->lDelta) + 4 *
BltInfo->DestRect.left;
- for (j = BltInfo->DestRect.bottom - 1; BltInfo->DestRect.top <= j; j--)
- {
- RtlMoveMemory(DestBits, SourceBits, 4 * (BltInfo->DestRect.right -
BltInfo->DestRect.left));
- SourceBits -= BltInfo->SourceSurface->lDelta;
- DestBits -= BltInfo->DestSurface->lDelta;
- }
- }
- }
- else
- {
- if (BltInfo->DestRect.top < BltInfo->SourcePoint.y)
- {
- SourceBits = ((PBYTE)BltInfo->SourceSurface->pvScan0 +
(BltInfo->SourcePoint.y * BltInfo->SourceSurface->lDelta) + 4 *
BltInfo->SourcePoint.x);
- for (j = BltInfo->DestRect.top; j < BltInfo->DestRect.bottom; j++)
- {
- if (BltInfo->DestRect.left < BltInfo->SourcePoint.x)
- {
- Dest32 = (DWORD *) DestBits;
- Source32 = (DWORD *) SourceBits;
- for (i = BltInfo->DestRect.left; i <
BltInfo->DestRect.right; i++)
- {
- *Dest32++ = XLATEOBJ_iXlate(BltInfo->XlateSourceToDest,
*Source32++);
- }
- }
+ LONG i, j, sx, sy, xColor, f1;
+ PBYTE SourceBits, DestBits, SourceLine, DestLine;
+ PBYTE SourceBits_4BPP, SourceLine_4BPP;
+ PDWORD Source32, Dest32;
+
+ DestBits = (PBYTE)BltInfo->DestSurface->pvScan0
+ + (BltInfo->DestRect.top * BltInfo->DestSurface->lDelta)
+ + 4 * BltInfo->DestRect.left;
+
+ switch (BltInfo->SourceSurface->iBitmapFormat)
+ {
+ case BMF_1BPP:
+
+ sx = BltInfo->SourcePoint.x;
+ sy = BltInfo->SourcePoint.y;
+
+ for (j=BltInfo->DestRect.top; j<BltInfo->DestRect.bottom; j++)
+ {
+ sx = BltInfo->SourcePoint.x;
+ for (i=BltInfo->DestRect.left; i<BltInfo->DestRect.right; i++)
+ {
+ if (DIB_1BPP_GetPixel(BltInfo->SourceSurface, sx, sy) == 0)
+ {
+ DIB_32BPP_PutPixel(BltInfo->DestSurface, i, j,
XLATEOBJ_iXlate(BltInfo->XlateSourceToDest, 0));
+ } else {
+ DIB_32BPP_PutPixel(BltInfo->DestSurface, i, j,
XLATEOBJ_iXlate(BltInfo->XlateSourceToDest, 1));
+ }
+ sx++;
+ }
+ sy++;
+ }
+ break;
+
+ case BMF_4BPP:
+ SourceBits_4BPP = (PBYTE)BltInfo->SourceSurface->pvScan0
+ + (BltInfo->SourcePoint.y *
BltInfo->SourceSurface->lDelta)
+ + (BltInfo->SourcePoint.x >> 1);
+
+ for (j=BltInfo->DestRect.top; j<BltInfo->DestRect.bottom; j++)
+ {
+ SourceLine_4BPP = SourceBits_4BPP;
+ sx = BltInfo->SourcePoint.x;
+ f1 = sx & 1;
+
+ for (i=BltInfo->DestRect.left; i<BltInfo->DestRect.right; i++)
+ {
+ xColor = XLATEOBJ_iXlate(BltInfo->XlateSourceToDest,
+ (*SourceLine_4BPP & altnotmask[f1])
>> (4 * (1 - f1)));
+ DIB_32BPP_PutPixel(BltInfo->DestSurface, i, j, xColor);
+ if (f1 == 1) {
+ SourceLine_4BPP++;
+ f1 = 0;
+ } else {
+ f1 = 1;
+ }
+ sx++;
+ }
+
+ SourceBits_4BPP += BltInfo->SourceSurface->lDelta;
+ }
+ break;
+
+ case BMF_8BPP:
+ SourceLine = (PBYTE)BltInfo->SourceSurface->pvScan0 +
(BltInfo->SourcePoint.y * BltInfo->SourceSurface->lDelta) +
BltInfo->SourcePoint.x;
+ DestLine = DestBits;
+
+ for (j = BltInfo->DestRect.top; j < BltInfo->DestRect.bottom; j++)
+ {
+ SourceBits = SourceLine;
+ DestBits = DestLine;
+
+ for (i = BltInfo->DestRect.left; i < BltInfo->DestRect.right;
i++)
+ {
+ xColor = *SourceBits;
+ *((PDWORD) DestBits) =
(DWORD)XLATEOBJ_iXlate(BltInfo->XlateSourceToDest, xColor);
+ SourceBits += 1;
+ DestBits += 4;
+ }
+
+ SourceLine += BltInfo->SourceSurface->lDelta;
+ DestLine += BltInfo->DestSurface->lDelta;
+ }
+ break;
+
+ case BMF_16BPP:
+ SourceLine = (PBYTE)BltInfo->SourceSurface->pvScan0 +
(BltInfo->SourcePoint.y * BltInfo->SourceSurface->lDelta) + 2 *
BltInfo->SourcePoint.x;
+ DestLine = DestBits;
+
+ for (j = BltInfo->DestRect.top; j < BltInfo->DestRect.bottom; j++)
+ {
+ SourceBits = SourceLine;
+ DestBits = DestLine;
+
+ for (i = BltInfo->DestRect.left; i < BltInfo->DestRect.right;
i++)
+ {
+ xColor = *((PWORD) SourceBits);
+ *((PDWORD) DestBits) =
(DWORD)XLATEOBJ_iXlate(BltInfo->XlateSourceToDest, xColor);
+ SourceBits += 2;
+ DestBits += 4;
+ }
+
+ SourceLine += BltInfo->SourceSurface->lDelta;
+ DestLine += BltInfo->DestSurface->lDelta;
+ }
+ break;
+
+ case BMF_24BPP:
+ SourceLine = (PBYTE)BltInfo->SourceSurface->pvScan0
+ + (BltInfo->SourcePoint.y *
BltInfo->SourceSurface->lDelta)
+ + 3 * BltInfo->SourcePoint.x;
+ DestLine = DestBits;
+
+ for (j = BltInfo->DestRect.top; j < BltInfo->DestRect.bottom; j++)
+ {
+ SourceBits = SourceLine;
+ DestBits = DestLine;
+
+ for (i = BltInfo->DestRect.left; i < BltInfo->DestRect.right;
i++)
+ {
+ xColor = (*(SourceBits + 2) << 0x10) +
+ (*(SourceBits + 1) << 0x08) +
+ (*(SourceBits));
+ *((PDWORD)DestBits) =
(DWORD)XLATEOBJ_iXlate(BltInfo->XlateSourceToDest, xColor);
+ SourceBits += 3;
+ DestBits += 4;
+ }
+
+ SourceLine += BltInfo->SourceSurface->lDelta;
+ DestLine += BltInfo->DestSurface->lDelta;
+ }
+ break;
+
+ case BMF_32BPP:
+ if (NULL == BltInfo->XlateSourceToDest ||
+ 0 != (BltInfo->XlateSourceToDest->flXlate & XO_TRIVIAL))
+ {
+ if (BltInfo->DestRect.top < BltInfo->SourcePoint.y)
+ {
+ SourceBits = (PBYTE)BltInfo->SourceSurface->pvScan0 +
(BltInfo->SourcePoint.y * BltInfo->SourceSurface->lDelta) + 4 *
BltInfo->SourcePoint.x;
+ for (j = BltInfo->DestRect.top; j <
BltInfo->DestRect.bottom; j++)
+ {
+ RtlMoveMemory(DestBits, SourceBits, 4 *
(BltInfo->DestRect.right - BltInfo->DestRect.left));
+ SourceBits += BltInfo->SourceSurface->lDelta;
+ DestBits += BltInfo->DestSurface->lDelta;
+ }
+ }
else
- {
- Dest32 = (DWORD *) DestBits + (BltInfo->DestRect.right -
BltInfo->DestRect.left - 1);
- Source32 = (DWORD *) SourceBits + (BltInfo->DestRect.right -
BltInfo->DestRect.left - 1);
- for (i = BltInfo->DestRect.right - 1; BltInfo->DestRect.left
<= i; i--)
- {
- *Dest32-- = XLATEOBJ_iXlate(BltInfo->XlateSourceToDest,
*Source32--);
- }
- }
- SourceBits += BltInfo->SourceSurface->lDelta;
- DestBits += BltInfo->DestSurface->lDelta;
- }
- }
- else
- {
- SourceBits = (PBYTE)BltInfo->SourceSurface->pvScan0 +
((BltInfo->SourcePoint.y + BltInfo->DestRect.bottom - BltInfo->DestRect.top - 1)
* BltInfo->SourceSurface->lDelta) + 4 * BltInfo->SourcePoint.x;
- DestBits = (PBYTE)BltInfo->DestSurface->pvScan0 +
((BltInfo->DestRect.bottom - 1) * BltInfo->DestSurface->lDelta) + 4 *
BltInfo->DestRect.left;
- for (j = BltInfo->DestRect.bottom - 1; BltInfo->DestRect.top <= j; j--)
- {
- if (BltInfo->DestRect.left < BltInfo->SourcePoint.x)
- {
- Dest32 = (DWORD *) DestBits;
- Source32 = (DWORD *) SourceBits;
- for (i = BltInfo->DestRect.left; i <
BltInfo->DestRect.right; i++)
- {
- *Dest32++ = XLATEOBJ_iXlate(BltInfo->XlateSourceToDest,
*Source32++);
- }
- }
+ {
+ SourceBits = (PBYTE)BltInfo->SourceSurface->pvScan0
+ + ((BltInfo->SourcePoint.y
+ + BltInfo->DestRect.bottom
+ - BltInfo->DestRect.top - 1) *
BltInfo->SourceSurface->lDelta)
+ + 4 * BltInfo->SourcePoint.x;
+ DestBits = (PBYTE)BltInfo->DestSurface->pvScan0 +
((BltInfo->DestRect.bottom - 1) * BltInfo->DestSurface->lDelta) + 4 *
BltInfo->DestRect.left;
+ for (j = BltInfo->DestRect.bottom - 1; BltInfo->DestRect.top
<= j; j--)
+ {
+ RtlMoveMemory(DestBits, SourceBits, 4 *
(BltInfo->DestRect.right - BltInfo->DestRect.left));
+ SourceBits -= BltInfo->SourceSurface->lDelta;
+ DestBits -= BltInfo->DestSurface->lDelta;
+ }
+ }
+ }
+ else
+ {
+ if (BltInfo->DestRect.top < BltInfo->SourcePoint.y)
+ {
+ SourceBits = ((PBYTE)BltInfo->SourceSurface->pvScan0 +
(BltInfo->SourcePoint.y * BltInfo->SourceSurface->lDelta) + 4 *
BltInfo->SourcePoint.x);
+ for (j = BltInfo->DestRect.top; j <
BltInfo->DestRect.bottom; j++)
+ {
+ if (BltInfo->DestRect.left < BltInfo->SourcePoint.x)
+ {
+ Dest32 = (DWORD *) DestBits;
+ Source32 = (DWORD *) SourceBits;
+ for (i = BltInfo->DestRect.left; i <
BltInfo->DestRect.right; i++)
+ {
+ *Dest32++ =
XLATEOBJ_iXlate(BltInfo->XlateSourceToDest, *Source32++);
+ }
+ }
+ else
+ {
+ Dest32 = (DWORD *) DestBits + (BltInfo->DestRect.right -
BltInfo->DestRect.left - 1);
+ Source32 = (DWORD *) SourceBits + (BltInfo->DestRect.right
- BltInfo->DestRect.left - 1);
+ for (i = BltInfo->DestRect.right - 1;
BltInfo->DestRect.left <= i; i--)
+ {
+ *Dest32-- =
XLATEOBJ_iXlate(BltInfo->XlateSourceToDest, *Source32--);
+ }
+ }
+ SourceBits += BltInfo->SourceSurface->lDelta;
+ DestBits += BltInfo->DestSurface->lDelta;
+ }
+ }
else
- {
- Dest32 = (DWORD *) DestBits + (BltInfo->DestRect.right -
BltInfo->DestRect.left - 1);
- Source32 = (DWORD *) SourceBits + (BltInfo->DestRect.right -
BltInfo->DestRect.left - 1);
- for (i = BltInfo->DestRect.right - 1; BltInfo->DestRect.left
<= i; i--)
- {
- *Dest32-- = XLATEOBJ_iXlate(BltInfo->XlateSourceToDest,
*Source32--);
- }
- }
- SourceBits -= BltInfo->SourceSurface->lDelta;
- DestBits -= BltInfo->DestSurface->lDelta;
- }
- }
- }
- break;
-
- default:
- DPRINT1("DIB_32BPP_Bitblt: Unhandled Source BPP: %u\n",
BitsPerFormat(BltInfo->SourceSurface->iBitmapFormat));
- return FALSE;
- }
-
- return TRUE;
+ {
+ SourceBits = (PBYTE)BltInfo->SourceSurface->pvScan0 +
((BltInfo->SourcePoint.y + BltInfo->DestRect.bottom - BltInfo->DestRect.top - 1)
* BltInfo->SourceSurface->lDelta) + 4 * BltInfo->SourcePoint.x;
+ DestBits = (PBYTE)BltInfo->DestSurface->pvScan0 +
((BltInfo->DestRect.bottom - 1) * BltInfo->DestSurface->lDelta) + 4 *
BltInfo->DestRect.left;
+ for (j = BltInfo->DestRect.bottom - 1; BltInfo->DestRect.top
<= j; j--)
+ {
+ if (BltInfo->DestRect.left < BltInfo->SourcePoint.x)
+ {
+ Dest32 = (DWORD *) DestBits;
+ Source32 = (DWORD *) SourceBits;
+ for (i = BltInfo->DestRect.left; i <
BltInfo->DestRect.right; i++)
+ {
+ *Dest32++ =
XLATEOBJ_iXlate(BltInfo->XlateSourceToDest, *Source32++);
+ }
+ }
+ else
+ {
+ Dest32 = (DWORD *) DestBits + (BltInfo->DestRect.right -
BltInfo->DestRect.left - 1);
+ Source32 = (DWORD *) SourceBits + (BltInfo->DestRect.right
- BltInfo->DestRect.left - 1);
+ for (i = BltInfo->DestRect.right - 1;
BltInfo->DestRect.left <= i; i--)
+ {
+ *Dest32-- =
XLATEOBJ_iXlate(BltInfo->XlateSourceToDest, *Source32--);
+ }
+ }
+ SourceBits -= BltInfo->SourceSurface->lDelta;
+ DestBits -= BltInfo->DestSurface->lDelta;
+ }
+ }
+ }
+ break;
+
+ default:
+ DPRINT1("DIB_32BPP_Bitblt: Unhandled Source BPP: %u\n",
BitsPerFormat(BltInfo->SourceSurface->iBitmapFormat));
+ return FALSE;
+ }
+
+ return TRUE;
}
BOOLEAN
@@ -282,61 +298,61 @@
RECTL* DestRect, RECTL *SourceRect,
XLATEOBJ *ColorTranslation, ULONG iTransColor)
{
- ULONG X, Y, SourceX, SourceY = 0, Source = 0, wd;
- ULONG *DestBits;
-
- LONG DstHeight;
- LONG DstWidth;
- LONG SrcHeight;
- LONG SrcWidth;
-
- DstHeight = DestRect->bottom - DestRect->top;
- DstWidth = DestRect->right - DestRect->left;
- SrcHeight = SourceRect->bottom - SourceRect->top;
- SrcWidth = SourceRect->right - SourceRect->left;
-
- DestBits = (ULONG*)((PBYTE)DestSurf->pvScan0 +
- (DestRect->left << 2) +
- DestRect->top * DestSurf->lDelta);
- wd = DestSurf->lDelta - ((DestRect->right - DestRect->left) << 2);
-
- for(Y = DestRect->top; Y < DestRect->bottom; Y++)
- {
- SourceY = SourceRect->top+(Y - DestRect->top) * SrcHeight / DstHeight;
- for(X = DestRect->left; X < DestRect->right; X++, DestBits++)
- {
- SourceX = SourceRect->left+(X - DestRect->left) * SrcWidth / DstWidth;
- if (SourceX >= 0 && SourceY >= 0 &&
- SourceSurf->sizlBitmap.cx > SourceX &&
SourceSurf->sizlBitmap.cy > SourceY)
- {
- Source = DIB_GetSourceIndex(SourceSurf, SourceX, SourceY);
- if(Source != iTransColor)
+ ULONG X, Y, SourceX, SourceY = 0, Source = 0, wd;
+ ULONG *DestBits;
+
+ LONG DstHeight;
+ LONG DstWidth;
+ LONG SrcHeight;
+ LONG SrcWidth;
+
+ DstHeight = DestRect->bottom - DestRect->top;
+ DstWidth = DestRect->right - DestRect->left;
+ SrcHeight = SourceRect->bottom - SourceRect->top;
+ SrcWidth = SourceRect->right - SourceRect->left;
+
+ DestBits = (ULONG*)((PBYTE)DestSurf->pvScan0 +
+ (DestRect->left << 2) +
+ DestRect->top * DestSurf->lDelta);
+ wd = DestSurf->lDelta - ((DestRect->right - DestRect->left) << 2);
+
+ for (Y = DestRect->top; Y < DestRect->bottom; Y++)
+ {
+ SourceY = SourceRect->top+(Y - DestRect->top) * SrcHeight / DstHeight;
+ for (X = DestRect->left; X < DestRect->right; X++, DestBits++)
{
- *DestBits = XLATEOBJ_iXlate(ColorTranslation, Source);
+ SourceX = SourceRect->left+(X - DestRect->left) * SrcWidth / DstWidth;
+ if (SourceX >= 0 && SourceY >= 0 &&
+ SourceSurf->sizlBitmap.cx > SourceX &&
SourceSurf->sizlBitmap.cy > SourceY)
+ {
+ Source = DIB_GetSourceIndex(SourceSurf, SourceX, SourceY);
+ if (Source != iTransColor)
+ {
+ *DestBits = XLATEOBJ_iXlate(ColorTranslation, Source);
+ }
+ }
}
- }
- }
-
- DestBits = (ULONG*)((ULONG_PTR)DestBits + wd);
- }
-
- return TRUE;
+
+ DestBits = (ULONG*)((ULONG_PTR)DestBits + wd);
+ }
+
+ return TRUE;
}
typedef union {
- ULONG ul;
- struct {
- UCHAR red;
- UCHAR green;
- UCHAR blue;
- UCHAR alpha;
- } col;
+ ULONG ul;
+ struct {
+ UCHAR red;
+ UCHAR green;
+ UCHAR blue;
+ UCHAR alpha;
+ } col;
} NICEPIXEL32;
static __inline UCHAR
Clamp8(ULONG val)
{
- return (val > 255) ? 255 : val;
+ return (val > 255) ? 255 : val;
}
BOOLEAN
@@ -344,77 +360,77 @@
RECTL* SourceRect, CLIPOBJ* ClipRegion,
XLATEOBJ* ColorTranslation, BLENDOBJ* BlendObj)
{
- INT Rows, Cols, SrcX, SrcY;
- register PULONG Dst;
- ULONG DstDelta;
- BLENDFUNCTION BlendFunc;
- register NICEPIXEL32 DstPixel, SrcPixel;
- UCHAR Alpha, SrcBpp;
-
- DPRINT("DIB_32BPP_AlphaBlend: srcRect: (%d,%d)-(%d,%d), dstRect:
(%d,%d)-(%d,%d)\n",
- SourceRect->left, SourceRect->top, SourceRect->right,
SourceRect->bottom,
- DestRect->left, DestRect->top, DestRect->right, DestRect->bottom);
-
- ASSERT(DestRect->bottom - DestRect->top == SourceRect->bottom -
SourceRect->top &&
- DestRect->right - DestRect->left == SourceRect->right -
SourceRect->left);
-
- BlendFunc = BlendObj->BlendFunction;
- if (BlendFunc.BlendOp != AC_SRC_OVER)
- {
- DPRINT1("BlendOp != AC_SRC_OVER\n");
- return FALSE;
- }
- if (BlendFunc.BlendFlags != 0)
- {
- DPRINT1("BlendFlags != 0\n");
- return FALSE;
- }
- if ((BlendFunc.AlphaFormat & ~AC_SRC_ALPHA) != 0)
- {
- DPRINT1("Unsupported AlphaFormat (0x%x)\n", BlendFunc.AlphaFormat);
- return FALSE;
- }
- if ((BlendFunc.AlphaFormat & AC_SRC_ALPHA) != 0 &&
- BitsPerFormat(Source->iBitmapFormat) != 32)
- {
- DPRINT1("Source bitmap must be 32bpp when AC_SRC_ALPHA is set\n");
- return FALSE;
- }
-
- Dst = (PULONG)((ULONG_PTR)Dest->pvScan0 + (DestRect->top * Dest->lDelta) +
- (DestRect->left << 2));
- DstDelta = Dest->lDelta - ((DestRect->right - DestRect->left) << 2);
- SrcBpp = BitsPerFormat(Source->iBitmapFormat);
-
- Rows = DestRect->bottom - DestRect->top;
- SrcY = SourceRect->top;
- while (--Rows >= 0)
- {
- Cols = DestRect->right - DestRect->left;
- SrcX = SourceRect->left;
- while (--Cols >= 0)
- {
- SrcPixel.ul = DIB_GetSource(Source, SrcX++, SrcY, ColorTranslation);
- SrcPixel.col.red = SrcPixel.col.red * BlendFunc.SourceConstantAlpha / 255;
- SrcPixel.col.green = SrcPixel.col.green * BlendFunc.SourceConstantAlpha / 255;
- SrcPixel.col.blue = SrcPixel.col.blue * BlendFunc.SourceConstantAlpha / 255;
- SrcPixel.col.alpha = (SrcBpp == 32) ? (SrcPixel.col.alpha *
BlendFunc.SourceConstantAlpha / 255) : BlendFunc.SourceConstantAlpha;
-
- Alpha = ((BlendFunc.AlphaFormat & AC_SRC_ALPHA) != 0) ?
- SrcPixel.col.alpha : BlendFunc.SourceConstantAlpha;
-
- DstPixel.ul = *Dst;
- DstPixel.col.red = Clamp8(DstPixel.col.red * (255 - Alpha) / 255 +
SrcPixel.col.red);
- DstPixel.col.green = Clamp8(DstPixel.col.green * (255 - Alpha) / 255 +
SrcPixel.col.green);
- DstPixel.col.blue = Clamp8(DstPixel.col.blue * (255 - Alpha) / 255 +
SrcPixel.col.blue);
- DstPixel.col.alpha = Clamp8(DstPixel.col.alpha * (255 - Alpha) / 255 +
SrcPixel.col.alpha);
- *Dst++ = DstPixel.ul;
- }
- Dst = (PULONG)((ULONG_PTR)Dst + DstDelta);
- SrcY++;
- }
-
- return TRUE;
+ INT Rows, Cols, SrcX, SrcY;
+ register PULONG Dst;
+ ULONG DstDelta;
+ BLENDFUNCTION BlendFunc;
+ register NICEPIXEL32 DstPixel, SrcPixel;
+ UCHAR Alpha, SrcBpp;
+
+ DPRINT("DIB_32BPP_AlphaBlend: srcRect: (%d,%d)-(%d,%d), dstRect:
(%d,%d)-(%d,%d)\n",
+ SourceRect->left, SourceRect->top, SourceRect->right,
SourceRect->bottom,
+ DestRect->left, DestRect->top, DestRect->right,
DestRect->bottom);
+
+ ASSERT(DestRect->bottom - DestRect->top == SourceRect->bottom -
SourceRect->top &&
+ DestRect->right - DestRect->left == SourceRect->right -
SourceRect->left);
+
+ BlendFunc = BlendObj->BlendFunction;
+ if (BlendFunc.BlendOp != AC_SRC_OVER)
+ {
+ DPRINT1("BlendOp != AC_SRC_OVER\n");
+ return FALSE;
+ }
+ if (BlendFunc.BlendFlags != 0)
+ {
+ DPRINT1("BlendFlags != 0\n");
+ return FALSE;
+ }
+ if ((BlendFunc.AlphaFormat & ~AC_SRC_ALPHA) != 0)
+ {
+ DPRINT1("Unsupported AlphaFormat (0x%x)\n", BlendFunc.AlphaFormat);
+ return FALSE;
+ }
+ if ((BlendFunc.AlphaFormat & AC_SRC_ALPHA) != 0 &&
+ BitsPerFormat(Source->iBitmapFormat) != 32)
+ {
+ DPRINT1("Source bitmap must be 32bpp when AC_SRC_ALPHA is set\n");
+ return FALSE;
+ }
+
+ Dst = (PULONG)((ULONG_PTR)Dest->pvScan0 + (DestRect->top * Dest->lDelta) +
+ (DestRect->left << 2));
+ DstDelta = Dest->lDelta - ((DestRect->right - DestRect->left) << 2);
+ SrcBpp = BitsPerFormat(Source->iBitmapFormat);
+
+ Rows = DestRect->bottom - DestRect->top;
+ SrcY = SourceRect->top;
+ while (--Rows >= 0)
+ {
+ Cols = DestRect->right - DestRect->left;
+ SrcX = SourceRect->left;
+ while (--Cols >= 0)
+ {
+ SrcPixel.ul = DIB_GetSource(Source, SrcX++, SrcY, ColorTranslation);
+ SrcPixel.col.red = SrcPixel.col.red * BlendFunc.SourceConstantAlpha / 255;
+ SrcPixel.col.green = SrcPixel.col.green * BlendFunc.SourceConstantAlpha /
255;
+ SrcPixel.col.blue = SrcPixel.col.blue * BlendFunc.SourceConstantAlpha / 255;
+ SrcPixel.col.alpha = (SrcBpp == 32) ? (SrcPixel.col.alpha *
BlendFunc.SourceConstantAlpha / 255) : BlendFunc.SourceConstantAlpha;
+
+ Alpha = ((BlendFunc.AlphaFormat & AC_SRC_ALPHA) != 0) ?
+ SrcPixel.col.alpha : BlendFunc.SourceConstantAlpha;
+
+ DstPixel.ul = *Dst;
+ DstPixel.col.red = Clamp8(DstPixel.col.red * (255 - Alpha) / 255 +
SrcPixel.col.red);
+ DstPixel.col.green = Clamp8(DstPixel.col.green * (255 - Alpha) / 255 +
SrcPixel.col.green);
+ DstPixel.col.blue = Clamp8(DstPixel.col.blue * (255 - Alpha) / 255 +
SrcPixel.col.blue);
+ DstPixel.col.alpha = Clamp8(DstPixel.col.alpha * (255 - Alpha) / 255 +
SrcPixel.col.alpha);
+ *Dst++ = DstPixel.ul;
+ }
+ Dst = (PULONG)((ULONG_PTR)Dst + DstDelta);
+ SrcY++;
+ }
+
+ return TRUE;
}
/* EOF */