basegfx/source/polygon/b2dpolypolygon.cxx      |   11 +++++++++++
 basegfx/source/polygon/b2dpolypolygontools.cxx |    1 +
 include/basegfx/polygon/b2dpolypolygon.hxx     |    1 +
 3 files changed, 13 insertions(+)

New commits:
commit f1e15482bcf6bf65dc611e19cbd2ffff479ef141
Author:     Noel Grandin <noel.gran...@collabora.co.uk>
AuthorDate: Fri Jul 1 14:03:22 2022 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Mon Jul 4 21:04:30 2022 +0200

    tdf#137544 reserve space in polypolygon
    
    Change-Id: Ic8dc5b7479c1353487bac883fc0e704356e90798
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136802
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/basegfx/source/polygon/b2dpolypolygon.cxx 
b/basegfx/source/polygon/b2dpolypolygon.cxx
index 4a81a82c4c71..a283828f661c 100644
--- a/basegfx/source/polygon/b2dpolypolygon.cxx
+++ b/basegfx/source/polygon/b2dpolypolygon.cxx
@@ -108,6 +108,11 @@ public:
         }
     }
 
+    void reserve(sal_uInt32 nCount)
+    {
+        maPolygons.reserve(nCount);
+    }
+
     void insert(sal_uInt32 nIndex, const basegfx::B2DPolyPolygon& rPolyPolygon)
     {
         // add nCount polygons from rPolyPolygon
@@ -288,6 +293,12 @@ public:
             mpPolyPolygon->insert(std::as_const(mpPolyPolygon)->count(), 
rPolygon, nCount);
     }
 
+    void B2DPolyPolygon::reserve(sal_uInt32 nCount)
+    {
+        if(nCount)
+            mpPolyPolygon->reserve(nCount);
+    }
+
     B2DPolyPolygon B2DPolyPolygon::getDefaultAdaptiveSubdivision() const
     {
         B2DPolyPolygon aRetval;
diff --git a/basegfx/source/polygon/b2dpolypolygontools.cxx 
b/basegfx/source/polygon/b2dpolypolygontools.cxx
index b49de907d45c..3f8f51c52404 100644
--- a/basegfx/source/polygon/b2dpolypolygontools.cxx
+++ b/basegfx/source/polygon/b2dpolypolygontools.cxx
@@ -553,6 +553,7 @@ namespace basegfx::utils
             const css::drawing::PointSequenceSequence& 
rPointSequenceSequenceSource)
         {
             B2DPolyPolygon aRetval;
+            aRetval.reserve(rPointSequenceSequenceSource.getLength());
             const css::drawing::PointSequence* pPointSequence = 
rPointSequenceSequenceSource.getConstArray();
             const css::drawing::PointSequence* pPointSeqEnd = pPointSequence + 
rPointSequenceSequenceSource.getLength();
 
diff --git a/include/basegfx/polygon/b2dpolypolygon.hxx 
b/include/basegfx/polygon/b2dpolypolygon.hxx
index f1420edef79a..474c0cbdb40f 100644
--- a/include/basegfx/polygon/b2dpolypolygon.hxx
+++ b/include/basegfx/polygon/b2dpolypolygon.hxx
@@ -68,6 +68,7 @@ namespace basegfx
         // insert/append single polygon
         void insert(sal_uInt32 nIndex, const B2DPolygon& rPolygon, sal_uInt32 
nCount = 1);
         void append(const B2DPolygon& rPolygon, sal_uInt32 nCount = 1);
+        void reserve(sal_uInt32 nCount);
 
         /** Default adaptive subdivision access
 

Reply via email to