From 84ea93b68ce05960540c2b417f87a2edae652176 Mon Sep 17 00:00:00 2001 From: Mikhail Svechnikov <m.svechnikov@fz-juelich.de> Date: Mon, 12 Aug 2024 15:25:30 +0200 Subject: [PATCH] to core --- GUI/Model/Sample/CrosscorrelationItems.cpp | 6 ++++++ GUI/Model/Sample/CrosscorrelationItems.h | 4 ++++ GUI/Model/ToCore/SampleToCore.cpp | 22 +++++++++++++++------- 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/GUI/Model/Sample/CrosscorrelationItems.cpp b/GUI/Model/Sample/CrosscorrelationItems.cpp index 74f505a0d18..289ef01786a 100644 --- a/GUI/Model/Sample/CrosscorrelationItems.cpp +++ b/GUI/Model/Sample/CrosscorrelationItems.cpp @@ -14,6 +14,7 @@ #include "GUI/Model/Sample/CrosscorrelationItems.h" #include "GUI/Model/Util/UtilXML.h" +#include "Sample/Interface/CrosscorrelationModels.h" namespace { namespace Tag { @@ -47,3 +48,8 @@ void CommonDepthCrosscorrelationItem::readFrom(QXmlStreamReader* r) r->skipCurrentElement(); } } + +std::unique_ptr<CrosscorrelationModel> CommonDepthCrosscorrelationItem::createModel() const +{ + return std::make_unique<CommonDepthCrosscorrelation>(m_crosscorrelation_depth.dVal()); +} diff --git a/GUI/Model/Sample/CrosscorrelationItems.h b/GUI/Model/Sample/CrosscorrelationItems.h index 021f424ce6b..a84e51194d7 100644 --- a/GUI/Model/Sample/CrosscorrelationItems.h +++ b/GUI/Model/Sample/CrosscorrelationItems.h @@ -18,12 +18,15 @@ #include "GUI/Model/Descriptor/DoubleProperty.h" #include <QXmlStreamReader> +class CrosscorrelationModel; + class CrosscorrelationItem { public: virtual ~CrosscorrelationItem() = default; virtual void writeTo(QXmlStreamWriter*) const {} virtual void readFrom(QXmlStreamReader*) {} + virtual std::unique_ptr<CrosscorrelationModel> createModel() const = 0; virtual DoubleProperties crossCorrProperties() = 0; protected: @@ -37,6 +40,7 @@ public: void writeTo(QXmlStreamWriter* w) const override; void readFrom(QXmlStreamReader* r) override; + std::unique_ptr<CrosscorrelationModel> createModel() const override; DoubleProperties crossCorrProperties() override { return {&m_crosscorrelation_depth}; } private: diff --git a/GUI/Model/ToCore/SampleToCore.cpp b/GUI/Model/ToCore/SampleToCore.cpp index 5069db80aaf..b2262958e0c 100644 --- a/GUI/Model/ToCore/SampleToCore.cpp +++ b/GUI/Model/ToCore/SampleToCore.cpp @@ -121,17 +121,25 @@ std::unique_ptr<MultiLayer> GUI::ToCore::itemToSample(const SampleItem& sampleIt continue; } - std::unique_ptr<InterlayerModel> interlayer( - roughItem->certainInterlayerModel()->createModel()); + // autocorrelation std::unique_ptr<AutocorrelationModel> autocorrelation; - - if (const auto* br = dynamic_cast<const K_CorrelationRoughnessItem*>(roughItem)) - autocorrelation = std::make_unique<K_CorrelationModel>( - br->sigma().dVal(), br->hurst().dVal(), br->lateralCorrelationLength().dVal()); + if (const auto* k_corr = dynamic_cast<const K_CorrelationRoughnessItem*>(roughItem)) + autocorrelation = + std::make_unique<K_CorrelationModel>(k_corr->sigma().dVal(), k_corr->hurst().dVal(), + k_corr->lateralCorrelationLength().dVal()); else ASSERT_NEVER; - LayerRoughness roughness(autocorrelation.get(), interlayer.get()); + // interlayer + std::unique_ptr<InterlayerModel> interlayer( + roughItem->certainInterlayerModel()->createModel()); + + // crosscorrelation + std::unique_ptr<CrosscorrelationModel> crosscorrelation; + if (const auto* item = roughItem->certainCrosscorrModel()) + crosscorrelation = item->createModel(); + + LayerRoughness roughness(autocorrelation.get(), interlayer.get(), crosscorrelation.get()); sample->addLayerWithTopRoughness(*layer, roughness); } return sample; -- GitLab