diff options
author | Caolán McNamara <caolan.mcnamara@collabora.com> | 2024-10-17 16:12:45 +0100 |
---|---|---|
committer | Caolán McNamara <caolan.mcnamara@collabora.com> | 2024-10-17 22:16:40 +0200 |
commit | 819cae19dbdf45188a004136dc3c5a0a6cdec1b8 (patch) | |
tree | 0b249408a1dc9881ab50108c77749ee6512adf31 | |
parent | 9250f27dadfc2d73e2f3600052a783a0e82f370d (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.hxx | 4 | ||||
-rw-r--r-- | include/svx/sdr/contact/viewobjectcontactofsdrobj.hxx | 2 | ||||
-rw-r--r-- | svx/inc/sdr/contact/viewcontactofsdrpage.hxx | 7 | ||||
-rw-r--r-- | svx/source/sdr/contact/viewcontactofsdrpage.cxx | 29 | ||||
-rw-r--r-- | svx/source/sdr/contact/viewobjectcontactofsdrobj.cxx | 9 |
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 |