tdf#54857 elide more dynamic_cast

Change-Id: I0cbdb2ee46600559d9a37f09b574d484e72a0e0d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/142133
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
diff --git a/chart2/source/controller/drawinglayer/DrawViewWrapper.cxx b/chart2/source/controller/drawinglayer/DrawViewWrapper.cxx
index 3918a29..cb63c2d 100644
--- a/chart2/source/controller/drawinglayer/DrawViewWrapper.cxx
+++ b/chart2/source/controller/drawinglayer/DrawViewWrapper.cxx
@@ -168,7 +168,7 @@ SdrObject* DrawViewWrapper::getHitObject( const Point& rPnt ) const

        //3d objects need a special treatment
        //because the simple PickObj method is not accurate in this case for performance reasons
        E3dObject* pE3d = dynamic_cast< E3dObject* >(pRet);
        E3dObject* pE3d = DynCastE3dObject(pRet);
        if( pE3d )
        {
            E3dScene* pScene(pE3d->getRootE3dSceneFromE3dObject());
diff --git a/chart2/source/controller/main/ChartController_Window.cxx b/chart2/source/controller/main/ChartController_Window.cxx
index 41cb6e5..9129500 100644
--- a/chart2/source/controller/main/ChartController_Window.cxx
+++ b/chart2/source/controller/main/ChartController_Window.cxx
@@ -844,7 +844,7 @@ void ChartController::execute_MouseButtonUp( const MouseEvent& rMEvt )
                        awt::Size aPageSize( ChartModelHelper::getPageSize( getChartModel() ) );
                        tools::Rectangle aPageRect( 0,0,aPageSize.Width,aPageSize.Height );

                        const E3dObject* pE3dObject(dynamic_cast< const E3dObject*>(pObj));
                        const E3dObject* pE3dObject(DynCastE3dObject(pObj));
                        if(nullptr != pE3dObject)
                        {
                            E3dScene* pScene(pE3dObject->getRootE3dSceneFromE3dObject());
diff --git a/chart2/source/controller/main/SelectionHelper.cxx b/chart2/source/controller/main/SelectionHelper.cxx
index 177d7ac..46f6483 100644
--- a/chart2/source/controller/main/SelectionHelper.cxx
+++ b/chart2/source/controller/main/SelectionHelper.cxx
@@ -465,7 +465,7 @@ SelectionHelper::~SelectionHelper()
bool SelectionHelper::getFrameDragSingles()
{
    //true == green == surrounding handles
    return dynamic_cast<const E3dObject*>( m_pSelectedObj) == nullptr;
    return DynCastE3dObject( m_pSelectedObj) == nullptr;
}

SdrObject* SelectionHelper::getMarkHandlesObject( SdrObject* pObj )
@@ -532,7 +532,7 @@ E3dScene* SelectionHelper::getSceneToRotate( SdrObject* pObj )

    if(pObj)
    {
        pRotateable = dynamic_cast<E3dObject*>(pObj);
        pRotateable = DynCastE3dObject(pObj);
        if( !pRotateable )
        {
            SolarMutexGuard aSolarGuard;
@@ -542,8 +542,7 @@ E3dScene* SelectionHelper::getSceneToRotate( SdrObject* pObj )
                SdrObjListIter aIterator(pSubList, SdrIterMode::DeepWithGroups);
                while( aIterator.IsMore() && !pRotateable )
                {
                    SdrObject* pSubObj = aIterator.Next();
                    pRotateable = dynamic_cast<E3dObject*>(pSubObj);
                    pRotateable = DynCastE3dObject(aIterator.Next());
                }
            }
        }
diff --git a/include/svx/svdobj.hxx b/include/svx/svdobj.hxx
index 0f53f15..d2b1ae4 100644
--- a/include/svx/svdobj.hxx
+++ b/include/svx/svdobj.hxx
@@ -41,6 +41,7 @@

class SfxBroadcaster;
class AutoTimer;
class E3dObject;
class E3dScene;
class OutlinerParaObject;
class Outliner;
@@ -999,6 +1000,8 @@ private:

SVXCORE_DLLPUBLIC E3dScene* DynCastE3dScene(SdrObject*);
inline const E3dScene* DynCastE3dScene(const SdrObject* p) { return DynCastE3dScene(const_cast<SdrObject*>(p)); }
SVXCORE_DLLPUBLIC E3dObject* DynCastE3dObject(SdrObject*);
inline const E3dObject* DynCastE3dObject(const SdrObject* p) { return DynCastE3dObject(const_cast<SdrObject*>(p)); }


struct SdrObjCreatorParams
diff --git a/sd/source/ui/func/fudraw.cxx b/sd/source/ui/func/fudraw.cxx
index 9b09a98..06230fa 100644
--- a/sd/source/ui/func/fudraw.cxx
+++ b/sd/source/ui/func/fudraw.cxx
@@ -517,7 +517,7 @@ void FuDraw::ForcePointer(const MouseEvent* pMEvt)
                // wouldn't be possible per default.
                const SdrMarkList& rMarkList = mpView->GetMarkedObjectList();
                SdrObject* pObject = rMarkList.GetMark(0)->GetMarkedSdrObj();
                if ((dynamic_cast<const E3dObject* >(pObject) !=  nullptr) && (rMarkList.GetMarkCount() == 1))
                if (DynCastE3dObject(pObject) && (rMarkList.GetMarkCount() == 1))
                {
                    mpWindow->SetPointer(PointerStyle::Rotate);
                    bDefPointer = false;     // Otherwise it'll be called Joe's routine and the mousepointer will reconfigurate again
diff --git a/sd/source/ui/view/drviewse.cxx b/sd/source/ui/view/drviewse.cxx
index 59142ad..b318339 100644
--- a/sd/source/ui/view/drviewse.cxx
+++ b/sd/source/ui/view/drviewse.cxx
@@ -355,7 +355,7 @@ void DrawViewShell::FuPermanent(SfxRequest& rReq)

                while (i < nMarkCnt && !b3DObjMarked)
                {
                    if (nullptr != dynamic_cast< E3dObject *>( rMarkList.GetMark(i)->GetMarkedSdrObj() ))
                    if (DynCastE3dObject( rMarkList.GetMark(i)->GetMarkedSdrObj() ))
                    {
                        b3DObjMarked = true;
                    }
diff --git a/sd/source/ui/view/sdview.cxx b/sd/source/ui/view/sdview.cxx
index a2483fa..5007f6d 100644
--- a/sd/source/ui/view/sdview.cxx
+++ b/sd/source/ui/view/sdview.cxx
@@ -976,7 +976,7 @@ bool View::IsMorphingAllowed() const
             ( nKind1 != SdrObjKind::Graphic && nKind2 != SdrObjKind::Graphic ) &&
             ( nKind1 != SdrObjKind::OLE2 && nKind2 != SdrObjKind::OLE2 ) &&
             ( nKind1 != SdrObjKind::Caption && nKind2 !=  SdrObjKind::Caption ) &&
             dynamic_cast< const E3dObject *>( pObj1 ) == nullptr && dynamic_cast< const E3dObject *>( pObj2 ) ==  nullptr )
             DynCastE3dObject( pObj1 ) == nullptr && DynCastE3dObject( pObj2 ) ==  nullptr )
        {
            SfxItemSetFixed<XATTR_FILLSTYLE, XATTR_FILLSTYLE> aSet1( mrDoc.GetPool() );
            SfxItemSetFixed<XATTR_FILLSTYLE, XATTR_FILLSTYLE> aSet2( mrDoc.GetPool() );
diff --git a/sd/source/ui/view/sdview3.cxx b/sd/source/ui/view/sdview3.cxx
index 0050fb8..f96cd77 100644
--- a/sd/source/ui/view/sdview3.cxx
+++ b/sd/source/ui/view/sdview3.cxx
@@ -813,7 +813,7 @@ bool View::InsertData( const TransferableDataHelper& rDataHelper,

                            pPickObj->SetMergedItemSetAndBroadcast( aSet );

                            if( dynamic_cast< E3dObject *>( pPickObj ) !=  nullptr && dynamic_cast< E3dObject *>( pObj ) !=  nullptr )
                            if( DynCastE3dObject( pPickObj ) && DynCastE3dObject( pObj ) )
                            {
                                // handle 3D attribute in addition
                                SfxItemSetFixed<SID_ATTR_3D_START, SID_ATTR_3D_END> aNewSet( mrDoc.GetPool() );
diff --git a/svx/source/engine3d/dragmt3d.cxx b/svx/source/engine3d/dragmt3d.cxx
index ef5a7b6..4a8f9ee 100644
--- a/svx/source/engine3d/dragmt3d.cxx
+++ b/svx/source/engine3d/dragmt3d.cxx
@@ -55,7 +55,7 @@ E3dDragMethod::E3dDragMethod (
        // for non-visible 3D objects fallback to wireframe interaction
        for(size_t nObjs = 0; nObjs < nCnt; ++nObjs)
        {
            E3dObject* pE3dObj = dynamic_cast< E3dObject* >(rMark.GetMark(nObjs)->GetMarkedSdrObj());
            E3dObject* pE3dObj = DynCastE3dObject(rMark.GetMark(nObjs)->GetMarkedSdrObj());

            if(pE3dObj)
            {
@@ -70,7 +70,7 @@ E3dDragMethod::E3dDragMethod (

    for(size_t nObjs = 0; nObjs < nCnt; ++nObjs)
    {
        E3dObject* pE3dObj = dynamic_cast< E3dObject* >(rMark.GetMark(nObjs)->GetMarkedSdrObj());
        E3dObject* pE3dObj = DynCastE3dObject(rMark.GetMark(nObjs)->GetMarkedSdrObj());

        if(pE3dObj)
        {
diff --git a/svx/source/engine3d/e3dsceneupdater.cxx b/svx/source/engine3d/e3dsceneupdater.cxx
index a72b412..d66dd9a 100644
--- a/svx/source/engine3d/e3dsceneupdater.cxx
+++ b/svx/source/engine3d/e3dsceneupdater.cxx
@@ -28,7 +28,7 @@ E3DModifySceneSnapRectUpdater::E3DModifySceneSnapRectUpdater(const SdrObject* pO
:   mpScene(nullptr)
{
    // Secure old 3D transformation stack before modification
    const E3dObject* pE3dObject = dynamic_cast< const E3dObject* >(pObject);
    const E3dObject* pE3dObject = DynCastE3dObject(pObject);
    if(!pE3dObject)
        return;

diff --git a/svx/source/engine3d/scene3d.cxx b/svx/source/engine3d/scene3d.cxx
index f07fa7e..7a886fa 100644
--- a/svx/source/engine3d/scene3d.cxx
+++ b/svx/source/engine3d/scene3d.cxx
@@ -651,7 +651,7 @@ void E3dScene::RecalcSnapRect()

        for(size_t a = 0; a < GetObjCount(); ++a)
        {
            E3dObject* pCandidate(dynamic_cast< E3dObject* >(GetObj(a)));
            E3dObject* pCandidate(DynCastE3dObject(GetObj(a)));

            if(pCandidate)
            {
@@ -729,7 +729,7 @@ void E3dScene::SetSelected(bool bNew)

    for(size_t a(0); a < GetObjCount(); a++)
    {
        E3dObject* pCandidate(dynamic_cast< E3dObject* >(GetObj(a)));
        E3dObject* pCandidate(DynCastE3dObject(GetObj(a)));

        if(pCandidate)
        {
@@ -741,7 +741,7 @@ void E3dScene::SetSelected(bool bNew)
void E3dScene::NbcInsertObject(SdrObject* pObj, size_t nPos)
{
    // Is it even a 3D object?
    if(nullptr != dynamic_cast< const E3dObject* >(pObj))
    if(DynCastE3dObject(pObj))
    {
        // Normal 3D object, insert means call parent
        SdrObjList::NbcInsertObject(pObj, nPos);
@@ -760,7 +760,7 @@ void E3dScene::NbcInsertObject(SdrObject* pObj, size_t nPos)
void E3dScene::InsertObject(SdrObject* pObj, size_t nPos)
{
    // Is it even a 3D object?
    if(nullptr != dynamic_cast< const E3dObject* >(pObj))
    if(DynCastE3dObject(pObj))
    {
        // call parent
        SdrObjList::InsertObject(pObj, nPos);
@@ -805,7 +805,7 @@ void E3dScene::SetBoundAndSnapRectsDirty(bool bNotMyself, bool bRecursive)

    for(size_t a = 0; a < GetObjCount(); ++a)
    {
        E3dObject* pCandidate = dynamic_cast< E3dObject* >(GetObj(a));
        E3dObject* pCandidate = DynCastE3dObject(GetObj(a));

        if(pCandidate)
        {
@@ -821,7 +821,7 @@ void E3dScene::NbcSetLayer(SdrLayerID nLayer)

    for(size_t a = 0; a < GetObjCount(); ++a)
    {
        E3dObject* pCandidate = dynamic_cast< E3dObject* >(GetObj(a));
        E3dObject* pCandidate = DynCastE3dObject(GetObj(a));

        if(pCandidate)
        {
@@ -840,7 +840,7 @@ void E3dScene::handlePageChange(SdrPage* pOldPage, SdrPage* pNewPage)

    for(size_t a(0); a < GetObjCount(); a++)
    {
        E3dObject* pCandidate = dynamic_cast< E3dObject* >(GetObj(a));
        E3dObject* pCandidate = DynCastE3dObject(GetObj(a));

        if(pCandidate)
        {
@@ -865,7 +865,7 @@ basegfx::B3DRange E3dScene::RecalcBoundVolume() const

    for(size_t a = 0; a < nObjCnt; ++a)
    {
        const E3dObject* p3DObject = dynamic_cast< const E3dObject* >(GetObj(a));
        const E3dObject* p3DObject = DynCastE3dObject(GetObj(a));

        if(p3DObject)
        {
@@ -885,7 +885,7 @@ void E3dScene::SetTransformChanged()

    for(size_t a = 0; a < GetObjCount(); ++a)
    {
        E3dObject* pCandidate = dynamic_cast< E3dObject* >(GetObj(a));
        E3dObject* pCandidate = DynCastE3dObject(GetObj(a));

        if(pCandidate)
        {
diff --git a/svx/source/engine3d/view3d.cxx b/svx/source/engine3d/view3d.cxx
index a7bd239..86a1b15 100644
--- a/svx/source/engine3d/view3d.cxx
+++ b/svx/source/engine3d/view3d.cxx
@@ -230,7 +230,7 @@ void E3dView::DrawMarkedObj(OutputDevice& rOut) const
            }
        }
        // Reset all selection flags
        if(auto p3dObject = dynamic_cast< const E3dObject*>(pObj))
        if(auto p3dObject = DynCastE3dObject(pObj))
        {
            pScene = p3dObject->getRootE3dSceneFromE3dObject();

@@ -263,7 +263,7 @@ void E3dView::DrawMarkedObj(OutputDevice& rOut) const
        for(size_t nObjs = 0; nObjs < nCnt; ++nObjs)
        {
            SdrObject *pObj = GetMarkedObjectByIndex(nObjs);
            if(auto p3DObj = dynamic_cast<E3dObject*>(pObj))
            if(auto p3DObj = DynCastE3dObject(pObj))
            {
                // Select object
                p3DObj->SetSelected(true);
@@ -331,7 +331,7 @@ std::unique_ptr<SdrModel> E3dView::CreateMarkedObjModel() const
                }
            }

        if(auto p3dObject = dynamic_cast< const E3dObject*>(pObj))
        if(auto p3dObject = DynCastE3dObject(pObj))
        {
            // reset all selection flags at 3D objects
            pScene = p3dObject->getRootE3dSceneFromE3dObject();
@@ -377,7 +377,7 @@ std::unique_ptr<SdrModel> E3dView::CreateMarkedObjModel() const
    {
        SdrObject *pObj = aOldML.GetMark(nObjs)->GetMarkedSdrObj();

        if(auto p3dObject = dynamic_cast< E3dObject* >(pObj))
        if(auto p3dObject = DynCastE3dObject(pObj))
        {
            pScene = p3dObject->getRootE3dSceneFromE3dObject();

@@ -611,7 +611,7 @@ void E3dView::ImpIsConvertTo3DPossible(SdrObject const * pObj, bool& rAny3D,
    if(!pObj)
        return;

    if(dynamic_cast< const E3dObject* >(pObj) !=  nullptr)
    if(DynCastE3dObject(pObj))
    {
        rAny3D = true;
    }
@@ -1176,7 +1176,7 @@ bool E3dView::BegDragObj(const Point& rPnt, OutputDevice* pOut,
                        if( pScene->getRootE3dSceneFromE3dObject() == pObj )
                            bThereAreRootScenes = true;

                    if(dynamic_cast< const E3dObject* >(pObj) !=  nullptr)
                    if(DynCastE3dObject(pObj))
                    {
                        bThereAre3DObjects = true;
                    }
@@ -1481,7 +1481,7 @@ bool E3dView::IsBreak3DObjPossible() const
        {
            SdrObject* pObj = GetMarkedObjectByIndex(i);

            if (auto p3dObject = dynamic_cast< E3dObject* >(pObj))
            if (auto p3dObject = DynCastE3dObject(pObj))
            {
                if(!p3dObject->IsBreakObjPossible())
                    return false;
@@ -1562,7 +1562,7 @@ void E3dView::CheckPossibilities()
        SdrObject *pObj = GetMarkedObjectByIndex(nObjs);
        if(dynamic_cast< const E3dCompoundObject* >(pObj))
            bCompound = true;
        if(dynamic_cast< const E3dObject* >(pObj))
        if(DynCastE3dObject(pObj))
            b3DObject = true;
    }

diff --git a/svx/source/form/fmshimp.cxx b/svx/source/form/fmshimp.cxx
index 4950561..04390bd 100644
--- a/svx/source/form/fmshimp.cxx
+++ b/svx/source/form/fmshimp.cxx
@@ -551,7 +551,7 @@ static bool isControlList(const SdrMarkList& rMarkList)
    for (size_t i = 0; i < nMarkCount && bControlList; ++i)
    {
        SdrObject *pObj = rMarkList.GetMark(i)->GetMarkedSdrObj();
        E3dObject* pAs3DObject = dynamic_cast< E3dObject* >( pObj);
        E3dObject* pAs3DObject = DynCastE3dObject( pObj);
        // E3dObject's do not contain any 2D-objects (by definition)
        // we need this extra check here : an E3dObject->IsGroupObject says "YES", but an SdrObjListIter working
        // with an E3dObject doesn't give me any Nodes (E3dObject has a sub list, but no members in that list,
diff --git a/svx/source/sdr/contact/viewcontactofsdrobjcustomshape.cxx b/svx/source/sdr/contact/viewcontactofsdrobjcustomshape.cxx
index e03dfce..8675704 100644
--- a/svx/source/sdr/contact/viewcontactofsdrobjcustomshape.cxx
+++ b/svx/source/sdr/contact/viewcontactofsdrobjcustomshape.cxx
@@ -136,7 +136,7 @@ namespace sdr::contact
                // (only with complex CustomShapes with multiple representation SdrObjects and
                // only visible when transparency involved, but runtime-expensive).
                // Thus: Just do not iterate, will check behaviour deeply.
                b3DShape = (nullptr != dynamic_cast< const E3dObject* >(pSdrObjRepresentation));
                b3DShape = (nullptr != DynCastE3dObject(pSdrObjRepresentation));
                pSdrObjRepresentation->GetViewContact().getViewIndependentPrimitive2DContainer(xGroup);
            }

diff --git a/svx/source/svdraw/clonelist.cxx b/svx/source/svdraw/clonelist.cxx
index 840ea335..1fe6bd9 100644
--- a/svx/source/svdraw/clonelist.cxx
+++ b/svx/source/svdraw/clonelist.cxx
@@ -34,10 +34,10 @@ void CloneList::AddPair(const SdrObject* pOriginal, SdrObject* pClone)
    bool bOriginalIsGroup(pOriginal->IsGroupObject());
    bool bCloneIsGroup(pClone->IsGroupObject());

    if(bOriginalIsGroup && dynamic_cast<const E3dObject* >(pOriginal) != nullptr && DynCastE3dScene(pOriginal) == nullptr )
    if(bOriginalIsGroup && DynCastE3dObject(pOriginal) != nullptr && DynCastE3dScene(pOriginal) == nullptr )
        bOriginalIsGroup = false;

    if(bCloneIsGroup && dynamic_cast<const E3dObject* >(pClone) != nullptr && DynCastE3dScene(pClone) == nullptr)
    if(bCloneIsGroup && DynCastE3dObject(pClone) != nullptr && DynCastE3dScene(pClone) == nullptr)
        bCloneIsGroup = false;

    if(!(bOriginalIsGroup && bCloneIsGroup))
diff --git a/svx/source/svdraw/svddrgv.cxx b/svx/source/svdraw/svddrgv.cxx
index b6ac05c..7c5d2c7 100644
--- a/svx/source/svdraw/svddrgv.cxx
+++ b/svx/source/svdraw/svddrgv.cxx
@@ -270,7 +270,7 @@ bool SdrDragView::BegDragObj(const Point& rPnt, OutputDevice* pOut, SdrHdl* pHdl
                            for(size_t a=0; !b3DObjSelected && a<GetMarkedObjectCount(); ++a)
                            {
                                SdrObject* pObj = GetMarkedObjectByIndex(a);
                                if(dynamic_cast< const E3dObject* >(pObj))
                                if(DynCastE3dObject(pObj))
                                    b3DObjSelected = true;
                            }
                            // If yes, allow shear even when !IsShearAllowed,
diff --git a/svx/source/svdraw/svdedtv.cxx b/svx/source/svdraw/svdedtv.cxx
index 68026d9..012b515 100644
--- a/svx/source/svdraw/svdedtv.cxx
+++ b/svx/source/svdraw/svdedtv.cxx
@@ -754,7 +754,7 @@ std::vector<SdrObject*> SdrEditView::DeleteMarkedList(SdrMarkList const& rMark)
                SdrObjList*  pOL = pObj->getParentSdrObjListFromSdrObject();
                const size_t nOrdNum(pObj->GetOrdNumDirect());

                bool bIs3D = dynamic_cast< E3dObject* >(pObj);
                bool bIs3D = DynCastE3dObject(pObj);
                // set up a scene updater if object is a 3d object
                if(bIs3D)
                {
diff --git a/svx/source/svdraw/svdedtv1.cxx b/svx/source/svdraw/svdedtv1.cxx
index bc5d2bb..6d4fe7c 100644
--- a/svx/source/svdraw/svdedtv1.cxx
+++ b/svx/source/svdraw/svdedtv1.cxx
@@ -332,7 +332,7 @@ void SdrEditView::RotateMarkedObj(const Point& rRef, Degree100 nAngle, bool bCop
            }

            // set up a scene updater if object is a 3d object
            if(dynamic_cast< E3dObject* >(pO))
            if(DynCastE3dObject(pO))
            {
                aUpdaters.push_back(new E3DModifySceneSnapRectUpdater(pO));
            }
@@ -396,7 +396,7 @@ void SdrEditView::MirrorMarkedObj(const Point& rRef1, const Point& rRef2, bool b
            }

            // set up a scene updater if object is a 3d object
            if(dynamic_cast< E3dObject* >(pO))
            if(DynCastE3dObject(pO))
            {
                aUpdaters.push_back(new E3DModifySceneSnapRectUpdater(pO));
            }
@@ -1188,7 +1188,7 @@ void SdrEditView::SetAttrToMarked(const SfxItemSet& rAttr, bool bReplaceAll)
        }

        // set up a scene updater if object is a 3d object
        if(dynamic_cast< E3dObject* >(pObj))
        if(DynCastE3dObject(pObj))
        {
            aUpdaters.push_back(new E3DModifySceneSnapRectUpdater(pObj));
        }
diff --git a/svx/source/svdraw/svdmark.cxx b/svx/source/svdraw/svdmark.cxx
index ff556ee..58963a9 100644
--- a/svx/source/svdraw/svdmark.cxx
+++ b/svx/source/svdraw/svdmark.cxx
@@ -700,7 +700,7 @@ namespace sdr

        bool bIsGroup(pObj->IsGroupObject());

        if(bIsGroup && dynamic_cast< const E3dObject* >(pObj) != nullptr && DynCastE3dScene(pObj) == nullptr)
        if(bIsGroup && DynCastE3dObject(pObj) != nullptr && DynCastE3dScene(pObj) == nullptr)
        {
            bIsGroup = false;
        }
diff --git a/svx/source/svdraw/svdobj.cxx b/svx/source/svdraw/svdobj.cxx
index cd59bbe..becc4cd 100644
--- a/svx/source/svdraw/svdobj.cxx
+++ b/svx/source/svdraw/svdobj.cxx
@@ -3202,6 +3202,13 @@ E3dScene* DynCastE3dScene(SdrObject* pObj)
    return nullptr;
}

E3dObject* DynCastE3dObject(SdrObject* pObj)
{
    if( pObj && pObj->GetObjInventor() == SdrInventor::E3d )
        return static_cast<E3dObject*>(pObj);
    return nullptr;
}

rtl::Reference<SdrObject> SdrObjFactory::CreateObjectFromFactory(SdrModel& rSdrModel, SdrInventor nInventor, SdrObjKind nObjIdentifier)
{
    SdrObjCreatorParams aParams { nInventor, nObjIdentifier, rSdrModel };
diff --git a/svx/source/svdraw/svdview.cxx b/svx/source/svdraw/svdview.cxx
index d7d6d5d..4239900 100644
--- a/svx/source/svdraw/svdview.cxx
+++ b/svx/source/svdraw/svdview.cxx
@@ -1074,7 +1074,7 @@ PointerStyle SdrView::GetPreferredPointer(const Point& rMousePos, const OutputDe
                bool b3DObjSelected = false;
                for (size_t a=0; !b3DObjSelected && a<GetMarkedObjectCount(); ++a) {
                    SdrObject* pObj = GetMarkedObjectByIndex(a);
                    if(dynamic_cast<const E3dObject* >(pObj) !=  nullptr)
                    if(DynCastE3dObject(pObj))
                        b3DObjSelected = true;
                }
                // If we have a 3D object, go on despite !IsShearAllowed,
diff --git a/svx/source/unodraw/unoshap3.cxx b/svx/source/unodraw/unoshap3.cxx
index 18f050d..ea4e90e 100644
--- a/svx/source/unodraw/unoshap3.cxx
+++ b/svx/source/unodraw/unoshap3.cxx
@@ -117,7 +117,7 @@ void SAL_CALL Svx3DSceneObject::add( const Reference< drawing::XShape >& xShape 
        throw uno::RuntimeException();

    rtl::Reference<SdrObject> pSdrShape = mxPage->CreateSdrObject_( xShape );
    if( dynamic_cast<const E3dObject* >(pSdrShape.get()) !=  nullptr )
    if( DynCastE3dObject(pSdrShape.get()) )
    {
        GetSdrObject()->GetSubList()->NbcInsertObject( pSdrShape.get() );
        pShape->Create(pSdrShape.get(), mxPage.get());
@@ -139,7 +139,7 @@ void Svx3DSceneObject::addShape( SvxShape& rShape )
        throw uno::RuntimeException();

    rtl::Reference<SdrObject> pSdrShape = mxPage->CreateSdrObject_( &rShape );
    if( dynamic_cast<const E3dObject* >(pSdrShape.get()) !=  nullptr )
    if( DynCastE3dObject(pSdrShape.get()) )
    {
        GetSdrObject()->GetSubList()->NbcInsertObject( pSdrShape.get() );
        rShape.Create(pSdrShape.get(), mxPage.get());
diff --git a/sw/source/core/text/txtfly.cxx b/sw/source/core/text/txtfly.cxx
index ccb9ff0..f3bac6e 100644
--- a/sw/source/core/text/txtfly.cxx
+++ b/sw/source/core/text/txtfly.cxx
@@ -234,7 +234,7 @@ SwRect SwContourCache::ContourRect( const SwFormat* pFormat,
        }
        else
        {
            if( dynamic_cast< const E3dObject *>( pObj ) ==  nullptr )
            if( DynCastE3dObject( pObj ) == nullptr )
            {
                aPolyPolygon = pObj->TakeXorPoly();
            }