include/svx/sdr/contact/viewcontact.hxx | 4 -- include/svx/sdr/contact/viewobjectcontactofsdrobj.hxx | 2 - svx/inc/sdr/contact/viewcontactofsdrpage.hxx | 7 ---- svx/source/sdr/contact/viewcontactofsdrpage.cxx | 29 +----------------- svx/source/sdr/contact/viewobjectcontactofsdrobj.cxx | 9 +---- 5 files changed, 5 insertions(+), 46 deletions(-)
New commits: commit 7fdf64f6e5c30dff5caea27ea92bee98137cce27 Author: Caolán McNamara <caolan.mcnam...@collabora.com> AuthorDate: Thu Oct 17 16:12:45 2024 +0100 Commit: Xisco Fauli <xiscofa...@libreoffice.org> CommitDate: Thu Oct 17 20:33:32 2024 +0200 tdf#159007 Revert "optimization to skip SdrObject::GetViewContent()" This reverts commit 313be607903a381830600c0a60b2e299fcaec685. Change-Id: I2dc7489ecc302473edd763fd0e4d6784fadc9bb4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/175044 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> 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 0cc353a5b65c..f87906240338 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