include/svx/sdr/contact/viewobjectcontact.hxx | 2 svx/source/sdr/contact/viewobjectcontact.cxx | 7 --- svx/source/sdr/contact/viewobjectcontactofgroup.cxx | 23 ---------- svx/source/sdr/contact/viewobjectcontactofsdrpage.cxx | 38 +----------------- 4 files changed, 8 insertions(+), 62 deletions(-)
New commits: commit 085f15acfdb96155011d60b6127ea6f6e4a9a263 Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Thu Dec 2 11:28:27 2021 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Fri Dec 3 08:40:23 2021 +0100 no need to create Primitive2DContainer here we can just use the visitor API and skip a whole bunch of object creation Change-Id: If3dfa2fc1811e708963b8e6ecf4af6508b9f2a23 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126216 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/include/svx/sdr/contact/viewobjectcontact.hxx b/include/svx/sdr/contact/viewobjectcontact.hxx index dd949cf075c7..453cfb2d90ea 100644 --- a/include/svx/sdr/contact/viewobjectcontact.hxx +++ b/include/svx/sdr/contact/viewobjectcontact.hxx @@ -124,7 +124,7 @@ public: virtual void getPrimitive2DSequenceHierarchy(DisplayInfo& rDisplayInfo, drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const; // just process the sub-hierarchy, used as tooling from getPrimitive2DSequenceHierarchy - drawinglayer::primitive2d::Primitive2DContainer getPrimitive2DSequenceSubHierarchy(DisplayInfo& rDisplayInfo) const; + void getPrimitive2DSequenceSubHierarchy(DisplayInfo& rDisplayInfo, drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const; // interface to support GridOffset for non-linear ViewToDevice transformation (calc) const basegfx::B2DVector& getGridOffset() const; diff --git a/svx/source/sdr/contact/viewobjectcontact.cxx b/svx/source/sdr/contact/viewobjectcontact.cxx index 22eb52a99af4..5da24f86a54d 100644 --- a/svx/source/sdr/contact/viewobjectcontact.cxx +++ b/svx/source/sdr/contact/viewobjectcontact.cxx @@ -425,19 +425,16 @@ void ViewObjectContact::getPrimitive2DSequenceHierarchy(DisplayInfo& rDisplayInf rVisitor.append(xRetval); } -drawinglayer::primitive2d::Primitive2DContainer ViewObjectContact::getPrimitive2DSequenceSubHierarchy(DisplayInfo& rDisplayInfo) const +void ViewObjectContact::getPrimitive2DSequenceSubHierarchy(DisplayInfo& rDisplayInfo, drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const { const sal_uInt32 nSubHierarchyCount(GetViewContact().GetObjectCount()); - drawinglayer::primitive2d::Primitive2DContainer xSeqRetval; for(sal_uInt32 a(0); a < nSubHierarchyCount; a++) { const ViewObjectContact& rCandidate(GetViewContact().GetViewContact(a).GetViewObjectContact(GetObjectContact())); - rCandidate.getPrimitive2DSequenceHierarchy(rDisplayInfo, xSeqRetval); + rCandidate.getPrimitive2DSequenceHierarchy(rDisplayInfo, rVisitor); } - - return xSeqRetval; } // Support getting a GridOffset per object and view for non-linear ViewToDevice diff --git a/svx/source/sdr/contact/viewobjectcontactofgroup.cxx b/svx/source/sdr/contact/viewobjectcontactofgroup.cxx index a8465df9d587..8469a00c1e45 100644 --- a/svx/source/sdr/contact/viewobjectcontactofgroup.cxx +++ b/svx/source/sdr/contact/viewobjectcontactofgroup.cxx @@ -41,8 +41,6 @@ namespace sdr::contact void ViewObjectContactOfGroup::getPrimitive2DSequenceHierarchy(DisplayInfo& rDisplayInfo, drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const { - drawinglayer::primitive2d::Primitive2DContainer xRetval; - // check model-view visibility if(!isPrimitiveVisible(rDisplayInfo)) return; @@ -60,30 +58,13 @@ namespace sdr::contact rDisplayInfo.ClearGhostedDrawMode(); } - // create object hierarchy - xRetval = getPrimitive2DSequenceSubHierarchy(rDisplayInfo); - - if(!xRetval.empty()) - { - // get ranges - const drawinglayer::geometry::ViewInformation2D& rViewInformation2D(GetObjectContact().getViewInformation2D()); - const ::basegfx::B2DRange aObjectRange(xRetval.getB2DRange(rViewInformation2D)); - const basegfx::B2DRange& aViewRange(rViewInformation2D.getViewport()); - - // check geometrical visibility - if(!aViewRange.isEmpty() && !aViewRange.overlaps(aObjectRange)) - { - // not visible, release - xRetval.clear(); - } - } + // visit object hierarchy + getPrimitive2DSequenceSubHierarchy(rDisplayInfo, rVisitor); if(bDoGhostedDisplaying) { rDisplayInfo.SetGhostedDrawMode(); } - - rVisitor.append(xRetval); } else { diff --git a/svx/source/sdr/contact/viewobjectcontactofsdrpage.cxx b/svx/source/sdr/contact/viewobjectcontactofsdrpage.cxx index eca656254aa2..8945277720ea 100644 --- a/svx/source/sdr/contact/viewobjectcontactofsdrpage.cxx +++ b/svx/source/sdr/contact/viewobjectcontactofsdrpage.cxx @@ -376,22 +376,7 @@ void ViewObjectContactOfPageHierarchy::getPrimitive2DSequenceHierarchy(DisplayIn if(!nSubHierarchyCount) return; - drawinglayer::primitive2d::Primitive2DContainer xRetval = getPrimitive2DSequenceSubHierarchy(rDisplayInfo); - - if(xRetval.empty()) - return; - - // get ranges - const drawinglayer::geometry::ViewInformation2D& rViewInformation2D(GetObjectContact().getViewInformation2D()); - const basegfx::B2DRange aObjectRange(xRetval.getB2DRange(rViewInformation2D)); - const basegfx::B2DRange& aViewRange(rViewInformation2D.getViewport()); - - // check geometrical visibility - if(!aViewRange.isEmpty() && !aViewRange.overlaps(aObjectRange)) - // not visible, release - return; - - rVisitor.append(xRetval); + getPrimitive2DSequenceSubHierarchy(rDisplayInfo, rVisitor); } ViewObjectContactOfPageGrid::ViewObjectContactOfPageGrid(ObjectContact& rObjectContact, ViewContact& rViewContact) @@ -596,30 +581,13 @@ void ViewObjectContactOfSdrPage::getPrimitive2DSequenceHierarchy(DisplayInfo& rD rDisplayInfo.ClearGhostedDrawMode(); } - // create object hierarchy - drawinglayer::primitive2d::Primitive2DContainer xRetval = getPrimitive2DSequenceSubHierarchy(rDisplayInfo); - - if(!xRetval.empty()) - { - // get ranges - const drawinglayer::geometry::ViewInformation2D& rViewInformation2D(GetObjectContact().getViewInformation2D()); - const basegfx::B2DRange aObjectRange(xRetval.getB2DRange(rViewInformation2D)); - const basegfx::B2DRange& aViewRange(rViewInformation2D.getViewport()); - - // check geometrical visibility - if(!aViewRange.isEmpty() && !aViewRange.overlaps(aObjectRange)) - { - // not visible, release - xRetval.clear(); - } - } + // visit object hierarchy + getPrimitive2DSequenceSubHierarchy(rDisplayInfo, rVisitor); if(bDoGhostedDisplaying) { rDisplayInfo.SetGhostedDrawMode(); } - - rVisitor.append(xRetval); } }