vcl/source/outdev/text.cxx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
New commits: commit 84b28b7d0b5061377b368c809acdb286902b4069 Author: Michael Stahl <mst...@redhat.com> Date: Thu Apr 16 22:25:23 2015 +0200 tdf#86793: vcl: speed up OutputDevice::GetEllipsisString() The ridiculous algrorithm used for TEXT_DRAW_CENTERELLIPSIS will go faster if we cut out most of the text at the beginning instead of one at a time. (regression from 912ecaf565e68d2ca3fb9584712313e712749f75) (cherry picked from commit c6ec3e4cee8c7c22380780f2661ac23946cdb050) Change-Id: I9310dda1847222215bafe372e3efef9d365e1ad9 Reviewed-on: https://gerrit.libreoffice.org/15355 Tested-by: Miklos Vajna <vmik...@collabora.co.uk> Reviewed-by: Miklos Vajna <vmik...@collabora.co.uk> diff --git a/vcl/source/outdev/text.cxx b/vcl/source/outdev/text.cxx index 113a42e..8c066d1 100644 --- a/vcl/source/outdev/text.cxx +++ b/vcl/source/outdev/text.cxx @@ -1993,7 +1993,8 @@ OUString OutputDevice::ImplGetEllipsisString( const OutputDevice& rTargetDevice, if( (nStyle & TEXT_DRAW_CENTERELLIPSIS) == TEXT_DRAW_CENTERELLIPSIS ) { OUStringBuffer aTmpStr( aStr ); - sal_Int32 nEraseChars = 4; + // speed it up by removing all but 1.33x as many as the break pos. + sal_Int32 nEraseChars = std::max<sal_Int32>(4, aStr.getLength() - (nIndex*4)/3); while( nEraseChars < aStr.getLength() && _rLayout.GetTextWidth( aTmpStr.toString(), 0, aTmpStr.getLength() ) > nMaxWidth ) { aTmpStr = OUStringBuffer(aStr); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits