Skip to content
Snippets Groups Projects
Commit 8fd1b62c authored by Matthias Puchner's avatar Matthias Puchner
Browse files

adapt Roughness handling; minor changes

parent cdd82b2b
Branches
Tags
1 merge request!570remove SessionModel/Item from SampleModel and all related items
...@@ -373,14 +373,15 @@ void GUI::Transform::FromDomain::setLayerItem(LayerItem* layerItem, const Layer* ...@@ -373,14 +373,15 @@ void GUI::Transform::FromDomain::setLayerItem(LayerItem* layerItem, const Layer*
const LayerInterface* top_interface) const LayerInterface* top_interface)
{ {
layerItem->thickness().set(layer->thickness()); layerItem->thickness().set(layer->thickness());
layerItem->setRoughnessType<LayerZeroRoughnessItem>(); layerItem->clearRoughness();
layerItem->numSlices().set(layer->numberOfSlices()); layerItem->numSlices().set(layer->numberOfSlices());
if (top_interface) { if (top_interface) {
const LayerRoughness* roughness = top_interface->roughness(); const LayerRoughness* roughness = top_interface->roughness();
if (GUI::Transform::FromDomain::isValidRoughness(roughness)) { if (GUI::Transform::FromDomain::isValidRoughness(roughness)) {
auto* roughnessItem = layerItem->setRoughnessType<LayerBasicRoughnessItem>(); layerItem->setBasicRoughness();
GUI::Transform::FromDomain::setRoughnessItem(roughnessItem, *roughness); GUI::Transform::FromDomain::setRoughnessItem(layerItem->roughness().currentItem(),
*roughness);
} }
} }
} }
......
...@@ -28,7 +28,6 @@ const QString Name("Name"); ...@@ -28,7 +28,6 @@ const QString Name("Name");
const QString Uid("Uid"); const QString Uid("Uid");
} // namespace Tags } // namespace Tags
} // namespace } // namespace
MultiLayerItem::MultiLayerItem() MultiLayerItem::MultiLayerItem()
......
...@@ -17,10 +17,10 @@ ...@@ -17,10 +17,10 @@
#include "GUI/Model/Types/DoubleDescriptor.h" #include "GUI/Model/Types/DoubleDescriptor.h"
#include <QVariant> #include <QVariant>
#include <QXmlStreamWriter> // used in every including file
#include <heinz/Complex.h> #include <heinz/Complex.h>
#include <heinz/Vectors3D.h> #include <heinz/Vectors3D.h>
class QXmlStreamWriter;
class QXmlStreamReader; class QXmlStreamReader;
class SessionItem; class SessionItem;
class MessageService; class MessageService;
......
...@@ -49,8 +49,9 @@ std::unique_ptr<MultiLayer> createMultiLayer(const MultiLayerItem& item) ...@@ -49,8 +49,9 @@ std::unique_ptr<MultiLayer> createMultiLayer(const MultiLayerItem& item)
return P_multilayer; return P_multilayer;
} }
std::unique_ptr<Layer> createLayer(const LayerItem& item, bool isFirstOrLastLayer) std::unique_ptr<Layer> createLayer(const LayerItem& item)
{ {
const bool isFirstOrLastLayer = item.isTopLayer() || item.isBottomLayer();
auto P_layer = std::make_unique<Layer>(*item.materialItem()->createMaterial(), auto P_layer = std::make_unique<Layer>(*item.materialItem()->createMaterial(),
isFirstOrLastLayer ? 0.0 : item.thickness()); isFirstOrLastLayer ? 0.0 : item.thickness());
P_layer->setNumberOfSlices(item.numSlices()); P_layer->setNumberOfSlices(item.numSlices());
...@@ -109,9 +110,9 @@ std::unique_ptr<ParticleLayout> buildParticleLayout(const ParticleLayoutItem& it ...@@ -109,9 +110,9 @@ std::unique_ptr<ParticleLayout> buildParticleLayout(const ParticleLayoutItem& it
return P_layout; return P_layout;
} }
std::unique_ptr<Layer> buildLayer(const LayerItem& item, bool isFirstOrLastLayer) std::unique_ptr<Layer> buildLayer(const LayerItem& item)
{ {
auto P_layer = createLayer(item, isFirstOrLastLayer); auto P_layer = createLayer(item);
for (ParticleLayoutItem* layout : item.layouts()) { for (ParticleLayoutItem* layout : item.layouts()) {
auto P_layout = buildParticleLayout(*layout); auto P_layout = buildParticleLayout(*layout);
if (P_layout) if (P_layout)
...@@ -122,18 +123,13 @@ std::unique_ptr<Layer> buildLayer(const LayerItem& item, bool isFirstOrLastLayer ...@@ -122,18 +123,13 @@ std::unique_ptr<Layer> buildLayer(const LayerItem& item, bool isFirstOrLastLayer
} // namespace } // namespace
std::unique_ptr<LayerRoughness> GUI::Transform::ToDomain::createLayerRoughness( std::unique_ptr<LayerRoughness>
const std::variant<LayerZeroRoughnessItem*, LayerBasicRoughnessItem*>& roughness) GUI::Transform::ToDomain::createLayerRoughness(LayerBasicRoughnessItem* roughness)
{ {
if (std::holds_alternative<LayerZeroRoughnessItem*>(roughness)) if (!roughness)
return nullptr; return nullptr;
if (std::holds_alternative<LayerBasicRoughnessItem*>(roughness)) { return std::make_unique<LayerRoughness>(roughness->sigma(), roughness->hurst(),
const auto& basicRoughnessItem = *std::get<LayerBasicRoughnessItem*>(roughness); roughness->lateralCorrelationLength());
return std::make_unique<LayerRoughness>(basicRoughnessItem.sigma(),
basicRoughnessItem.hurst(),
basicRoughnessItem.lateralCorrelationLength());
}
ASSERT(0);
} }
std::unique_ptr<MultiLayer> std::unique_ptr<MultiLayer>
...@@ -141,17 +137,14 @@ GUI::Transform::ToDomain::buildMultiLayer(const MultiLayerItem& multiLayerItem) ...@@ -141,17 +137,14 @@ GUI::Transform::ToDomain::buildMultiLayer(const MultiLayerItem& multiLayerItem)
{ {
auto P_multilayer = createMultiLayer(multiLayerItem); auto P_multilayer = createMultiLayer(multiLayerItem);
for (auto* layerItem : multiLayerItem.layers()) { for (auto* layerItem : multiLayerItem.layers()) {
const bool isFirstLayer = layerItem == multiLayerItem.layers().first(); auto P_layer = buildLayer(*layerItem);
const bool isLastLayer = layerItem == multiLayerItem.layers().last(); ASSERT(P_layer);
auto P_layer = buildLayer(*layerItem, isFirstLayer || isLastLayer); const auto roughness = layerItem->roughness().currentItem();
if (P_layer) { auto P_roughness = createLayerRoughness(roughness);
const auto roughness = layerItem->roughness().currentItem(); if (P_roughness && !layerItem->isTopLayer())
auto P_roughness = createLayerRoughness(roughness); P_multilayer->addLayerWithTopRoughness(*P_layer, *P_roughness);
if (P_roughness && !isFirstLayer) else
P_multilayer->addLayerWithTopRoughness(*P_layer, *P_roughness); P_multilayer->addLayer(*P_layer);
else
P_multilayer->addLayer(*P_layer);
}
} }
return P_multilayer; return P_multilayer;
} }
...@@ -21,14 +21,12 @@ ...@@ -21,14 +21,12 @@
class LayerItem; class LayerItem;
class MultiLayerItem; class MultiLayerItem;
class MultiLayer; class MultiLayer;
class LayerZeroRoughnessItem;
class LayerBasicRoughnessItem; class LayerBasicRoughnessItem;
class LayerRoughness; class LayerRoughness;
namespace GUI::Transform::ToDomain { namespace GUI::Transform::ToDomain {
std::unique_ptr<LayerRoughness> createLayerRoughness( std::unique_ptr<LayerRoughness> createLayerRoughness(LayerBasicRoughnessItem* roughness);
const std::variant<LayerZeroRoughnessItem*, LayerBasicRoughnessItem*>& roughness);
std::unique_ptr<MultiLayer> buildMultiLayer(const MultiLayerItem& item); std::unique_ptr<MultiLayer> buildMultiLayer(const MultiLayerItem& item);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment