include/svx/sdr/contact/viewcontact.hxx | 7 include/svx/sdr/contact/viewcontactofe3dscene.hxx | 2 include/svx/sdr/contact/viewcontactofsdrmediaobj.hxx | 4 include/svx/sdr/contact/viewcontactofvirtobj.hxx | 4 sd/source/core/CustomAnimationEffect.cxx | 3 sd/source/ui/animations/motionpathtag.cxx | 5 svx/inc/sdr/contact/viewcontactofe3d.hxx | 4 svx/inc/sdr/contact/viewcontactofgraphic.hxx | 2 svx/inc/sdr/contact/viewcontactofgroup.hxx | 2 svx/inc/sdr/contact/viewcontactofmasterpagedescriptor.hxx | 2 svx/inc/sdr/contact/viewcontactofpageobj.hxx | 4 svx/inc/sdr/contact/viewcontactofsdrcaptionobj.hxx | 2 svx/inc/sdr/contact/viewcontactofsdrcircobj.hxx | 2 svx/inc/sdr/contact/viewcontactofsdredgeobj.hxx | 2 svx/inc/sdr/contact/viewcontactofsdrmeasureobj.hxx | 2 svx/inc/sdr/contact/viewcontactofsdrobjcustomshape.hxx | 2 svx/inc/sdr/contact/viewcontactofsdrole2obj.hxx | 7 svx/inc/sdr/contact/viewcontactofsdrpage.hxx | 20 +- svx/inc/sdr/contact/viewcontactofsdrpathobj.hxx | 2 svx/inc/sdr/contact/viewcontactofsdrrectobj.hxx | 4 svx/inc/sdr/contact/viewcontactofunocontrol.hxx | 2 svx/source/engine3d/view3d.cxx | 4 svx/source/sdr/contact/viewcontact.cxx | 16 - svx/source/sdr/contact/viewcontactofe3d.cxx | 4 svx/source/sdr/contact/viewcontactofe3dscene.cxx | 8 svx/source/sdr/contact/viewcontactofgraphic.cxx | 4 svx/source/sdr/contact/viewcontactofgroup.cxx | 11 - svx/source/sdr/contact/viewcontactofmasterpagedescriptor.cxx | 7 svx/source/sdr/contact/viewcontactofpageobj.cxx | 6 svx/source/sdr/contact/viewcontactofsdrcaptionobj.cxx | 14 - svx/source/sdr/contact/viewcontactofsdrcircobj.cxx | 6 svx/source/sdr/contact/viewcontactofsdredgeobj.cxx | 4 svx/source/sdr/contact/viewcontactofsdrmeasureobj.cxx | 4 svx/source/sdr/contact/viewcontactofsdrmediaobj.cxx | 4 svx/source/sdr/contact/viewcontactofsdrobjcustomshape.cxx | 11 - svx/source/sdr/contact/viewcontactofsdrole2obj.cxx | 8 svx/source/sdr/contact/viewcontactofsdrpage.cxx | 84 +++------- svx/source/sdr/contact/viewcontactofsdrpathobj.cxx | 4 svx/source/sdr/contact/viewcontactofsdrrectobj.cxx | 4 svx/source/sdr/contact/viewcontactofunocontrol.cxx | 6 svx/source/sdr/contact/viewcontactofvirtobj.cxx | 10 - svx/source/sdr/contact/viewobjectcontact.cxx | 5 svx/source/sdr/contact/viewobjectcontactofmasterpagedescriptor.cxx | 10 - svx/source/sdr/contact/viewobjectcontactofsdrole2obj.cxx | 2 svx/source/sdr/contact/viewobjectcontactofunocontrol.cxx | 3 svx/source/sdr/primitive2d/primitivefactory2d.cxx | 9 - svx/source/sdr/primitive2d/sdrole2primitive2d.cxx | 2 svx/source/svdraw/svdcrtv.cxx | 5 svx/source/svdraw/svddrgmt.cxx | 8 svx/source/svdraw/svdobj.cxx | 9 - svx/source/svdraw/svdotxtr.cxx | 3 svx/source/svdraw/svdxcgv.cxx | 4 svx/source/table/viewcontactoftableobj.cxx | 6 svx/source/table/viewcontactoftableobj.hxx | 2 svx/source/unodraw/unoshape.cxx | 4 sw/source/core/draw/dcontact.cxx | 2 sw/source/core/draw/dflyobj.cxx | 16 - 57 files changed, 175 insertions(+), 218 deletions(-)
New commits: commit b739bdaba8064ae8b428cfa1c7c6010d662539a3 Author: Noel Grandin <[email protected]> AuthorDate: Fri Dec 3 14:11:06 2021 +0200 Commit: Noel Grandin <[email protected]> CommitDate: Sat Dec 4 12:32:06 2021 +0100 use visitor in getViewIndependentPrimitive2DContainer to reduce intermediate temporary data creation Change-Id: I3f13b0e02c1fa374e8d70768ae47c7f6da254462 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126322 Tested-by: Jenkins Reviewed-by: Noel Grandin <[email protected]> diff --git a/include/svx/sdr/contact/viewcontact.hxx b/include/svx/sdr/contact/viewcontact.hxx index c7119fcd93e2..238d188d6e5b 100644 --- a/include/svx/sdr/contact/viewcontact.hxx +++ b/include/svx/sdr/contact/viewcontact.hxx @@ -75,8 +75,8 @@ protected: // visualisation method and will also be used for BoundRect computations in the long run. // This means it's always an error when the default implementation is called and thus gets // asserted there - virtual drawinglayer::primitive2d::Primitive2DContainer - createViewIndependentPrimitive2DSequence() const; + virtual void createViewIndependentPrimitive2DSequence( + drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const; // basic constructor. Since this is a base class only, it shall // never be called directly @@ -118,7 +118,8 @@ public: // access to the local primitive. This will ensure that the primitive is // current in comparing the local one with a fresh created incarnation - drawinglayer::primitive2d::Primitive2DContainer getViewIndependentPrimitive2DContainer() const; + void getViewIndependentPrimitive2DContainer( + drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const; // add Gluepoints (if available) virtual drawinglayer::primitive2d::Primitive2DContainer diff --git a/include/svx/sdr/contact/viewcontactofe3dscene.hxx b/include/svx/sdr/contact/viewcontactofe3dscene.hxx index b26e272f91f3..82de5435eef5 100644 --- a/include/svx/sdr/contact/viewcontactofe3dscene.hxx +++ b/include/svx/sdr/contact/viewcontactofe3dscene.hxx @@ -83,7 +83,7 @@ private: // This method is responsible for creating the graphical visualisation data // ONLY based on model data - virtual drawinglayer::primitive2d::Primitive2DContainer createViewIndependentPrimitive2DSequence() const override; + virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override; // the 3d transformation stack drawinglayer::geometry::ViewInformation3D maViewInformation3D; diff --git a/include/svx/sdr/contact/viewcontactofsdrmediaobj.hxx b/include/svx/sdr/contact/viewcontactofsdrmediaobj.hxx index 95c2eda21b8f..4490818a005a 100644 --- a/include/svx/sdr/contact/viewcontactofsdrmediaobj.hxx +++ b/include/svx/sdr/contact/viewcontactofsdrmediaobj.hxx @@ -64,8 +64,8 @@ private: // This method is responsible for creating the graphical visualisation data // ONLY based on model data - virtual drawinglayer::primitive2d::Primitive2DContainer - createViewIndependentPrimitive2DSequence() const override; + virtual void createViewIndependentPrimitive2DSequence( + drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override; }; } diff --git a/include/svx/sdr/contact/viewcontactofvirtobj.hxx b/include/svx/sdr/contact/viewcontactofvirtobj.hxx index 189a93382fc9..3054e63f39b1 100644 --- a/include/svx/sdr/contact/viewcontactofvirtobj.hxx +++ b/include/svx/sdr/contact/viewcontactofvirtobj.hxx @@ -44,8 +44,8 @@ public: protected: // This method is responsible for creating the graphical visualisation data // ONLY based on model data - virtual drawinglayer::primitive2d::Primitive2DContainer - createViewIndependentPrimitive2DSequence() const override; + virtual void createViewIndependentPrimitive2DSequence( + drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override; }; } diff --git a/sd/source/core/CustomAnimationEffect.cxx b/sd/source/core/CustomAnimationEffect.cxx index ee6317916f23..aaa5f36dcd83 100644 --- a/sd/source/core/CustomAnimationEffect.cxx +++ b/sd/source/core/CustomAnimationEffect.cxx @@ -1606,7 +1606,8 @@ void CustomAnimationEffect::updatePathFromSdrPathObj( const SdrPathObj& rPathObj { ::tools::Rectangle aBoundRect(0,0,0,0); - const drawinglayer::primitive2d::Primitive2DContainer& xPrimitives(pObj->GetViewContact().getViewIndependentPrimitive2DContainer()); + drawinglayer::primitive2d::Primitive2DContainer xPrimitives; + pObj->GetViewContact().getViewIndependentPrimitive2DContainer(xPrimitives); const drawinglayer::geometry::ViewInformation2D aViewInformation2D; const basegfx::B2DRange aRange(xPrimitives.getB2DRange(aViewInformation2D)); diff --git a/sd/source/ui/animations/motionpathtag.cxx b/sd/source/ui/animations/motionpathtag.cxx index 72bf2d1620b4..ced68539517b 100644 --- a/sd/source/ui/animations/motionpathtag.cxx +++ b/sd/source/ui/animations/motionpathtag.cxx @@ -300,8 +300,9 @@ void SdPathHdl::CreateB2dIAObject() if (xManager.is() && mpPathObj) { const sdr::contact::ViewContact& rVC = mpPathObj->GetViewContact(); - const drawinglayer::primitive2d::Primitive2DContainer& aSequence = rVC.getViewIndependentPrimitive2DContainer(); - std::unique_ptr<sdr::overlay::OverlayObject> pNew(new sdr::overlay::OverlayPrimitive2DSequenceObject(drawinglayer::primitive2d::Primitive2DContainer(aSequence))); + drawinglayer::primitive2d::Primitive2DContainer aSequence; + rVC.getViewIndependentPrimitive2DContainer(aSequence); + std::unique_ptr<sdr::overlay::OverlayObject> pNew(new sdr::overlay::OverlayPrimitive2DSequenceObject(std::move(aSequence))); // OVERLAYMANAGER insertNewlyCreatedOverlayObjectForSdrHdl( diff --git a/svx/inc/sdr/contact/viewcontactofe3d.hxx b/svx/inc/sdr/contact/viewcontactofe3d.hxx index 2f24460cd106..553407deb4fb 100644 --- a/svx/inc/sdr/contact/viewcontactofe3d.hxx +++ b/svx/inc/sdr/contact/viewcontactofe3d.hxx @@ -74,8 +74,8 @@ protected: // This method is responsible for creating the graphical visualisation data derived ONLY from // the model data. The default implementation will try to create a 3D to 2D embedding (will work // when scene is known) which can then be used for 2D processing concerning ranges - virtual drawinglayer::primitive2d::Primitive2DContainer - createViewIndependentPrimitive2DSequence() const override; + virtual void createViewIndependentPrimitive2DSequence( + drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override; public: // access to the local primitive without the object's local 3D transform. This is e.g. needed diff --git a/svx/inc/sdr/contact/viewcontactofgraphic.hxx b/svx/inc/sdr/contact/viewcontactofgraphic.hxx index 0c554ec9100a..bf3ecabcd3e6 100644 --- a/svx/inc/sdr/contact/viewcontactofgraphic.hxx +++ b/svx/inc/sdr/contact/viewcontactofgraphic.hxx @@ -65,7 +65,7 @@ namespace sdr::contact private: // This method is responsible for creating the graphical visualisation data // ONLY based on model data - virtual drawinglayer::primitive2d::Primitive2DContainer createViewIndependentPrimitive2DSequence() const override; + virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override; }; } // end of namespace sdr::contact diff --git a/svx/inc/sdr/contact/viewcontactofgroup.hxx b/svx/inc/sdr/contact/viewcontactofgroup.hxx index 21900c906f71..de1b4aa7fc88 100644 --- a/svx/inc/sdr/contact/viewcontactofgroup.hxx +++ b/svx/inc/sdr/contact/viewcontactofgroup.hxx @@ -47,7 +47,7 @@ namespace sdr::contact // This method is responsible for creating the graphical visualisation data // ONLY based on model data - virtual drawinglayer::primitive2d::Primitive2DContainer createViewIndependentPrimitive2DSequence() const override; + virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override; }; } // end of namespace sdr::contact diff --git a/svx/inc/sdr/contact/viewcontactofmasterpagedescriptor.hxx b/svx/inc/sdr/contact/viewcontactofmasterpagedescriptor.hxx index a807829007f7..9d6f86f09e46 100644 --- a/svx/inc/sdr/contact/viewcontactofmasterpagedescriptor.hxx +++ b/svx/inc/sdr/contact/viewcontactofmasterpagedescriptor.hxx @@ -40,7 +40,7 @@ namespace sdr::contact virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact) override; // This method is responsible for creating the graphical visualisation data - virtual drawinglayer::primitive2d::Primitive2DContainer createViewIndependentPrimitive2DSequence() const override; + virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override; public: // basic constructor diff --git a/svx/inc/sdr/contact/viewcontactofpageobj.hxx b/svx/inc/sdr/contact/viewcontactofpageobj.hxx index b32fd7cae7f9..672d42042697 100644 --- a/svx/inc/sdr/contact/viewcontactofpageobj.hxx +++ b/svx/inc/sdr/contact/viewcontactofpageobj.hxx @@ -34,8 +34,8 @@ class ViewContactOfPageObj final : public ViewContactOfSdrObj CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact) override; // create graphical visualisation data - virtual drawinglayer::primitive2d::Primitive2DContainer - createViewIndependentPrimitive2DSequence() const override; + virtual void createViewIndependentPrimitive2DSequence( + drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override; public: // basic constructor, used from SdrObject. diff --git a/svx/inc/sdr/contact/viewcontactofsdrcaptionobj.hxx b/svx/inc/sdr/contact/viewcontactofsdrcaptionobj.hxx index 230c6d4c4b9b..d39758be36fb 100644 --- a/svx/inc/sdr/contact/viewcontactofsdrcaptionobj.hxx +++ b/svx/inc/sdr/contact/viewcontactofsdrcaptionobj.hxx @@ -36,7 +36,7 @@ namespace sdr::contact private: // This method is responsible for creating the graphical visualisation data // ONLY based on model data - virtual drawinglayer::primitive2d::Primitive2DContainer createViewIndependentPrimitive2DSequence() const override; + virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override; }; } // end of namespace sdr::contact diff --git a/svx/inc/sdr/contact/viewcontactofsdrcircobj.hxx b/svx/inc/sdr/contact/viewcontactofsdrcircobj.hxx index 1a88e55de13d..281cad956461 100644 --- a/svx/inc/sdr/contact/viewcontactofsdrcircobj.hxx +++ b/svx/inc/sdr/contact/viewcontactofsdrcircobj.hxx @@ -42,7 +42,7 @@ namespace sdr::contact // This method is responsible for creating the graphical visualisation data // ONLY based on model data - virtual drawinglayer::primitive2d::Primitive2DContainer createViewIndependentPrimitive2DSequence() const override; + virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override; }; } // end of namespace sdr::contact diff --git a/svx/inc/sdr/contact/viewcontactofsdredgeobj.hxx b/svx/inc/sdr/contact/viewcontactofsdredgeobj.hxx index 1d27161b1be2..24ed402852c6 100644 --- a/svx/inc/sdr/contact/viewcontactofsdredgeobj.hxx +++ b/svx/inc/sdr/contact/viewcontactofsdredgeobj.hxx @@ -42,7 +42,7 @@ namespace sdr::contact // This method is responsible for creating the graphical visualisation data // ONLY based on model data - virtual drawinglayer::primitive2d::Primitive2DContainer createViewIndependentPrimitive2DSequence() const override; + virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override; }; } // end of namespace sdr::contact diff --git a/svx/inc/sdr/contact/viewcontactofsdrmeasureobj.hxx b/svx/inc/sdr/contact/viewcontactofsdrmeasureobj.hxx index e74f48dfa92e..6b4d89323493 100644 --- a/svx/inc/sdr/contact/viewcontactofsdrmeasureobj.hxx +++ b/svx/inc/sdr/contact/viewcontactofsdrmeasureobj.hxx @@ -42,7 +42,7 @@ namespace sdr::contact // This method is responsible for creating the graphical visualisation data // ONLY based on model data - virtual drawinglayer::primitive2d::Primitive2DContainer createViewIndependentPrimitive2DSequence() const override; + virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override; }; } // end of namespace sdr::contact diff --git a/svx/inc/sdr/contact/viewcontactofsdrobjcustomshape.hxx b/svx/inc/sdr/contact/viewcontactofsdrobjcustomshape.hxx index 196eabf8f4dd..6bdcbb5dfbef 100644 --- a/svx/inc/sdr/contact/viewcontactofsdrobjcustomshape.hxx +++ b/svx/inc/sdr/contact/viewcontactofsdrobjcustomshape.hxx @@ -45,7 +45,7 @@ namespace sdr::contact // This method is responsible for creating the graphical visualisation data // ONLY based on model data - virtual drawinglayer::primitive2d::Primitive2DContainer createViewIndependentPrimitive2DSequence() const override; + virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override; }; } // end of namespace sdr::contact diff --git a/svx/inc/sdr/contact/viewcontactofsdrole2obj.hxx b/svx/inc/sdr/contact/viewcontactofsdrole2obj.hxx index f034f02a6da5..d5ca82fbcd3f 100644 --- a/svx/inc/sdr/contact/viewcontactofsdrole2obj.hxx +++ b/svx/inc/sdr/contact/viewcontactofsdrole2obj.hxx @@ -51,7 +51,8 @@ public: // scaling (e.g. for EmptyPresObj's), the correct graphic and other stuff. It is used from // createViewIndependentPrimitive2DSequence with false, and with evtl. HighContrast true // from the VOC which knows that - drawinglayer::primitive2d::Primitive2DContainer createPrimitive2DSequenceWithParameters() const; + void createPrimitive2DSequenceWithParameters( + drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const; virtual basegfx::B2DRange getRange(const drawinglayer::geometry::ViewInformation2D& rViewInfo2D) const override; @@ -59,8 +60,8 @@ public: private: // This method is responsible for creating the graphical visualisation data // ONLY based on model data, just wraps to call createPrimitive2DSequenceWithParameters(false) - virtual drawinglayer::primitive2d::Primitive2DContainer - createViewIndependentPrimitive2DSequence() const override; + virtual void createViewIndependentPrimitive2DSequence( + drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override; }; } diff --git a/svx/inc/sdr/contact/viewcontactofsdrpage.hxx b/svx/inc/sdr/contact/viewcontactofsdrpage.hxx index 59e49b5f2a62..98d6f577e86e 100644 --- a/svx/inc/sdr/contact/viewcontactofsdrpage.hxx +++ b/svx/inc/sdr/contact/viewcontactofsdrpage.hxx @@ -44,7 +44,7 @@ public: class ViewContactOfPageBackground final : public ViewContactOfPageSubObject { virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact) override; - virtual drawinglayer::primitive2d::Primitive2DContainer createViewIndependentPrimitive2DSequence() const override; + virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override; public: explicit ViewContactOfPageBackground(ViewContactOfSdrPage& rParentViewContactOfSdrPage); @@ -54,7 +54,7 @@ public: class ViewContactOfPageShadow final : public ViewContactOfPageSubObject { virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact) override; - virtual drawinglayer::primitive2d::Primitive2DContainer createViewIndependentPrimitive2DSequence() const override; + virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override; public: explicit ViewContactOfPageShadow(ViewContactOfSdrPage& rParentViewContactOfSdrPage); @@ -64,7 +64,7 @@ public: class ViewContactOfPageFill final : public ViewContactOfPageSubObject { virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact) override; - virtual drawinglayer::primitive2d::Primitive2DContainer createViewIndependentPrimitive2DSequence() const override; + virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override; public: explicit ViewContactOfPageFill(ViewContactOfSdrPage& rParentViewContactOfSdrPage); @@ -74,7 +74,7 @@ public: class ViewContactOfMasterPage final : public ViewContactOfPageSubObject { virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact) override; - virtual drawinglayer::primitive2d::Primitive2DContainer createViewIndependentPrimitive2DSequence() const override; + virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override; public: explicit ViewContactOfMasterPage(ViewContactOfSdrPage& rParentViewContactOfSdrPage); @@ -84,7 +84,7 @@ public: class ViewContactOfOuterPageBorder final : public ViewContactOfPageSubObject { virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact) override; - virtual drawinglayer::primitive2d::Primitive2DContainer createViewIndependentPrimitive2DSequence() const override; + virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override; public: explicit ViewContactOfOuterPageBorder(ViewContactOfSdrPage& rParentViewContactOfSdrPage); @@ -94,7 +94,7 @@ public: class ViewContactOfInnerPageBorder final : public ViewContactOfPageSubObject { virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact) override; - virtual drawinglayer::primitive2d::Primitive2DContainer createViewIndependentPrimitive2DSequence() const override; + virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override; public: explicit ViewContactOfInnerPageBorder(ViewContactOfSdrPage& rParentViewContactOfSdrPage); @@ -111,7 +111,7 @@ public: class ViewContactOfPageHierarchy final : public ViewContactOfPageSubObject { virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact) override; - virtual drawinglayer::primitive2d::Primitive2DContainer createViewIndependentPrimitive2DSequence() const override; + virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override; public: explicit ViewContactOfPageHierarchy(ViewContactOfSdrPage& rParentViewContactOfSdrPage); @@ -126,7 +126,7 @@ class ViewContactOfGrid final : public ViewContactOfPageSubObject bool mbFront : 1; virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact) override; - virtual drawinglayer::primitive2d::Primitive2DContainer createViewIndependentPrimitive2DSequence() const override; + virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override; public: ViewContactOfGrid(ViewContactOfSdrPage& rParentViewContactOfSdrPage, bool bFront); @@ -140,7 +140,7 @@ class ViewContactOfHelplines final : public ViewContactOfPageSubObject bool mbFront : 1; virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact) override; - virtual drawinglayer::primitive2d::Primitive2DContainer createViewIndependentPrimitive2DSequence() const override; + virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override; public: ViewContactOfHelplines(ViewContactOfSdrPage& rParentViewContactOfSdrPage, bool bFront); @@ -194,7 +194,7 @@ public: private: // This method is responsible for creating the graphical visualisation data // ONLY based on model data - virtual drawinglayer::primitive2d::Primitive2DContainer createViewIndependentPrimitive2DSequence() const override; + virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override; }; } diff --git a/svx/inc/sdr/contact/viewcontactofsdrpathobj.hxx b/svx/inc/sdr/contact/viewcontactofsdrpathobj.hxx index c3f71af08e15..bc4063a42e0a 100644 --- a/svx/inc/sdr/contact/viewcontactofsdrpathobj.hxx +++ b/svx/inc/sdr/contact/viewcontactofsdrpathobj.hxx @@ -42,7 +42,7 @@ namespace sdr::contact // This method is responsible for creating the graphical visualisation data // ONLY based on model data - virtual drawinglayer::primitive2d::Primitive2DContainer createViewIndependentPrimitive2DSequence() const override; + virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override; }; } // end of namespace sdr::contact diff --git a/svx/inc/sdr/contact/viewcontactofsdrrectobj.hxx b/svx/inc/sdr/contact/viewcontactofsdrrectobj.hxx index 3477ce4f8f87..6971f8f0cadc 100644 --- a/svx/inc/sdr/contact/viewcontactofsdrrectobj.hxx +++ b/svx/inc/sdr/contact/viewcontactofsdrrectobj.hxx @@ -38,8 +38,8 @@ public: protected: // This method is responsible for creating the graphical visualisation data // ONLY based on model data - virtual drawinglayer::primitive2d::Primitive2DContainer - createViewIndependentPrimitive2DSequence() const override; + virtual void createViewIndependentPrimitive2DSequence( + drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override; }; } diff --git a/svx/inc/sdr/contact/viewcontactofunocontrol.hxx b/svx/inc/sdr/contact/viewcontactofunocontrol.hxx index 8d16362aa092..04cdf7c07ba8 100644 --- a/svx/inc/sdr/contact/viewcontactofunocontrol.hxx +++ b/svx/inc/sdr/contact/viewcontactofunocontrol.hxx @@ -65,7 +65,7 @@ namespace sdr::contact { // This method is responsible for creating the graphical visualisation data // ONLY based on model data - virtual drawinglayer::primitive2d::Primitive2DContainer createViewIndependentPrimitive2DSequence() const override; + virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override; }; diff --git a/svx/source/engine3d/view3d.cxx b/svx/source/engine3d/view3d.cxx index 8f339f5b747e..e5caf53556c7 100644 --- a/svx/source/engine3d/view3d.cxx +++ b/svx/source/engine3d/view3d.cxx @@ -107,9 +107,7 @@ Impl3DMirrorConstructOverlay::Impl3DMirrorConstructOverlay(const E3dView& rView) { // use the view-independent primitive representation (without // evtl. GridOffset, that may be applied to the DragEntry individually) - const drawinglayer::primitive2d::Primitive2DContainer& aNewSequence( - pObject->GetViewContact().getViewIndependentPrimitive2DContainer()); - maFullOverlay.append(aNewSequence); + pObject->GetViewContact().getViewIndependentPrimitive2DContainer(maFullOverlay); } } } diff --git a/svx/source/sdr/contact/viewcontact.cxx b/svx/source/sdr/contact/viewcontact.cxx index c6b85b5aa7b9..3c1c875acba3 100644 --- a/svx/source/sdr/contact/viewcontact.cxx +++ b/svx/source/sdr/contact/viewcontact.cxx @@ -201,8 +201,8 @@ SdrObject* ViewContact::TryToGetSdrObject() const { return nullptr; } // primitive stuff -drawinglayer::primitive2d::Primitive2DContainer -ViewContact::createViewIndependentPrimitive2DSequence() const +void ViewContact::createViewIndependentPrimitive2DSequence( + drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const { // This is the default implementation and should never be called (see header). If this is called, // someone implemented a ViewContact (VC) visualisation object without defining the visualisation by @@ -217,14 +217,14 @@ ViewContact::createViewIndependentPrimitive2DSequence() const const drawinglayer::primitive2d::Primitive2DReference xReference( new drawinglayer::primitive2d::PolygonHairlinePrimitive2D(aOutline, aYellow)); - return drawinglayer::primitive2d::Primitive2DContainer{ xReference }; + rVisitor.visit(xReference); } -drawinglayer::primitive2d::Primitive2DContainer -ViewContact::getViewIndependentPrimitive2DContainer() const +void ViewContact::getViewIndependentPrimitive2DContainer( + drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const { - drawinglayer::primitive2d::Primitive2DContainer xNew( - createViewIndependentPrimitive2DSequence()); + drawinglayer::primitive2d::Primitive2DContainer xNew; + createViewIndependentPrimitive2DSequence(xNew); if (!xNew.empty()) { @@ -232,7 +232,7 @@ ViewContact::getViewIndependentPrimitive2DContainer() const xNew = embedToObjectSpecificInformation(std::move(xNew)); } - return xNew; + rVisitor.visit(xNew); } // add Gluepoints (if available) diff --git a/svx/source/sdr/contact/viewcontactofe3d.cxx b/svx/source/sdr/contact/viewcontactofe3d.cxx index 809c99d22788..a504038cece0 100644 --- a/svx/source/sdr/contact/viewcontactofe3d.cxx +++ b/svx/source/sdr/contact/viewcontactofe3d.cxx @@ -174,12 +174,12 @@ drawinglayer::primitive3d::Primitive3DContainer ViewContactOfE3d::getViewIndepen return xRetval; } -drawinglayer::primitive2d::Primitive2DContainer ViewContactOfE3d::createViewIndependentPrimitive2DSequence() const +void ViewContactOfE3d::createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const { // also need to create a 2D embedding when the view-independent part is requested, // see view-dependent part in ViewObjectContactOfE3d::createPrimitive2DSequence // get 3d primitive vector, isPrimitiveVisible() is done in 3d creator - return impCreateWithGivenPrimitive3DContainer(getViewIndependentPrimitive3DContainer()); + return rVisitor.visit(impCreateWithGivenPrimitive3DContainer(getViewIndependentPrimitive3DContainer())); } ViewObjectContact& ViewContactOfE3d::CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact) diff --git a/svx/source/sdr/contact/viewcontactofe3dscene.cxx b/svx/source/sdr/contact/viewcontactofe3dscene.cxx index 8b8823b520ae..6bae552631d5 100644 --- a/svx/source/sdr/contact/viewcontactofe3dscene.cxx +++ b/svx/source/sdr/contact/viewcontactofe3dscene.cxx @@ -320,17 +320,13 @@ drawinglayer::primitive2d::Primitive2DContainer ViewContactOfE3dScene::createSce return xRetval; } -drawinglayer::primitive2d::Primitive2DContainer ViewContactOfE3dScene::createViewIndependentPrimitive2DSequence() const +void ViewContactOfE3dScene::createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const { - drawinglayer::primitive2d::Primitive2DContainer xRetval; - if(GetObjectCount()) { // create a default ScenePrimitive2D (without visibility test of members) - xRetval = createScenePrimitive2DSequence(nullptr); + rVisitor.visit(createScenePrimitive2DSequence(nullptr)); } - - return xRetval; } void ViewContactOfE3dScene::ActionChanged() diff --git a/svx/source/sdr/contact/viewcontactofgraphic.cxx b/svx/source/sdr/contact/viewcontactofgraphic.cxx index 8e284f7ae79d..8639bf8aa085 100644 --- a/svx/source/sdr/contact/viewcontactofgraphic.cxx +++ b/svx/source/sdr/contact/viewcontactofgraphic.cxx @@ -281,7 +281,7 @@ namespace sdr::contact return xRetval; } - drawinglayer::primitive2d::Primitive2DContainer ViewContactOfGraphic::createViewIndependentPrimitive2DSequence() const + void ViewContactOfGraphic::createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const { drawinglayer::primitive2d::Primitive2DContainer xRetval; const SfxItemSet& rItemSet = GetGrafObject().GetMergedItemSet(); @@ -386,7 +386,7 @@ namespace sdr::contact drawinglayer::primitive2d::createHiddenGeometryPrimitives2D( aObjectMatrix)); - return xRetval; + rVisitor.visit(std::move(xRetval)); } bool ViewContactOfGraphic::visualisationUsesPresObj() const diff --git a/svx/source/sdr/contact/viewcontactofgroup.cxx b/svx/source/sdr/contact/viewcontactofgroup.cxx index 6a98565c0cd6..18e5e07aa27f 100644 --- a/svx/source/sdr/contact/viewcontactofgroup.cxx +++ b/svx/source/sdr/contact/viewcontactofgroup.cxx @@ -47,9 +47,8 @@ namespace sdr::contact { } - drawinglayer::primitive2d::Primitive2DContainer ViewContactOfGroup::createViewIndependentPrimitive2DSequence() const + void ViewContactOfGroup::createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const { - drawinglayer::primitive2d::Primitive2DContainer xRetval; const sal_uInt32 nObjectCount(GetObjectCount()); if(nObjectCount) @@ -58,9 +57,7 @@ namespace sdr::contact for(sal_uInt32 a(0); a < nObjectCount; a++) { const ViewContact& rCandidate(GetViewContact(a)); - const drawinglayer::primitive2d::Primitive2DContainer& aCandSeq(rCandidate.getViewIndependentPrimitive2DContainer()); - - xRetval.insert(xRetval.end(), aCandSeq.begin(), aCandSeq.end()); + rCandidate.getViewIndependentPrimitive2DContainer(rVisitor); } } else @@ -72,10 +69,8 @@ namespace sdr::contact drawinglayer::primitive2d::createHiddenGeometryPrimitives2D( false, aCurrentRange)); - xRetval = drawinglayer::primitive2d::Primitive2DContainer { xReference }; + rVisitor.visit(xReference); } - - return xRetval; } } // end of namespace diff --git a/svx/source/sdr/contact/viewcontactofmasterpagedescriptor.cxx b/svx/source/sdr/contact/viewcontactofmasterpagedescriptor.cxx index c588d0c555f3..20463d0fc2ef 100644 --- a/svx/source/sdr/contact/viewcontactofmasterpagedescriptor.cxx +++ b/svx/source/sdr/contact/viewcontactofmasterpagedescriptor.cxx @@ -37,9 +37,8 @@ namespace sdr::contact return *(new ViewObjectContactOfMasterPageDescriptor(rObjectContact, *this)); } - drawinglayer::primitive2d::Primitive2DContainer ViewContactOfMasterPageDescriptor::createViewIndependentPrimitive2DSequence() const + void ViewContactOfMasterPageDescriptor::createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const { - drawinglayer::primitive2d::Primitive2DContainer xRetval; drawinglayer::attribute::SdrFillAttribute aFill; const SdrPageProperties* pCorrectProperties = GetMasterPageDescriptor().getCorrectSdrPageProperties(); @@ -69,10 +68,8 @@ namespace sdr::contact aFill, drawinglayer::attribute::FillGradientAttribute())); - xRetval = drawinglayer::primitive2d::Primitive2DContainer{ xReference }; + rVisitor.visit(xReference); } - - return xRetval; } // basic constructor diff --git a/svx/source/sdr/contact/viewcontactofpageobj.cxx b/svx/source/sdr/contact/viewcontactofpageobj.cxx index bc2fb7c1e836..8d4fdbaf4f19 100644 --- a/svx/source/sdr/contact/viewcontactofpageobj.cxx +++ b/svx/source/sdr/contact/viewcontactofpageobj.cxx @@ -59,8 +59,8 @@ void ViewContactOfPageObj::ActionChanged() } } -drawinglayer::primitive2d::Primitive2DContainer -ViewContactOfPageObj::createViewIndependentPrimitive2DSequence() const +void ViewContactOfPageObj::createViewIndependentPrimitive2DSequence( + drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const { // create graphical visualisation data. Since this is the view-independent version which should not be used, // create a replacement graphic visualisation here. Use GetLastBoundRect to access the model data directly @@ -72,7 +72,7 @@ ViewContactOfPageObj::createViewIndependentPrimitive2DSequence() const const drawinglayer::primitive2d::Primitive2DReference xReference( new drawinglayer::primitive2d::PolygonHairlinePrimitive2D(aOutline, aYellow)); - return drawinglayer::primitive2d::Primitive2DContainer{ xReference }; + rVisitor.visit(xReference); } } diff --git a/svx/source/sdr/contact/viewcontactofsdrcaptionobj.cxx b/svx/source/sdr/contact/viewcontactofsdrcaptionobj.cxx index 44eea3a13fd4..2e668b4dd579 100644 --- a/svx/source/sdr/contact/viewcontactofsdrcaptionobj.cxx +++ b/svx/source/sdr/contact/viewcontactofsdrcaptionobj.cxx @@ -54,9 +54,8 @@ namespace sdr::contact { } - drawinglayer::primitive2d::Primitive2DContainer ViewContactOfSdrCaptionObj::createViewIndependentPrimitive2DSequence() const + void ViewContactOfSdrCaptionObj::createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const { - drawinglayer::primitive2d::Primitive2DContainer xRetval; const SdrCaptionObj& rCaptionObj(static_cast<const SdrCaptionObj&>(GetSdrObject())); const SfxItemSet& rItemSet = rCaptionObj.GetMergedItemSet(); const drawinglayer::attribute::SdrLineFillEffectsTextAttribute aAttribute( @@ -86,7 +85,7 @@ namespace sdr::contact // create primitive. Always create one (even if invisible) to let the decomposition // of SdrCaptionPrimitive2D create needed invisible elements for HitTest and BoundRect - const drawinglayer::primitive2d::Primitive2DReference xReference( + drawinglayer::primitive2d::Primitive2DReference xReference( new drawinglayer::primitive2d::SdrCaptionPrimitive2D( aObjectMatrix, aAttribute, @@ -94,8 +93,6 @@ namespace sdr::contact fCornerRadiusX, fCornerRadiusY)); - xRetval = drawinglayer::primitive2d::Primitive2DContainer { xReference }; - if(!aAttribute.isDefault() && rCaptionObj.GetSpecialTextBoxShadow()) { // for SC, the caption object may have a specialized shadow. The usual object shadow is off @@ -181,14 +178,11 @@ namespace sdr::contact { // if we really got a special shadow, create a two-element retval with the shadow // behind the standard object's geometry - xRetval.resize(2); - - xRetval[0] = xSpecialShadow; - xRetval[1] = xReference; + rVisitor.visit(std::move(xSpecialShadow)); } } - return xRetval; + rVisitor.visit(std::move(xReference)); } } // end of namespace diff --git a/svx/source/sdr/contact/viewcontactofsdrcircobj.cxx b/svx/source/sdr/contact/viewcontactofsdrcircobj.cxx index e150a6be7377..c05905cbfc20 100644 --- a/svx/source/sdr/contact/viewcontactofsdrcircobj.cxx +++ b/svx/source/sdr/contact/viewcontactofsdrcircobj.cxx @@ -39,7 +39,7 @@ namespace sdr::contact { } - drawinglayer::primitive2d::Primitive2DContainer ViewContactOfSdrCircObj::createViewIndependentPrimitive2DSequence() const + void ViewContactOfSdrCircObj::createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const { const SfxItemSet& rItemSet = GetCircObj().GetMergedItemSet(); const drawinglayer::attribute::SdrLineFillEffectsTextAttribute aAttribute( @@ -73,7 +73,7 @@ namespace sdr::contact aObjectMatrix, aAttribute)); - return drawinglayer::primitive2d::Primitive2DContainer { xReference }; + rVisitor.visit(xReference); } else { @@ -93,7 +93,7 @@ namespace sdr::contact bCloseSegment, bCloseUsingCenter)); - return drawinglayer::primitive2d::Primitive2DContainer { xReference }; + rVisitor.visit(xReference); } } diff --git a/svx/source/sdr/contact/viewcontactofsdredgeobj.cxx b/svx/source/sdr/contact/viewcontactofsdredgeobj.cxx index e27bf663f0a8..347eaae33f00 100644 --- a/svx/source/sdr/contact/viewcontactofsdredgeobj.cxx +++ b/svx/source/sdr/contact/viewcontactofsdredgeobj.cxx @@ -35,7 +35,7 @@ namespace sdr::contact { } - drawinglayer::primitive2d::Primitive2DContainer ViewContactOfSdrEdgeObj::createViewIndependentPrimitive2DSequence() const + void ViewContactOfSdrEdgeObj::createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const { const basegfx::B2DPolygon aEdgeTrack(GetEdgeObj().getEdgeTrack()); @@ -57,7 +57,7 @@ namespace sdr::contact aAttribute, aEdgeTrack)); - return drawinglayer::primitive2d::Primitive2DContainer { xReference }; + rVisitor.visit(xReference); } } // end of namespace diff --git a/svx/source/sdr/contact/viewcontactofsdrmeasureobj.cxx b/svx/source/sdr/contact/viewcontactofsdrmeasureobj.cxx index 4676a6b72768..eb04efd715c8 100644 --- a/svx/source/sdr/contact/viewcontactofsdrmeasureobj.cxx +++ b/svx/source/sdr/contact/viewcontactofsdrmeasureobj.cxx @@ -41,7 +41,7 @@ namespace sdr::contact { } - drawinglayer::primitive2d::Primitive2DContainer ViewContactOfSdrMeasureObj::createViewIndependentPrimitive2DSequence() const + void ViewContactOfSdrMeasureObj::createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const { const SfxItemSet& rItemSet = GetMeasureObj().GetMergedItemSet(); const drawinglayer::attribute::SdrLineEffectsTextAttribute aAttribute( @@ -120,7 +120,7 @@ namespace sdr::contact fLeftDelta, fRightDelta, bBelow, bTextRotation, bTextAutoAngle)); - return drawinglayer::primitive2d::Primitive2DContainer { xReference }; + rVisitor.visit(xReference); } } // end of namespace diff --git a/svx/source/sdr/contact/viewcontactofsdrmediaobj.cxx b/svx/source/sdr/contact/viewcontactofsdrmediaobj.cxx index f836d4329f56..7c713bc4b7b9 100644 --- a/svx/source/sdr/contact/viewcontactofsdrmediaobj.cxx +++ b/svx/source/sdr/contact/viewcontactofsdrmediaobj.cxx @@ -96,7 +96,7 @@ void ViewContactOfSdrMediaObj::mediaPropertiesChanged( const ::avmedia::MediaIte static_cast< SdrMediaObj& >(GetSdrObject()).mediaPropertiesChanged(rNewState); } -drawinglayer::primitive2d::Primitive2DContainer ViewContactOfSdrMediaObj::createViewIndependentPrimitive2DSequence() const +void ViewContactOfSdrMediaObj::createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const { // create range using the model data directly. This is in SdrTextObj::aRect which i will access using // GetGeoRect() to not trigger any calculations. It's the unrotated geometry which is okay for MediaObjects ATM. @@ -121,7 +121,7 @@ drawinglayer::primitive2d::Primitive2DContainer ViewContactOfSdrMediaObj::create aTransform, rURL, aBackgroundColor, nPixelBorder, GetSdrMediaObj().getSnapshot())); - return drawinglayer::primitive2d::Primitive2DContainer { xRetval }; + rVisitor.visit(xRetval); } } diff --git a/svx/source/sdr/contact/viewcontactofsdrobjcustomshape.cxx b/svx/source/sdr/contact/viewcontactofsdrobjcustomshape.cxx index 879f36971f85..e03dfced85ea 100644 --- a/svx/source/sdr/contact/viewcontactofsdrobjcustomshape.cxx +++ b/svx/source/sdr/contact/viewcontactofsdrobjcustomshape.cxx @@ -102,9 +102,8 @@ namespace sdr::contact return aTextRange; } - drawinglayer::primitive2d::Primitive2DContainer ViewContactOfSdrObjCustomShape::createViewIndependentPrimitive2DSequence() const + void ViewContactOfSdrObjCustomShape::createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const { - drawinglayer::primitive2d::Primitive2DContainer xRetval; const SfxItemSet& rItemSet = GetCustomShapeObj().GetMergedItemSet(); // #i98072# Get shadow and text; eventually suppress the text if it's @@ -138,9 +137,7 @@ namespace sdr::contact // only visible when transparency involved, but runtime-expensive). // Thus: Just do not iterate, will check behaviour deeply. b3DShape = (nullptr != dynamic_cast< const E3dObject* >(pSdrObjRepresentation)); - const drawinglayer::primitive2d::Primitive2DContainer& xNew( - pSdrObjRepresentation->GetViewContact().getViewIndependentPrimitive2DContainer()); - xGroup.insert(xGroup.end(), xNew.begin(), xNew.end()); + pSdrObjRepresentation->GetViewContact().getViewIndependentPrimitive2DContainer(xGroup); } if(bHasText || !xGroup.empty()) @@ -232,10 +229,8 @@ namespace sdr::contact bWordWrap, b3DShape, aObjectMatrix)); - xRetval = drawinglayer::primitive2d::Primitive2DContainer { xReference }; + rVisitor.visit(xReference); } - - return xRetval; } } // end of namespace diff --git a/svx/source/sdr/contact/viewcontactofsdrole2obj.cxx b/svx/source/sdr/contact/viewcontactofsdrole2obj.cxx index a9ee47a30af3..c1a73278645b 100644 --- a/svx/source/sdr/contact/viewcontactofsdrole2obj.cxx +++ b/svx/source/sdr/contact/viewcontactofsdrole2obj.cxx @@ -71,7 +71,7 @@ basegfx::B2DHomMatrix ViewContactOfSdrOle2Obj::createObjectTransform() const aObjectRange.getMinX(), aObjectRange.getMinY()); } -drawinglayer::primitive2d::Primitive2DContainer ViewContactOfSdrOle2Obj::createPrimitive2DSequenceWithParameters() const +void ViewContactOfSdrOle2Obj::createPrimitive2DSequenceWithParameters(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const { // get object transformation const basegfx::B2DHomMatrix aObjectMatrix(createObjectTransform()); @@ -140,7 +140,7 @@ drawinglayer::primitive2d::Primitive2DContainer ViewContactOfSdrOle2Obj::createP aObjectMatrix, aAttribute)); - return drawinglayer::primitive2d::Primitive2DContainer { xReference }; + rVisitor.visit(xReference); } basegfx::B2DRange ViewContactOfSdrOle2Obj::getRange( const drawinglayer::geometry::ViewInformation2D& rViewInfo2D ) const @@ -169,9 +169,9 @@ basegfx::B2DRange ViewContactOfSdrOle2Obj::getRange( const drawinglayer::geometr return drawinglayer::primitive2d::getB2DRangeFromPrimitive2DReference(xReference, rViewInfo2D); } -drawinglayer::primitive2d::Primitive2DContainer ViewContactOfSdrOle2Obj::createViewIndependentPrimitive2DSequence() const +void ViewContactOfSdrOle2Obj::createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const { - return createPrimitive2DSequenceWithParameters(); + createPrimitive2DSequenceWithParameters(rVisitor); } } diff --git a/svx/source/sdr/contact/viewcontactofsdrpage.cxx b/svx/source/sdr/contact/viewcontactofsdrpage.cxx index ca3ed5f0f82f..49a04b8a49f2 100644 --- a/svx/source/sdr/contact/viewcontactofsdrpage.cxx +++ b/svx/source/sdr/contact/viewcontactofsdrpage.cxx @@ -69,7 +69,7 @@ ViewObjectContact& ViewContactOfPageBackground::CreateObjectSpecificViewObjectCo return *pRetval; } -drawinglayer::primitive2d::Primitive2DContainer ViewContactOfPageBackground::createViewIndependentPrimitive2DSequence() const +void ViewContactOfPageBackground::createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const { // We have only the page information, not the view information. Use the // svtools::DOCCOLOR color for initialisation @@ -79,7 +79,7 @@ drawinglayer::primitive2d::Primitive2DContainer ViewContactOfPageBackground::cre const drawinglayer::primitive2d::Primitive2DReference xReference( new drawinglayer::primitive2d::BackgroundColorPrimitive2D(aRGBColor)); - return drawinglayer::primitive2d::Primitive2DContainer { xReference }; + rVisitor.visit(xReference); } ViewContactOfPageBackground::ViewContactOfPageBackground(ViewContactOfSdrPage& rParentViewContactOfSdrPage) @@ -99,7 +99,7 @@ ViewObjectContact& ViewContactOfPageShadow::CreateObjectSpecificViewObjectContac return *pRetval; } -drawinglayer::primitive2d::Primitive2DContainer ViewContactOfPageShadow::createViewIndependentPrimitive2DSequence() const +void ViewContactOfPageShadow::createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const { static bool bUseOldPageShadow(false); // loplugin:constvars:ignore const SdrPage& rPage = getPage(); @@ -131,7 +131,7 @@ drawinglayer::primitive2d::Primitive2DContainer ViewContactOfPageShadow::createV basegfx::B2DPolyPolygon(aPageShadowPolygon), aRGBShadowColor)); - return drawinglayer::primitive2d::Primitive2DContainer { xReference }; + rVisitor.visit(xReference); } else { @@ -145,10 +145,8 @@ drawinglayer::primitive2d::Primitive2DContainer ViewContactOfPageShadow::createV aPageMatrix, *aDiscreteShadow.get())); - return drawinglayer::primitive2d::Primitive2DContainer { xReference }; + rVisitor.visit(xReference); } - - return drawinglayer::primitive2d::Primitive2DContainer(); } } @@ -169,10 +167,8 @@ ViewObjectContact& ViewContactOfMasterPage::CreateObjectSpecificViewObjectContac return *pRetval; } -drawinglayer::primitive2d::Primitive2DContainer ViewContactOfMasterPage::createViewIndependentPrimitive2DSequence() const +void ViewContactOfMasterPage::createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const { - drawinglayer::primitive2d::Primitive2DContainer xRetval; - // this class is used when the page is a MasterPage and is responsible to // create a visualisation for the MPBGO, if exists. This needs to be suppressed // when a SdrPage which uses a MasterPage creates it's output. Suppression @@ -219,12 +215,10 @@ drawinglayer::primitive2d::Primitive2DContainer ViewContactOfMasterPage::createV aFill, drawinglayer::attribute::FillGradientAttribute())); - xRetval = drawinglayer::primitive2d::Primitive2DContainer { xReference }; + rVisitor.visit(xReference); } } } - - return xRetval; } ViewContactOfMasterPage::ViewContactOfMasterPage(ViewContactOfSdrPage& rParentViewContactOfSdrPage) @@ -244,7 +238,7 @@ ViewObjectContact& ViewContactOfPageFill::CreateObjectSpecificViewObjectContact( return *pRetval; } -drawinglayer::primitive2d::Primitive2DContainer ViewContactOfPageFill::createViewIndependentPrimitive2DSequence() const +void ViewContactOfPageFill::createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const { const SdrPage& rPage = getPage(); const basegfx::B2DRange aPageFillRange(0.0, 0.0, static_cast<double>(rPage.GetWidth()), static_cast<double>(rPage.GetHeight())); @@ -257,9 +251,7 @@ drawinglayer::primitive2d::Primitive2DContainer ViewContactOfPageFill::createVie // create and add primitive const basegfx::BColor aRGBColor(aPageFillColor.getBColor()); - const drawinglayer::primitive2d::Primitive2DReference xReference(new drawinglayer::primitive2d::PolyPolygonColorPrimitive2D(basegfx::B2DPolyPolygon(aPageFillPolygon), aRGBColor)); - - return drawinglayer::primitive2d::Primitive2DContainer { xReference }; + rVisitor.visit(drawinglayer::primitive2d::Primitive2DReference(new drawinglayer::primitive2d::PolyPolygonColorPrimitive2D(basegfx::B2DPolyPolygon(aPageFillPolygon), aRGBColor))); } ViewContactOfPageFill::ViewContactOfPageFill(ViewContactOfSdrPage& rParentViewContactOfSdrPage) @@ -279,9 +271,8 @@ ViewObjectContact& ViewContactOfOuterPageBorder::CreateObjectSpecificViewObjectC return *pRetval; } -drawinglayer::primitive2d::Primitive2DContainer ViewContactOfOuterPageBorder::createViewIndependentPrimitive2DSequence() const +void ViewContactOfOuterPageBorder::createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const { - drawinglayer::primitive2d::Primitive2DContainer xRetval; const SdrPage& rPage = getPage(); const basegfx::B2DRange aPageBorderRange(0.0, 0.0, static_cast<double>(rPage.GetWidth()), static_cast<double>(rPage.GetHeight())); @@ -309,18 +300,14 @@ drawinglayer::primitive2d::Primitive2DContainer ViewContactOfOuterPageBorder::cr aRight.append(basegfx::B2DPoint(aPageBorderRange.getMaxX(), aPageBorderRange.getMinY())); aRight.append(basegfx::B2DPoint(aPageBorderRange.getMaxX(), aPageBorderRange.getMaxY())); - xRetval.resize(2); - xRetval[0] = drawinglayer::primitive2d::Primitive2DReference(new drawinglayer::primitive2d::PolygonHairlinePrimitive2D(aLeft, aRGBBorderColor)); - xRetval[1] = drawinglayer::primitive2d::Primitive2DReference(new drawinglayer::primitive2d::PolygonHairlinePrimitive2D(aRight, aRGBBorderColor)); + rVisitor.visit(drawinglayer::primitive2d::Primitive2DReference(new drawinglayer::primitive2d::PolygonHairlinePrimitive2D(aLeft, aRGBBorderColor))); + rVisitor.visit(drawinglayer::primitive2d::Primitive2DReference(new drawinglayer::primitive2d::PolygonHairlinePrimitive2D(aRight, aRGBBorderColor))); } else { - xRetval.resize(1); const basegfx::B2DPolygon aPageBorderPolygon(basegfx::utils::createPolygonFromRect(aPageBorderRange)); - xRetval[0] = drawinglayer::primitive2d::Primitive2DReference(new drawinglayer::primitive2d::PolygonHairlinePrimitive2D(aPageBorderPolygon, aRGBBorderColor)); + rVisitor.visit(drawinglayer::primitive2d::Primitive2DReference(new drawinglayer::primitive2d::PolygonHairlinePrimitive2D(aPageBorderPolygon, aRGBBorderColor))); } - - return xRetval; } ViewContactOfOuterPageBorder::ViewContactOfOuterPageBorder(ViewContactOfSdrPage& rParentViewContactOfSdrPage) @@ -340,7 +327,7 @@ ViewObjectContact& ViewContactOfInnerPageBorder::CreateObjectSpecificViewObjectC return *pRetval; } -drawinglayer::primitive2d::Primitive2DContainer ViewContactOfInnerPageBorder::createViewIndependentPrimitive2DSequence() const +void ViewContactOfInnerPageBorder::createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const { const SdrPage& rPage = getPage(); const basegfx::B2DRange aPageBorderRange( @@ -366,9 +353,7 @@ drawinglayer::primitive2d::Primitive2DContainer ViewContactOfInnerPageBorder::cr // create page outer border primitive const basegfx::BColor aRGBBorderColor(aBorderColor.getBColor()); - const drawinglayer::primitive2d::Primitive2DReference xReference(new drawinglayer::primitive2d::PolygonHairlinePrimitive2D(aPageBorderPolygon, aRGBBorderColor)); - - return drawinglayer::primitive2d::Primitive2DContainer { xReference }; + rVisitor.visit(drawinglayer::primitive2d::Primitive2DReference(new drawinglayer::primitive2d::PolygonHairlinePrimitive2D(aPageBorderPolygon, aRGBBorderColor))); } ViewContactOfInnerPageBorder::ViewContactOfInnerPageBorder(ViewContactOfSdrPage& rParentViewContactOfSdrPage) @@ -388,22 +373,17 @@ ViewObjectContact& ViewContactOfPageHierarchy::CreateObjectSpecificViewObjectCon return *pRetval; } -drawinglayer::primitive2d::Primitive2DContainer ViewContactOfPageHierarchy::createViewIndependentPrimitive2DSequence() const +void ViewContactOfPageHierarchy::createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const { // collect sub-hierarchy - drawinglayer::primitive2d::Primitive2DContainer xRetval; const sal_uInt32 nObjectCount(GetObjectCount()); // collect all sub-primitives for(sal_uInt32 a(0); a < nObjectCount; a++) { const ViewContact& rCandidate(GetViewContact(a)); - const drawinglayer::primitive2d::Primitive2DContainer& aCandSeq(rCandidate.getViewIndependentPrimitive2DContainer()); - - xRetval.insert(xRetval.end(), aCandSeq.begin(), aCandSeq.end()); + rCandidate.getViewIndependentPrimitive2DContainer(rVisitor); } - - return xRetval; } ViewContactOfPageHierarchy::ViewContactOfPageHierarchy(ViewContactOfSdrPage& rParentViewContactOfSdrPage) @@ -435,11 +415,10 @@ ViewObjectContact& ViewContactOfGrid::CreateObjectSpecificViewObjectContact(Obje return *pRetval; } -drawinglayer::primitive2d::Primitive2DContainer ViewContactOfGrid::createViewIndependentPrimitive2DSequence() const +void ViewContactOfGrid::createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor&) const { // We have only the page information, not the view information and thus no grid settings. Create empty // default. For the view-dependent implementation, see ViewObjectContactOfPageGrid::createPrimitive2DSequence - return drawinglayer::primitive2d::Primitive2DContainer(); } ViewContactOfGrid::ViewContactOfGrid(ViewContactOfSdrPage& rParentViewContactOfSdrPage, bool bFront) @@ -460,11 +439,10 @@ ViewObjectContact& ViewContactOfHelplines::CreateObjectSpecificViewObjectContact return *pRetval; } -drawinglayer::primitive2d::Primitive2DContainer ViewContactOfHelplines::createViewIndependentPrimitive2DSequence() const +void ViewContactOfHelplines::createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor&) const { // We have only the page information, not the view information and thus no helplines. Create empty // default. For the view-dependent implementation, see ViewObjectContactOfPageHelplines::createPrimitive2DSequence - return drawinglayer::primitive2d::Primitive2DContainer(); } ViewContactOfHelplines::ViewContactOfHelplines(ViewContactOfSdrPage& rParentViewContactOfSdrPage, bool bFront) @@ -580,31 +558,27 @@ void ViewContactOfSdrPage::ActionChanged() maViewContactOfHelplinesFront.ActionChanged(); } -drawinglayer::primitive2d::Primitive2DContainer ViewContactOfSdrPage::createViewIndependentPrimitive2DSequence() const +void ViewContactOfSdrPage::createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const { - drawinglayer::primitive2d::Primitive2DContainer xRetval; - // collect all sub-sequences including sub hierarchy. - xRetval.append(maViewContactOfPageBackground.getViewIndependentPrimitive2DContainer()); - xRetval.append(maViewContactOfPageShadow.getViewIndependentPrimitive2DContainer()); - xRetval.append(maViewContactOfPageFill.getViewIndependentPrimitive2DContainer()); + maViewContactOfPageBackground.getViewIndependentPrimitive2DContainer(rVisitor); + maViewContactOfPageShadow.getViewIndependentPrimitive2DContainer(rVisitor); + maViewContactOfPageFill.getViewIndependentPrimitive2DContainer(rVisitor); const SdrPage& rPage = GetSdrPage(); if(rPage.TRG_HasMasterPage()) { - xRetval.append( - rPage.TRG_GetMasterPageDescriptorViewContact().getViewIndependentPrimitive2DContainer()); + rPage.TRG_GetMasterPageDescriptorViewContact().getViewIndependentPrimitive2DContainer(rVisitor); } else if(rPage.IsMasterPage()) { - xRetval.append( - maViewContactOfMasterPage.getViewIndependentPrimitive2DContainer()); + maViewContactOfMasterPage.getViewIndependentPrimitive2DContainer(rVisitor); } - xRetval.append(maViewContactOfOuterPageBorder.getViewIndependentPrimitive2DContainer()); - xRetval.append(maViewContactOfInnerPageBorder.getViewIndependentPrimitive2DContainer()); - xRetval.append(maViewContactOfPageHierarchy.getViewIndependentPrimitive2DContainer()); + maViewContactOfOuterPageBorder.getViewIndependentPrimitive2DContainer(rVisitor); + maViewContactOfInnerPageBorder.getViewIndependentPrimitive2DContainer(rVisitor); + maViewContactOfPageHierarchy.getViewIndependentPrimitive2DContainer(rVisitor); // Only add front versions of grid and helplines since no visibility test is done, // so adding the back incarnations is not necessary. This makes the Front @@ -617,8 +591,6 @@ drawinglayer::primitive2d::Primitive2DContainer ViewContactOfSdrPage::createView // drawinglayer::primitive2d::appendPrimitive2DSequenceToPrimitive2DSequence(xRetval, maViewContactOfGridFront.getViewIndependentPrimitive2DContainer()); // drawinglayer::primitive2d::appendPrimitive2DSequenceToPrimitive2DSequence(xRetval, maViewContactOfHelplinesFront.getViewIndependentPrimitive2DContainer()); - - return xRetval; } } diff --git a/svx/source/sdr/contact/viewcontactofsdrpathobj.cxx b/svx/source/sdr/contact/viewcontactofsdrpathobj.cxx index b326fd8af787..d0635f005716 100644 --- a/svx/source/sdr/contact/viewcontactofsdrpathobj.cxx +++ b/svx/source/sdr/contact/viewcontactofsdrpathobj.cxx @@ -66,7 +66,7 @@ namespace sdr::contact return nPolyCount; } - drawinglayer::primitive2d::Primitive2DContainer ViewContactOfSdrPathObj::createViewIndependentPrimitive2DSequence() const + void ViewContactOfSdrPathObj::createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const { const SfxItemSet& rItemSet = GetPathObj().GetMergedItemSet(); const drawinglayer::attribute::SdrLineFillEffectsTextAttribute aAttribute( @@ -198,7 +198,7 @@ namespace sdr::contact aUnitPolyPolygon, aUnitDefinitionPolyPolygon)); - return drawinglayer::primitive2d::Primitive2DContainer { xReference }; + rVisitor.visit(xReference); } } // end of namespace diff --git a/svx/source/sdr/contact/viewcontactofsdrrectobj.cxx b/svx/source/sdr/contact/viewcontactofsdrrectobj.cxx index a8f1c3aeb125..6d9ed7bed023 100644 --- a/svx/source/sdr/contact/viewcontactofsdrrectobj.cxx +++ b/svx/source/sdr/contact/viewcontactofsdrrectobj.cxx @@ -38,7 +38,7 @@ ViewContactOfSdrRectObj::~ViewContactOfSdrRectObj() { } -drawinglayer::primitive2d::Primitive2DContainer ViewContactOfSdrRectObj::createViewIndependentPrimitive2DSequence() const +void ViewContactOfSdrRectObj::createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const { const SfxItemSet& rItemSet = GetRectObj().GetMergedItemSet(); const drawinglayer::attribute::SdrLineFillEffectsTextAttribute aAttribute( @@ -80,7 +80,7 @@ drawinglayer::primitive2d::Primitive2DContainer ViewContactOfSdrRectObj::createV // #i105856# use fill for HitTest when TextFrame and not PickThrough GetRectObj().IsTextFrame() && !bPickThroughTransparentTextFrames)); - return drawinglayer::primitive2d::Primitive2DContainer{ xReference }; + rVisitor.visit(xReference); } } diff --git a/svx/source/sdr/contact/viewcontactofunocontrol.cxx b/svx/source/sdr/contact/viewcontactofunocontrol.cxx index 899593be3b69..7db0d6afd14e 100644 --- a/svx/source/sdr/contact/viewcontactofunocontrol.cxx +++ b/svx/source/sdr/contact/viewcontactofunocontrol.cxx @@ -86,7 +86,7 @@ namespace sdr::contact { } - drawinglayer::primitive2d::Primitive2DContainer ViewContactOfUnoControl::createViewIndependentPrimitive2DSequence() const + void ViewContactOfUnoControl::createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const { // create range. Use model data directly, not getBoundRect()/getSnapRect; these will use // the primitive data themselves in the long run. Use SdrUnoObj's (which is a SdrRectObj) @@ -112,7 +112,7 @@ namespace sdr::contact { aTransform, xControlModel)); - return drawinglayer::primitive2d::Primitive2DContainer { xRetval }; + rVisitor.visit(xRetval); } else { @@ -121,7 +121,7 @@ namespace sdr::contact { drawinglayer::primitive2d::createHiddenGeometryPrimitives2D( aTransform)); - return drawinglayer::primitive2d::Primitive2DContainer { xRetval }; + rVisitor.visit(xRetval); } } diff --git a/svx/source/sdr/contact/viewcontactofvirtobj.cxx b/svx/source/sdr/contact/viewcontactofvirtobj.cxx index dcf10bd1daed..f4087d036b5c 100644 --- a/svx/source/sdr/contact/viewcontactofvirtobj.cxx +++ b/svx/source/sdr/contact/viewcontactofvirtobj.cxx @@ -57,7 +57,7 @@ sal_uInt32 ViewContactOfVirtObj::GetObjectCount() const return 0; } -drawinglayer::primitive2d::Primitive2DContainer ViewContactOfVirtObj::createViewIndependentPrimitive2DSequence() const +void ViewContactOfVirtObj::createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const { // create displacement transformation if we have content basegfx::B2DHomMatrix aObjectMatrix; @@ -70,8 +70,8 @@ drawinglayer::primitive2d::Primitive2DContainer ViewContactOfVirtObj::createView } // use method from referenced object to get the Primitive2DContainer - const drawinglayer::primitive2d::Primitive2DContainer& xSequenceVirtual( - GetVirtObj().GetReferencedObj().GetViewContact().getViewIndependentPrimitive2DContainer()); + drawinglayer::primitive2d::Primitive2DContainer xSequenceVirtual; + GetVirtObj().GetReferencedObj().GetViewContact().getViewIndependentPrimitive2DContainer(xSequenceVirtual); if(!xSequenceVirtual.empty()) { @@ -81,7 +81,7 @@ drawinglayer::primitive2d::Primitive2DContainer ViewContactOfVirtObj::createView aObjectMatrix, drawinglayer::primitive2d::Primitive2DContainer(xSequenceVirtual))); - return drawinglayer::primitive2d::Primitive2DContainer { xReference }; + rVisitor.visit(xReference); } else { @@ -90,7 +90,7 @@ drawinglayer::primitive2d::Primitive2DContainer ViewContactOfVirtObj::createView drawinglayer::primitive2d::createHiddenGeometryPrimitives2D( aObjectMatrix)); - return drawinglayer::primitive2d::Primitive2DContainer { xReference }; + rVisitor.visit(xReference); } } diff --git a/svx/source/sdr/contact/viewobjectcontact.cxx b/svx/source/sdr/contact/viewobjectcontact.cxx index 5b0644c0b6c9..d6dae7b3d119 100644 --- a/svx/source/sdr/contact/viewobjectcontact.cxx +++ b/svx/source/sdr/contact/viewobjectcontact.cxx @@ -292,7 +292,8 @@ void ViewObjectContact::checkForPrimitive2DAnimations(const drawinglayer::primit drawinglayer::primitive2d::Primitive2DContainer ViewObjectContact::createPrimitive2DSequence(const DisplayInfo& rDisplayInfo) const { // get the view-independent Primitive from the viewContact - drawinglayer::primitive2d::Primitive2DContainer xRetval(GetViewContact().getViewIndependentPrimitive2DContainer()); + drawinglayer::primitive2d::Primitive2DContainer xRetval; + GetViewContact().getViewIndependentPrimitive2DContainer(xRetval); if(!xRetval.empty()) { @@ -415,7 +416,7 @@ void ViewObjectContact::getPrimitive2DSequenceHierarchy(DisplayInfo& rDisplayInf if(!bVisible) return; - rVisitor.visit(xRetval); + rVisitor.visit(std::move(xRetval)); } void ViewObjectContact::getPrimitive2DSequenceSubHierarchy(DisplayInfo& rDisplayInfo, drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const diff --git a/svx/source/sdr/contact/viewobjectcontactofmasterpagedescriptor.cxx b/svx/source/sdr/contact/viewobjectcontactofmasterpagedescriptor.cxx index 6b27a1ce8cf0..f96ed115df81 100644 --- a/svx/source/sdr/contact/viewobjectcontactofmasterpagedescriptor.cxx +++ b/svx/source/sdr/contact/viewobjectcontactofmasterpagedescriptor.cxx @@ -56,7 +56,6 @@ namespace sdr::contact void ViewObjectContactOfMasterPageDescriptor::getPrimitive2DSequenceHierarchy(DisplayInfo& rDisplayInfo, drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const { - drawinglayer::primitive2d::Primitive2DContainer xRetval; drawinglayer::primitive2d::Primitive2DContainer xMasterPageSequence; const sdr::MasterPageDescriptor& rDescriptor = static_cast< ViewContactOfMasterPageDescriptor& >(GetViewContact()).GetMasterPageDescriptor(); @@ -86,7 +85,7 @@ namespace sdr::contact if(!GetObjectContact().isDrawModeGray() && !GetObjectContact().isDrawModeHighContrast()) { // if visible, create the default background primitive sequence - xRetval = static_cast< ViewContactOfMasterPageDescriptor& >(GetViewContact()).getViewIndependentPrimitive2DContainer(); + static_cast< ViewContactOfMasterPageDescriptor& >(GetViewContact()).getViewIndependentPrimitive2DContainer(rVisitor); } } @@ -113,7 +112,7 @@ namespace sdr::contact if (rPageFillRange.isInside(aSubHierarchyRange)) { // completely inside, just render MasterPage content. Add to target - xRetval.append(xMasterPageSequence); + rVisitor.visit(xMasterPageSequence); } else if (rPageFillRange.overlaps(aSubHierarchyRange)) { @@ -124,12 +123,9 @@ namespace sdr::contact // need to create a clip primitive, add clipped list to target const drawinglayer::primitive2d::Primitive2DReference xReference(new drawinglayer::primitive2d::MaskPrimitive2D( basegfx::B2DPolyPolygon(basegfx::utils::createPolygonFromRect(aCommonArea)), std::move(xMasterPageSequence))); - xRetval.push_back(xReference); + rVisitor.visit(xReference); } } - - // return grouped primitive - rVisitor.visit(xRetval); } } // end of namespace diff --git a/svx/source/sdr/contact/viewobjectcontactofsdrole2obj.cxx b/svx/source/sdr/contact/viewobjectcontactofsdrole2obj.cxx index 200548577514..d5a8fe4befc1 100644 --- a/svx/source/sdr/contact/viewobjectcontactofsdrole2obj.cxx +++ b/svx/source/sdr/contact/viewobjectcontactofsdrole2obj.cxx @@ -99,7 +99,7 @@ drawinglayer::primitive2d::Primitive2DContainer ViewObjectContactOfSdrOle2Obj::c // create OLE primitive stuff directly at VC with HC as parameter const ViewContactOfSdrOle2Obj& rVC = static_cast< const ViewContactOfSdrOle2Obj& >(GetViewContact()); - xRetval = rVC.createPrimitive2DSequenceWithParameters(); + rVC.createPrimitive2DSequenceWithParameters(xRetval); if(bIsOutplaceActive) { diff --git a/svx/source/sdr/contact/viewobjectcontactofunocontrol.cxx b/svx/source/sdr/contact/viewobjectcontactofunocontrol.cxx index 8814ab54a596..042d1f9516e3 100644 --- a/svx/source/sdr/contact/viewobjectcontactofunocontrol.cxx +++ b/svx/source/sdr/contact/viewobjectcontactofunocontrol.cxx @@ -1550,8 +1550,7 @@ namespace sdr::contact { // use the default mechanism. This will create a ControlPrimitive2D without // handing over a XControl. If not even a XControlModel exists, it will // create the SdrObject fallback visualisation - const drawinglayer::primitive2d::Primitive2DContainer& aTmp = rViewContactOfUnoControl.getViewIndependentPrimitive2DContainer(); - rContainer.insert(rContainer.end(), aTmp.begin(), aTmp.end()); + rViewContactOfUnoControl.getViewIndependentPrimitive2DContainer(rContainer); return; } diff --git a/svx/source/sdr/primitive2d/primitivefactory2d.cxx b/svx/source/sdr/primitive2d/primitivefactory2d.cxx index fc33fa398b9d..a03a7c0a7dde 100644 --- a/svx/source/sdr/primitive2d/primitivefactory2d.cxx +++ b/svx/source/sdr/primitive2d/primitivefactory2d.cxx @@ -73,7 +73,9 @@ css::uno::Sequence< css::uno::Reference< css::graphic::XPrimitive2D > > SAL_CALL if(pSource) { const sdr::contact::ViewContact& rSource(pSource->GetViewContact()); - aRetval = comphelper::containerToSequence(rSource.getViewIndependentPrimitive2DContainer()); + drawinglayer::primitive2d::Primitive2DContainer aSourceVal; + rSource.getViewIndependentPrimitive2DContainer(aSourceVal); + aRetval = comphelper::containerToSequence(aSourceVal); } } @@ -93,8 +95,9 @@ css::uno::Sequence< css::uno::Reference< css::graphic::XPrimitive2D > > SAL_CALL if(pSource) { const sdr::contact::ViewContact& rSource(pSource->GetViewContact()); - - aRetval = comphelper::containerToSequence(rSource.getViewIndependentPrimitive2DContainer()); + drawinglayer::primitive2d::Primitive2DContainer aSourceRetval; + rSource.getViewIndependentPrimitive2DContainer(aSourceRetval); + aRetval = comphelper::containerToSequence(aSourceRetval); } } diff --git a/svx/source/sdr/primitive2d/sdrole2primitive2d.cxx b/svx/source/sdr/primitive2d/sdrole2primitive2d.cxx index 04b057a0b6f0..e7576b4983e8 100644 --- a/svx/source/sdr/primitive2d/sdrole2primitive2d.cxx +++ b/svx/source/sdr/primitive2d/sdrole2primitive2d.cxx @@ -162,7 +162,7 @@ namespace drawinglayer::primitive2d getSdrLFSTAttribute().getShadow()); } - rVisitor.visit(aRetval); + rVisitor.visit(std::move(aRetval)); } // provide unique ID diff --git a/svx/source/svdraw/svdcrtv.cxx b/svx/source/svdraw/svdcrtv.cxx index 2aa9ad42a613..84443978a30a 100644 --- a/svx/source/svdraw/svdcrtv.cxx +++ b/svx/source/svdraw/svdcrtv.cxx @@ -143,8 +143,9 @@ void ImpSdrCreateViewExtraData::CreateAndShowOverlay(const SdrCreateView& rView, if(pObject) { const sdr::contact::ViewContact& rVC = pObject->GetViewContact(); - const drawinglayer::primitive2d::Primitive2DContainer& aSequence = rVC.getViewIndependentPrimitive2DContainer(); - std::unique_ptr<sdr::overlay::OverlayObject> pNew(new sdr::overlay::OverlayPrimitive2DSequenceObject(drawinglayer::primitive2d::Primitive2DContainer(aSequence))); + drawinglayer::primitive2d::Primitive2DContainer aSequence; + rVC.getViewIndependentPrimitive2DContainer(aSequence); + std::unique_ptr<sdr::overlay::OverlayObject> pNew(new sdr::overlay::OverlayPrimitive2DSequenceObject(std::move(aSequence))); xOverlayManager->add(*pNew); maObjects.append(std::move(pNew)); diff --git a/svx/source/svdraw/svddrgmt.cxx b/svx/source/svdraw/svddrgmt.cxx index 1bbd4cbd46d9..300ef234b5dc 100644 --- a/svx/source/svdraw/svddrgmt.cxx +++ b/svx/source/svdraw/svddrgmt.cxx @@ -173,7 +173,9 @@ drawinglayer::primitive2d::Primitive2DContainer SdrDragEntrySdrObject::createPri // use the view-independent primitive representation (without // evtl. GridOffset, that may be applied to the DragEntry individually) - return pSource->GetViewContact().getViewIndependentPrimitive2DContainer(); + drawinglayer::primitive2d::Primitive2DContainer xRetval; + pSource->GetViewContact().getViewIndependentPrimitive2DContainer(xRetval); + return xRetval; } @@ -1442,10 +1444,12 @@ void SdrDragMove::createSdrDragEntryForSdrObject(const SdrObject& rOriginal) { // use the view-independent primitive representation (without // evtl. GridOffset, that may be applied to the DragEntry individually) + drawinglayer::primitive2d::Primitive2DContainer xRetval; + rOriginal.GetViewContact().getViewIndependentPrimitive2DContainer(xRetval); addSdrDragEntry( std::unique_ptr<SdrDragEntry>( new SdrDragEntryPrimitive2DSequence( - rOriginal.GetViewContact().getViewIndependentPrimitive2DContainer()))); + std::move(xRetval)))); } diff --git a/svx/source/svdraw/svdobj.cxx b/svx/source/svdraw/svdobj.cxx index 51f65f76755f..fe43fa3ec5d4 100644 --- a/svx/source/svdraw/svdobj.cxx +++ b/svx/source/svdraw/svdobj.cxx @@ -985,7 +985,8 @@ void SdrObject::RecalcBoundRect() // Use view-independent data - we do not want any connections // to e.g. GridOffset in SdrObject-level - const drawinglayer::primitive2d::Primitive2DContainer& xPrimitives(GetViewContact().getViewIndependentPrimitive2DContainer()); + drawinglayer::primitive2d::Primitive2DContainer xPrimitives; + GetViewContact().getViewIndependentPrimitive2DContainer(xPrimitives); if(xPrimitives.empty()) return; @@ -1186,7 +1187,8 @@ basegfx::B2DPolyPolygon SdrObject::TakeContour() const // get sequence from clone const sdr::contact::ViewContact& rVC(pClone->GetViewContact()); - const drawinglayer::primitive2d::Primitive2DContainer& xSequence(rVC.getViewIndependentPrimitive2DContainer()); + drawinglayer::primitive2d::Primitive2DContainer xSequence; + rVC.getViewIndependentPrimitive2DContainer(xSequence); if(!xSequence.empty()) { @@ -2389,7 +2391,8 @@ SdrObject* SdrObject::ImpConvertToContourObj(bool bForceLineDash) { basegfx::B2DPolyPolygon aMergedLineFillPolyPolygon; basegfx::B2DPolyPolygon aMergedHairlinePolyPolygon; - const drawinglayer::primitive2d::Primitive2DContainer & xSequence(GetViewContact().getViewIndependentPrimitive2DContainer()); + drawinglayer::primitive2d::Primitive2DContainer xSequence; + GetViewContact().getViewIndependentPrimitive2DContainer(xSequence); if(!xSequence.empty()) { diff --git a/svx/source/svdraw/svdotxtr.cxx b/svx/source/svdraw/svdotxtr.cxx index e499a332400c..e4cd3b9e9fcc 100644 --- a/svx/source/svdraw/svdotxtr.cxx +++ b/svx/source/svdraw/svdotxtr.cxx @@ -294,7 +294,8 @@ SdrObjectUniquePtr SdrTextObj::ImpConvertContainedTextToSdrPathObjs(bool bToPoly } // get primitives - const drawinglayer::primitive2d::Primitive2DContainer & xSequence(GetViewContact().getViewIndependentPrimitive2DContainer()); + drawinglayer::primitive2d::Primitive2DContainer xSequence; + GetViewContact().getViewIndependentPrimitive2DContainer(xSequence); if(!xSequence.empty()) { diff --git a/svx/source/svdraw/svdxcgv.cxx b/svx/source/svdraw/svdxcgv.cxx index bdbf568c753d..53c8778d9e98 100644 --- a/svx/source/svdraw/svdxcgv.cxx +++ b/svx/source/svdraw/svdxcgv.cxx @@ -480,8 +480,10 @@ BitmapEx SdrExchangeView::GetMarkedObjBitmapEx(bool bNoVDevIfOneBmpMarked, const pSdrGrafObj->ForceSwapIn(); } + drawinglayer::primitive2d::Primitive2DContainer xRetval; + pCandidate->GetViewContact().getViewIndependentPrimitive2DContainer(xRetval); xPrimitives[a] = new drawinglayer::primitive2d::GroupPrimitive2D( - pCandidate->GetViewContact().getViewIndependentPrimitive2DContainer()); + std::move(xRetval)); } // get logic range diff --git a/svx/source/table/viewcontactoftableobj.cxx b/svx/source/table/viewcontactoftableobj.cxx index a79882e03a52..6419c5057dab 100644 --- a/svx/source/table/viewcontactoftableobj.cxx +++ b/svx/source/table/viewcontactoftableobj.cxx @@ -201,7 +201,7 @@ namespace sdr::contact return svx::frame::Style(); } - drawinglayer::primitive2d::Primitive2DContainer ViewContactOfTableObj::createViewIndependentPrimitive2DSequence() const + void ViewContactOfTableObj::createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const { const sdr::table::SdrTableObj& rTableObj = static_cast<const sdr::table::SdrTableObj&>(GetSdrObject()); const uno::Reference< css::table::XTable > xTable = rTableObj.getTable(); @@ -427,7 +427,7 @@ namespace sdr::contact } } - return aRetval; + rVisitor.visit(std::move(aRetval)); } else { @@ -447,7 +447,7 @@ namespace sdr::contact drawinglayer::primitive2d::createHiddenGeometryPrimitives2D( aObjectMatrix)); - return drawinglayer::primitive2d::Primitive2DContainer { xReference }; + rVisitor.visit(xReference); } } diff --git a/svx/source/table/viewcontactoftableobj.hxx b/svx/source/table/viewcontactoftableobj.hxx index 91a3a26e4e7f..63f45ab4505d 100644 --- a/svx/source/table/viewcontactoftableobj.hxx +++ b/svx/source/table/viewcontactoftableobj.hxx @@ -30,7 +30,7 @@ namespace sdr::contact protected: // This method is responsible for creating the graphical visualisation data derived ONLY from // the model data - virtual drawinglayer::primitive2d::Primitive2DContainer createViewIndependentPrimitive2DSequence() const override; + virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override; public: // basic constructor, used from SdrObject. diff --git a/svx/source/unodraw/unoshape.cxx b/svx/source/unodraw/unoshape.cxx index f55c4b179c6e..eed9f89f2116 100644 --- a/svx/source/unodraw/unoshape.cxx +++ b/svx/source/unodraw/unoshape.cxx @@ -709,8 +709,8 @@ uno::Any SvxShape::GetBitmap( bool bMetaFile /* = false */ ) const } else { - drawinglayer::primitive2d::Primitive2DContainer xPrimitives( - GetSdrObject()->GetViewContact().getViewIndependentPrimitive2DContainer()); + drawinglayer::primitive2d::Primitive2DContainer xPrimitives; + GetSdrObject()->GetViewContact().getViewIndependentPrimitive2DContainer(xPrimitives); if(!xPrimitives.empty()) { diff --git a/sw/source/core/draw/dcontact.cxx b/sw/source/core/draw/dcontact.cxx index cb9618c44e8b..409287f7521d 100644 --- a/sw/source/core/draw/dcontact.cxx +++ b/sw/source/core/draw/dcontact.cxx @@ -2202,7 +2202,7 @@ namespace sdr::contact else { // single object, use method from referenced object to get the Primitive2DSequence - xRetval = rReferencedObject.GetViewContact().getViewIndependentPrimitive2DContainer(); + rReferencedObject.GetViewContact().getViewIndependentPrimitive2DContainer(xRetval); } if(!xRetval.empty()) diff --git a/sw/source/core/draw/dflyobj.cxx b/sw/source/core/draw/dflyobj.cxx index 5298f1a296ba..f5d8b88ca36d 100644 --- a/sw/source/core/draw/dflyobj.cxx +++ b/sw/source/core/draw/dflyobj.cxx @@ -90,7 +90,7 @@ namespace sdr::contact * * @note ONLY based on model data */ - virtual drawinglayer::primitive2d::Primitive2DContainer createViewIndependentPrimitive2DSequence() const override; + virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override; public: /// basic constructor, used from SdrObject. @@ -102,10 +102,9 @@ namespace sdr::contact } - drawinglayer::primitive2d::Primitive2DContainer VCOfSwFlyDrawObj::createViewIndependentPrimitive2DSequence() const + void VCOfSwFlyDrawObj::createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor&) const { // currently gets not visualized, return empty sequence - return drawinglayer::primitive2d::Primitive2DContainer(); } } // end of namespace sdr::contact @@ -260,7 +259,7 @@ namespace sdr::contact * * @note ONLY based on model data */ - virtual drawinglayer::primitive2d::Primitive2DContainer createViewIndependentPrimitive2DSequence() const override; + virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override; public: /// basic constructor, used from SdrObject. @@ -281,9 +280,8 @@ namespace sdr::contact namespace sdr::contact { - drawinglayer::primitive2d::Primitive2DContainer VCOfSwVirtFlyDrawObj::createViewIndependentPrimitive2DSequence() const + void VCOfSwVirtFlyDrawObj::createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const { - drawinglayer::primitive2d::Primitive2DContainer xRetval; const SdrObject& rReferencedObject = GetSwVirtFlyDrawObj().GetReferencedObj(); if(dynamic_cast<const SwFlyDrawObj*>( &rReferencedObject) != nullptr) @@ -299,12 +297,10 @@ namespace sdr::contact GetSwVirtFlyDrawObj(), aOuterRange)); - xRetval = drawinglayer::primitive2d::Primitive2DContainer { xPrimitive }; + rVisitor.visit(xPrimitive); } } - - return xRetval; - } + } } // end of namespace sdr::contact
