summaryrefslogtreecommitdiff
path: root/svx/source
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2023-01-30 10:11:09 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2023-01-30 10:00:33 +0000
commite2c811e6f9c0b2de47153a70a783f4d808eab3ab (patch)
tree9b20060ddb0ed012986e76ee38abaaefaf65b595 /svx/source
parentdb88842170a041267b55dda64f8280a1394202b8 (diff)
tdf#150534 reduce allocation in SdrFrameBorderPrimitive2D
Change-Id: Ib55ce7882e87823cca95e00cb5ae990213d1e766 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146339 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'svx/source')
-rw-r--r--svx/source/dialog/framelinkarray.cxx25
-rw-r--r--svx/source/sdr/primitive2d/sdrframeborderprimitive2d.cxx14
2 files changed, 18 insertions, 21 deletions
diff --git a/svx/source/dialog/framelinkarray.cxx b/svx/source/dialog/framelinkarray.cxx
index a14279f329f1..322e2225d5e6 100644
--- a/svx/source/dialog/framelinkarray.cxx
+++ b/svx/source/dialog/framelinkarray.cxx
@@ -1275,8 +1275,7 @@ drawinglayer::primitive2d::Primitive2DContainer Array::CreateB2DPrimitiveRange(
const sal_Int32 nEndCol(nLastCol < GetColCount() - 1 ? nLastCol + 1 : nLastCol);
// prepare SdrFrameBorderDataVector
- std::shared_ptr<drawinglayer::primitive2d::SdrFrameBorderDataVector> aData(
- std::make_shared<drawinglayer::primitive2d::SdrFrameBorderDataVector>());
+ drawinglayer::primitive2d::SdrFrameBorderDataVector aData;
// remember for which merged cells crossed lines were already created. To
// do so, hold the sal_Int32 cell index in a set for fast check
@@ -1328,7 +1327,7 @@ drawinglayer::primitive2d::Primitive2DContainer Array::CreateB2DPrimitiveRange(
if(rTop.IsUsed())
{
- HelperCreateHorizontalEntry(*this, rTop, nCol, nRow, aOrigin, aX, aY, *aData, true, pForceColor);
+ HelperCreateHorizontalEntry(*this, rTop, nCol, nRow, aOrigin, aX, aY, aData, true, pForceColor);
}
}
@@ -1340,7 +1339,7 @@ drawinglayer::primitive2d::Primitive2DContainer Array::CreateB2DPrimitiveRange(
if(rBottom.IsUsed())
{
- HelperCreateHorizontalEntry(*this, rBottom, nCol, nRow + 1, aOrigin, aX, aY, *aData, false, pForceColor);
+ HelperCreateHorizontalEntry(*this, rBottom, nCol, nRow + 1, aOrigin, aX, aY, aData, false, pForceColor);
}
}
@@ -1353,7 +1352,7 @@ drawinglayer::primitive2d::Primitive2DContainer Array::CreateB2DPrimitiveRange(
if(rLeft.IsUsed())
{
- HelperCreateVerticalEntry(*this, rLeft, nCol, nRow, aOrigin, aX, aY, *aData, true, pForceColor);
+ HelperCreateVerticalEntry(*this, rLeft, nCol, nRow, aOrigin, aX, aY, aData, true, pForceColor);
}
}
@@ -1365,7 +1364,7 @@ drawinglayer::primitive2d::Primitive2DContainer Array::CreateB2DPrimitiveRange(
if(rRight.IsUsed())
{
- HelperCreateVerticalEntry(*this, rRight, nCol + 1, nRow, aOrigin, aX, aY, *aData, false, pForceColor);
+ HelperCreateVerticalEntry(*this, rRight, nCol + 1, nRow, aOrigin, aX, aY, aData, false, pForceColor);
}
}
@@ -1441,12 +1440,12 @@ drawinglayer::primitive2d::Primitive2DContainer Array::CreateB2DPrimitiveRange(
}
// create top-left to bottom-right geometry
- HelperCreateTLBREntry(*this, rTLBR, *aData, aOrigin, aX, aY,
+ HelperCreateTLBREntry(*this, rTLBR, aData, aOrigin, aX, aY,
nColLeft, nRowTop, nColRight, nRowBottom, pForceColor,
bNeedToClip ? &aClipRange : nullptr);
// create bottom-left to top-right geometry
- HelperCreateBLTREntry(*this, rBLTR, *aData, aOrigin, aX, aY,
+ HelperCreateBLTREntry(*this, rBLTR, aData, aOrigin, aX, aY,
nColLeft, nRowTop, nColRight, nRowBottom, pForceColor,
bNeedToClip ? &aClipRange : nullptr);
}
@@ -1465,10 +1464,10 @@ drawinglayer::primitive2d::Primitive2DContainer Array::CreateB2DPrimitiveRange(
if(rTLBR.IsUsed() || rBLTR.IsUsed())
{
- HelperCreateTLBREntry(*this, rTLBR, *aData, aOrigin, aX, aY,
+ HelperCreateTLBREntry(*this, rTLBR, aData, aOrigin, aX, aY,
nCol, nRow, nCol, nRow, pForceColor, nullptr);
- HelperCreateBLTREntry(*this, rBLTR, *aData, aOrigin, aX, aY,
+ HelperCreateBLTREntry(*this, rBLTR, aData, aOrigin, aX, aY,
nCol, nRow, nCol, nRow, pForceColor, nullptr);
}
}
@@ -1485,7 +1484,7 @@ drawinglayer::primitive2d::Primitive2DContainer Array::CreateB2DPrimitiveRange(
if (rLeft.IsUsed())
{
- HelperCreateVerticalEntry(*this, rLeft, nCol, nRow, aOrigin, aX, aY, *aData, true, pForceColor);
+ HelperCreateVerticalEntry(*this, rLeft, nCol, nRow, aOrigin, aX, aY, aData, true, pForceColor);
}
}
}
@@ -1500,12 +1499,12 @@ drawinglayer::primitive2d::Primitive2DContainer Array::CreateB2DPrimitiveRange(
// SdrFrameBorderDataVector is used
drawinglayer::primitive2d::Primitive2DContainer aSequence;
- if(!aData->empty())
+ if(!aData.empty())
{
aSequence.append(
drawinglayer::primitive2d::Primitive2DReference(
new drawinglayer::primitive2d::SdrFrameBorderPrimitive2D(
- aData,
+ std::move(aData),
true))); // force visualization to minimal one discrete unit (pixel)
}
diff --git a/svx/source/sdr/primitive2d/sdrframeborderprimitive2d.cxx b/svx/source/sdr/primitive2d/sdrframeborderprimitive2d.cxx
index b2f010395fbd..e2f2fa772dd8 100644
--- a/svx/source/sdr/primitive2d/sdrframeborderprimitive2d.cxx
+++ b/svx/source/sdr/primitive2d/sdrframeborderprimitive2d.cxx
@@ -767,7 +767,7 @@ namespace drawinglayer::primitive2d
Primitive2DContainer& rContainer,
const geometry::ViewInformation2D& /*aViewInformation*/) const
{
- if(!getFrameBorders())
+ if(getFrameBorders().empty())
{
return;
}
@@ -783,7 +783,7 @@ namespace drawinglayer::primitive2d
{
// decompose all buffered SdrFrameBorderData entries and try to merge them
// to reduce existing number of BorderLinePrimitive2D(s)
- for(const auto& rCandidate : *getFrameBorders())
+ for(const auto& rCandidate : getFrameBorders())
{
// get decomposition on one SdrFrameBorderData entry
Primitive2DContainer aPartial;
@@ -847,17 +847,17 @@ namespace drawinglayer::primitive2d
}
SdrFrameBorderPrimitive2D::SdrFrameBorderPrimitive2D(
- std::shared_ptr<SdrFrameBorderDataVector>& rFrameBorders,
+ SdrFrameBorderDataVector&& rFrameBorders,
bool bForceToSingleDiscreteUnit)
: maFrameBorders(std::move(rFrameBorders)),
mfMinimalNonZeroBorderWidth(0.0),
mfMinimalNonZeroBorderWidthUsedForDecompose(0.0),
mbForceToSingleDiscreteUnit(bForceToSingleDiscreteUnit)
{
- if(getFrameBorders() && doForceToSingleDiscreteUnit())
+ if(!getFrameBorders().empty() && doForceToSingleDiscreteUnit())
{
// detect used minimal non-zero partial border width
- for(const auto& rCandidate : *getFrameBorders())
+ for(const auto& rCandidate : getFrameBorders())
{
mfMinimalNonZeroBorderWidth = getMinimalNonZeroValue(
mfMinimalNonZeroBorderWidth,
@@ -872,9 +872,7 @@ namespace drawinglayer::primitive2d
{
const SdrFrameBorderPrimitive2D& rCompare = static_cast<const SdrFrameBorderPrimitive2D&>(rPrimitive);
- return (getFrameBorders() == rCompare.getFrameBorders()
- || (getFrameBorders() && rCompare.getFrameBorders()
- && *getFrameBorders() == *rCompare.getFrameBorders()))
+ return getFrameBorders() == rCompare.getFrameBorders()
&& doForceToSingleDiscreteUnit() == rCompare.doForceToSingleDiscreteUnit();
}