sw/source/core/layout/paintfrm.cxx | 44 +++++++++---------------------------- 1 file changed, 11 insertions(+), 33 deletions(-)
New commits: commit 47ef805d8ab2f2a41be058ab5f7e0fe061ffe7a0 Author: Petr Mladek <pmla...@suse.cz> Date: Tue Mar 27 10:04:38 2012 +0200 Revert "fdo#42750: delay painting borders until after subsidiary lines" It still causes some regressions and it is more safe to be on the state of 3.5.1. This reverts commit c7524ab32f801910673da5c9c68669ada7c98769. Signed-off-by: Petr Mladek <pmla...@suse.cz> Signed-off-by: Michael Stahl <mst...@redhat.com> Signed-off-by: Cedric Bosdonnat <cbosdon...@suse.com> diff --git a/sw/source/core/layout/paintfrm.cxx b/sw/source/core/layout/paintfrm.cxx index 3a93e47..4de8650 100755 --- a/sw/source/core/layout/paintfrm.cxx +++ b/sw/source/core/layout/paintfrm.cxx @@ -119,7 +119,6 @@ #include <drawinglayer/primitive2d/textlayoutdevice.hxx> #include <svx/sdr/contact/objectcontacttools.hxx> #include <svx/unoapi.hxx> -#include <comphelper/sequenceasvector.hxx> #include <basegfx/matrix/b2dhommatrix.hxx> #include <basegfx/matrix/b2dhommatrixtools.hxx> #include <basegfx/polygon/b2dpolygon.hxx> @@ -221,22 +220,6 @@ public: inline void Ins( const SwRect &rRect, const sal_uInt8 nSCol ); }; -class BorderLines -{ - ::comphelper::SequenceAsVector< - ::drawinglayer::primitive2d::Primitive2DReference> m_Lines; -public: - void AddBorderLine( - ::drawinglayer::primitive2d::Primitive2DReference const& xLine) - { - m_Lines.push_back(xLine); - } - drawinglayer::primitive2d::Primitive2DSequence GetBorderLines() const - { - return m_Lines.getAsConstList(); - } -}; - //----------------- End of classes for border lines ---------------------- static ViewShell *pGlobalShell = 0; @@ -270,7 +253,6 @@ static double aEdgeScale = 0.5; // be compared with pLines before the work in order to avoid help lines // to hide borders. // bTablines is sal_True during the Paint of a table. -static BorderLines *g_pBorderLines = 0; static SwLineRects *pLines = 0; static SwSubsRects *pSubsLines = 0; // global variable for sub-lines of body, header, footer, section and footnote frames. @@ -353,7 +335,6 @@ class SwSavePaintStatics SwFlyFrm *pSRetoucheFly, *pSRetoucheFly2, *pSFlyOnlyDraw; - BorderLines *pBLines; SwLineRects *pSLines; SwSubsRects *pSSubsLines; SwSubsRects* pSSpecSubsLines; @@ -379,7 +360,6 @@ SwSavePaintStatics::SwSavePaintStatics() : pSRetoucheFly ( pRetoucheFly ), pSRetoucheFly2 ( pRetoucheFly2 ), pSFlyOnlyDraw ( pFlyOnlyDraw ), - pBLines ( g_pBorderLines ), pSLines ( pLines ), pSSubsLines ( pSubsLines ), pSSpecSubsLines ( pSpecSubsLines ), @@ -404,7 +384,6 @@ SwSavePaintStatics::SwSavePaintStatics() : aScaleX = aScaleY = 1.0; aMinDistScale = 0.73; aEdgeScale = 0.5; - g_pBorderLines = 0; pLines = 0; pSubsLines = 0; pSpecSubsLines = 0L; @@ -419,7 +398,6 @@ SwSavePaintStatics::~SwSavePaintStatics() pRetoucheFly = pSRetoucheFly; pRetoucheFly2 = pSRetoucheFly2; pFlyOnlyDraw = pSFlyOnlyDraw; - g_pBorderLines = pBLines; pLines = pSLines; pSubsLines = pSSubsLines; pSpecSubsLines = pSSpecSubsLines; @@ -2910,7 +2888,6 @@ SwRootFrm::Paint(SwRect const& rRect, SwPrintData const*const pPrintData) const pSubsLines = new SwSubsRects; pSpecSubsLines = new SwSubsRects; } - g_pBorderLines = new BorderLines; aPaintRect._Intersection( aRect ); @@ -3024,9 +3001,6 @@ SwRootFrm::Paint(SwRect const& rRect, SwPrintData const*const pPrintData) const DELETEZ( pSubsLines ); DELETEZ( pSpecSubsLines ); } - // fdo#42750: delay painting these until after subsidiary lines - ProcessPrimitives(g_pBorderLines->GetBorderLines()); - DELETEZ(g_pBorderLines); pVout->Leave(); // #i68597# @@ -4535,8 +4509,11 @@ void lcl_PaintLeftRightLine( const sal_Bool _bLeft, ::lcl_SubTopBottom( aRect, rBox, _rAttrs, _rFrm, _rRectFn, bPrtOutputDev ); } + // TODO Postpone the processing of the primitives if ( lcl_GetLineWidth( pLeftRightBorder ) > 0 ) { + drawinglayer::primitive2d::Primitive2DSequence aSequence( 1 ); + double nExtentIS = lcl_GetExtent( pTopBorder, NULL ); double nExtentIE = lcl_GetExtent( pBottomBorder, NULL ); double nExtentOS = lcl_GetExtent( NULL, pTopBorder ); @@ -4558,22 +4535,21 @@ void lcl_PaintLeftRightLine( const sal_Bool _bLeft, Color aLeftColor = _bLeft ? pLeftRightBorder->GetColorOut( _bLeft ) : pLeftRightBorder->GetColorIn( _bLeft ); Color aRightColor = _bLeft ? pLeftRightBorder->GetColorIn( _bLeft ) : pLeftRightBorder->GetColorOut( _bLeft ); - drawinglayer::primitive2d::Primitive2DReference xLine = - new drawinglayer::primitive2d::BorderLinePrimitive2D( + aSequence[0] = new drawinglayer::primitive2d::BorderLinePrimitive2D( aStart, aEnd, nLeftWidth, pLeftRightBorder->GetDistance(), nRightWidth, nExtentIS, nExtentIE, nExtentOS, nExtentOE, aLeftColor.getBColor(), aRightColor.getBColor(), pLeftRightBorder->GetColorGap().getBColor(), pLeftRightBorder->HasGapColor(), pLeftRightBorder->GetStyle( ) ); - g_pBorderLines->AddBorderLine(xLine); + _rFrm.ProcessPrimitives( aSequence ); } } // OD 19.05.2003 #109667# - merge <lcl_PaintTopLine> and <lcl_PaintBottomLine> // into <lcl_PaintTopLine> void lcl_PaintTopBottomLine( const sal_Bool _bTop, - const SwFrm& , + const SwFrm& _rFrm, const SwPageFrm& /*_rPage*/, const SwRect& _rOutRect, const SwRect& /*_rRect*/, @@ -4610,8 +4586,11 @@ void lcl_PaintTopBottomLine( const sal_Bool _bTop, (aRect.*_rRectFn->fnGetHeight)() ); } + // TODO Postpone the processing of the primitives if ( lcl_GetLineWidth( pTopBottomBorder ) > 0 ) { + drawinglayer::primitive2d::Primitive2DSequence aSequence( 1 ); + double nExtentIS = lcl_GetExtent( pRightBorder, NULL ); double nExtentIE = lcl_GetExtent( pLeftBorder, NULL ); double nExtentOS = lcl_GetExtent( NULL, pRightBorder ); @@ -4633,15 +4612,14 @@ void lcl_PaintTopBottomLine( const sal_Bool _bTop, Color aLeftColor = _bTop ? pTopBottomBorder->GetColorOut( _bTop ) : pTopBottomBorder->GetColorIn( _bTop ); Color aRightColor = _bTop ? pTopBottomBorder->GetColorIn( _bTop ) : pTopBottomBorder->GetColorOut( _bTop ); - drawinglayer::primitive2d::Primitive2DReference xLine = - new drawinglayer::primitive2d::BorderLinePrimitive2D( + aSequence[0] = new drawinglayer::primitive2d::BorderLinePrimitive2D( aStart, aEnd, nLeftWidth, pTopBottomBorder->GetDistance(), nRightWidth, nExtentIS, nExtentIE, nExtentOS, nExtentOE, aLeftColor.getBColor(), aRightColor.getBColor(), pTopBottomBorder->GetColorGap().getBColor(), pTopBottomBorder->HasGapColor(), pTopBottomBorder->GetStyle( ) ); - g_pBorderLines->AddBorderLine(xLine); + _rFrm.ProcessPrimitives( aSequence ); } } _______________________________________________ Libreoffice-commits mailing list Libreoffice-commits@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits