From 05366e9889a9f2d08d55a502ebf2195ba670a452 Mon Sep 17 00:00:00 2001 From: Mikhail Svechnikov <m.svechnikov@fz-juelich.de> Date: Tue, 14 Feb 2023 18:05:54 +0100 Subject: [PATCH 1/8] add defaultParticleMaterialItem() --- GUI/Model/Sample/MaterialModel.cpp | 9 +++++++++ GUI/Model/Sample/MaterialModel.h | 1 + 2 files changed, 10 insertions(+) diff --git a/GUI/Model/Sample/MaterialModel.cpp b/GUI/Model/Sample/MaterialModel.cpp index 5a9b12330a2..d632600c026 100644 --- a/GUI/Model/Sample/MaterialModel.cpp +++ b/GUI/Model/Sample/MaterialModel.cpp @@ -147,6 +147,15 @@ MaterialItem* MaterialModel::defaultMaterialItem() const return materialItems().front(); } +MaterialItem *MaterialModel::defaultParticleMaterialItem() const +{ + for(auto* material : materialItems()) + if(material->matItemName() == "Particle") + return material; + + return defaultMaterialItem(); +} + void MaterialModel::removeMaterialItem(MaterialItem* materialItem) { m_materials.removeAll(materialItem); diff --git a/GUI/Model/Sample/MaterialModel.h b/GUI/Model/Sample/MaterialModel.h index 638d1424f16..4645bc2e951 100644 --- a/GUI/Model/Sample/MaterialModel.h +++ b/GUI/Model/Sample/MaterialModel.h @@ -47,6 +47,7 @@ public: const QVector<MaterialItem*>& materialItems() const; MaterialItem* defaultMaterialItem() const; + MaterialItem* defaultParticleMaterialItem() const; void removeMaterialItem(MaterialItem* materialItem); -- GitLab From 8f88b4fd3a6a5ffdda0af15a18eb23463f139f28 Mon Sep 17 00:00:00 2001 From: Mikhail Svechnikov <m.svechnikov@fz-juelich.de> Date: Tue, 14 Feb 2023 18:07:46 +0100 Subject: [PATCH 2/8] use defaultParticleMaterialItem() --- GUI/View/SampleDesigner/SampleEditorController.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GUI/View/SampleDesigner/SampleEditorController.cpp b/GUI/View/SampleDesigner/SampleEditorController.cpp index 39dd711fb37..13f32e84c85 100644 --- a/GUI/View/SampleDesigner/SampleEditorController.cpp +++ b/GUI/View/SampleDesigner/SampleEditorController.cpp @@ -228,7 +228,7 @@ SampleEditorController::createAndInitItem(FormFactorItemCatalog::Type formFactor { auto* newParticle = new ParticleItem(materialModel()); newParticle->setFormFactor(FormFactorItemCatalog::create(formFactorType)); - newParticle->setMaterial(materialModel()->defaultMaterialItem()); + newParticle->setMaterial(materialModel()->defaultParticleMaterialItem()); return newParticle; } -- GitLab From 07a82edf85b780a444cc6b51cb41d35152b51da5 Mon Sep 17 00:00:00 2001 From: Mikhail Svechnikov <svechnikovmv@gmail.com> Date: Tue, 14 Feb 2023 19:27:14 +0100 Subject: [PATCH 3/8] add defaultCoreMaterialItem() --- GUI/Model/Sample/MaterialModel.cpp | 11 ++++++++++- GUI/Model/Sample/MaterialModel.h | 1 + 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/GUI/Model/Sample/MaterialModel.cpp b/GUI/Model/Sample/MaterialModel.cpp index d632600c026..97e3b58263d 100644 --- a/GUI/Model/Sample/MaterialModel.cpp +++ b/GUI/Model/Sample/MaterialModel.cpp @@ -147,10 +147,19 @@ MaterialItem* MaterialModel::defaultMaterialItem() const return materialItems().front(); } +MaterialItem *MaterialModel::defaultCoreMaterialItem() const +{ + for(auto* material : materialItems()) + if(material->matItemName() == material_name_map.key(DefaultMaterials::Particle_Core)) + return material; + + return defaultMaterialItem(); +} + MaterialItem *MaterialModel::defaultParticleMaterialItem() const { for(auto* material : materialItems()) - if(material->matItemName() == "Particle") + if(material->matItemName() == material_name_map.key(DefaultMaterials::Particle)) return material; return defaultMaterialItem(); diff --git a/GUI/Model/Sample/MaterialModel.h b/GUI/Model/Sample/MaterialModel.h index 4645bc2e951..72ae838d3ec 100644 --- a/GUI/Model/Sample/MaterialModel.h +++ b/GUI/Model/Sample/MaterialModel.h @@ -47,6 +47,7 @@ public: const QVector<MaterialItem*>& materialItems() const; MaterialItem* defaultMaterialItem() const; + MaterialItem* defaultCoreMaterialItem() const; MaterialItem* defaultParticleMaterialItem() const; void removeMaterialItem(MaterialItem* materialItem); -- GitLab From ab8e4d794a7d64a708c1f1d1faef1428ebc69539 Mon Sep 17 00:00:00 2001 From: Mikhail Svechnikov <svechnikovmv@gmail.com> Date: Tue, 14 Feb 2023 19:27:59 +0100 Subject: [PATCH 4/8] set default materials for core and shell --- GUI/Model/Sample/CoreAndShellItem.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/GUI/Model/Sample/CoreAndShellItem.cpp b/GUI/Model/Sample/CoreAndShellItem.cpp index dbd512cd702..74053181a0e 100644 --- a/GUI/Model/Sample/CoreAndShellItem.cpp +++ b/GUI/Model/Sample/CoreAndShellItem.cpp @@ -157,7 +157,7 @@ ParticleItem* CoreAndShellItem::coreItem() const ParticleItem* CoreAndShellItem::createCoreItem(const MaterialModel* materials) { m_core.reset(new ParticleItem(materials)); - m_core->setMaterial(materials->defaultMaterialItem()); + m_core->setMaterial(materials->defaultCoreMaterialItem()); return m_core.get(); } @@ -169,7 +169,7 @@ ParticleItem* CoreAndShellItem::shellItem() const ParticleItem* CoreAndShellItem::createShellItem(const MaterialModel* materials) { m_shell.reset(new ParticleItem(materials)); - m_shell->setMaterial(materials->defaultMaterialItem()); + m_shell->setMaterial(materials->defaultParticleMaterialItem()); // position is not used for shell item m_shell->setPosition({}); -- GitLab From 757060555c24a4afeb9b31bd68046893b91a977f Mon Sep 17 00:00:00 2001 From: Mikhail Svechnikov <svechnikovmv@gmail.com> Date: Tue, 14 Feb 2023 19:29:18 +0100 Subject: [PATCH 5/8] create map of material names --- GUI/Model/Sample/MaterialModel.cpp | 18 +++++++++++++----- GUI/Model/Sample/MaterialModel.h | 5 +++++ 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/GUI/Model/Sample/MaterialModel.cpp b/GUI/Model/Sample/MaterialModel.cpp index 97e3b58263d..18402167175 100644 --- a/GUI/Model/Sample/MaterialModel.cpp +++ b/GUI/Model/Sample/MaterialModel.cpp @@ -29,13 +29,15 @@ const QString Material("Material"); QColor suggestMaterialColor(const QString& name) { - if (name.contains("Vacuum")) + if (name.contains(material_name_map.key(DefaultMaterials::Vacuum))) return QColor(179, 242, 255); - if (name.contains("Substrate")) + if (name.contains(material_name_map.key(DefaultMaterials::Substrate))) return QColor(205, 102, 0); - if (name.contains("Default")) + if (name.contains(material_name_map.key(DefaultMaterials::Default))) return QColor(Qt::green); - if (name.contains("Particle")) + if (name.contains(material_name_map.key(DefaultMaterials::Core))) + return QColor(220, 140, 220); + if (name.contains(material_name_map.key(DefaultMaterials::Particle))) return QColor(146, 198, 255); // return a random color @@ -48,6 +50,12 @@ QColor suggestMaterialColor(const QString& name) } // namespace +QMap<QString, DefaultMaterials> material_name_map = { + {"Default", DefaultMaterials::Default}, + {"Vacuum", DefaultMaterials::Vacuum}, + {"Particle", DefaultMaterials::Particle}, + {"Core", DefaultMaterials::Core}, + {"Substrate", DefaultMaterials::Substrate}}; MaterialModel::MaterialModel() {} @@ -150,7 +158,7 @@ MaterialItem* MaterialModel::defaultMaterialItem() const MaterialItem *MaterialModel::defaultCoreMaterialItem() const { for(auto* material : materialItems()) - if(material->matItemName() == material_name_map.key(DefaultMaterials::Particle_Core)) + if(material->matItemName() == material_name_map.key(DefaultMaterials::Core)) return material; return defaultMaterialItem(); diff --git a/GUI/Model/Sample/MaterialModel.h b/GUI/Model/Sample/MaterialModel.h index 72ae838d3ec..059c6bdaccf 100644 --- a/GUI/Model/Sample/MaterialModel.h +++ b/GUI/Model/Sample/MaterialModel.h @@ -19,6 +19,11 @@ #include <QVector> #include <QXmlStreamReader> +//! Materials created by default +enum class DefaultMaterials { Default, Vacuum, Particle, Core, Substrate }; + +extern QMap<QString, DefaultMaterials> material_name_map; + class MaterialItem; class MaterialModel : public QObject { -- GitLab From 9186107b3b5b4de9ac2c218d5b78e892b344dc10 Mon Sep 17 00:00:00 2001 From: Mikhail Svechnikov <svechnikovmv@gmail.com> Date: Wed, 15 Feb 2023 12:25:58 +0100 Subject: [PATCH 6/8] upd standard materials --- GUI/Model/Sample/SampleItem.cpp | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/GUI/Model/Sample/SampleItem.cpp b/GUI/Model/Sample/SampleItem.cpp index 3f0430e51cc..98331bab1d4 100644 --- a/GUI/Model/Sample/SampleItem.cpp +++ b/GUI/Model/Sample/SampleItem.cpp @@ -58,10 +58,26 @@ QVector<ItemWithMaterial*> SampleItem::itemsWithMaterial() const void SampleItem::addStandardMaterials() { - m_materials.addRefractiveMaterialItem("Default", 1e-3, 1e-5); - m_materials.addRefractiveMaterialItem("Vacuum", 0.0, 0.0); - m_materials.addRefractiveMaterialItem("Particle", 6e-4, 2e-8); - m_materials.addRefractiveMaterialItem("Substrate", 6e-6, 2e-8); + // add only non-existing materials + QString name = materialMap.key(DefaultMaterials::Default); + if (!m_materials.materialItemFromName(name)) + m_materials.addRefractiveMaterialItem(name, 1e-3, 1e-5); + + name = materialMap.key(DefaultMaterials::Vacuum); + if (!m_materials.materialItemFromName(name)) + m_materials.addRefractiveMaterialItem(name, 0.0, 0.0); + + name = materialMap.key(DefaultMaterials::Particle); + if (!m_materials.materialItemFromName(name)) + m_materials.addRefractiveMaterialItem(name, 6e-4, 2e-8); + + name = materialMap.key(DefaultMaterials::Core); + if (!m_materials.materialItemFromName(name)) + m_materials.addRefractiveMaterialItem(name, 2e-4, 1e-8); + + name = materialMap.key(DefaultMaterials::Substrate); + if (!m_materials.materialItemFromName(name)) + m_materials.addRefractiveMaterialItem(name, 6e-6, 2e-8); } QVector<LayerItem*> SampleItem::layerItems() const -- GitLab From 1a67dd0a844778378af66250ef73e1c8911d83bd Mon Sep 17 00:00:00 2001 From: Mikhail Svechnikov <m.svechnikov@fz-juelich.de> Date: Wed, 15 Feb 2023 12:14:10 +0100 Subject: [PATCH 7/8] add standard materials to examples --- GUI/Model/FromCore/ItemizeSample.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/GUI/Model/FromCore/ItemizeSample.cpp b/GUI/Model/FromCore/ItemizeSample.cpp index c9cb63d14e5..201658ff173 100644 --- a/GUI/Model/FromCore/ItemizeSample.cpp +++ b/GUI/Model/FromCore/ItemizeSample.cpp @@ -667,6 +667,9 @@ SampleItem* itemizeSample(const MultiLayer& sample, const QString& nodeName) } } + // append standard materials to the example-specific ones + result->addStandardMaterials(); + return result; } -- GitLab From dee03b163b00a09da61649987cf23be82c1c3836 Mon Sep 17 00:00:00 2001 From: Mikhail Svechnikov <svechnikovmv@gmail.com> Date: Tue, 14 Feb 2023 19:38:32 +0100 Subject: [PATCH 8/8] clang-format --- GUI/Model/Sample/MaterialModel.cpp | 33 +++++++++++++++--------------- GUI/Model/Sample/MaterialModel.h | 2 +- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/GUI/Model/Sample/MaterialModel.cpp b/GUI/Model/Sample/MaterialModel.cpp index 18402167175..8fae8c67196 100644 --- a/GUI/Model/Sample/MaterialModel.cpp +++ b/GUI/Model/Sample/MaterialModel.cpp @@ -29,15 +29,15 @@ const QString Material("Material"); QColor suggestMaterialColor(const QString& name) { - if (name.contains(material_name_map.key(DefaultMaterials::Vacuum))) + if (name.contains(materialMap.key(DefaultMaterials::Vacuum))) return QColor(179, 242, 255); - if (name.contains(material_name_map.key(DefaultMaterials::Substrate))) + if (name.contains(materialMap.key(DefaultMaterials::Substrate))) return QColor(205, 102, 0); - if (name.contains(material_name_map.key(DefaultMaterials::Default))) + if (name.contains(materialMap.key(DefaultMaterials::Default))) return QColor(Qt::green); - if (name.contains(material_name_map.key(DefaultMaterials::Core))) + if (name.contains(materialMap.key(DefaultMaterials::Core))) return QColor(220, 140, 220); - if (name.contains(material_name_map.key(DefaultMaterials::Particle))) + if (name.contains(materialMap.key(DefaultMaterials::Particle))) return QColor(146, 198, 255); // return a random color @@ -50,12 +50,11 @@ QColor suggestMaterialColor(const QString& name) } // namespace -QMap<QString, DefaultMaterials> material_name_map = { - {"Default", DefaultMaterials::Default}, - {"Vacuum", DefaultMaterials::Vacuum}, - {"Particle", DefaultMaterials::Particle}, - {"Core", DefaultMaterials::Core}, - {"Substrate", DefaultMaterials::Substrate}}; +QMap<QString, DefaultMaterials> materialMap = {{"Default", DefaultMaterials::Default}, + {"Vacuum", DefaultMaterials::Vacuum}, + {"Particle", DefaultMaterials::Particle}, + {"Core", DefaultMaterials::Core}, + {"Substrate", DefaultMaterials::Substrate}}; MaterialModel::MaterialModel() {} @@ -155,19 +154,19 @@ MaterialItem* MaterialModel::defaultMaterialItem() const return materialItems().front(); } -MaterialItem *MaterialModel::defaultCoreMaterialItem() const +MaterialItem* MaterialModel::defaultCoreMaterialItem() const { - for(auto* material : materialItems()) - if(material->matItemName() == material_name_map.key(DefaultMaterials::Core)) + for (auto* material : materialItems()) + if (material->matItemName() == materialMap.key(DefaultMaterials::Core)) return material; return defaultMaterialItem(); } -MaterialItem *MaterialModel::defaultParticleMaterialItem() const +MaterialItem* MaterialModel::defaultParticleMaterialItem() const { - for(auto* material : materialItems()) - if(material->matItemName() == material_name_map.key(DefaultMaterials::Particle)) + for (auto* material : materialItems()) + if (material->matItemName() == materialMap.key(DefaultMaterials::Particle)) return material; return defaultMaterialItem(); diff --git a/GUI/Model/Sample/MaterialModel.h b/GUI/Model/Sample/MaterialModel.h index 059c6bdaccf..5119a3c6a02 100644 --- a/GUI/Model/Sample/MaterialModel.h +++ b/GUI/Model/Sample/MaterialModel.h @@ -22,7 +22,7 @@ //! Materials created by default enum class DefaultMaterials { Default, Vacuum, Particle, Core, Substrate }; -extern QMap<QString, DefaultMaterials> material_name_map; +extern QMap<QString, DefaultMaterials> materialMap; class MaterialItem; -- GitLab