Skip to content
Snippets Groups Projects
Commit 84ea93b6 authored by Mikhail Svechnikov's avatar Mikhail Svechnikov
Browse files

to core

parent 4484a3bb
No related branches found
No related tags found
1 merge request!2715Replace single crossCorrelationLength parameter by CrosscorrelationModel individual for each interface
......@@ -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());
}
......@@ -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:
......
......@@ -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;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment