Author: gedmurphy
Date: Mon Oct 29 16:29:26 2007
New Revision: 29952
URL:
http://svn.reactos.org/svn/reactos?rev=29952&view=rev
Log:
speed up the DrawIconEx alpha maths a little bit
Modified:
trunk/reactos/subsystems/win32/win32k/ntuser/cursoricon.c
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/cursoricon.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/cursoricon.c (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/cursoricon.c Mon Oct 29 16:29:26 2007
@@ -1520,6 +1520,7 @@
BITMAPOBJ *BitmapObj = NULL;
PBYTE pBits = NULL;
BLENDFUNCTION BlendFunc;
+ DWORD Pixel;
BYTE Red, Green, Blue, Alpha;
DWORD Count = 0;
INT i, j;
@@ -1548,23 +1549,16 @@
{
for (j = 0; j < cxWidth; j++)
{
- DWORD OrigPixel = 0;
- DWORD AlphaPixel = 0;
-
- OrigPixel = *(DWORD *)(pBits + Count);
-
- Red = (BYTE)((OrigPixel >> 0) & 0xff);
- Green = (BYTE)((OrigPixel >> 8) & 0xff);
- Blue = (BYTE)((OrigPixel >> 16) & 0xff);
- Alpha = (BYTE)((OrigPixel >> 24) & 0xff);
-
- Red = (Red * Alpha) / 0xff;
- Green = (Green * Alpha) / 0xff;
- Blue = (Blue * Alpha) / 0xff;
-
- AlphaPixel = (DWORD)(Red | (Green << 8) | (Blue << 16) |
(Alpha << 24));
-
- *(DWORD *)(pBits + Count) = AlphaPixel;
+ Pixel = *(DWORD *)(pBits + Count);
+
+ Alpha = ((BYTE)(Pixel >> 24) & 0xff);
+
+ Red = (((BYTE)(Pixel >> 0) & 0xff) * Alpha) / 0xff;
+ Green = (((BYTE)(Pixel >> 8) & 0xff) * Alpha) / 0xff;
+ Blue = (((BYTE)(Pixel >> 16) & 0xff) * Alpha) / 0xff;
+
+ *(DWORD *)(pBits + Count) = (DWORD)(Red | (Green << 8) | (Blue
<< 16) | (Alpha << 24));
+
Count += sizeof (DWORD);
}
}