drawinglayer/source/primitive2d/textbreakuphelper.cxx | 6 +++--- drawinglayer/source/primitive2d/textdecoratedprimitive2d.cxx | 6 +++--- include/drawinglayer/primitive2d/textbreakuphelper.hxx | 2 +- svgio/source/svgreader/svgcharacternode.cxx | 7 +++---- svgio/source/svgreader/svgtextpathnode.cxx | 8 ++++---- 5 files changed, 14 insertions(+), 15 deletions(-)
New commits: commit d286a820fac4dbac993e13afda52dde79b310af4 Author: Noel Grandin <noelgran...@gmail.com> AuthorDate: Sun May 29 12:24:23 2022 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Sun May 29 19:15:03 2022 +0200 we can std::move the data out of TextBreakupHelper and save some copying Change-Id: I34cbc2edfd53fcc440d1765dba471fcbb05b2b7b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135088 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/drawinglayer/source/primitive2d/textbreakuphelper.cxx b/drawinglayer/source/primitive2d/textbreakuphelper.cxx index 9c4424b8d01e..5ca10ce633b6 100644 --- a/drawinglayer/source/primitive2d/textbreakuphelper.cxx +++ b/drawinglayer/source/primitive2d/textbreakuphelper.cxx @@ -261,14 +261,14 @@ namespace drawinglayer::primitive2d mxResult = aTempResult; } - const Primitive2DContainer& TextBreakupHelper::getResult(BreakupUnit aBreakupUnit) const + Primitive2DContainer TextBreakupHelper::extractResult(BreakupUnit aBreakupUnit) { if(mxResult.empty()) { - const_cast< TextBreakupHelper* >(this)->breakup(aBreakupUnit); + breakup(aBreakupUnit); } - return mxResult; + return std::move(mxResult); } } // end of namespace diff --git a/drawinglayer/source/primitive2d/textdecoratedprimitive2d.cxx b/drawinglayer/source/primitive2d/textdecoratedprimitive2d.cxx index 10cf07b4a8c0..25c5fd7b4ffa 100644 --- a/drawinglayer/source/primitive2d/textdecoratedprimitive2d.cxx +++ b/drawinglayer/source/primitive2d/textdecoratedprimitive2d.cxx @@ -155,13 +155,13 @@ namespace drawinglayer::primitive2d { // support for single word mode; split to single word primitives // using TextBreakupHelper - const TextBreakupHelper aTextBreakupHelper(*this); - const Primitive2DContainer& aBroken(aTextBreakupHelper.getResult(BreakupUnit::Word)); + TextBreakupHelper aTextBreakupHelper(*this); + Primitive2DContainer aBroken(aTextBreakupHelper.extractResult(BreakupUnit::Word)); if(!aBroken.empty()) { // was indeed split to several words, use as result - rContainer.insert(rContainer.end(), aBroken.begin(), aBroken.end()); + rContainer.append(std::move(aBroken)); return; } else diff --git a/include/drawinglayer/primitive2d/textbreakuphelper.hxx b/include/drawinglayer/primitive2d/textbreakuphelper.hxx index c007bb6afa1c..d7dbeabb3cd0 100644 --- a/include/drawinglayer/primitive2d/textbreakuphelper.hxx +++ b/include/drawinglayer/primitive2d/textbreakuphelper.hxx @@ -66,7 +66,7 @@ namespace drawinglayer::primitive2d virtual ~TextBreakupHelper(); /// get result - const Primitive2DContainer& getResult(BreakupUnit aBreakupUnit = BreakupUnit::Character) const; + Primitive2DContainer extractResult(BreakupUnit aBreakupUnit = BreakupUnit::Character); }; } // end of namespace drawinglayer::primitive2d diff --git a/svgio/source/svgreader/svgcharacternode.cxx b/svgio/source/svgreader/svgcharacternode.cxx index 0aba14c0bbd7..bdd0c4f3471b 100644 --- a/svgio/source/svgreader/svgcharacternode.cxx +++ b/svgio/source/svgreader/svgcharacternode.cxx @@ -515,13 +515,12 @@ namespace svgio::svgreader if(pCandidate) { - const localTextBreakupHelper alocalTextBreakupHelper(*pCandidate, rSvgTextPosition); - const Primitive2DContainer& aResult( - alocalTextBreakupHelper.getResult()); + localTextBreakupHelper alocalTextBreakupHelper(*pCandidate, rSvgTextPosition); + Primitive2DContainer aResult = alocalTextBreakupHelper.extractResult(); if(!aResult.empty()) { - rTarget.append(aResult); + rTarget.append(std::move(aResult)); } // also consume for the implied single space diff --git a/svgio/source/svgreader/svgtextpathnode.cxx b/svgio/source/svgreader/svgtextpathnode.cxx index 9b177383677f..129b2c280b88 100644 --- a/svgio/source/svgreader/svgtextpathnode.cxx +++ b/svgio/source/svgreader/svgtextpathnode.cxx @@ -412,19 +412,19 @@ namespace svgio::svgreader if(pCandidate) { - const pathTextBreakupHelper aPathTextBreakupHelper( + pathTextBreakupHelper aPathTextBreakupHelper( *pCandidate, aPolygon, fBasegfxPathLength, fPosition, rTextStart); - const drawinglayer::primitive2d::Primitive2DContainer& aResult( - aPathTextBreakupHelper.getResult()); + drawinglayer::primitive2d::Primitive2DContainer aResult = + aPathTextBreakupHelper.extractResult(); if(!aResult.empty()) { - rTarget.append(aResult); + rTarget.append(std::move(aResult)); } // advance position to consumed