Kaydet (Commit) 2c856071 authored tarafından Armin Le Grand's avatar Armin Le Grand

AW080: Cleanup of 3D Object methods

Change-Id: I3a8247aabd2fd24b53faf9e1e8da29856dde70bf
Reviewed-on: https://gerrit.libreoffice.org/55897
Tested-by: Jenkins
Reviewed-by: 's avatarArmin Le Grand <Armin.Le.Grand@cib.de>
üst e79dd394
......@@ -93,7 +93,6 @@ private:
bool mbIsSelected : 1;
protected:
virtual void NewObjectInserted(const E3dObject* p3DObj);
virtual void StructureChanged();
virtual basegfx::B3DRange RecalcBoundVolume() const;
......
......@@ -78,7 +78,6 @@ protected:
bool mbSkipSettingDirty : 1;
virtual void NewObjectInserted(const E3dObject* p3DObj) override;
virtual void StructureChanged() override;
void RebuildLists();
......@@ -195,8 +194,6 @@ public:
virtual void handlePageChange(SdrPage* pOldPage, SdrPage* pNewPage) override;
virtual SdrObjList* GetSubList() const override;
void Insert3DObj(E3dObject* p3DObj);
void Remove3DObj(E3dObject const * p3DObj);
virtual void SetTransformChanged() override;
protected:
......
......@@ -407,7 +407,7 @@ SdrObject* FuConstruct3dObject::CreateDefaultObject(const sal_uInt16 nID, const
aCam.SetFocalLength(mpView->GetDefaultCamFocal());
aCam.SetDefaults(::basegfx::B3DPoint(0.0, 0.0, fDefaultCamPosZ), aLookAt);
pScene->SetCamera(aCam);
pScene->Insert3DObj(p3DObj);
pScene->InsertObject(p3DObj);
pScene->NbcSetSnapRect(a3DRect);
ImpPrepareBasic3DShape(p3DObj, pScene);
SfxItemSet aAttr(mpDoc->GetPool());
......
......@@ -531,7 +531,7 @@ SdrObject* EnhancedCustomShape3d::Create3DObject(
p3DObj->SetMergedItem(XFillBitmapItem(OUString(), Graphic(aFillBmp)));
}
}
pScene->Insert3DObj( p3DObj );
pScene->InsertObject( p3DObj );
p3DObj = new E3dExtrudeObj(
rSdrObjCustomShape.getSdrModelFromSdrObject(),
a3DDefaultAttr,
......@@ -544,7 +544,7 @@ SdrObject* EnhancedCustomShape3d::Create3DObject(
p3DObj->SetMergedItem( XFillStyleItem( drawing::FillStyle_SOLID ) );
p3DObj->SetMergedItem( Svx3DCloseFrontItem( false ) );
p3DObj->SetMergedItem( Svx3DCloseBackItem( false ) );
pScene->Insert3DObj( p3DObj );
pScene->InsertObject( p3DObj );
// #i122777# depth 0 is okay for planes when using double-sided
p3DObj = new E3dExtrudeObj(
......@@ -573,7 +573,7 @@ SdrObject* EnhancedCustomShape3d::Create3DObject(
p3DObj->SetMergedItem( Svx3DCloseFrontItem( false ) );
p3DObj->SetMergedItem( Svx3DCloseBackItem( false ) );
}
pScene->Insert3DObj( p3DObj );
pScene->InsertObject( p3DObj );
bSceneHasObjects = true;
}
}
......@@ -742,7 +742,7 @@ SdrObject* EnhancedCustomShape3d::Create3DObject(
for (std::vector< E3dCompoundObject* >::iterator aObjectListIter( aPlaceholderObjectList.begin() ); aObjectListIter != aPlaceholderObjectList.end(); )
{
E3dCompoundObject* pTemp(*aObjectListIter++);
pScene->Remove3DObj( pTemp );
pScene->RemoveObject( pTemp->GetOrdNum() );
// always use SdrObject::Free(...) for SdrObjects (!)
SdrObject* pTemp2(pTemp);
SdrObject::Free(pTemp2);
......
......@@ -194,7 +194,7 @@ void Svx3DPreviewControl::SetObjectType(SvxPreviewObjectType nType)
if( mp3DObj )
{
aSet.Put(mp3DObj->GetMergedItemSet());
mpScene->Remove3DObj( mp3DObj );
mpScene->RemoveObject( mp3DObj->GetOrdNum() );
// always use SdrObject::Free(...) for SdrObjects (!)
SdrObject* pTemp(mp3DObj);
SdrObject::Free(pTemp);
......@@ -225,7 +225,7 @@ void Svx3DPreviewControl::SetObjectType(SvxPreviewObjectType nType)
if (mp3DObj)
{
mpScene->Insert3DObj( mp3DObj );
mpScene->InsertObject( mp3DObj );
mp3DObj->SetMergedItemSet(aSet);
}
......@@ -293,7 +293,7 @@ void Svx3DLightControl::Construct2()
mp3DView->Get3DDefaultAttributes(),
basegfx::B3DPoint(-fMaxExpansion, -fMaxExpansion, -fMaxExpansion),
basegfx::B3DVector(2.0 * fMaxExpansion, 2.0 * fMaxExpansion, 2.0 * fMaxExpansion));
mpScene->Insert3DObj( mpExpansionObject );
mpScene->InsertObject( mpExpansionObject );
SfxItemSet aSet(mpModel->GetItemPool());
aSet.Put( XLineStyleItem( drawing::LineStyle_NONE ) );
aSet.Put( XFillStyleItem( drawing::FillStyle_NONE ) );
......@@ -315,7 +315,7 @@ void Svx3DLightControl::Construct2()
mpLampBottomObject = new E3dPolygonObj(
*mpModel,
basegfx::B3DPolyPolygon(a3DCircle));
mpScene->Insert3DObj( mpLampBottomObject );
mpScene->InsertObject( mpLampBottomObject );
// half circle with stand
basegfx::B2DPolygon a2DHalfCircle;
......@@ -329,7 +329,7 @@ void Svx3DLightControl::Construct2()
mpLampShaftObject = new E3dPolygonObj(
*mpModel,
basegfx::B3DPolyPolygon(a3DHalfCircle));
mpScene->Insert3DObj( mpLampShaftObject );
mpScene->InsertObject( mpLampShaftObject );
// initially invisible
SfxItemSet aSet(mpModel->GetItemPool());
......@@ -375,7 +375,7 @@ void Svx3DLightControl::ConstructLightObjects()
// get rid of possible existing light object
if(maLightObjects[a])
{
mpScene->Remove3DObj(maLightObjects[a]);
mpScene->RemoveObject(maLightObjects[a]->GetOrdNum());
// always use SdrObject::Free(...) for SdrObjects (!)
SdrObject* pTemp(maLightObjects[a]);
SdrObject::Free(pTemp);
......@@ -395,7 +395,7 @@ void Svx3DLightControl::ConstructLightObjects()
mp3DView->Get3DDefaultAttributes(),
basegfx::B3DPoint( 0, 0, 0 ),
basegfx::B3DVector( fLampSize, fLampSize, fLampSize));
mpScene->Insert3DObj(pNewLight);
mpScene->InsertObject(pNewLight);
basegfx::B3DHomMatrix aTransform;
aTransform.translate(aDirection.getX(), aDirection.getY(), aDirection.getZ());
......
......@@ -262,14 +262,6 @@ void E3dObject::RecalcSnapRect()
maSnapRect = tools::Rectangle();
}
// Inform the parent about insertion of a 3D object, so that the parent is able
// treat the particular objects in a special way (eg Light / Label in E3dScene)
void E3dObject::NewObjectInserted(const E3dObject* p3DObj)
{
if(GetParentObj())
GetParentObj()->NewObjectInserted(p3DObj);
}
// Inform parent of changes in the structure (eg by transformation), in this
// process the object in which the change has occurred is returned.
void E3dObject::StructureChanged()
......
......@@ -348,16 +348,6 @@ void E3dScene::SetCamera(const Camera3D& rNewCamera)
ImpCleanup3DDepthMapper();
}
void E3dScene::NewObjectInserted(const E3dObject* p3DObj)
{
E3dObject::NewObjectInserted(p3DObj);
if ( p3DObj == this )
return;
ImpCleanup3DDepthMapper();
}
// Inform parent of changes of a child
void E3dScene::StructureChanged()
......@@ -492,8 +482,9 @@ void E3dScene::RebuildLists()
{
E3dObject* p3DObj(static_cast< E3dObject* >(a3DIterator.Next()));
p3DObj->NbcSetLayer(nCurrLayerID);
NewObjectInserted(p3DObj);
}
ImpCleanup3DDepthMapper();
}
SdrObjGeoData *E3dScene::NewGeoData() const
......@@ -753,9 +744,12 @@ void E3dScene::NbcInsertObject(SdrObject* pObj, size_t nPos)
// Is it even a 3D object?
if(nullptr != dynamic_cast< const E3dObject* >(pObj))
{
// Normal 3D object, insert means
// call parent
// Normal 3D object, insert means call parent
SdrObjList::NbcInsertObject(pObj, nPos);
// local needed stuff
InvalidateBoundVolume();
StructureChanged();
}
else
{
......@@ -766,10 +760,21 @@ void E3dScene::NbcInsertObject(SdrObject* pObj, size_t nPos)
void E3dScene::InsertObject(SdrObject* pObj, size_t nPos)
{
// call parent
SdrObjList::InsertObject(pObj, nPos);
// Is it even a 3D object?
if(nullptr != dynamic_cast< const E3dObject* >(pObj))
{
// call parent
SdrObjList::InsertObject(pObj, nPos);
Cleanup3DDepthMapper();
// local needed stuff
InvalidateBoundVolume();
StructureChanged();
}
else
{
// No 3D object, inserted a page in place in a scene ...
getSdrObjectFromSdrObjList()->getSdrPageFromSdrObject()->InsertObject(pObj, nPos);
}
}
SdrObject* E3dScene::NbcRemoveObject(size_t nObjNum)
......@@ -777,7 +782,8 @@ SdrObject* E3dScene::NbcRemoveObject(size_t nObjNum)
// call parent
SdrObject* pRetval = SdrObjList::NbcRemoveObject(nObjNum);
Cleanup3DDepthMapper();
InvalidateBoundVolume();
StructureChanged();
return pRetval;
}
......@@ -785,9 +791,10 @@ SdrObject* E3dScene::NbcRemoveObject(size_t nObjNum)
SdrObject* E3dScene::RemoveObject(size_t nObjNum)
{
// call parent
SdrObject* pRetval = SdrObjList::RemoveObject(nObjNum);
SdrObject* pRetval(SdrObjList::RemoveObject(nObjNum));
Cleanup3DDepthMapper();
InvalidateBoundVolume();
StructureChanged();
return pRetval;
}
......@@ -852,27 +859,6 @@ SdrObjList* E3dScene::GetSubList() const
return const_cast< E3dScene* >(this);
}
void E3dScene::Insert3DObj(E3dObject* p3DObj)
{
DBG_ASSERT(p3DObj, "Insert3DObj with NULL-pointer!");
InsertObject(p3DObj);
InvalidateBoundVolume();
NewObjectInserted(p3DObj);
StructureChanged();
}
void E3dScene::Remove3DObj(E3dObject const * p3DObj)
{
DBG_ASSERT(p3DObj, "Remove3DObj with NULL-pointer!");
if(p3DObj->GetParentObj() == this)
{
RemoveObject(p3DObj->GetOrdNum());
InvalidateBoundVolume();
StructureChanged();
}
}
basegfx::B3DRange E3dScene::RecalcBoundVolume() const
{
basegfx::B3DRange aRetval;
......
......@@ -583,7 +583,7 @@ bool E3dView::ImpCloneAll3DObjectsToDestScene(E3dScene const * pSrcScene, E3dSce
// fill and insert new object
pNewCompoundObj->NbcSetLayer(pCompoundObj->GetLayer());
pNewCompoundObj->NbcSetStyleSheet(pCompoundObj->GetStyleSheet(), true);
pDstScene->Insert3DObj(pNewCompoundObj);
pDstScene->InsertObject(pNewCompoundObj);
bRetval = true;
// Create undo
......@@ -763,7 +763,7 @@ void E3dView::ImpCreateSingle3DObjectFlat(E3dScene* pScene, SdrObject* pObj, boo
p3DObj->NbcSetStyleSheet(pObj->GetStyleSheet(), true);
// Insert a new extrude object
pScene->Insert3DObj(p3DObj);
pScene->InsertObject(p3DObj);
}
}
}
......@@ -1290,7 +1290,7 @@ E3dScene* E3dView::SetCurrent3DObj(E3dObject* p3DObj)
InitScene(pScene, fW, fH, aVolume.getMaxZ() + ((fW + fH) / 4.0));
pScene->Insert3DObj(p3DObj);
pScene->InsertObject(p3DObj);
pScene->NbcSetSnapRect(aRect);
return pScene;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment