[Libreoffice-commits] .: 2 commits - solenv/gbuild sw/source

Michael Stahl mst at kemper.freedesktop.org
Fri Mar 16 07:51:13 PDT 2012


 solenv/gbuild/platform/WNT_INTEL_MSC.mk |   18 ++++++-------
 sw/source/core/layout/paintfrm.cxx      |   44 ++++++++++++++++++++++++--------
 2 files changed, 42 insertions(+), 20 deletions(-)

New commits:
commit 804d0a896731629397c5328c13c04a45bc55f459
Author: Michael Stahl <mstahl at redhat.com>
Date:   Fri Mar 16 15:35:49 2012 +0100

    fdo#42750: delay painting borders until after subsidiary lines
    
    With commit 0f0896c26fb260d1bbf31d7a886df3f61837f0f2, borders are drawn
    immediately, but then the subsidiary lines are drawn over the borders,
    hiding 1 twip wide borders completely.

diff --git a/sw/source/core/layout/paintfrm.cxx b/sw/source/core/layout/paintfrm.cxx
index dac3e27..958e279 100644
--- a/sw/source/core/layout/paintfrm.cxx
+++ b/sw/source/core/layout/paintfrm.cxx
@@ -119,6 +119,7 @@
 #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>
@@ -219,6 +220,22 @@ 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;
@@ -252,6 +269,7 @@ 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.
@@ -334,6 +352,7 @@ class SwSavePaintStatics
     SwFlyFrm           *pSRetoucheFly,
                        *pSRetoucheFly2,
                        *pSFlyOnlyDraw;
+    BorderLines        *pBLines;
     SwLineRects        *pSLines;
     SwSubsRects        *pSSubsLines;
     SwSubsRects*        pSSpecSubsLines;
@@ -359,6 +378,7 @@ SwSavePaintStatics::SwSavePaintStatics() :
     pSRetoucheFly       ( pRetoucheFly      ),
     pSRetoucheFly2      ( pRetoucheFly2     ),
     pSFlyOnlyDraw       ( pFlyOnlyDraw      ),
+    pBLines             ( g_pBorderLines    ),
     pSLines             ( pLines            ),
     pSSubsLines         ( pSubsLines        ),
     pSSpecSubsLines     ( pSpecSubsLines    ),
@@ -383,6 +403,7 @@ SwSavePaintStatics::SwSavePaintStatics() :
     aScaleX = aScaleY = 1.0;
     aMinDistScale = 0.73;
     aEdgeScale = 0.5;
+    g_pBorderLines = 0;
     pLines = 0;
     pSubsLines = 0;
     pSpecSubsLines = 0L;
@@ -397,6 +418,7 @@ SwSavePaintStatics::~SwSavePaintStatics()
     pRetoucheFly       = pSRetoucheFly;
     pRetoucheFly2      = pSRetoucheFly2;
     pFlyOnlyDraw       = pSFlyOnlyDraw;
+    g_pBorderLines     = pBLines;
     pLines             = pSLines;
     pSubsLines         = pSSubsLines;
     pSpecSubsLines     = pSSpecSubsLines;
@@ -2889,6 +2911,7 @@ SwRootFrm::Paint(SwRect const& rRect, SwPrintData const*const pPrintData) const
                     pSubsLines = new SwSubsRects;
                     pSpecSubsLines = new SwSubsRects;
                 }
+                g_pBorderLines = new BorderLines;
 
                 aPaintRect._Intersection( aRect );
 
@@ -3002,6 +3025,9 @@ 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#
@@ -4507,11 +4533,8 @@ 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 );
@@ -4533,21 +4556,22 @@ 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 );
 
-        aSequence[0] = new drawinglayer::primitive2d::BorderLinePrimitive2D(
+        drawinglayer::primitive2d::Primitive2DReference xLine =
+            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( ) );
 
-        _rFrm.ProcessPrimitives( aSequence );
+        g_pBorderLines->AddBorderLine(xLine);
     }
 }
 
 // OD 19.05.2003 #109667# - merge <lcl_PaintTopLine> and <lcl_PaintBottomLine>
 // into <lcl_PaintTopLine>
 void lcl_PaintTopBottomLine( const sal_Bool         _bTop,
-                             const SwFrm&           _rFrm,
+                             const SwFrm&           ,
                              const SwPageFrm&       /*_rPage*/,
                              const SwRect&          _rOutRect,
                              const SwRect&          /*_rRect*/,
@@ -4584,11 +4608,8 @@ 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 );
@@ -4610,14 +4631,15 @@ 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 );
 
-        aSequence[0] = new drawinglayer::primitive2d::BorderLinePrimitive2D(
+        drawinglayer::primitive2d::Primitive2DReference xLine =
+            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( ) );
 
-        _rFrm.ProcessPrimitives( aSequence );
+        g_pBorderLines->AddBorderLine(xLine);
     }
 }
 
commit bb35d3b2418979d7be9941095a30fd4684b9e1e9
Author: Michael Stahl <mstahl at redhat.com>
Date:   Fri Mar 16 15:05:15 2012 +0100

    WNT_INTEL_MSC.mk: use tabs for consistency

diff --git a/solenv/gbuild/platform/WNT_INTEL_MSC.mk b/solenv/gbuild/platform/WNT_INTEL_MSC.mk
index ab7728e..5f4751c 100644
--- a/solenv/gbuild/platform/WNT_INTEL_MSC.mk
+++ b/solenv/gbuild/platform/WNT_INTEL_MSC.mk
@@ -367,18 +367,18 @@ $(call gb_Helper_abbreviate_dirs_native,\
 		$(if $(filter-out StaticLibrary,$(TARGETTYPE)),user32.lib) \
 		$(if $(DLLTARGET),-out:$(DLLTARGET) -implib:$(1),-out:$(1)); RC=$$?; rm $${RESPONSEFILE} \
 	$(if $(DLLTARGET),; if [ ! -f $(DLLTARGET) ]; then rm -f $(1) && false; fi) \
-        $(if $(filter Library,$(TARGETTYPE)),; if [ -f $(DLLTARGET).manifest ]; then mt.exe $(MTFLAGS) -manifest $(DLLTARGET).manifest -outputresource:$(DLLTARGET)\;2; fi) \
-        $(if $(filter Executable,$(TARGETTYPE)),; if [ -f $(1).manifest ]; then mt.exe $(MTFLAGS) -manifest $(1).manifest -outputresource:$(1)\;1; fi) \
-        ; exit $$RC)
+	$(if $(filter Library,$(TARGETTYPE)),; if [ -f $(DLLTARGET).manifest ]; then mt.exe $(MTFLAGS) -manifest $(DLLTARGET).manifest -outputresource:$(DLLTARGET)\;2; fi) \
+	$(if $(filter Executable,$(TARGETTYPE)),; if [ -f $(1).manifest ]; then mt.exe $(MTFLAGS) -manifest $(1).manifest -outputresource:$(1)\;1; fi) \
+	; exit $$RC)
 endef
 
 
 # Flags common for PE executables (EXEs and DLLs) 
 gb_Windows_PE_TARGETTYPEFLAGS := \
-    -release \
-    -opt:noref \
-    -incremental:no \
-    -debug \
+	-release \
+	-opt:noref \
+	-incremental:no \
+	-debug \
 	-nxcompat \
 	-dynamicbase \
 
@@ -387,8 +387,8 @@ gb_Windows_PE_TARGETTYPEFLAGS := \
 
 gb_Library_DEFS := -D_DLL
 gb_Library_TARGETTYPEFLAGS := \
-    -DLL \
-    $(gb_Windows_PE_TARGETTYPEFLAGS)
+	-DLL \
+	$(gb_Windows_PE_TARGETTYPEFLAGS)
 
 gb_Library_get_rpath :=
 


More information about the Libreoffice-commits mailing list