[Libreoffice-commits] core.git: vcl/source
Michael Stahl
mstahl at redhat.com
Thu Apr 16 13:39:40 PDT 2015
vcl/source/outdev/text.cxx | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
New commits:
commit c6ec3e4cee8c7c22380780f2661ac23946cdb050
Author: Michael Stahl <mstahl at 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)
Change-Id: I9310dda1847222215bafe372e3efef9d365e1ad9
diff --git a/vcl/source/outdev/text.cxx b/vcl/source/outdev/text.cxx
index 0bd7914..c9c9be0 100644
--- a/vcl/source/outdev/text.cxx
+++ b/vcl/source/outdev/text.cxx
@@ -2022,7 +2022,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(4, aStr.getLength() - (nIndex*4)/3);
while( nEraseChars < aStr.getLength() && _rLayout.GetTextWidth( aTmpStr.toString(), 0, aTmpStr.getLength() ) > nMaxWidth )
{
aTmpStr = OUStringBuffer(aStr);
More information about the Libreoffice-commits
mailing list