[Libreoffice-commits] core.git: sw/source

gkorepanov gkorepanov.gk at gmail.com
Tue Feb 7 13:22:10 UTC 2017


 sw/source/core/layout/paintfrm.cxx |   40 ++++++++++++-------------------------
 1 file changed, 14 insertions(+), 26 deletions(-)

New commits:
commit 9f44d19815c32aa0cb53d0cb89bc396f5071fc81
Author: gkorepanov <gkorepanov.gk at gmail.com>
Date:   Sun Jan 22 20:18:13 2017 +0300

    Made lcl_DrawDashedRect() more readable and faster a bit
    
    Change-Id: I58e06f090248e034541e276f11cecef8b26e874a
    Reviewed-on: https://gerrit.libreoffice.org/33394
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Björn Michaelsen <bjoern.michaelsen at canonical.com>

diff --git a/sw/source/core/layout/paintfrm.cxx b/sw/source/core/layout/paintfrm.cxx
index 27c722b..6fddaae 100644
--- a/sw/source/core/layout/paintfrm.cxx
+++ b/sw/source/core/layout/paintfrm.cxx
@@ -972,36 +972,24 @@ void SwLineRects::LockLines( bool bLock )
 
 static void lcl_DrawDashedRect( OutputDevice * pOut, SwLineRect & rLRect )
 {
-    double nHalfLWidth = rLRect.Height(  );
-    if ( nHalfLWidth > 1 )
-    {
-        nHalfLWidth = nHalfLWidth / 2;
-    }
-    else
-    {
-        nHalfLWidth = 1;
-    }
+    long startX = rLRect.Left(  ), endX;
+    long startY = rLRect.Top(  ),  endY;
 
-    long startX = rLRect.Left(  );
-    long startY = rLRect.Top(  ) + static_cast<long>(nHalfLWidth);
-    long endX = rLRect.Left(  ) + rLRect.Width(  );
-    long endY = rLRect.Top(  ) + static_cast<long>(nHalfLWidth);
+    // Discriminate vertically stretched rect from horizontally stretched
+    // and restrict minimum nHalfLWidth to 1
+    long nHalfLWidth = std::max( static_cast<long>(std::min( rLRect.Width(  ), rLRect.Height(  ) ) / 2), 1L );
 
     if ( rLRect.Height(  ) > rLRect.Width(  ) )
     {
-        nHalfLWidth = rLRect.Width(  );
-        if ( nHalfLWidth > 1 )
-        {
-            nHalfLWidth = nHalfLWidth / 2;
-        }
-        else
-        {
-            nHalfLWidth = 1;
-        }
-        startX = rLRect.Left(  ) + static_cast<long>(nHalfLWidth);
-        startY = rLRect.Top(  );
-        endX = rLRect.Left(  ) + static_cast<long>(nHalfLWidth);
-        endY = rLRect.Top(  ) + rLRect.Height(  );
+        startX += nHalfLWidth;
+        endX = startX;
+        endY = startY + rLRect.Height(  );
+    }
+    else
+    {
+        startY += nHalfLWidth;
+        endY = startY;
+        endX = startX + rLRect.Width(  );
     }
 
     svtools::DrawLine( *pOut, Point( startX, startY ), Point( endX, endY ),


More information about the Libreoffice-commits mailing list