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 /svx/source/sdr/primitive2d/sdrdecompositiontools.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 'svx/source/sdr/primitive2d/sdrdecompositiontools.cxx')
-rw-r--r-- | svx/source/sdr/primitive2d/sdrdecompositiontools.cxx | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/svx/source/sdr/primitive2d/sdrdecompositiontools.cxx b/svx/source/sdr/primitive2d/sdrdecompositiontools.cxx index 7d41b77eb2ed..5e7148814a5b 100644 --- a/svx/source/sdr/primitive2d/sdrdecompositiontools.cxx +++ b/svx/source/sdr/primitive2d/sdrdecompositiontools.cxx @@ -47,6 +47,7 @@ +class TransparencePrimitive2D; using namespace com::sun::star; @@ -118,14 +119,14 @@ namespace drawinglayer { // create simpleTransparencePrimitive, add created fill primitive const Primitive2DReference xRefA(pNewFillPrimitive); - const Primitive2DSequence aContent(&xRefA, 1L); + const Primitive2DContainer aContent { xRefA }; return Primitive2DReference(new UnifiedTransparencePrimitive2D(aContent, rFill.getTransparence())); } else if(!rFillGradient.isDefault()) { // create sequence with created fill primitive const Primitive2DReference xRefA(pNewFillPrimitive); - const Primitive2DSequence aContent(&xRefA, 1L); + const Primitive2DContainer aContent { xRefA }; // create FillGradientPrimitive2D for transparence and add to new sequence // fillGradientPrimitive is enough here (compared to PolyPolygonGradientPrimitive2D) since float transparence will be masked anyways @@ -135,7 +136,7 @@ namespace drawinglayer aRange, rDefinitionRange, rFillGradient)); - const Primitive2DSequence aAlpha(&xRefB, 1L); + const Primitive2DContainer aAlpha { xRefB }; // create TransparencePrimitive2D using alpha and content return Primitive2DReference(new TransparencePrimitive2D(aContent, aAlpha)); @@ -175,7 +176,7 @@ namespace drawinglayer { // create simpleTransparencePrimitive, add created fill primitive const Primitive2DReference xRefA(pNewLinePrimitive); - const Primitive2DSequence aContent(&xRefA, 1L); + const Primitive2DContainer aContent { xRefA }; return Primitive2DReference(new UnifiedTransparencePrimitive2D(aContent, rLine.getTransparence())); } else @@ -349,7 +350,7 @@ namespace drawinglayer { // create content sequence const Primitive2DReference xRefA(pNew); - const Primitive2DSequence aContent(&xRefA, 1L); + const Primitive2DContainer aContent { xRefA }; // create and add animated switch primitive return Primitive2DReference(new AnimatedBlinkPrimitive2D(aAnimationList, aContent, true)); @@ -433,11 +434,11 @@ namespace drawinglayer if(0.0 != aAnimationList.getDuration()) { - // create a new Primitive2DSequence containing the animated text in it's scaled only state. + // create a new Primitive2DContainer containing the animated text in it's scaled only state. // use the decomposition to force to simple text primitives, those will no longer // need the outliner for formatting (alternatively it is also possible to just add // pNew to aNewPrimitiveSequence) - Primitive2DSequence aAnimSequence(pNew->get2DDecomposition(aViewInformation2D)); + Primitive2DContainer aAnimSequence(pNew->get2DDecomposition(aViewInformation2D)); delete pNew; // create a new animatedInterpolatePrimitive and add it @@ -445,7 +446,7 @@ namespace drawinglayer aMatrixStack.push_back(aLeft); aMatrixStack.push_back(aRight); const Primitive2DReference xRefA(new AnimatedInterpolatePrimitive2D(aMatrixStack, aAnimationList, aAnimSequence, true)); - const Primitive2DSequence aContent(&xRefA, 1L); + const Primitive2DContainer aContent { xRefA }; // scrolling needs an encapsulating clipping primitive const basegfx::B2DRange aClipRange(aClipTopLeft, aClipBottomRight); @@ -467,7 +468,7 @@ namespace drawinglayer // encapsulate with TextHierarchyEditPrimitive2D to allow renderers // to suppress actively edited content if needed const Primitive2DReference xRefA(pNew); - const Primitive2DSequence aContent(&xRefA, 1L); + const Primitive2DContainer aContent { xRefA }; // create and add TextHierarchyEditPrimitive2D primitive return Primitive2DReference(new TextHierarchyEditPrimitive2D(aContent)); @@ -479,13 +480,13 @@ namespace drawinglayer } } - Primitive2DSequence createEmbeddedShadowPrimitive( - const Primitive2DSequence& rContent, + Primitive2DContainer createEmbeddedShadowPrimitive( + const Primitive2DContainer& rContent, const attribute::SdrShadowAttribute& rShadow) { - if(rContent.hasElements()) + if(!rContent.empty()) { - Primitive2DSequence aRetval(2); + Primitive2DContainer aRetval(2); basegfx::B2DHomMatrix aShadowOffset; // prepare shadow offset @@ -502,7 +503,7 @@ namespace drawinglayer if(0.0 != rShadow.getTransparence()) { // create SimpleTransparencePrimitive2D - const Primitive2DSequence aTempContent(&aRetval[0], 1); + const Primitive2DContainer aTempContent { aRetval[0] }; aRetval[0] = Primitive2DReference( new UnifiedTransparencePrimitive2D( |