[Libreoffice-commits] core.git: 2 commits - basebmp/source vcl/headless

Caolán McNamara caolanm at redhat.com
Mon Mar 23 09:37:03 PDT 2015


 basebmp/source/bitmapdevice.cxx |   20 ++++++++++++++++++--
 vcl/headless/svpgdi.cxx         |    6 +++++-
 2 files changed, 23 insertions(+), 3 deletions(-)

New commits:
commit 05ad682e73fb4b654056d7d5c49a7ac2dca4b10a
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Mon Mar 23 16:05:17 2015 +0000

    SvpSalGraphics::drawRect needs to adjust the rect bounds for line drawing
    
    like X11SalGraphicsImpl::drawRect does
    
    now the focus borders in the layouts pane of impress update correctly
    as the border is added/removed as you pass the mouse over them with
    the gtk3 plugin
    
    Change-Id: I1f03065049c2aee2e3c28e7a16777e9b06e34c6e

diff --git a/vcl/headless/svpgdi.cxx b/vcl/headless/svpgdi.cxx
index 49eff80..526d349 100644
--- a/vcl/headless/svpgdi.cxx
+++ b/vcl/headless/svpgdi.cxx
@@ -416,15 +416,19 @@ void SvpSalGraphics::drawRect( long nX, long nY, long nWidth, long nHeight )
 {
     if ((m_bUseLineColor || m_bUseFillColor) && m_aDevice)
     {
-        basegfx::B2DPolygon aRect = basegfx::tools::createPolygonFromRect( basegfx::B2DRectangle( nX, nY, nX+nWidth, nY+nHeight ) );
         ensureClip(); // FIXME: for ...
         if( m_bUseFillColor )
         {
+            basegfx::B2DPolygon aRect = basegfx::tools::createPolygonFromRect( basegfx::B2DRectangle( nX, nY, nX+nWidth, nY+nHeight ) );
             basegfx::B2DPolyPolygon aPolyPoly( aRect );
             m_aDevice->fillPolyPolygon( aPolyPoly, m_aFillColor, m_aDrawMode, m_aClipMap );
         }
         if( m_bUseLineColor )
+        {
+            // need same -1 hack as X11SalGraphicsImpl::drawRect
+            basegfx::B2DPolygon aRect = basegfx::tools::createPolygonFromRect( basegfx::B2DRectangle( nX, nY, nX+nWidth-1, nY+nHeight-1 ) );
             m_aDevice->drawPolygon( aRect, m_aLineColor, m_aDrawMode, m_aClipMap );
+        }
     }
     dbgOut( m_aDevice );
 }
commit cbd48230bb3a90c4c485fa33123c6653234e02e9
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Mon Mar 23 16:02:51 2015 +0000

    drawing a vertical/horizontal line does not really damage 0 width/height areas
    
    so follow the same logic as drawPixel which equally does not damage a 0
    width and height point
    
    Change-Id: Ie2c400caf1ad2e3a874f92c6f90f5f071f9c95e3

diff --git a/basebmp/source/bitmapdevice.cxx b/basebmp/source/bitmapdevice.cxx
index cb25e09..117d814 100644
--- a/basebmp/source/bitmapdevice.cxx
+++ b/basebmp/source/bitmapdevice.cxx
@@ -359,7 +359,7 @@ namespace
 
         void damagedPixel( const basegfx::B2IPoint& rDamagePoint ) const
         {
-            if( !mpDamage )
+            if (!mpDamage)
                 return;
 
             sal_Int32 nX(rDamagePoint.getX());
@@ -499,9 +499,25 @@ namespace
                                col,
                                begin,
                                rawAcc );
+
+            if (!mpDamage)
+                return;
+
             // TODO(P2): perhaps this needs pushing up the stack a bit
             // to make more complex polygons more efficient ...
-            damaged( basegfx::B2IBox( rPt1, rPt2 ) );
+            basegfx::B2IBox aBounds(rPt1, rPt2 );
+
+            const basegfx::B2IPoint& rEnd = aBounds.getMaximum();
+
+            sal_Int32 nX(rEnd.getX());
+            sal_Int32 nY(rEnd.getY());
+            if (nX < SAL_MAX_INT32)
+                ++nX;
+            if (nY < SAL_MAX_INT32)
+                ++nY;
+
+            basegfx::B2IBox aDamagedBox(aBounds.getMinimum(), basegfx::B2IPoint(nX, nY));
+            damaged(aDamagedBox);
         }
 
         template< typename Iterator, typename Accessor, typename RawAcc >


More information about the Libreoffice-commits mailing list