From 30bd841e2d8f47e49711d928d600573339708b03 Mon Sep 17 00:00:00 2001 From: Noel Grandin Date: Fri, 27 Aug 2021 20:50:59 +0200 Subject: avoid unnecessary OString to OUString conversion speeds up loading some writer files Change-Id: Ia6dddf3a9e8990b8cd3f600c86c758573c7ea2ec Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121183 Tested-by: Jenkins Reviewed-by: Noel Grandin --- filter/source/msfilter/util.cxx | 47 +++++++++++++++++++++++++++++------------ 1 file changed, 33 insertions(+), 14 deletions(-) (limited to 'filter') diff --git a/filter/source/msfilter/util.cxx b/filter/source/msfilter/util.cxx index 148f165d3fb1..23b4de1e87be 100644 --- a/filter/source/msfilter/util.cxx +++ b/filter/source/msfilter/util.cxx @@ -125,23 +125,42 @@ sal_Unicode bestFitOpenSymbolToMSFont(sal_Unicode cChar, OString ConvertColor( const Color &rColor ) { - OString color( "auto" ); + static constexpr OStringLiteral AUTO( "auto" ); - if ( rColor != COL_AUTO ) - { - const char pHexDigits[] = "0123456789ABCDEF"; - char pBuffer[] = "000000"; + if ( rColor == COL_AUTO ) + return AUTO; - pBuffer[0] = pHexDigits[ ( rColor.GetRed() >> 4 ) & 0x0F ]; - pBuffer[1] = pHexDigits[ rColor.GetRed() & 0x0F ]; - pBuffer[2] = pHexDigits[ ( rColor.GetGreen() >> 4 ) & 0x0F ]; - pBuffer[3] = pHexDigits[ rColor.GetGreen() & 0x0F ]; - pBuffer[4] = pHexDigits[ ( rColor.GetBlue() >> 4 ) & 0x0F ]; - pBuffer[5] = pHexDigits[ rColor.GetBlue() & 0x0F ]; + const char pHexDigits[] = "0123456789ABCDEF"; + char pBuffer[] = "000000"; - color = OString( pBuffer ); - } - return color; + pBuffer[0] = pHexDigits[ ( rColor.GetRed() >> 4 ) & 0x0F ]; + pBuffer[1] = pHexDigits[ rColor.GetRed() & 0x0F ]; + pBuffer[2] = pHexDigits[ ( rColor.GetGreen() >> 4 ) & 0x0F ]; + pBuffer[3] = pHexDigits[ rColor.GetGreen() & 0x0F ]; + pBuffer[4] = pHexDigits[ ( rColor.GetBlue() >> 4 ) & 0x0F ]; + pBuffer[5] = pHexDigits[ rColor.GetBlue() & 0x0F ]; + + return OString( pBuffer ); +} + +OUString ConvertColorOU( const Color &rColor ) +{ + static constexpr OUStringLiteral AUTO( u"auto" ); + + if ( rColor == COL_AUTO ) + return AUTO; + + const char pHexDigits[] = "0123456789ABCDEF"; + sal_Unicode pBuffer[] = u"000000"; + + pBuffer[0] = pHexDigits[ ( rColor.GetRed() >> 4 ) & 0x0F ]; + pBuffer[1] = pHexDigits[ rColor.GetRed() & 0x0F ]; + pBuffer[2] = pHexDigits[ ( rColor.GetGreen() >> 4 ) & 0x0F ]; + pBuffer[3] = pHexDigits[ rColor.GetGreen() & 0x0F ]; + pBuffer[4] = pHexDigits[ ( rColor.GetBlue() >> 4 ) & 0x0F ]; + pBuffer[5] = pHexDigits[ rColor.GetBlue() & 0x0F ]; + + return OUString( pBuffer ); } #define IN2MM100( v ) static_cast< sal_Int32 >( (v) * 2540.0 + 0.5 ) -- cgit