drawinglayer/source/primitive2d/Primitive2DContainer.cxx    |   21 ++----------
 drawinglayer/source/primitive2d/svggradientprimitive2d.cxx  |   10 ++---
 include/drawinglayer/primitive2d/Primitive2DContainer.hxx   |    2 -
 include/drawinglayer/primitive2d/svggradientprimitive2d.hxx |    4 +-
 4 files changed, 12 insertions(+), 25 deletions(-)

New commits:
commit 8ec7b04808b8aca32e2c38b8042af9b3c9bbe071
Author:     Noel Grandin <noelgran...@gmail.com>
AuthorDate: Sun May 29 08:37:27 2022 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Sun May 29 11:22:16 2022 +0200

    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.gran...@collabora.co.uk>

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);
             }
         }
 
diff --git a/include/drawinglayer/primitive2d/Primitive2DContainer.hxx 
b/include/drawinglayer/primitive2d/Primitive2DContainer.hxx
index 6c1dc196ca06..2368ea45ceef 100644
--- a/include/drawinglayer/primitive2d/Primitive2DContainer.hxx
+++ b/include/drawinglayer/primitive2d/Primitive2DContainer.hxx
@@ -86,7 +86,7 @@ public:
     bool operator==(const Primitive2DContainer& rB) const;
     bool operator!=(const Primitive2DContainer& rB) const { return 
!operator==(rB); }
     basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& 
aViewInformation) const;
-    Primitive2DContainer maybeInvert(bool bInvert = false) const;
+    Primitive2DContainer maybeInvert(bool bInvert = false);
 
     css::uno::Sequence<css::uno::Reference<css::graphic::XPrimitive2D>> 
toSequence() const;
 };
diff --git a/include/drawinglayer/primitive2d/svggradientprimitive2d.hxx 
b/include/drawinglayer/primitive2d/svggradientprimitive2d.hxx
index 78667f2d06e3..66c68fdaf3bf 100644
--- a/include/drawinglayer/primitive2d/svggradientprimitive2d.hxx
+++ b/include/drawinglayer/primitive2d/svggradientprimitive2d.hxx
@@ -134,8 +134,8 @@ namespace drawinglayer::primitive2d
             virtual void checkPreconditions();
             void createResult(
                 Primitive2DContainer& rContainer,
-                const Primitive2DContainer& rTargetColor,
-                const Primitive2DContainer& rTargetOpacity,
+                Primitive2DContainer aTargetColor,
+                Primitive2DContainer aTargetOpacity,
                 const basegfx::B2DHomMatrix& rUnitGradientToObject,
                 bool bInvert = false) const;
             bool getCreatesContent() const { return mbCreatesContent; }

Reply via email to