[ros-diffs] [tkreuzer] 48675: Add macros WIDTH_BYTES_ALIGN16/32

tkreuzer at svn.reactos.org tkreuzer at svn.reactos.org
Wed Sep 1 12:04:32 UTC 2010


Author: tkreuzer
Date: Wed Sep  1 12:04:31 2010
New Revision: 48675

URL: http://svn.reactos.org/svn/reactos?rev=48675&view=rev
Log:
Add macros WIDTH_BYTES_ALIGN16/32

Modified:
    branches/reactos-yarotows/subsystems/win32/win32k/eng/surface.c
    branches/reactos-yarotows/subsystems/win32/win32k/include/surface.h

Modified: branches/reactos-yarotows/subsystems/win32/win32k/eng/surface.c
URL: http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/subsystems/win32/win32k/eng/surface.c?rev=48675&r1=48674&r2=48675&view=diff
==============================================================================
--- branches/reactos-yarotows/subsystems/win32/win32k/eng/surface.c [iso-8859-1] (original)
+++ branches/reactos-yarotows/subsystems/win32/win32k/eng/surface.c [iso-8859-1] Wed Sep  1 12:04:31 2010
@@ -200,17 +200,16 @@
     cBitsPixel = gajBitsPerFormat[pso->iBitmapFormat];
 
     /* Is a width in bytes given? */
-    if (!ulWidth)
-    {
-        /* Calculate width from the bitmap width in pixels */
-        ulWidth = DIB_GetDIBWidthBytes(psurf->SurfObj.sizlBitmap.cx, cBitsPixel);
+    if (ulWidth)
+    {
+        /* Align the width (Windows compatibility, drivers expect that) */
+        ulWidth = WIDTH_BYTES_ALIGN32((ulWidth << 3) / cBitsPixel, cBitsPixel);
     }
 	else
 	{
-		/* Align the width (windows compatibility, drivers expect that) */
-    	ulWidth = ((((ulWidth << 3) / cBitsPixel) * cBitsPixel + 31) & ~31) >> 3;
+        /* Calculate width from the bitmap width in pixels */
+        ulWidth = WIDTH_BYTES_ALIGN32(pso->sizlBitmap.cx, cBitsPixel);
 	}
-
 
     /* Calculate the bitmap size in bytes */
     pso->cjBits = ulWidth * pso->sizlBitmap.cy;

Modified: branches/reactos-yarotows/subsystems/win32/win32k/include/surface.h
URL: http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/subsystems/win32/win32k/include/surface.h?rev=48675&r1=48674&r2=48675&view=diff
==============================================================================
--- branches/reactos-yarotows/subsystems/win32/win32k/include/surface.h [iso-8859-1] (original)
+++ branches/reactos-yarotows/subsystems/win32/win32k/include/surface.h [iso-8859-1] Wed Sep  1 12:04:31 2010
@@ -128,3 +128,7 @@
 ULONG FASTCALL BitmapFormat (WORD Bits, DWORD Compression);
 extern UCHAR gajBitsPerFormat[];
 #define BitsPerFormat(Format) gajBitsPerFormat[Format]
+
+#define WIDTH_BYTES_ALIGN32(cx, bpp) ((((cx) * (bpp) + 31) & ~31) >> 3)
+#define WIDTH_BYTES_ALIGN16(cx, bpp) ((((cx) * (bpp) + 15) & ~15) >> 3)
+




More information about the Ros-diffs mailing list