diff options
author | Tomaž Vajngerl <tomaz.vajngerl@collabora.com> | 2014-07-14 22:43:58 +0200 |
---|---|---|
committer | Tomaž Vajngerl <tomaz.vajngerl@collabora.com> | 2014-07-15 00:08:23 +0200 |
commit | 3a2010c711b0ca4d762681dd0967ad08bc1e23fc (patch) | |
tree | 2907385e3ce4c2d7e56b83c14814925e6c6c7bfd /sw | |
parent | adf0d7b1fb8eed88f4fcd6d31662ae6f59d00812 (diff) |
fdo#79673 revert to old NPC for MacOSX only
Change-Id: I83cfa2f11e76e03b919216e8dd04d1121ea6afd8
Diffstat (limited to 'sw')
-rw-r--r-- | sw/source/core/inc/txtfrm.hxx | 12 | ||||
-rw-r--r-- | sw/source/core/text/frmpaint.cxx | 3 | ||||
-rw-r--r-- | sw/source/core/text/inftxt.cxx | 20 | ||||
-rw-r--r-- | sw/source/core/text/porrst.cxx | 5 | ||||
-rw-r--r-- | sw/source/core/txtnode/fntcache.cxx | 25 |
5 files changed, 63 insertions, 2 deletions
diff --git a/sw/source/core/inc/txtfrm.hxx b/sw/source/core/inc/txtfrm.hxx index 9aaccd4940ad..66ce49a246ee 100644 --- a/sw/source/core/inc/txtfrm.hxx +++ b/sw/source/core/inc/txtfrm.hxx @@ -45,7 +45,19 @@ 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( 0x6A, 0xBE, 0xD3 ) +#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 cccdaf87d5a3..fa26bd94f87b 100644 --- a/sw/source/core/text/frmpaint.cxx +++ b/sw/source/core/text/frmpaint.cxx @@ -562,8 +562,9 @@ 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 b66bf33aa936..339becbc8197 100644 --- a/sw/source/core/text/inftxt.cxx +++ b/sw/source/core/text/inftxt.cxx @@ -891,6 +891,16 @@ 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 { @@ -951,7 +961,11 @@ 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; - lcl_DrawSpecial( *this, rPor, aRect, Color(0x6a, 0xbe, 0xd3), cChar, nOptions ); + #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 } } @@ -971,7 +985,11 @@ 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 e34f0f8915d7..e9d8598f6f95 100644 --- a/sw/source/core/text/porrst.cxx +++ b/sw/source/core/text/porrst.cxx @@ -61,7 +61,12 @@ 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 a4584df57668..5452107461a4 100644 --- a/sw/source/core/txtnode/fntcache.cxx +++ b/sw/source/core/txtnode/fntcache.cxx @@ -1353,7 +1353,11 @@ 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; @@ -1479,9 +1483,26 @@ 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 @@ -1501,6 +1522,8 @@ void SwFntObj::DrawText( SwDrawTextInfo &rInf ) { aBulletOverlay = aBulletOverlay.replaceAt(i, 1, OUString(CH_BLANK)); } + } + #endif } sal_Int32 nCnt = rInf.GetText().getLength(); @@ -1724,6 +1747,7 @@ 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(); @@ -1747,6 +1771,7 @@ void SwFntObj::DrawText( SwDrawTextInfo &rInf ) pTmpFont->SetStrikeout(aPreviousStrikeout); rInf.GetOut().Pop(); } + #endif } } delete[] pScrArray; |