[Libreoffice-commits] core.git: 2 commits - include/vcl sw/source vcl/inc vcl/quartz vcl/source

Norbert Thiebaud nthiebaud at gmail.com
Tue Jul 15 12:54:26 PDT 2014


 include/vcl/outdev.hxx              |   24 ++++++++++++---
 sw/source/core/inc/txtfrm.hxx       |   12 -------
 sw/source/core/text/frmpaint.cxx    |    3 -
 sw/source/core/text/inftxt.cxx      |   20 ------------
 sw/source/core/text/porrst.cxx      |    5 ---
 sw/source/core/txtnode/fntcache.cxx |   57 ++++++++++++++----------------------
 vcl/inc/sallayout.hxx               |   16 +---------
 vcl/quartz/ctlayout.cxx             |   54 ++++++++++++++++++++++++++++++++++
 vcl/source/outdev/text.cxx          |   26 ++++++++--------
 9 files changed, 114 insertions(+), 103 deletions(-)

New commits:
commit 7a8fcfca98ee10666c58011ebe0a5f96e008d22d
Author: Norbert Thiebaud <nthiebaud at gmail.com>
Date:   Tue Jul 15 21:45:11 2014 +0200

    fdo#79673 quartz: draw 'bullet' for 'space' directly in one pass
    
    the current implementation of CoreText simply dropped the proper
    implementation of DrawTextArray, by ignoring DXArray
    this very visibly borked the show-non-displayable character
    feature of writer.. the bullet representing the 'spaces'
    was quite misplaced.
    This solve specifically this problem.
    More work is needed to bring proper support of DXArray back to CoreText
    
    
    Conflicts:
    	vcl/inc/sallayout.hxx
    	vcl/source/outdev/text.cxx
    
    Change-Id: Idb2cc90d5ffaa8b83f79241cee2d512112d1c3be

diff --git a/include/vcl/outdev.hxx b/include/vcl/outdev.hxx
index 278a7e6..08ecaa7 100644
--- a/include/vcl/outdev.hxx
+++ b/include/vcl/outdev.hxx
@@ -96,6 +96,21 @@ class VirtualDevice;
 class Window;
 struct SalTwoRect;
 
+// Layout options
+#define SAL_LAYOUT_BIDI_RTL                 (1<<0)
+#define SAL_LAYOUT_BIDI_STRONG              (1<<1)
+#define SAL_LAYOUT_RIGHT_ALIGN              (1<<2)
+#define SAL_LAYOUT_KERNING_PAIRS            (1<<4)
+#define SAL_LAYOUT_KERNING_ASIAN            (1<<5)
+#define SAL_LAYOUT_VERTICAL                 (1<<6)
+#define SAL_LAYOUT_COMPLEX_DISABLED         (1<<8)
+#define SAL_LAYOUT_ENABLE_LIGATURES         (1<<9)
+#define SAL_LAYOUT_SUBSTITUTE_DIGITS        (1<<10)
+#define SAL_LAYOUT_KASHIDA_JUSTIFICATON     (1<<11)
+#define SAL_LAYOUT_DISABLE_GLYPH_PROCESSING (1<<12)
+#define SAL_LAYOUT_FOR_FALLBACK             (1<<13)
+#define SAL_LAYOUT_DRAW_BULLET              (1<<14)
+
 namespace com {
 namespace sun {
 namespace star {
@@ -1071,7 +1086,8 @@ public:
     void                        DrawTextArray( const Point& rStartPt, const OUString& rStr,
                                                const sal_Int32* pDXAry = NULL,
                                                sal_Int32 nIndex = 0,
-                                               sal_Int32 nLen = -1 );
+                                               sal_Int32 nLen = -1,
+                                               int flags = 0);
     long                        GetTextArray( const OUString& rStr, sal_Int32* pDXAry = NULL,
                                               sal_Int32 nIndex = 0, sal_Int32 nLen = -1 ) const;
 
@@ -1081,7 +1097,7 @@ public:
                                               bool bCellBreaking = true ) const;
     void                        DrawStretchText( const Point& rStartPt, sal_uLong nWidth,
                                                  const OUString& rStr,
-                                                 sal_Int32 nIndex = 0, sal_Int32 nLen = -1 );
+                                                 sal_Int32 nIndex = 0, sal_Int32 nLen = -1);
     sal_Int32                   GetTextBreak( const OUString& rStr, long nTextWidth,
                                               sal_Int32 nIndex = 0, sal_Int32 nLen = -1,
                                               long nCharExtra = 0 ) const;
@@ -1230,9 +1246,9 @@ public:
     virtual bool                HasMirroredGraphics() const;
     SAL_DLLPRIVATE SalLayout*   ImplLayout( const OUString&, sal_Int32 nIndex, sal_Int32 nLen,
                                             const Point& rLogicPos = Point(0,0), long nLogicWidth=0,
-                                            const sal_Int32* pLogicDXArray=NULL ) const;
+                                            const sal_Int32* pLogicDXArray=NULL, int flags=0 ) const;
     SAL_DLLPRIVATE ImplLayoutArgs ImplPrepareLayoutArgs( OUString&, const sal_Int32 nIndex, const sal_Int32 nLen,
-                                            long nPixelWidth, const sal_Int32* pPixelDXArray ) const;
+                                                         long nPixelWidth, const sal_Int32* pPixelDXArray, int flags = 0 ) const;
     SAL_DLLPRIVATE SalLayout*   ImplGlyphFallbackLayout( SalLayout*, ImplLayoutArgs& ) const;
     // tells whether this output device is RTL in an LTR UI or LTR in a RTL UI
     SAL_DLLPRIVATE SalLayout*   getFallbackFont(ImplFontEntry &rFallbackFont,
diff --git a/sw/source/core/txtnode/fntcache.cxx b/sw/source/core/txtnode/fntcache.cxx
index a4584df..f0ede76 100644
--- a/sw/source/core/txtnode/fntcache.cxx
+++ b/sw/source/core/txtnode/fntcache.cxx
@@ -1275,7 +1275,7 @@ void SwFntObj::DrawText( SwDrawTextInfo &rInf )
                     // If it is a single underlined space, output 2 spaces:
                     if( 1 == rInf.GetLen() )
                     {
-                           pKernArray[0] = rInf.GetWidth() + nSpaceAdd;
+                        pKernArray[0] = rInf.GetWidth() + nSpaceAdd;
 
                         rInf.GetOut().DrawTextArray( aPos, rInf.GetText(),
                                                      pKernArray, rInf.GetIdx(), 1 );
@@ -1352,8 +1352,11 @@ void SwFntObj::DrawText( SwDrawTextInfo &rInf )
     else
     {
         const OUString* pStr = &rInf.GetText();
+
+#if !defined(MACOSX) && !defined(IOS)
         OUString aStr;
         OUString aBulletOverlay;
+#endif
         bool bBullet = rInf.GetBullet();
         if( bSymbol )
             bBullet = false;
@@ -1463,6 +1466,7 @@ void SwFntObj::DrawText( SwDrawTextInfo &rInf )
 
         nScrPos = pScrArray[ 0 ];
 
+#if !defined(MACOSX) && !defined(IOS)
         if( bBullet )
         {
             // !!! HACK !!!
@@ -1502,7 +1506,7 @@ void SwFntObj::DrawText( SwDrawTextInfo &rInf )
                     aBulletOverlay = aBulletOverlay.replaceAt(i, 1, OUString(CH_BLANK));
                 }
         }
-
+#endif
         sal_Int32 nCnt = rInf.GetText().getLength();
         if ( nCnt < rInf.GetIdx() )
             nCnt = 0;
@@ -1526,11 +1530,16 @@ void SwFntObj::DrawText( SwDrawTextInfo &rInf )
             if ( bSwitchH2V )
                 rInf.GetFrm()->SwitchHorizontalToVertical( aPos );
 
+#if defined(MACOSX) || defined(IOS)
+            rInf.GetOut().DrawTextArray( aPos, rInf.GetText(),
+                                         pKernArray, rInf.GetIdx(), 1, bBullet ? SAL_LAYOUT_DRAW_BULLET : 0 );
+#else
             rInf.GetOut().DrawTextArray( aPos, rInf.GetText(),
                                          pKernArray, rInf.GetIdx(), 1 );
             if( bBullet )
                 rInf.GetOut().DrawTextArray( aPos, *pStr, pKernArray,
                                              rInf.GetIdx() ? 1 : 0, 1 );
+#endif
         }
         else
         {
@@ -1708,13 +1717,6 @@ void SwFntObj::DrawText( SwDrawTextInfo &rInf )
 
             if( nOffs < nLen )
             {
-                // If we paint bullets instead of spaces, we use a copy of
-                // the paragraph string. For the layout engine, the copy
-                // of the string has to be an environment of the range which
-                // is painted
-                sal_Int32 nTmpIdx = bBullet ?
-                                              ( rInf.GetIdx() ? 1 : 0 ) :
-                                              rInf.GetIdx();
 
                 if ( bSwitchL2R )
                     rInf.GetFrm()->SwitchLTRtoRTL( aPos );
@@ -1722,6 +1724,17 @@ void SwFntObj::DrawText( SwDrawTextInfo &rInf )
                 if ( bSwitchH2V )
                     rInf.GetFrm()->SwitchHorizontalToVertical( aPos );
 
+#if defined(MACOSX) || defined(IOS)
+                rInf.GetOut().DrawTextArray( aPos, *pStr, pKernArray + nOffs,
+                                             rInf.GetIdx() + nOffs , nLen - nOffs, bBullet ? SAL_LAYOUT_DRAW_BULLET : 0 );
+#else
+                // If we paint bullets instead of spaces, we use a copy of
+                // the paragraph string. For the layout engine, the copy
+                // of the string has to be an environment of the range which
+                // is painted
+                sal_Int32 nTmpIdx = bBullet ?
+                                              ( rInf.GetIdx() ? 1 : 0 ) :
+                                              rInf.GetIdx();
                 rInf.GetOut().DrawTextArray( aPos, *pStr, pKernArray + nOffs,
                                              nTmpIdx + nOffs , nLen - nOffs );
                 if (bBullet)
@@ -1747,6 +1760,7 @@ void SwFntObj::DrawText( SwDrawTextInfo &rInf )
                     pTmpFont->SetStrikeout(aPreviousStrikeout);
                     rInf.GetOut().Pop();
                 }
+#endif
             }
         }
         delete[] pScrArray;
diff --git a/vcl/inc/sallayout.hxx b/vcl/inc/sallayout.hxx
index 03f314f..d191a38 100644
--- a/vcl/inc/sallayout.hxx
+++ b/vcl/inc/sallayout.hxx
@@ -40,19 +40,6 @@ typedef unsigned short LanguageType;
 class SalGraphics;
 class PhysicalFontFace;
 
-// Layout options
-#define SAL_LAYOUT_BIDI_RTL                 0x0001
-#define SAL_LAYOUT_BIDI_STRONG              0x0002
-#define SAL_LAYOUT_RIGHT_ALIGN              0x0004
-#define SAL_LAYOUT_KERNING_PAIRS            0x0010
-#define SAL_LAYOUT_KERNING_ASIAN            0x0020
-#define SAL_LAYOUT_VERTICAL                 0x0040
-#define SAL_LAYOUT_COMPLEX_DISABLED         0x0100
-#define SAL_LAYOUT_ENABLE_LIGATURES         0x0200
-#define SAL_LAYOUT_SUBSTITUTE_DIGITS        0x0400
-#define SAL_LAYOUT_KASHIDA_JUSTIFICATON     0x0800
-#define SAL_LAYOUT_DISABLE_GLYPH_PROCESSING 0x1000
-#define SAL_LAYOUT_FOR_FALLBACK             0x2000
 
 // used for managing runs e.g. for BiDi, glyph and script fallback
 class VCL_PLUGIN_PUBLIC ImplLayoutRuns
@@ -99,7 +86,8 @@ public:
 
 public:
                 ImplLayoutArgs( const sal_Unicode* pStr, int nLength,
-                    int nMinCharPos, int nEndCharPos, int nFlags, const LanguageTag& rLanguageTag );
+                                int nMinCharPos, int nEndCharPos, int nFlags,
+                                const LanguageTag& rLanguageTag );
 
     void        SetLayoutWidth( long nWidth )       { mnLayoutWidth = nWidth; }
     void        SetDXArray( const sal_Int32* pDXArray )  { mpDXArray = pDXArray; }
diff --git a/vcl/quartz/ctlayout.cxx b/vcl/quartz/ctlayout.cxx
index cf44099..ea6d406 100644
--- a/vcl/quartz/ctlayout.cxx
+++ b/vcl/quartz/ctlayout.cxx
@@ -380,6 +380,60 @@ void CTLayout::drawCTLine(AquaSalGraphics& rAquaGraphics, CTLineRef ctline, cons
     // draw the text
     CTLineDraw( ctline, rAquaGraphics.mrContext );
 
+    if(mnLayoutFlags & SAL_LAYOUT_DRAW_BULLET)
+    {
+        CFArrayRef runArray = CTLineGetGlyphRuns(ctline);
+        CFIndex runCount = CFArrayGetCount(runArray);
+
+        CFIndex runIndex = 0;
+        CTLineRef ctlinebullet = 0;
+        OUString sBullet((sal_Unicode)0xb7); // centered bullet
+
+        for (; runIndex < runCount; runIndex++)
+        {
+
+            CTRunRef run = (CTRunRef)CFArrayGetValueAtIndex(runArray, runIndex);
+            CFIndex runGlyphCount = CTRunGetGlyphCount(run);
+
+            CGPoint position;
+            CFIndex runGlyphIndex = 0;
+            CFIndex stringIndice = 0;
+
+            for (; runGlyphIndex < runGlyphCount; runGlyphIndex++)
+            {
+                CFRange glyphRange = CFRangeMake(runGlyphIndex, 1);
+
+                CTRunGetStringIndices( run, glyphRange, &stringIndice );
+                UniChar curChar = CFStringGetCharacterAtIndex (CFAttributedStringGetString(mpAttrString), stringIndice);
+                if(curChar == ' ')
+                {
+                    CTRunGetPositions(run, glyphRange, &position);
+                    // print a dot
+                    if(!ctlinebullet)
+                    {
+                        CFStringRef aCFText = CFStringCreateWithCharactersNoCopy( NULL,
+                                                                                  sBullet.getStr(),
+                                                                                  1,
+                                                                                  kCFAllocatorNull );
+                        // CFAttributedStringCreate copies the attribues parameter
+                        CFAttributedStringRef bulletAttrString = CFAttributedStringCreate( NULL, aCFText, mpTextStyle->GetStyleDict() );
+                        ctlinebullet = CTLineCreateWithAttributedString( bulletAttrString );
+                        CFRelease( aCFText);
+                        CFRelease( bulletAttrString);
+                        RGBAColor bulletColor(MAKE_SALCOLOR(0x26, 0x8b, 0xd2 )); // NON_PRINTING_CHARACTER_COLOR
+                        CGContextSetFillColor( rAquaGraphics.mrContext, bulletColor.AsArray() );
+                    }
+                    CGContextSetTextPosition( rAquaGraphics.mrContext, aTextPos.x + position.x, position.y + aTextPos.y );
+                    CTLineDraw(ctlinebullet, rAquaGraphics.mrContext);
+                }
+            }
+        }
+        if(ctlinebullet)
+        {
+            CFRelease(ctlinebullet);
+        }
+    }
+
     // restore the original graphic context transformations
     SAL_INFO( "vcl.ct", "CGContextRestoreGState(" << rAquaGraphics.mrContext << ")" );
     CGContextRestoreGState( rAquaGraphics.mrContext );
diff --git a/vcl/source/outdev/text.cxx b/vcl/source/outdev/text.cxx
index 1c20f7f..93a0e91 100644
--- a/vcl/source/outdev/text.cxx
+++ b/vcl/source/outdev/text.cxx
@@ -281,8 +281,8 @@ bool OutputDevice::ImplDrawRotateText( SalLayout& rSalLayout )
 }
 
 bool OutputDevice::ImplDrawTextDirect( SalLayout& rSalLayout,
-                                                                    bool bTextLines,
-                                                                    sal_uInt32 flags )
+                                       bool bTextLines,
+                                       sal_uInt32 flags )
 {
     if( mpFontEntry->mnOwnOrientation )
         if( ImplDrawRotateText( rSalLayout ) )
@@ -950,7 +950,7 @@ float OutputDevice::approximate_char_width() const
 
 void OutputDevice::DrawTextArray( const Point& rStartPt, const OUString& rStr,
                                   const sal_Int32* pDXAry,
-                                  sal_Int32 nIndex, sal_Int32 nLen )
+                                  sal_Int32 nIndex, sal_Int32 nLen, int flags )
 {
     if(nLen == 0x0FFFF)
     {
@@ -973,7 +973,7 @@ void OutputDevice::DrawTextArray( const Point& rStartPt, const OUString& rStr,
     if( mbOutputClipped )
         return;
 
-    SalLayout* pSalLayout = ImplLayout(rStr, nIndex, nLen, rStartPt, 0, pDXAry);
+    SalLayout* pSalLayout = ImplLayout(rStr, nIndex, nLen, rStartPt, 0, pDXAry, flags);
     if( pSalLayout )
     {
         ImplDrawText( *pSalLayout );
@@ -981,7 +981,7 @@ void OutputDevice::DrawTextArray( const Point& rStartPt, const OUString& rStr,
     }
 
     if( mpAlphaVDev )
-        mpAlphaVDev->DrawTextArray( rStartPt, rStr, pDXAry, nIndex, nLen );
+        mpAlphaVDev->DrawTextArray( rStartPt, rStr, pDXAry, nIndex, nLen, flags );
 }
 
 long OutputDevice::GetTextArray( const OUString& rStr, sal_Int32* pDXAry,
@@ -1101,7 +1101,7 @@ bool OutputDevice::GetCaretPositions( const OUString& rStr, sal_Int32* pCaretXAr
 
 void OutputDevice::DrawStretchText( const Point& rStartPt, sal_uLong nWidth,
                                     const OUString& rStr,
-                                    sal_Int32 nIndex, sal_Int32 nLen )
+                                    sal_Int32 nIndex, sal_Int32 nLen)
 {
     if(nIndex < 0 || nIndex == 0x0FFFF || nLen == 0x0FFFF)
     {
@@ -1131,8 +1131,9 @@ void OutputDevice::DrawStretchText( const Point& rStartPt, sal_uLong nWidth,
 }
 
 ImplLayoutArgs OutputDevice::ImplPrepareLayoutArgs( OUString& rStr,
-                                       const sal_Int32 nMinIndex, const sal_Int32 nLen,
-                                       long nPixelWidth, const sal_Int32* pDXArray ) const
+                                                    const sal_Int32 nMinIndex, const sal_Int32 nLen,
+                                                    long nPixelWidth, const sal_Int32* pDXArray,
+                                                    int nLayoutFlags ) const
 {
     assert(nMinIndex >= 0);
     assert(nLen >= 0);
@@ -1146,7 +1147,6 @@ ImplLayoutArgs OutputDevice::ImplPrepareLayoutArgs( OUString& rStr,
     if( nEndIndex < nMinIndex )
         nEndIndex = nMinIndex;
 
-    int nLayoutFlags = 0;
     if( mnTextLayoutMode & TEXT_LAYOUT_BIDI_RTL )
         nLayoutFlags |= SAL_LAYOUT_BIDI_RTL;
     if( mnTextLayoutMode & TEXT_LAYOUT_BIDI_STRONG )
@@ -1244,9 +1244,9 @@ ImplLayoutArgs OutputDevice::ImplPrepareLayoutArgs( OUString& rStr,
 }
 
 SalLayout* OutputDevice::ImplLayout(const OUString& rOrigStr,
-    sal_Int32 nMinIndex, sal_Int32 nLen,
-    const Point& rLogicalPos, long nLogicalWidth,
-    const sal_Int32* pDXArray) const
+                                    sal_Int32 nMinIndex, sal_Int32 nLen,
+                                    const Point& rLogicalPos, long nLogicalWidth,
+                                    const sal_Int32* pDXArray, int flags) const
 {
     // we need a graphics
     if( !mpGraphics )
@@ -1292,7 +1292,7 @@ SalLayout* OutputDevice::ImplLayout(const OUString& rOrigStr,
         pDXArray = pTempDXAry;
     }
 
-    ImplLayoutArgs aLayoutArgs = ImplPrepareLayoutArgs( aStr, nMinIndex, nLen, nPixelWidth, pDXArray );
+    ImplLayoutArgs aLayoutArgs = ImplPrepareLayoutArgs( aStr, nMinIndex, nLen, nPixelWidth, pDXArray, flags);
 
     // get matching layout object for base font
     SalLayout* pSalLayout = mpGraphics->GetTextLayout( aLayoutArgs, 0 );
commit 6c8de2b107964cd3d26dba8fcf80c6da77b1d97a
Author: Norbert Thiebaud <nthiebaud at gmail.com>
Date:   Tue Jul 15 00:45:29 2014 +0200

    Revert "fdo#79673 revert to old NPC for MacOSX only"
    
    This reverts commit 3a2010c711b0ca4d762681dd0967ad08bc1e23fc.
    Prep to apply a full fix.
    
    Change-Id: I3b71ad79f65e48456d9fd9d257bf471faa0f3482

diff --git a/sw/source/core/inc/txtfrm.hxx b/sw/source/core/inc/txtfrm.hxx
index 70f2208..d34390b 100644
--- a/sw/source/core/inc/txtfrm.hxx
+++ b/sw/source/core/inc/txtfrm.hxx
@@ -45,19 +45,7 @@ class SwScriptInfo;
 class SwViewOption;
 class SwWrongList;
 
-// LEGACY_NON_PRINTING_CHARACTER_COLOR_FUNCTIONALITY
-// Old handling of non printing character color - color is the same as current color
-// Because of problems drawing glyphs on correct position in OSX, this functionallity is
-// disabled on OSX. See fdo#79673 for details.
-#ifdef MACOSX
-#define LEGACY_NON_PRINTING_CHARACTER_COLOR_FUNCTIONALITY
-#else
-#undef LEGACY_NON_PRINTING_CHARACTER_COLOR_FUNCTIONALITY
-#endif
-
-#ifndef LEGACY_NON_PRINTING_CHARACTER_COLOR_FUNCTIONALITY
 #define NON_PRINTING_CHARACTER_COLOR RGB_COLORDATA(0x26, 0x8b, 0xd2)
-#endif
 
 /// Represents the visualization of a paragraph.
 class SwTxtFrm: public SwCntntFrm
diff --git a/sw/source/core/text/frmpaint.cxx b/sw/source/core/text/frmpaint.cxx
index fa26bd9..cccdaf8 100644
--- a/sw/source/core/text/frmpaint.cxx
+++ b/sw/source/core/text/frmpaint.cxx
@@ -562,9 +562,8 @@ bool SwTxtFrm::PaintEmpty( const SwRect &rRect, bool bCheck ) const
                     aDrawInf.SetFrm( this );
                     aDrawInf.SetFont( pFnt );
                     aDrawInf.SetSnapToGrid( false );
-                    #ifndef LEGACY_NON_PRINTING_CHARACTER_COLOR_FUNCTIONALITY
+
                     pFnt->SetColor(NON_PRINTING_CHARACTER_COLOR);
-                    #endif
                     pFnt->_DrawText( aDrawInf );
                 }
                 delete pClip;
diff --git a/sw/source/core/text/inftxt.cxx b/sw/source/core/text/inftxt.cxx
index 339becb..b66bf33 100644
--- a/sw/source/core/text/inftxt.cxx
+++ b/sw/source/core/text/inftxt.cxx
@@ -891,16 +891,6 @@ static void lcl_DrawSpecial( const SwTxtPaintInfo& rInf, const SwLinePortion& rP
     ((SwTxtPaintInfo&)rInf).SetPos( aOldPos );
 }
 
-#ifdef LEGACY_NON_PRINTING_CHARACTER_COLOR_FUNCTIONALITY
-static void lcl_DrawSpecial( const SwTxtPaintInfo& rInf, const SwLinePortion& rPor,
-                      SwRect& rRect, sal_Unicode cChar, sal_uInt8 nOptions )
-{
-    const SwFont* pOldFnt = rInf.GetFont();
-    Color aColor = pOldFnt->GetColor();
-    lcl_DrawSpecial(rInf, rPor, rRect, aColor, cChar, nOptions);
-}
-#endif
-
 void SwTxtPaintInfo::DrawRect( const SwRect &rRect, bool bNoGraphic,
                                bool bRetouche ) const
 {
@@ -961,11 +951,7 @@ void SwTxtPaintInfo::DrawTab( const SwLinePortion &rPor ) const
         const sal_Unicode cChar = GetTxtFrm()->IsRightToLeft() ? CHAR_TAB_RTL : CHAR_TAB;
         const sal_uInt8 nOptions = DRAW_SPECIAL_OPTIONS_CENTER | DRAW_SPECIAL_OPTIONS_ROTATE;
 
-        #ifdef LEGACY_NON_PRINTING_CHARACTER_COLOR_FUNCTIONALITY
-        lcl_DrawSpecial( *this, rPor, aRect, cChar, nOptions );
-        #else
-        lcl_DrawSpecial( *this, rPor, aRect, NON_PRINTING_CHARACTER_COLOR, cChar, nOptions );
-        #endif
+        lcl_DrawSpecial( *this, rPor, aRect, Color(0x6a, 0xbe, 0xd3), cChar, nOptions );
     }
 }
 
@@ -985,11 +971,7 @@ void SwTxtPaintInfo::DrawLineBreak( const SwLinePortion &rPor ) const
                                       CHAR_LINEBREAK_RTL : CHAR_LINEBREAK;
             const sal_uInt8 nOptions = 0;
 
-            #ifdef LEGACY_NON_PRINTING_CHARACTER_COLOR_FUNCTIONALITY
-            lcl_DrawSpecial( *this, rPor, aRect, cChar, nOptions );
-            #else
             lcl_DrawSpecial( *this, rPor, aRect, Color(NON_PRINTING_CHARACTER_COLOR), cChar, nOptions );
-            #endif
         }
 
         ((SwLinePortion&)rPor).Width( nOldWidth );
diff --git a/sw/source/core/text/porrst.cxx b/sw/source/core/text/porrst.cxx
index e9d8598..e34f0f8 100644
--- a/sw/source/core/text/porrst.cxx
+++ b/sw/source/core/text/porrst.cxx
@@ -61,12 +61,7 @@ void SwTmpEndPortion::Paint( const SwTxtPaintInfo &rInf ) const
 {
     if( rInf.OnWin() && rInf.GetOpt().IsParagraph() )
     {
-        #ifdef LEGACY_NON_PRINTING_CHARACTER_COLOR_FUNCTIONALITY
-        const OUString aTmp( CH_PAR );
-        rInf.DrawText( aTmp, *this );
-        #else
         rInf.DrawSpecial( *this, CH_PAR, Color(NON_PRINTING_CHARACTER_COLOR) );
-        #endif
     }
 }
 
diff --git a/sw/source/core/txtnode/fntcache.cxx b/sw/source/core/txtnode/fntcache.cxx
index 5452107..a4584df 100644
--- a/sw/source/core/txtnode/fntcache.cxx
+++ b/sw/source/core/txtnode/fntcache.cxx
@@ -1353,11 +1353,7 @@ void SwFntObj::DrawText( SwDrawTextInfo &rInf )
     {
         const OUString* pStr = &rInf.GetText();
         OUString aStr;
-
-        #ifndef LEGACY_NON_PRINTING_CHARACTER_COLOR_FUNCTIONALITY
         OUString aBulletOverlay;
-        #endif
-
         bool bBullet = rInf.GetBullet();
         if( bSymbol )
             bBullet = false;
@@ -1483,26 +1479,9 @@ void SwFntObj::DrawText( SwDrawTextInfo &rInf )
             aStr = rInf.GetText().copy( nCopyStart, nCopyLen );
             pStr = &aStr;
 
-            #ifdef LEGACY_NON_PRINTING_CHARACTER_COLOR_FUNCTIONALITY
-            for (sal_Int32 i = 0; i < aStr.getLength(); ++i)
-            {
-                if (CH_BLANK == aStr[i])
-                {
-                    /* fdo#72488 Hack: try to see if the space is zero width
-                     * and don't bother with inserting a bullet in this case.
-                     */
-                    if ((i + nCopyStart + 1 >= rInf.GetLen()) ||
-                        pKernArray[i + nCopyStart] != pKernArray[ i + nCopyStart + 1])
-                    {
-                        aStr = aStr.replaceAt(i, 1, OUString(CH_BULLET));
-                    }
-                }
-            }
-            #else
             aBulletOverlay = rInf.GetText().copy( nCopyStart, nCopyLen );
 
             for( sal_Int32 i = 0; i < aBulletOverlay.getLength(); ++i )
-            {
                 if( CH_BLANK == aBulletOverlay[ i ] )
                 {
                     /* fdo#72488 Hack: try to see if the space is zero width
@@ -1522,8 +1501,6 @@ void SwFntObj::DrawText( SwDrawTextInfo &rInf )
                 {
                     aBulletOverlay = aBulletOverlay.replaceAt(i, 1, OUString(CH_BLANK));
                 }
-            }
-            #endif
         }
 
         sal_Int32 nCnt = rInf.GetText().getLength();
@@ -1747,7 +1724,6 @@ void SwFntObj::DrawText( SwDrawTextInfo &rInf )
 
                 rInf.GetOut().DrawTextArray( aPos, *pStr, pKernArray + nOffs,
                                              nTmpIdx + nOffs , nLen - nOffs );
-                #ifndef LEGACY_NON_PRINTING_CHARACTER_COLOR_FUNCTIONALITY
                 if (bBullet)
                 {
                     rInf.GetOut().Push();
@@ -1771,7 +1747,6 @@ void SwFntObj::DrawText( SwDrawTextInfo &rInf )
                     pTmpFont->SetStrikeout(aPreviousStrikeout);
                     rInf.GetOut().Pop();
                 }
-                #endif
             }
         }
         delete[] pScrArray;


More information about the Libreoffice-commits mailing list