Skip to content

Commit

Permalink
MAINT: Single instance of variables to avoi dadding copies when switc…
Browse files Browse the repository at this point in the history
…hing between dipole fits
  • Loading branch information
gabrielbmotta authored and LorenzE committed Nov 19, 2020
1 parent 5a355fb commit e92e51d
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 28 deletions.
67 changes: 39 additions & 28 deletions libraries/disp3D/engine/model/items/sourcedata/ecddatatreeitem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -100,15 +100,18 @@ void EcdDataTreeItem::initItem()

void EcdDataTreeItem::addData(const ECDSet& pECDSet)
{
//Add further infos as children
QList<QStandardItem*> list;
MetaTreeItem *pItemNumDipoles = new MetaTreeItem(MetaTreeItemTypes::NumberDipoles, QString::number(pECDSet.size()));
pItemNumDipoles->setEditable(false);
list.clear();
list << pItemNumDipoles;
list << new QStandardItem(pItemNumDipoles->toolTip());
this->appendRow(list);

if(!m_pItemNumDipoles){
//Add further infos as children
QList<QStandardItem*> list;
m_pItemNumDipoles = new MetaTreeItem(MetaTreeItemTypes::NumberDipoles, QString::number(pECDSet.size()));
m_pItemNumDipoles->setEditable(false);
list.clear();
list << m_pItemNumDipoles;
list << new QStandardItem(m_pItemNumDipoles->toolTip());
this->appendRow(list);
} else {
m_pItemNumDipoles->setText(QString::number(pECDSet.size()));
}
//Plot dipole moment
plotDipoles(pECDSet);
}
Expand All @@ -119,13 +122,6 @@ void EcdDataTreeItem::plotDipoles(const ECDSet& tECDSet)
{
//Plot dipoles

//create geometry
QSharedPointer<Qt3DExtras::QConeGeometry> pDipolGeometry = QSharedPointer<Qt3DExtras::QConeGeometry>::create();
pDipolGeometry->setBottomRadius(0.001f);
pDipolGeometry->setLength(0.003f);
//create instanced renderer
GeometryMultiplier *pDipolMesh = new GeometryMultiplier(pDipolGeometry);

QVector3D pos, to, from;

//The Qt3D default cone orientation and the top of the cone lies in line with the positive y-axis.
Expand Down Expand Up @@ -164,17 +160,32 @@ void EcdDataTreeItem::plotDipoles(const ECDSet& tECDSet)
QRandomGenerator::global()->bounded(0 , 255),
QRandomGenerator::global()->bounded(0 , 255)));
}
//Set instance Transform
pDipolMesh->setTransforms(vTransforms);
//Set instance colors
pDipolMesh->setColors(vColors);

this->addComponent(pDipolMesh);

//Add material
GeometryMultiplierMaterial* pMaterial = new GeometryMultiplierMaterial;
pMaterial->setAmbient(QColor(0,0,0));
pMaterial->setAlpha(1.0f);
this->addComponent(pMaterial);

//create geometry
if(!m_pDipolMesh){
QSharedPointer<Qt3DExtras::QConeGeometry> pDipolGeometry = QSharedPointer<Qt3DExtras::QConeGeometry>::create();
pDipolGeometry->setBottomRadius(0.001f);
pDipolGeometry->setLength(0.003f);
//create instanced renderer
m_pDipolMesh = new GeometryMultiplier(pDipolGeometry);

//Set instance Transform
m_pDipolMesh->setTransforms(vTransforms);
//Set instance colors
m_pDipolMesh->setColors(vColors);

this->addComponent(m_pDipolMesh);

//Add material
GeometryMultiplierMaterial* pMaterial = new GeometryMultiplierMaterial;
pMaterial->setAmbient(QColor(0,0,0));
pMaterial->setAlpha(1.0f);
this->addComponent(pMaterial);
} else {
//Set instance Transform
m_pDipolMesh->setTransforms(vTransforms);
//Set instance colors
m_pDipolMesh->setColors(vColors);
}
}

10 changes: 10 additions & 0 deletions libraries/disp3D/engine/model/items/sourcedata/ecddatatreeitem.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,10 @@ namespace Qt3DCore {
class QEntity;
}

namespace DISP3DLIB {
class GeometryMultiplier;
}

//=============================================================================================================
// DEFINE NAMESPACE DISP3DLIB
//=============================================================================================================
Expand Down Expand Up @@ -121,6 +125,12 @@ class DISP3DSHARED_EXPORT EcdDataTreeItem : public Abstract3DTreeItem
* @param[in] tECDSet The dipole set data.
*/
void plotDipoles(const INVERSELIB::ECDSet& tECDSet);

private:

QPointer<GeometryMultiplier> m_pDipolMesh;

QPointer<MetaTreeItem> m_pItemNumDipoles;
};

//=============================================================================================================
Expand Down

0 comments on commit e92e51d

Please sign in to comment.