[ros-diffs] [jimtabor] 31601: Fix inverse sort for rects.

jimtabor at svn.reactos.org jimtabor at svn.reactos.org
Sat Jan 5 06:58:41 CET 2008


Author: jimtabor
Date: Sat Jan  5 08:58:40 2008
New Revision: 31601

URL: http://svn.reactos.org/svn/reactos?rev=31601&view=rev
Log:
Fix inverse sort for rects.

Modified:
    trunk/reactos/dll/win32/gdi32/objects/region.c

Modified: trunk/reactos/dll/win32/gdi32/objects/region.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/gdi32/objects/region.c?rev=31601&r1=31600&r2=31601&view=diff
==============================================================================
--- trunk/reactos/dll/win32/gdi32/objects/region.c (original)
+++ trunk/reactos/dll/win32/gdi32/objects/region.c Sat Jan  5 08:58:40 2008
@@ -6,24 +6,35 @@
 FASTCALL
 SortRects(PRECT pRect, INT nCount)
 {
-  INT i = 0, a = 0, b = 0;
+  INT i = 0, a = 0, b = 0, c, s;
   RECT sRect;
 
   if (nCount > 0)
   {
-      for(;;)
-      {
-         do
-         {
-            if(pRect[b].top != pRect[i].bottom) break;
-            if(pRect[b].left < pRect[a].left)
-            {
-               sRect = pRect[a];
-               pRect[a] = pRect[b];
-               pRect[b] = sRect;
-            }
-         } while(0);
-      }
+     i = 1; // set index point
+     c = nCount; // set inverse count
+     do
+     {
+        s = i; // set sort count
+        if ( i < nCount )
+        {
+           a = i - 1;
+           b = i;
+           do
+           {
+              if(pRect[b].top != pRect[i].bottom) break;
+              if(pRect[b].left < pRect[a].left)
+              {
+                 sRect = pRect[a];
+                 pRect[a] = pRect[b];
+                 pRect[b] = sRect;
+              }
+              ++s;
+              ++b;
+           } while ( s < nCount );
+        }
+        ++i;
+     } while ( c-- != 1 );
   }
 }
 
@@ -223,9 +234,9 @@
 {
   INT Ret = NtGdiGetRandomRgn(hdc, hrgn, 1);
 //  if (Ret)
- // {
- //    if(GetLayout(hdc) & LAYOUT_RTL) MirrorRgnDC(hdc,(HRGN)Ret, NULL);
- // }
+//  {
+//     if(GetLayout(hdc) & LAYOUT_RTL) MirrorRgnDC(hdc,(HRGN)Ret, NULL);
+//  }
   return Ret;
 }
 




More information about the Ros-diffs mailing list