diff options
author | Noel Grandin <noelgrandin@gmail.com> | 2022-05-29 08:37:27 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2022-05-29 11:22:16 +0200 |
commit | 8ec7b04808b8aca32e2c38b8042af9b3c9bbe071 (patch) | |
tree | c1b09bdc8ac81331f64bc0eda14d575b16a44348 /drawinglayer | |
parent | c7e190f62c93a31f67b8cf8d7fa539cd0c155d5b (diff) |
simplify and improve maybeInvert
(*) we can move the data rather than copying
(*) it should definitely not be const
(*) we can use STL functions to do most of the work
Change-Id: I02b4cbbdeed0588d592f24942d31608f2119561c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135083
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'drawinglayer')
-rw-r--r-- | drawinglayer/source/primitive2d/Primitive2DContainer.cxx | 21 | ||||
-rw-r--r-- | drawinglayer/source/primitive2d/svggradientprimitive2d.cxx | 10 |
2 files changed, 9 insertions, 22 deletions
diff --git a/drawinglayer/source/primitive2d/Primitive2DContainer.cxx b/drawinglayer/source/primitive2d/Primitive2DContainer.cxx index 85ab03951996..48b0c625e1ba 100644 --- a/drawinglayer/source/primitive2d/Primitive2DContainer.cxx +++ b/drawinglayer/source/primitive2d/Primitive2DContainer.cxx @@ -54,24 +54,11 @@ Primitive2DContainer::toSequence() const return aVal; } -Primitive2DContainer Primitive2DContainer::maybeInvert(bool bInvert) const +Primitive2DContainer Primitive2DContainer::maybeInvert(bool bInvert) { - const sal_uInt32 nSize(size()); - Primitive2DContainer aRetval; - - aRetval.resize(nSize); - - for (sal_uInt32 a(0); a < nSize; a++) - { - aRetval[bInvert ? nSize - 1 - a : a] = (*this)[a]; - } - - // all entries taken over to Uno References as owners. To avoid - // errors with users of this mechanism to delete pointers to BasePrimitive2D - // itself, clear given vector - const_cast<Primitive2DContainer&>(*this).clear(); - - return aRetval; + if (bInvert) + std::reverse(begin(), end()); + return std::move(*this); } // get B2DRange from a given Primitive2DSequence diff --git a/drawinglayer/source/primitive2d/svggradientprimitive2d.cxx b/drawinglayer/source/primitive2d/svggradientprimitive2d.cxx index 5295cbedc37d..263ee8f4d387 100644 --- a/drawinglayer/source/primitive2d/svggradientprimitive2d.cxx +++ b/drawinglayer/source/primitive2d/svggradientprimitive2d.cxx @@ -306,13 +306,13 @@ namespace drawinglayer::primitive2d void SvgGradientHelper::createResult( Primitive2DContainer& rContainer, - const Primitive2DContainer& rTargetColor, - const Primitive2DContainer& rTargetOpacity, + Primitive2DContainer aTargetColor, + Primitive2DContainer aTargetOpacity, const basegfx::B2DHomMatrix& rUnitGradientToObject, bool bInvert) const { - Primitive2DContainer aTargetColorEntries(rTargetColor.maybeInvert(bInvert)); - Primitive2DContainer aTargetOpacityEntries(rTargetOpacity.maybeInvert(bInvert)); + Primitive2DContainer aTargetColorEntries(aTargetColor.maybeInvert(bInvert)); + Primitive2DContainer aTargetOpacityEntries(aTargetOpacity.maybeInvert(bInvert)); if(aTargetColorEntries.empty()) return; @@ -781,7 +781,7 @@ namespace drawinglayer::primitive2d fMax); } - createResult(rContainer, aTargetColor, aTargetOpacity, aUnitGradientToObject, true); + createResult(rContainer, std::move(aTargetColor), std::move(aTargetOpacity), aUnitGradientToObject, true); } } |