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);
 }
 
 }

Reply via email to