[ros-diffs] [fireball] 45593: - Calculate a real bounding rect instead of hacking it to be always display surface sized.

fireball at svn.reactos.org fireball at svn.reactos.org
Sun Feb 14 12:57:57 CET 2010


Author: fireball
Date: Sun Feb 14 12:57:56 2010
New Revision: 45593

URL: http://svn.reactos.org/svn/reactos?rev=45593&view=rev
Log:
- Calculate a real bounding rect instead of hacking it to be always display surface sized.

Modified:
    branches/arwinss/reactos/subsystems/win32/win32k/gre/lineto.c

Modified: branches/arwinss/reactos/subsystems/win32/win32k/gre/lineto.c
URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/subsystems/win32/win32k/gre/lineto.c?rev=45593&r1=45592&r2=45593&view=diff
==============================================================================
--- branches/arwinss/reactos/subsystems/win32/win32k/gre/lineto.c [iso-8859-1] (original)
+++ branches/arwinss/reactos/subsystems/win32/win32k/gre/lineto.c [iso-8859-1] Sun Feb 14 12:57:56 2010
@@ -104,30 +104,35 @@
            INT count)
 {
     BOOLEAN bRet;
+    POINT ptLine[2];
     RECTL DestRect;
     MIX Mix;
     INT i;
 
-    // HACK
-    DestRect.left = 0;
-    DestRect.top = 0;
-    DestRect.bottom = PrimarySurface.GDIInfo.ulVertRes;
-    DestRect.right = PrimarySurface.GDIInfo.ulHorzRes;
-
     /* Draw pen-based polygon */
     if (!(pDC->pLineBrush->flAttrs & GDIBRUSH_IS_NULL))
     {
         Mix = ROP2_TO_MIX(R2_COPYPEN);/*pdcattr->jROP2*/
         for (i=0; i<count-1; i++)
         {
+            ptLine[0].x = ptPoints[i].x + pDC->rcDcRect.left + pDC->rcVport.left;
+            ptLine[0].y = ptPoints[i].y + pDC->rcDcRect.top + pDC->rcVport.top;
+            ptLine[1].x = ptPoints[i+1].x + pDC->rcDcRect.left + pDC->rcVport.left;
+            ptLine[1].y = ptPoints[i+1].y + pDC->rcDcRect.top + pDC->rcVport.top;
+
+            DestRect.left = min(ptLine[0].x, ptLine[1].x);
+            DestRect.top = min(ptLine[0].y, ptLine[1].y);
+            DestRect.right = max(ptLine[0].x, ptLine[1].x);
+            DestRect.bottom = max(ptLine[0].y, ptLine[1].y);
+
             bRet = GreLineTo(&pDC->pBitmap->SurfObj,
                              pDC->CombinedClip,
                              &pDC->pLineBrush->BrushObj,
-                             ptPoints[i].x + pDC->rcDcRect.left + pDC->rcVport.left,
-                             ptPoints[i].y + pDC->rcDcRect.top + pDC->rcVport.top,
-                             ptPoints[i+1].x + pDC->rcDcRect.left + pDC->rcVport.left,
-                             ptPoints[i+1].y + pDC->rcDcRect.top + pDC->rcVport.top,
-                             &DestRect, // Bounding rectangle
+                             ptLine[0].x,
+                             ptLine[0].y,
+                             ptLine[1].x,
+                             ptLine[1].y,
+                             &DestRect,
                              Mix);
         }
     }




More information about the Ros-diffs mailing list