include/vcl/font.hxx | 1 + vcl/inc/impfont.hxx | 1 + vcl/source/font/font.cxx | 21 +++++++++++++++++---- vcl/source/gdi/impglyphitem.cxx | 7 +++++-- 4 files changed, 24 insertions(+), 6 deletions(-)
New commits: commit 33fe4909e29654faeef7f665f31ff31776ecfeec Author: Luboš Luňák <[email protected]> AuthorDate: Fri Apr 8 20:53:07 2022 +0200 Commit: Luboš Luňák <[email protected]> CommitDate: Sat Apr 9 16:11:35 2022 +0200 add vcl::Font::EqualIgnoreColor() The color values in vcl::Font are obsolete, and the underlying font is the same regardless of the color. Change-Id: I66801a07092bc189f43bf2b28bc54ead6d20f70e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132747 Tested-by: Jenkins Reviewed-by: Luboš Luňák <[email protected]> diff --git a/include/vcl/font.hxx b/include/vcl/font.hxx index ddc98c0223b9..0f641100eecb 100644 --- a/include/vcl/font.hxx +++ b/include/vcl/font.hxx @@ -159,6 +159,7 @@ public: bool operator!=( const Font& rFont ) const { return !(Font::operator==( rFont )); } bool IsSameInstance( const Font& ) const; + bool EqualIgnoreColor( const Font& ) const; friend VCL_DLLPUBLIC SvStream& ::ReadFont( SvStream& rIStm, vcl::Font& ); friend VCL_DLLPUBLIC SvStream& ::WriteFont( SvStream& rOStm, const vcl::Font& ); diff --git a/vcl/inc/impfont.hxx b/vcl/inc/impfont.hxx index dc90f6d48bd5..2c8ce660ea91 100644 --- a/vcl/inc/impfont.hxx +++ b/vcl/inc/impfont.hxx @@ -92,6 +92,7 @@ public: void SetCalculatedAverageFontWidth(tools::Long nNew) { mnCalculatedAverageFontWidth = nNew; } bool operator==( const ImplFont& ) const; + bool EqualIgnoreColor( const ImplFont& ) const; private: friend class vcl::Font; diff --git a/vcl/source/font/font.cxx b/vcl/source/font/font.cxx index 16678dd61ac7..3387dd196f1f 100644 --- a/vcl/source/font/font.cxx +++ b/vcl/source/font/font.cxx @@ -327,6 +327,11 @@ bool Font::operator==( const vcl::Font& rFont ) const return mpImplFont == rFont.mpImplFont; } +bool Font::EqualIgnoreColor( const vcl::Font& rFont ) const +{ + return mpImplFont->EqualIgnoreColor( *rFont.mpImplFont ); +} + void Font::Merge( const vcl::Font& rFont ) { if ( !rFont.GetFamilyName().isEmpty() ) @@ -960,6 +965,18 @@ ImplFont::ImplFont( const ImplFont& rImplFont ) : {} bool ImplFont::operator==( const ImplFont& rOther ) const +{ + if(!EqualIgnoreColor( rOther )) + return false; + + if( (maColor != rOther.maColor) + || (maFillColor != rOther.maFillColor) ) + return false; + + return true; +} + +bool ImplFont::EqualIgnoreColor( const ImplFont& rOther ) const { // equality tests split up for easier debugging if( (meWeight != rOther.meWeight) @@ -983,10 +1000,6 @@ bool ImplFont::operator==( const ImplFont& rOther ) const || (maStyleName != rOther.maStyleName) ) return false; - if( (maColor != rOther.maColor) - || (maFillColor != rOther.maFillColor) ) - return false; - if( (meUnderline != rOther.meUnderline) || (meOverline != rOther.meOverline) || (meStrikeout != rOther.meStrikeout) diff --git a/vcl/source/gdi/impglyphitem.cxx b/vcl/source/gdi/impglyphitem.cxx index e78d23b68676..130039ed88ee 100644 --- a/vcl/source/gdi/impglyphitem.cxx +++ b/vcl/source/gdi/impglyphitem.cxx @@ -188,8 +188,11 @@ inline bool SalLayoutGlyphsCache::CachedGlyphsKey::operator==(const CachedGlyphs && logicWidth == other.logicWidth && outputDevice == other.outputDevice && rtl == other.rtl && layoutMode == other.layoutMode && digitLanguage == other.digitLanguage - // slower things here - && font == other.font && vcl::text::FastStringCompareEqual()(text, other.text); + // Need to use EqualIgnoreColor, because sometimes the color changes, but it's irrelevant + // for text layout (and also obsolete in vcl::Font). + && font.EqualIgnoreColor(other.font) + && vcl::text::FastStringCompareEqual()(text, other.text); + // Slower things last in the comparison. } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
