include/svx/svdoedge.hxx | 6 ++++-- include/svx/svdorect.hxx | 6 +++--- svx/source/svdraw/svdocirc.cxx | 4 ++-- svx/source/svdraw/svdoedge.cxx | 6 +++--- svx/source/svdraw/svdorect.cxx | 7 ++----- 5 files changed, 14 insertions(+), 15 deletions(-)
New commits: commit feb59fca82df3762c4eb3b9ac2c96e9fa387bed1 Author: Noel Grandin <noelgran...@gmail.com> AuthorDate: Sat Aug 21 19:33:43 2021 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Sun Aug 22 10:31:42 2021 +0200 no need to use unique_ptr for XPolygon it is already a COW type Change-Id: I94370d20fbe9d7f6b1bd57f339911a75cbef6484 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/120824 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/include/svx/svdoedge.hxx b/include/svx/svdoedge.hxx index 838595e70273..ee0e64b08281 100644 --- a/include/svx/svdoedge.hxx +++ b/include/svx/svdoedge.hxx @@ -20,9 +20,11 @@ #pragma once #include <memory> +#include <optional> #include <svx/svdotext.hxx> #include <svx/svdglue.hxx> #include <svx/svxdllapi.h> +#include <svx/xpoly.hxx> class SdrDragMethod; @@ -112,7 +114,7 @@ class SdrEdgeObjGeoData final : public SdrTextObjGeoData public: SdrObjConnection aCon1; // connection status of the beginning of the line SdrObjConnection aCon2; // connection status of the end of the line - std::unique_ptr<XPolygon> pEdgeTrack; + std::optional<XPolygon> pEdgeTrack; bool bEdgeTrackDirty; // true -> connector track needs to be recalculated bool bEdgeTrackUserDefined; SdrEdgeInfoRec aEdgeInfo; @@ -139,7 +141,7 @@ private: SdrObjConnection aCon1; // Connection status of the beginning of the line SdrObjConnection aCon2; // Connection status of the end of the line - std::unique_ptr<XPolygon> pEdgeTrack; + std::optional<XPolygon> pEdgeTrack; sal_uInt16 nNotifyingCount; // Locking SdrEdgeInfoRec aEdgeInfo; diff --git a/include/svx/svdorect.hxx b/include/svx/svdorect.hxx index 4e52c6289faa..ac7879cb5212 100644 --- a/include/svx/svdorect.hxx +++ b/include/svx/svdorect.hxx @@ -20,13 +20,13 @@ #pragma once #include <memory> +#include <optional> #include <svx/svdotext.hxx> +#include <svx/xpoly.hxx> #include <svx/svxdllapi.h> // Forward declaration -class XPolygon; - namespace sdr::properties { class RectangleProperties; } @@ -46,7 +46,7 @@ protected: virtual std::unique_ptr<sdr::contact::ViewContact> CreateObjectSpecificViewContact() override; virtual std::unique_ptr<sdr::properties::BaseProperties> CreateObjectSpecificProperties() override; - std::unique_ptr<XPolygon> mpXPoly; + std::optional<XPolygon> mpXPoly; protected: XPolygon ImpCalcXPoly(const tools::Rectangle& rRect1, tools::Long nRad1) const; diff --git a/svx/source/svdraw/svdocirc.cxx b/svx/source/svdraw/svdocirc.cxx index 10c56a53db0f..9dc3a1d2d812 100644 --- a/svx/source/svdraw/svdocirc.cxx +++ b/svx/source/svdraw/svdocirc.cxx @@ -313,8 +313,8 @@ basegfx::B2DPolygon SdrCircObj::ImpCalcXPolyCirc(const SdrCircKind eCircleKind, void SdrCircObj::RecalcXPoly() { - const basegfx::B2DPolygon aPolyCirc(ImpCalcXPolyCirc(meCircleKind, maRect, nStartAngle, nEndAngle)); - mpXPoly.reset( new XPolygon(aPolyCirc) ); + basegfx::B2DPolygon aPolyCirc(ImpCalcXPolyCirc(meCircleKind, maRect, nStartAngle, nEndAngle)); + mpXPoly = XPolygon(aPolyCirc); } OUString SdrCircObj::TakeObjNameSingul() const diff --git a/svx/source/svdraw/svdoedge.cxx b/svx/source/svdraw/svdoedge.cxx index 6af9b933c2e5..c48d954c9ace 100644 --- a/svx/source/svdraw/svdoedge.cxx +++ b/svx/source/svdraw/svdoedge.cxx @@ -166,7 +166,7 @@ SdrEdgeObj::SdrEdgeObj(SdrModel& rSdrModel) { m_bClosedObj=false; m_bIsEdge=true; - pEdgeTrack.reset(new XPolygon); + pEdgeTrack = XPolygon(); } SdrEdgeObj::SdrEdgeObj(SdrModel& rSdrModel, SdrEdgeObj const & rSource) @@ -181,7 +181,7 @@ SdrEdgeObj::SdrEdgeObj(SdrModel& rSdrModel, SdrEdgeObj const & rSource) { m_bClosedObj = false; m_bIsEdge = true; - pEdgeTrack.reset(new XPolygon(*rSource.pEdgeTrack)); + pEdgeTrack = rSource.pEdgeTrack; bEdgeTrackDirty=rSource.bEdgeTrackDirty; aCon1 =rSource.aCon1; aCon2 =rSource.aCon2; @@ -2469,7 +2469,7 @@ void SdrEdgeObj::NbcSetPoint(const Point& rPnt, sal_uInt32 i) } SdrEdgeObjGeoData::SdrEdgeObjGeoData() - : pEdgeTrack(new XPolygon) + : pEdgeTrack(std::in_place) , bEdgeTrackDirty(false) , bEdgeTrackUserDefined(false) { diff --git a/svx/source/svdraw/svdorect.cxx b/svx/source/svdraw/svdorect.cxx index cd91f6f06c31..bd3c53bac1ad 100644 --- a/svx/source/svdraw/svdorect.cxx +++ b/svx/source/svdraw/svdorect.cxx @@ -61,10 +61,7 @@ SdrRectObj::SdrRectObj(SdrModel& rSdrModel, SdrRectObj const & rSource) : SdrTextObj(rSdrModel, rSource) { m_bClosedObj=true; - if ( rSource.mpXPoly ) - mpXPoly.reset( new XPolygon( *rSource.mpXPoly ) ); - else - mpXPoly.reset(); + mpXPoly = rSource.mpXPoly; } SdrRectObj::SdrRectObj( @@ -133,7 +130,7 @@ XPolygon SdrRectObj::ImpCalcXPoly(const tools::Rectangle& rRect1, tools::Long nR void SdrRectObj::RecalcXPoly() { - mpXPoly.reset( new XPolygon(ImpCalcXPoly(maRect,GetEckenradius())) ); + mpXPoly = ImpCalcXPoly(maRect,GetEckenradius()); } const XPolygon& SdrRectObj::GetXPoly() const