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

complete FormFactorItems' serialization

parent d309c0bc
No related branches found
No related tags found
1 merge request!573Sample item serialization
......@@ -417,3 +417,10 @@ std::unique_ptr<IBornFF> TruncatedSpheroidItem::createFormFactor() const
return std::make_unique<FormFactorTruncatedSpheroid>(radius(), height(), heightFlattening(),
removedTop());
}
void FormFactorItem::serialize(Serializer& s)
{
s.assertVersion(0);
for (auto* p : serializationProperties())
s.rw(*p);
}
......@@ -15,7 +15,9 @@
#ifndef BORNAGAIN_GUI_MODEL_SAMPLE_FORMFACTORITEMS_H
#define BORNAGAIN_GUI_MODEL_SAMPLE_FORMFACTORITEMS_H
#include "GUI/Model/Session/Serializer.h"
#include "GUI/Model/Types/DoubleProperty.h"
#include <QVector>
#include <memory>
class IBornFF;
......@@ -36,6 +38,8 @@ public:
public:
virtual std::unique_ptr<IBornFF> createFormFactor() const = 0;
virtual DoubleDescriptors geometryValues() const = 0;
virtual QVector<DoubleProperty*> serializationProperties() = 0;
virtual void serialize(Serializer& s);
};
class AnisoPyramidItem : public FormFactorItem {
......@@ -52,6 +56,10 @@ public:
{
return {length(), width(), height(), alpha()};
}
QVector<DoubleProperty*> serializationProperties() override
{
return {&m_length, &m_width, &m_height, &m_alpha};
}
};
class BarGaussItem : public FormFactorItem {
......@@ -64,6 +72,10 @@ public:
FF_PROPERTY(height, Height)
DoubleDescriptors geometryValues() const override { return {length(), width(), height()}; }
QVector<DoubleProperty*> serializationProperties() override
{
return {&m_length, &m_width, &m_height};
}
};
class BarLorentzItem : public FormFactorItem {
......@@ -76,6 +88,10 @@ public:
FF_PROPERTY(height, Height)
DoubleDescriptors geometryValues() const override { return {length(), width(), height()}; }
QVector<DoubleProperty*> serializationProperties() override
{
return {&m_length, &m_width, &m_height};
}
};
class BoxItem : public FormFactorItem {
......@@ -88,6 +104,10 @@ public:
FF_PROPERTY(height, Height)
DoubleDescriptors geometryValues() const override { return {length(), width(), height()}; }
QVector<DoubleProperty*> serializationProperties() override
{
return {&m_length, &m_width, &m_height};
}
};
class ConeItem : public FormFactorItem {
......@@ -100,6 +120,10 @@ public:
FF_PROPERTY(alpha, Alpha)
DoubleDescriptors geometryValues() const override { return {radius(), height(), alpha()}; }
QVector<DoubleProperty*> serializationProperties() override
{
return {&m_radius, &m_height, &m_alpha};
}
};
class Cone6Item : public FormFactorItem {
......@@ -112,6 +136,10 @@ public:
FF_PROPERTY(alpha, Alpha)
DoubleDescriptors geometryValues() const override { return {baseEdge(), height(), alpha()}; }
QVector<DoubleProperty*> serializationProperties() override
{
return {&m_baseEdge, &m_height, &m_alpha};
}
};
class CuboctahedronItem : public FormFactorItem {
......@@ -128,6 +156,10 @@ public:
{
return {length(), height(), heightRatio(), alpha()};
}
QVector<DoubleProperty*> serializationProperties() override
{
return {&m_length, &m_height, &m_heightRatio, &m_alpha};
}
};
class CylinderItem : public FormFactorItem {
......@@ -139,6 +171,7 @@ public:
FF_PROPERTY(height, Height)
DoubleDescriptors geometryValues() const override { return {radius(), height()}; }
QVector<DoubleProperty*> serializationProperties() override { return {&m_radius, &m_height}; }
};
class DodecahedronItem : public FormFactorItem {
......@@ -149,6 +182,7 @@ public:
FF_PROPERTY(edge, Edge)
DoubleDescriptors geometryValues() const override { return {edge()}; }
QVector<DoubleProperty*> serializationProperties() override { return {&m_edge}; }
};
class EllipsoidalCylinderItem : public FormFactorItem {
......@@ -161,6 +195,10 @@ public:
FF_PROPERTY(height, Height)
DoubleDescriptors geometryValues() const override { return {radiusX(), radiusY(), height()}; }
QVector<DoubleProperty*> serializationProperties() override
{
return {&m_radiusX, &m_radiusY, &m_height};
}
};
class FullSphereItem : public FormFactorItem {
......@@ -171,6 +209,7 @@ public:
FF_PROPERTY(radius, Radius)
DoubleDescriptors geometryValues() const override { return {radius()}; }
QVector<DoubleProperty*> serializationProperties() override { return {&m_radius}; }
};
class FullSpheroidItem : public FormFactorItem {
......@@ -182,6 +221,7 @@ public:
FF_PROPERTY(height, Height)
DoubleDescriptors geometryValues() const override { return {radius(), height()}; }
QVector<DoubleProperty*> serializationProperties() override { return {&m_radius, &m_height}; }
};
class HemiEllipsoidItem : public FormFactorItem {
......@@ -194,6 +234,10 @@ public:
FF_PROPERTY(height, Height)
DoubleDescriptors geometryValues() const override { return {radiusX(), radiusY(), height()}; }
QVector<DoubleProperty*> serializationProperties() override
{
return {&m_radiusX, &m_radiusY, &m_height};
}
};
class IcosahedronItem : public FormFactorItem {
......@@ -204,6 +248,7 @@ public:
FF_PROPERTY(edge, Edge)
DoubleDescriptors geometryValues() const override { return {edge()}; }
QVector<DoubleProperty*> serializationProperties() override { return {&m_edge}; }
};
class Prism3Item : public FormFactorItem {
......@@ -215,6 +260,7 @@ public:
FF_PROPERTY(height, Height)
DoubleDescriptors geometryValues() const override { return {baseEdge(), height()}; }
QVector<DoubleProperty*> serializationProperties() override { return {&m_baseEdge, &m_height}; }
};
class Prism6Item : public FormFactorItem {
......@@ -226,6 +272,7 @@ public:
FF_PROPERTY(height, Height)
DoubleDescriptors geometryValues() const override { return {baseEdge(), height()}; }
QVector<DoubleProperty*> serializationProperties() override { return {&m_baseEdge, &m_height}; }
};
class PyramidItem : public FormFactorItem {
......@@ -238,6 +285,10 @@ public:
FF_PROPERTY(alpha, Alpha)
DoubleDescriptors geometryValues() const override { return {baseEdge(), height(), alpha()}; }
QVector<DoubleProperty*> serializationProperties() override
{
return {&m_baseEdge, &m_height, &m_alpha};
}
};
class CosineRippleBoxItem : public FormFactorItem {
......@@ -250,6 +301,10 @@ public:
FF_PROPERTY(height, Height)
DoubleDescriptors geometryValues() const override { return {length(), width(), height()}; }
QVector<DoubleProperty*> serializationProperties() override
{
return {&m_length, &m_width, &m_height};
}
};
class CosineRippleGaussItem : public FormFactorItem {
......@@ -262,6 +317,10 @@ public:
FF_PROPERTY(height, Height)
DoubleDescriptors geometryValues() const override { return {length(), width(), height()}; }
QVector<DoubleProperty*> serializationProperties() override
{
return {&m_length, &m_width, &m_height};
}
};
class CosineRippleLorentzItem : public FormFactorItem {
......@@ -274,6 +333,10 @@ public:
FF_PROPERTY(height, Height)
DoubleDescriptors geometryValues() const override { return {length(), width(), height()}; }
QVector<DoubleProperty*> serializationProperties() override
{
return {&m_length, &m_width, &m_height};
}
};
class SawtoothRippleBoxItem : public FormFactorItem {
......@@ -290,6 +353,10 @@ public:
{
return {length(), width(), height(), asymmetry()};
}
QVector<DoubleProperty*> serializationProperties() override
{
return {&m_length, &m_width, &m_height, &m_asymmetry};
}
};
class SawtoothRippleGaussItem : public FormFactorItem {
......@@ -306,6 +373,10 @@ public:
{
return {length(), width(), height(), asymmetry()};
}
QVector<DoubleProperty*> serializationProperties() override
{
return {&m_length, &m_width, &m_height, &m_asymmetry};
}
};
class SawtoothRippleLorentzItem : public FormFactorItem {
......@@ -322,6 +393,10 @@ public:
{
return {length(), width(), height(), asymmetry()};
}
QVector<DoubleProperty*> serializationProperties() override
{
return {&m_length, &m_width, &m_height, &m_asymmetry};
}
};
class TetrahedronItem : public FormFactorItem {
......@@ -334,6 +409,10 @@ public:
FF_PROPERTY(alpha, Alpha)
DoubleDescriptors geometryValues() const override { return {baseEdge(), height(), alpha()}; }
QVector<DoubleProperty*> serializationProperties() override
{
return {&m_baseEdge, &m_height, &m_alpha};
}
};
class TruncatedCubeItem : public FormFactorItem {
......@@ -345,6 +424,10 @@ public:
FF_PROPERTY(removedLength, RemovedLength)
DoubleDescriptors geometryValues() const override { return {length(), removedLength()}; }
QVector<DoubleProperty*> serializationProperties() override
{
return {&m_length, &m_removedLength};
}
};
class TruncatedSphereItem : public FormFactorItem {
......@@ -357,6 +440,10 @@ public:
FF_PROPERTY(removedTop, RemovedTop)
DoubleDescriptors geometryValues() const override { return {radius(), height(), removedTop()}; }
QVector<DoubleProperty*> serializationProperties() override
{
return {&m_radius, &m_height, &m_removedTop};
}
};
class TruncatedSpheroidItem : public FormFactorItem {
......@@ -373,6 +460,10 @@ public:
{
return {radius(), height(), heightFlattening(), removedTop()};
}
QVector<DoubleProperty*> serializationProperties() override
{
return {&m_radius, &m_height, &m_heightFlattening, &m_removedTop};
}
};
#endif // BORNAGAIN_GUI_MODEL_SAMPLE_FORMFACTORITEMS_H
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