diff options
author | Noel Grandin <noel@peralex.com> | 2015-12-10 12:27:50 +0200 |
---|---|---|
committer | Noel Grandin <noel@peralex.com> | 2015-12-11 10:11:23 +0200 |
commit | 58d8d8ac67aa9b907f1304a48efa0f7a473d9de4 (patch) | |
tree | a0d88f3c8a57ce9d08d97c803ea0ec83a3dd8b62 /sw/source/uibase/docvw/AnchorOverlayObject.cxx | |
parent | 44ad6aca0dee29841ec7cd15c6d0ad9b3dcaedbe (diff) |
tdf#69977: uno::Sequence is expensive
when used as a mutable data-structure. Plain std::vector halves the time
taken to display the chart dialog
Create a class to represent the std::vector we are going to be passing
around, and move some of the utility methods into it to make the code
prettier.
Also create an optimised append(&&) method for the common case of
appending small temporaries.
Change-Id: I7f5b43fb4a8a84e40e6a52fcb7e9f974091b4485
Diffstat (limited to 'sw/source/uibase/docvw/AnchorOverlayObject.cxx')
-rw-r--r-- | sw/source/uibase/docvw/AnchorOverlayObject.cxx | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/sw/source/uibase/docvw/AnchorOverlayObject.cxx b/sw/source/uibase/docvw/AnchorOverlayObject.cxx index 67f4e3bcda9e..9adf4699f6f3 100644 --- a/sw/source/uibase/docvw/AnchorOverlayObject.cxx +++ b/sw/source/uibase/docvw/AnchorOverlayObject.cxx @@ -52,7 +52,7 @@ private: bool mbLineSolid : 1; protected: - virtual drawinglayer::primitive2d::Primitive2DSequence create2DDecomposition( + virtual drawinglayer::primitive2d::Primitive2DContainer create2DDecomposition( const drawinglayer::geometry::ViewInformation2D& rViewInformation) const override; public: @@ -90,10 +90,10 @@ public: DeclPrimitive2DIDBlock() }; -drawinglayer::primitive2d::Primitive2DSequence AnchorPrimitive::create2DDecomposition( +drawinglayer::primitive2d::Primitive2DContainer AnchorPrimitive::create2DDecomposition( const drawinglayer::geometry::ViewInformation2D& /*rViewInformation*/) const { - drawinglayer::primitive2d::Primitive2DSequence aRetval; + drawinglayer::primitive2d::Primitive2DContainer aRetval; if ( AS_TRI == maAnchorState || AS_ALL == maAnchorState || @@ -105,7 +105,7 @@ drawinglayer::primitive2d::Primitive2DSequence AnchorPrimitive::create2DDecompos basegfx::B2DPolyPolygon(getTriangle()), getColor())); - drawinglayer::primitive2d::appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, aTriangle); + aRetval.push_back(aTriangle); } // prepare view-independent LineWidth and color @@ -124,7 +124,7 @@ drawinglayer::primitive2d::Primitive2DSequence AnchorPrimitive::create2DDecompos getLine(), aLineAttribute)); - drawinglayer::primitive2d::appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, aSolidLine); + aRetval.push_back(aSolidLine); } else { @@ -145,11 +145,11 @@ drawinglayer::primitive2d::Primitive2DSequence AnchorPrimitive::create2DDecompos aLineAttribute, aStrokeAttribute)); - drawinglayer::primitive2d::appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, aStrokedLine); + aRetval.push_back(aStrokedLine); } } - if(aRetval.hasElements() && getShadow()) + if(!aRetval.empty() && getShadow()) { // shadow is only for triangle and line start, and in upper left // and lower right direction, in different colors @@ -162,7 +162,7 @@ drawinglayer::primitive2d::Primitive2DSequence AnchorPrimitive::create2DDecompos aDarkerColor.clamp(); // create shadow sequence - drawinglayer::primitive2d::Primitive2DSequence aShadows(2); + drawinglayer::primitive2d::Primitive2DContainer aShadows(2); basegfx::B2DHomMatrix aTransform; aTransform.set(0, 2, -getDiscreteUnit()); @@ -184,10 +184,10 @@ drawinglayer::primitive2d::Primitive2DSequence AnchorPrimitive::create2DDecompos aRetval)); // add shadow before geometry to make it be proccessed first - const drawinglayer::primitive2d::Primitive2DSequence aTemporary(aRetval); + const drawinglayer::primitive2d::Primitive2DContainer aTemporary(aRetval); aRetval = aShadows; - drawinglayer::primitive2d::appendPrimitive2DSequenceToPrimitive2DSequence(aRetval, aTemporary); + aRetval.append(aTemporary); } if ( AS_ALL == maAnchorState || @@ -200,7 +200,7 @@ drawinglayer::primitive2d::Primitive2DSequence AnchorPrimitive::create2DDecompos getLineTop(), aLineAttribute)); - drawinglayer::primitive2d::appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, aLineTop); + aRetval.push_back(aLineTop); } return aRetval; @@ -339,7 +339,7 @@ void AnchorOverlayObject::implResetGeometry() maLineTop.clear(); } -drawinglayer::primitive2d::Primitive2DSequence AnchorOverlayObject::createOverlayObjectPrimitive2DSequence() +drawinglayer::primitive2d::Primitive2DContainer AnchorOverlayObject::createOverlayObjectPrimitive2DSequence() { implEnsureGeometry(); @@ -354,7 +354,7 @@ drawinglayer::primitive2d::Primitive2DSequence AnchorOverlayObject::createOverla getShadowedEffect(), getLineSolid()) ); - return drawinglayer::primitive2d::Primitive2DSequence(&aReference, 1); + return drawinglayer::primitive2d::Primitive2DContainer { aReference }; } void AnchorOverlayObject::SetAllPosition( const basegfx::B2DPoint& rPoint1, |