diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2016-10-25 09:54:25 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2016-11-08 10:40:57 +0000 |
commit | f2beebbfe78bfd5dd26318ea269f49aeee6bd642 (patch) | |
tree | afd9820842752f252409590e323f72cdbd0a4c3c /sw | |
parent | ab731b192f40fde71c796ecab563adc8d7258da8 (diff) |
reduce copying when decomposing drawinglayer primitives
instead of returning a Primitive2DContainer from each method which we
are then going to immediately append to another container, pass down a
single container by reference which we can append to
Change-Id: I0f28a499d2ec54f7111a7044c30099767aa079e1
Reviewed-on: https://gerrit.libreoffice.org/30258
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'sw')
-rw-r--r-- | sw/source/core/draw/dflyobj.cxx | 18 | ||||
-rw-r--r-- | sw/source/uibase/docvw/AnchorOverlayObject.cxx | 18 | ||||
-rw-r--r-- | sw/source/uibase/docvw/ShadowOverlayObject.cxx | 21 |
3 files changed, 21 insertions, 36 deletions
diff --git a/sw/source/core/draw/dflyobj.cxx b/sw/source/core/draw/dflyobj.cxx index 18e24fd286d2..fd85ace26495 100644 --- a/sw/source/core/draw/dflyobj.cxx +++ b/sw/source/core/draw/dflyobj.cxx @@ -154,7 +154,7 @@ namespace drawinglayer protected: /// method which is to be used to implement the local decomposition of a 2D primitive - virtual Primitive2DContainer create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const override; + virtual void create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const override; public: SwVirtFlyDrawObjPrimitive( @@ -171,7 +171,7 @@ namespace drawinglayer virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const override; // override to allow callbacks to wrap_DoPaintObject - virtual Primitive2DContainer get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const override; + virtual void get2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const override; // data read access const SwVirtFlyDrawObj& getSwVirtFlyDrawObj() const { return mrSwVirtFlyDrawObj; } @@ -187,10 +187,8 @@ namespace drawinglayer { namespace primitive2d { - Primitive2DContainer SwVirtFlyDrawObjPrimitive::create2DDecomposition(const geometry::ViewInformation2D& /*rViewInformation*/) const + void SwVirtFlyDrawObjPrimitive::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& /*rViewInformation*/) const { - Primitive2DContainer aRetval; - if(!getOuterRange().isEmpty()) { // currently this SW object has no primitive representation. As long as this is the case, @@ -199,15 +197,11 @@ namespace drawinglayer // the old SwVirtFlyDrawObj::CheckHit implementation are handled now in SwDrawView::PickObj; // this removed the 'hack' to get a view from inside model data or to react on null-tolerance // as it was done in the old implementation - const Primitive2DReference aHitTestReference( + rContainer.push_back( createHiddenGeometryPrimitives2D( true, getOuterRange())); - - aRetval = Primitive2DContainer { aHitTestReference }; } - - return aRetval; } bool SwVirtFlyDrawObjPrimitive::operator==(const BasePrimitive2D& rPrimitive) const @@ -228,7 +222,7 @@ namespace drawinglayer return getOuterRange(); } - Primitive2DContainer SwVirtFlyDrawObjPrimitive::get2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const + void SwVirtFlyDrawObjPrimitive::get2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& rViewInformation) const { // This is the callback to keep the FlyFrame painting in SW alive as long as it // is not changed to primitives. This is the method which will be called by the processors @@ -238,7 +232,7 @@ namespace drawinglayer getSwVirtFlyDrawObj().wrap_DoPaintObject(rViewInformation); // call parent - return BufferedDecompositionPrimitive2D::get2DDecomposition(rViewInformation); + BufferedDecompositionPrimitive2D::get2DDecomposition(rContainer, rViewInformation); } // provide unique ID diff --git a/sw/source/uibase/docvw/AnchorOverlayObject.cxx b/sw/source/uibase/docvw/AnchorOverlayObject.cxx index c3a6ea8a863d..b92574c3036c 100644 --- a/sw/source/uibase/docvw/AnchorOverlayObject.cxx +++ b/sw/source/uibase/docvw/AnchorOverlayObject.cxx @@ -50,7 +50,8 @@ private: bool mbLineSolid : 1; protected: - virtual drawinglayer::primitive2d::Primitive2DContainer create2DDecomposition( + virtual void create2DDecomposition( + drawinglayer::primitive2d::Primitive2DContainer& rContainer, const drawinglayer::geometry::ViewInformation2D& rViewInformation) const override; public: @@ -81,11 +82,10 @@ public: DeclPrimitive2DIDBlock() }; -drawinglayer::primitive2d::Primitive2DContainer AnchorPrimitive::create2DDecomposition( +void AnchorPrimitive::create2DDecomposition( + drawinglayer::primitive2d::Primitive2DContainer& rContainer, const drawinglayer::geometry::ViewInformation2D& /*rViewInformation*/) const { - drawinglayer::primitive2d::Primitive2DContainer aRetval; - if ( AS_TRI == maAnchorState || AS_ALL == maAnchorState || AS_START == maAnchorState ) @@ -96,7 +96,7 @@ drawinglayer::primitive2d::Primitive2DContainer AnchorPrimitive::create2DDecompo basegfx::B2DPolyPolygon(maTriangle), getColor())); - aRetval.push_back(aTriangle); + rContainer.push_back(aTriangle); } // prepare view-independent LineWidth and color @@ -115,7 +115,7 @@ drawinglayer::primitive2d::Primitive2DContainer AnchorPrimitive::create2DDecompo getLine(), aLineAttribute)); - aRetval.push_back(aSolidLine); + rContainer.push_back(aSolidLine); } else { @@ -136,7 +136,7 @@ drawinglayer::primitive2d::Primitive2DContainer AnchorPrimitive::create2DDecompo aLineAttribute, aStrokeAttribute)); - aRetval.push_back(aStrokedLine); + rContainer.push_back(aStrokedLine); } } @@ -150,10 +150,8 @@ drawinglayer::primitive2d::Primitive2DContainer AnchorPrimitive::create2DDecompo maLineTop, aLineAttribute)); - aRetval.push_back(aLineTop); + rContainer.push_back(aLineTop); } - - return aRetval; } bool AnchorPrimitive::operator==( const drawinglayer::primitive2d::BasePrimitive2D& rPrimitive ) const diff --git a/sw/source/uibase/docvw/ShadowOverlayObject.cxx b/sw/source/uibase/docvw/ShadowOverlayObject.cxx index 7bf63c5ca7b0..526a6162aad9 100644 --- a/sw/source/uibase/docvw/ShadowOverlayObject.cxx +++ b/sw/source/uibase/docvw/ShadowOverlayObject.cxx @@ -44,7 +44,8 @@ private: ShadowState maShadowState; protected: - virtual drawinglayer::primitive2d::Primitive2DContainer create2DDecomposition( + virtual void create2DDecomposition( + drawinglayer::primitive2d::Primitive2DContainer& rContainer, const drawinglayer::geometry::ViewInformation2D& rViewInformation) const override; public: @@ -66,11 +67,11 @@ public: DeclPrimitive2DIDBlock() }; -drawinglayer::primitive2d::Primitive2DContainer ShadowPrimitive::create2DDecomposition( +void ShadowPrimitive::create2DDecomposition( + drawinglayer::primitive2d::Primitive2DContainer& rContainer, const drawinglayer::geometry::ViewInformation2D& /*rViewInformation*/) const { // get logic sizes in object coordinate system - drawinglayer::primitive2d::Primitive2DContainer xRetval; basegfx::B2DRange aRange(maBasePosition); switch(maShadowState) @@ -88,12 +89,10 @@ drawinglayer::primitive2d::Primitive2DContainer ShadowPrimitive::create2DDecompo basegfx::BColor(180.0/255.0,180.0/255.0,180.0/255.0), 2); - const drawinglayer::primitive2d::Primitive2DReference xReference( + rContainer.push_back( new drawinglayer::primitive2d::FillGradientPrimitive2D( aRange, aFillGradientAttribute)); - - xRetval = drawinglayer::primitive2d::Primitive2DContainer { xReference }; break; } case SS_VIEW: @@ -109,12 +108,10 @@ drawinglayer::primitive2d::Primitive2DContainer ShadowPrimitive::create2DDecompo basegfx::BColor(180.0/255.0,180.0/255.0,180.0/255.0), 4); - const drawinglayer::primitive2d::Primitive2DReference xReference( + rContainer.push_back( new drawinglayer::primitive2d::FillGradientPrimitive2D( aRange, aFillGradientAttribute)); - - xRetval = drawinglayer::primitive2d::Primitive2DContainer { xReference }; break; } case SS_EDIT: @@ -130,12 +127,10 @@ drawinglayer::primitive2d::Primitive2DContainer ShadowPrimitive::create2DDecompo basegfx::BColor(83.0/255.0,83.0/255.0,83.0/255.0), 4); - const drawinglayer::primitive2d::Primitive2DReference xReference( + rContainer.push_back( new drawinglayer::primitive2d::FillGradientPrimitive2D( aRange, aFillGradientAttribute)); - - xRetval = drawinglayer::primitive2d::Primitive2DContainer { xReference }; break; } default: @@ -143,8 +138,6 @@ drawinglayer::primitive2d::Primitive2DContainer ShadowPrimitive::create2DDecompo break; } } - - return xRetval; } bool ShadowPrimitive::operator==( const drawinglayer::primitive2d::BasePrimitive2D& rPrimitive ) const |