summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolan.mcnamara@collabora.com>2024-10-17 16:12:45 +0100
committerCaolán McNamara <caolan.mcnamara@collabora.com>2024-10-17 22:16:40 +0200
commit819cae19dbdf45188a004136dc3c5a0a6cdec1b8 (patch)
tree0b249408a1dc9881ab50108c77749ee6512adf31
parent9250f27dadfc2d73e2f3600052a783a0e82f370d (diff)
tdf#159007 Revert "optimization to skip SdrObject::GetViewContent()"
This reverts commit 313be607903a381830600c0a60b2e299fcaec685. Change-Id: I2dc7489ecc302473edd763fd0e4d6784fadc9bb4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/175094 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
-rw-r--r--include/svx/sdr/contact/viewcontact.hxx4
-rw-r--r--include/svx/sdr/contact/viewobjectcontactofsdrobj.hxx2
-rw-r--r--svx/inc/sdr/contact/viewcontactofsdrpage.hxx7
-rw-r--r--svx/source/sdr/contact/viewcontactofsdrpage.cxx29
-rw-r--r--svx/source/sdr/contact/viewobjectcontactofsdrobj.cxx9
5 files changed, 5 insertions, 46 deletions
diff --git a/include/svx/sdr/contact/viewcontact.hxx b/include/svx/sdr/contact/viewcontact.hxx
index 00b7f6253eae..a3ddcf760a58 100644
--- a/include/svx/sdr/contact/viewcontact.hxx
+++ b/include/svx/sdr/contact/viewcontact.hxx
@@ -153,9 +153,7 @@ public:
// It is always possible to delete the VOCs, these are re-created on demand
void flushViewObjectContacts(bool bWithHierarchy = true);
- // helper around getPrimitive2DSequenceHierarchy to enable a given implementation
- // to optimize getting a Primitive2DSequenceHierarchy for a child of index a
- virtual void getPrimitive2DSequenceHierarchyOfIndex(
+ void getPrimitive2DSequenceHierarchyOfIndex(
sal_uInt32 a, DisplayInfo& rDisplayInfo, ObjectContact& rObjectContact,
drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor);
};
diff --git a/include/svx/sdr/contact/viewobjectcontactofsdrobj.hxx b/include/svx/sdr/contact/viewobjectcontactofsdrobj.hxx
index 0ea6f307a22c..5989559c758e 100644
--- a/include/svx/sdr/contact/viewobjectcontactofsdrobj.hxx
+++ b/include/svx/sdr/contact/viewobjectcontactofsdrobj.hxx
@@ -56,8 +56,6 @@ public:
This method cares for this, by retrieving the very original OutputDevice.
*/
const OutputDevice* getPageViewOutputDevice() const;
-
- static bool isObjectVisibleOnAnyLayer(const SdrObject& rObject, const SdrLayerIDSet& rLayers);
};
}
diff --git a/svx/inc/sdr/contact/viewcontactofsdrpage.hxx b/svx/inc/sdr/contact/viewcontactofsdrpage.hxx
index 0f7143aebcda..98d6f577e86e 100644
--- a/svx/inc/sdr/contact/viewcontactofsdrpage.hxx
+++ b/svx/inc/sdr/contact/viewcontactofsdrpage.hxx
@@ -113,19 +113,12 @@ class ViewContactOfPageHierarchy final : public ViewContactOfPageSubObject
virtual ViewObjectContact& CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact) override;
virtual void createViewIndependentPrimitive2DSequence(drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const override;
- SdrObject& GetSdrObject(sal_uInt32 nIndex) const;
-
public:
explicit ViewContactOfPageHierarchy(ViewContactOfSdrPage& rParentViewContactOfSdrPage);
virtual ~ViewContactOfPageHierarchy() override;
virtual sal_uInt32 GetObjectCount() const override;
virtual ViewContact& GetViewContact(sal_uInt32 nIndex) const override;
-
- // optimize version of parent impl to quicker skip hidden SdrObjects
- virtual void getPrimitive2DSequenceHierarchyOfIndex(
- sal_uInt32 a, DisplayInfo& rDisplayInfo, ObjectContact& rObjectContact,
- drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) override;
};
class ViewContactOfGrid final : public ViewContactOfPageSubObject
diff --git a/svx/source/sdr/contact/viewcontactofsdrpage.cxx b/svx/source/sdr/contact/viewcontactofsdrpage.cxx
index c07bcffe762d..dee5ab7865db 100644
--- a/svx/source/sdr/contact/viewcontactofsdrpage.cxx
+++ b/svx/source/sdr/contact/viewcontactofsdrpage.cxx
@@ -18,7 +18,6 @@
*/
#include <sdr/contact/viewcontactofsdrpage.hxx>
-#include <svx/sdr/contact/displayinfo.hxx>
#include <svx/sdr/contact/viewobjectcontact.hxx>
#include <svx/svdpage.hxx>
#include <sdr/contact/viewobjectcontactofsdrpage.hxx>
@@ -28,7 +27,6 @@
#include <tools/debug.hxx>
#include <vcl/svapp.hxx>
#include <svx/sdr/contact/objectcontact.hxx>
-#include <svx/sdr/contact/viewobjectcontactofsdrobj.hxx>
#include <drawinglayer/primitive2d/backgroundcolorprimitive2d.hxx>
#include <drawinglayer/primitive2d/PolygonHairlinePrimitive2D.hxx>
#include <drawinglayer/primitive2d/PolyPolygonColorPrimitive2D.hxx>
@@ -402,34 +400,11 @@ sal_uInt32 ViewContactOfPageHierarchy::GetObjectCount() const
return getPage().GetObjCount();
}
-SdrObject& ViewContactOfPageHierarchy::GetSdrObject(sal_uInt32 nIndex) const
+ViewContact& ViewContactOfPageHierarchy::GetViewContact(sal_uInt32 nIndex) const
{
SdrObject* pObj = getPage().GetObj(nIndex);
assert(pObj && "ViewContactOfPageHierarchy::GetViewContact: Corrupt SdrObjList (!)");
- return *pObj;
-}
-
-ViewContact& ViewContactOfPageHierarchy::GetViewContact(sal_uInt32 nIndex) const
-{
- return GetSdrObject(nIndex).GetViewContact();
-}
-
-void ViewContactOfPageHierarchy::getPrimitive2DSequenceHierarchyOfIndex(
- sal_uInt32 nIndex, DisplayInfo& rDisplayInfo, ObjectContact& rObjectContact,
- drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor)
-{
- SdrObject& rSdrObject(GetSdrObject(nIndex));
-
- // optimization over parent impl to skip SdrObject::GetViewContent(), etc if the SdrObject isn't
- // shown on the target layer. ViewObjectContactOfSdrobject::getPrimitive2DSequenceHierarchy does
- // the same check, but after a set of allocations which is expensive in the case of SdrCaptions
- // in a calc internal layer where there can be thousands of such objects.
- if (!ViewObjectContactOfSdrObj::isObjectVisibleOnAnyLayer(rSdrObject, rDisplayInfo.GetProcessLayers()))
- return;
-
- ViewContact& rViewContact = rSdrObject.GetViewContact();
- const ViewObjectContact& rCandidate(rViewContact.GetViewObjectContact(rObjectContact));
- rCandidate.getPrimitive2DSequenceHierarchy(rDisplayInfo, rVisitor);
+ return pObj->GetViewContact();
}
ViewObjectContact& ViewContactOfGrid::CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact)
diff --git a/svx/source/sdr/contact/viewobjectcontactofsdrobj.cxx b/svx/source/sdr/contact/viewobjectcontactofsdrobj.cxx
index fc132946883a..4338a6f98fac 100644
--- a/svx/source/sdr/contact/viewobjectcontactofsdrobj.cxx
+++ b/svx/source/sdr/contact/viewobjectcontactofsdrobj.cxx
@@ -50,14 +50,9 @@ ViewObjectContactOfSdrObj::~ViewObjectContactOfSdrObj()
{
}
-bool ViewObjectContactOfSdrObj::isObjectVisibleOnAnyLayer(const SdrObject& rSdrObject, const SdrLayerIDSet& rLayers)
+bool ViewObjectContactOfSdrObj::isPrimitiveVisibleOnAnyLayer(const SdrLayerIDSet& aLayers) const
{
- return rLayers.IsSet(rSdrObject.GetLayer());
-}
-
-bool ViewObjectContactOfSdrObj::isPrimitiveVisibleOnAnyLayer(const SdrLayerIDSet& rLayers) const
-{
- return ViewObjectContactOfSdrObj::isObjectVisibleOnAnyLayer(getSdrObject(), rLayers);
+ return aLayers.IsSet(getSdrObject().GetLayer());
}
bool ViewObjectContactOfSdrObj::isPrimitiveVisible(const DisplayInfo& rDisplayInfo) const