[Libreoffice-commits] core.git: drawinglayer/source include/vcl vcl/source

Chris Sherlock chris.sherlock79 at gmail.com
Sat Nov 1 22:59:15 PDT 2014


 drawinglayer/source/processor2d/vclpixelprocessor2d.cxx |    7 -
 include/vcl/outdev.hxx                                  |    4 -
 vcl/source/outdev/polyline.cxx                          |   61 ++++++----------
 3 files changed, 29 insertions(+), 43 deletions(-)

New commits:
commit 498a40f33908791c3b2409a1ccb4b3c81ea1e032
Author: Chris Sherlock <chris.sherlock79 at gmail.com>
Date:   Sun Nov 2 13:10:13 2014 +1100

    vcl: Refactor OutputDevice::TryDrawPolyLineDirect()
    
    I've renamed TryDrawPolyLineDirect() to DrawPolyLineDirect() and also
    renamed TryDrawPolyLineDirectNoAACheck() to drawPolyLineDirectNoAACheck().
    However, at the same time I feel that there is no need to call on
    drawPolyLineDirectNoAACheck in most instances, because DrawPolyLineDirect
    does an AA check before it can continue anyway. There is one instance where
    constantly checking the AA check is inefficient because it's in a loop, in
    that case then we call directly on drawPolyLineDirectNoAACheck, but this is
    the only case it is necessary.
    
    Change-Id: Ie0320bfc45b5c0e1ac6ce35912da3e2897af9429
    Reviewed-on: https://gerrit.libreoffice.org/12190
    Reviewed-by: Chris Sherlock <chris.sherlock79 at gmail.com>
    Tested-by: Chris Sherlock <chris.sherlock79 at gmail.com>

diff --git a/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx b/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
index ddd6d33..d287739 100644
--- a/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
+++ b/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
@@ -173,10 +173,7 @@ namespace drawinglayer
             aLocalPolygon.transform(maCurrentTransformation);
 
             // try drawing; if it did not work, use standard fallback
-            if(mpOutputDevice->TryDrawPolyLineDirect(
-                aLocalPolygon,
-                0.0,
-                fTransparency))
+            if(mpOutputDevice->DrawPolyLineDirect( aLocalPolygon, 0.0, fTransparency))
             {
                 return true;
             }
@@ -258,7 +255,7 @@ namespace drawinglayer
                 {
                     bHasPoints = true;
 
-                    if(mpOutputDevice->TryDrawPolyLineDirect(
+                    if(mpOutputDevice->DrawPolyLineDirect(
                         aSingle,
                         fLineWidth,
                         fTransparency,
diff --git a/include/vcl/outdev.hxx b/include/vcl/outdev.hxx
index 161342f..f505f04 100644
--- a/include/vcl/outdev.hxx
+++ b/include/vcl/outdev.hxx
@@ -726,7 +726,7 @@ public:
     void                        DrawPolyLine( const Polygon& rPoly,
                                               const LineInfo& rLineInfo );
 
-    bool                        TryDrawPolyLineDirect(
+    bool                        DrawPolyLineDirect(
                                     const basegfx::B2DPolygon& rB2DPolygon,
                                     double fLineWidth = 0.0,
                                     double fTransparency = 0.0,
@@ -742,7 +742,7 @@ private:
 
     // #i101491#
     // Helper who tries to use SalGDI's DrawPolyLine direct and returns it's bool. Contains no AA check.
-    SAL_DLLPRIVATE bool         TryDrawPolyLineDirectNoAACheck(
+    SAL_DLLPRIVATE bool         drawPolyLineDirectNoAACheck(
                                     const basegfx::B2DPolygon& rB2DPolygon,
                                     double fLineWidth = 0.0,
                                     double fTransparency = 0.0,
diff --git a/vcl/source/outdev/polyline.cxx b/vcl/source/outdev/polyline.cxx
index 89e27c7..d896bd1 100644
--- a/vcl/source/outdev/polyline.cxx
+++ b/vcl/source/outdev/polyline.cxx
@@ -52,33 +52,25 @@ void OutputDevice::DrawPolyLine( const Polygon& rPoly )
     if ( mbInitLineColor )
         InitLineColor();
 
-    const bool bTryAA( (mnAntialiasing & ANTIALIASING_ENABLE_B2DDRAW) &&
-                       mpGraphics->supportsOperation(OutDevSupport_B2DDraw) &&
-                       ROP_OVERPAINT == GetRasterOp() &&
-                       IsLineColor());
-
     // use b2dpolygon drawing if possible
-    if(bTryAA)
+    if ( DrawPolyLineDirect( rPoly.getB2DPolygon() ) )
     {
-        if ( TryDrawPolyLineDirectNoAACheck( rPoly.getB2DPolygon() ) )
-        {
-            basegfx::B2DPolygon aB2DPolyLine(rPoly.getB2DPolygon());
-            const ::basegfx::B2DHomMatrix aTransform = ImplGetDeviceTransformation();
-            const ::basegfx::B2DVector aB2DLineWidth( 1.0, 1.0 );
+        basegfx::B2DPolygon aB2DPolyLine(rPoly.getB2DPolygon());
+        const ::basegfx::B2DHomMatrix aTransform = ImplGetDeviceTransformation();
+        const ::basegfx::B2DVector aB2DLineWidth( 1.0, 1.0 );
 
-            // transform the polygon
-            aB2DPolyLine.transform( aTransform );
+        // transform the polygon
+        aB2DPolyLine.transform( aTransform );
 
-            if(mnAntialiasing & ANTIALIASING_PIXELSNAPHAIRLINE)
-            {
-                aB2DPolyLine = basegfx::tools::snapPointsOfHorizontalOrVerticalEdges(aB2DPolyLine);
-            }
+        if(mnAntialiasing & ANTIALIASING_PIXELSNAPHAIRLINE)
+        {
+            aB2DPolyLine = basegfx::tools::snapPointsOfHorizontalOrVerticalEdges(aB2DPolyLine);
+        }
 
-            if(mpGraphics->DrawPolyLine( aB2DPolyLine, 0.0, aB2DLineWidth,
-                                         basegfx::B2DLINEJOIN_NONE, css::drawing::LineCap_BUTT, this))
-            {
-                return;
-            }
+        if(mpGraphics->DrawPolyLine( aB2DPolyLine, 0.0, aB2DLineWidth,
+                                     basegfx::B2DLINEJOIN_NONE, css::drawing::LineCap_BUTT, this))
+        {
+            return;
         }
     }
 
@@ -162,17 +154,9 @@ void OutputDevice::DrawPolyLine( const basegfx::B2DPolygon& rB2DPolygon,
     if( mbInitLineColor )
         InitLineColor();
 
-    const bool bTryAA((mnAntialiasing & ANTIALIASING_ENABLE_B2DDRAW) &&
-                      mpGraphics->supportsOperation(OutDevSupport_B2DDraw) &&
-                      ROP_OVERPAINT == GetRasterOp() &&
-                      IsLineColor());
-
     // use b2dpolygon drawing if possible
-    if(bTryAA)
-    {
-        if ( TryDrawPolyLineDirectNoAACheck(rB2DPolygon, fLineWidth, 0.0, eLineJoin, eLineCap) )
-            return;
-    }
+    if ( DrawPolyLineDirect(rB2DPolygon, fLineWidth, 0.0, eLineJoin, eLineCap) )
+        return;
 
     // #i101491#
     // no output yet; fallback to geometry decomposition and use filled polygon paint
@@ -208,13 +192,18 @@ void OutputDevice::DrawPolyLine( const basegfx::B2DPolygon& rB2DPolygon,
         SetFillColor(aOldFillColor);
         InitFillColor();
 
+        const bool bTryAA((mnAntialiasing & ANTIALIASING_ENABLE_B2DDRAW) &&
+                          mpGraphics->supportsOperation(OutDevSupport_B2DDraw) &&
+                          ROP_OVERPAINT == GetRasterOp() &&
+                          IsLineColor());
+
         if(bTryAA)
         {
             // when AA it is necessary to also paint the filled polygon's outline
             // to avoid optical gaps
             for(sal_uInt32 a(0); a < aAreaPolyPolygon.count(); a++)
             {
-                TryDrawPolyLineDirectNoAACheck(aAreaPolyPolygon.getB2DPolygon(a));
+                drawPolyLineDirectNoAACheck(aAreaPolyPolygon.getB2DPolygon(a));
             }
         }
     }
@@ -278,7 +267,7 @@ void OutputDevice::drawPolyLine(const Polygon& rPoly, const LineInfo& rLineInfo)
         mpAlphaVDev->DrawPolyLine( rPoly, rLineInfo );
 }
 
-bool OutputDevice::TryDrawPolyLineDirectNoAACheck( const basegfx::B2DPolygon& rB2DPolygon,
+bool OutputDevice::drawPolyLineDirectNoAACheck( const basegfx::B2DPolygon& rB2DPolygon,
                                               double fLineWidth,
                                               double fTransparency,
                                               basegfx::B2DLineJoin eLineJoin,
@@ -316,7 +305,7 @@ bool OutputDevice::TryDrawPolyLineDirectNoAACheck( const basegfx::B2DPolygon& rB
                                      this);
 }
 
-bool OutputDevice::TryDrawPolyLineDirect( const basegfx::B2DPolygon& rB2DPolygon,
+bool OutputDevice::DrawPolyLineDirect( const basegfx::B2DPolygon& rB2DPolygon,
                                           double fLineWidth,
                                           double fTransparency,
                                           basegfx::B2DLineJoin eLineJoin,
@@ -346,7 +335,7 @@ bool OutputDevice::TryDrawPolyLineDirect( const basegfx::B2DPolygon& rB2DPolygon
 
     if(bTryAA)
     {
-        if(TryDrawPolyLineDirectNoAACheck(rB2DPolygon, fLineWidth, fTransparency, eLineJoin, eLineCap))
+        if(drawPolyLineDirectNoAACheck(rB2DPolygon, fLineWidth, fTransparency, eLineJoin, eLineCap))
         {
             // worked, add metafile action (if recorded) and return true
             if( mpMetaFile )


More information about the Libreoffice-commits mailing list