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

complete Lattice2DItems' serialization

parent f19bd1bf
No related branches found
No related tags found
1 merge request!573Sample item serialization
......@@ -15,6 +15,7 @@
#include "GUI/Model/Sample/Lattice2DItems.h"
#include "Base/Const/Units.h"
#include "Base/Util/Assert.h"
#include "GUI/Model/Session/Serializer.h"
#include "Sample/Lattice/Lattice2D.h"
Lattice2DItem::Lattice2DItem()
......@@ -56,6 +57,15 @@ std::unique_ptr<Lattice2D> BasicLattice2DItem::createLattice() const
Units::deg2rad(latticeRotationAngle()));
}
void BasicLattice2DItem::serialize(Serializer& s)
{
s.assertVersion(0);
s.rw(m_latticeRotationAngle);
s.rw(m_length1);
s.rw(m_length2);
s.rw(m_angle);
}
DoubleDescriptor BasicLattice2DItem::latticeLength1() const
{
return m_length1;
......@@ -99,6 +109,13 @@ std::unique_ptr<Lattice2D> SquareLattice2DItem::createLattice() const
return std::make_unique<SquareLattice2D>(m_length, Units::deg2rad(latticeRotationAngle()));
}
void SquareLattice2DItem::serialize(Serializer& s)
{
s.assertVersion(0);
s.rw(m_latticeRotationAngle);
s.rw(m_length);
}
DoubleDescriptor SquareLattice2DItem::latticeLength() const
{
return m_length;
......@@ -122,6 +139,13 @@ std::unique_ptr<Lattice2D> HexagonalLattice2DItem::createLattice() const
return std::make_unique<HexagonalLattice2D>(m_length, Units::deg2rad(latticeRotationAngle()));
}
void HexagonalLattice2DItem::serialize(Serializer& s)
{
s.assertVersion(0);
s.rw(m_latticeRotationAngle);
s.rw(m_length);
}
DoubleDescriptor HexagonalLattice2DItem::latticeLength() const
{
return m_length;
......
......@@ -21,6 +21,7 @@
class Lattice2D;
class DoubleDescriptor;
class Serializer;
class Lattice2DItem {
protected:
......@@ -29,19 +30,23 @@ protected:
public:
virtual ~Lattice2DItem() = default;
virtual std::unique_ptr<Lattice2D> createLattice() const = 0;
virtual void serialize(Serializer& s) = 0;
double unitCellArea() const;
DoubleDescriptor latticeRotationAngle() const;
void setLatticeRotationAngle(double angle);
private:
protected:
DoubleProperty m_latticeRotationAngle;
};
// -------------------------------------------------------------------------------------
class BasicLattice2DItem : public Lattice2DItem {
public:
BasicLattice2DItem();
std::unique_ptr<Lattice2D> createLattice() const override;
void serialize(Serializer& s) override;
DoubleDescriptor latticeLength1() const;
void setLatticeLength1(double length1);
......@@ -58,10 +63,13 @@ private:
DoubleProperty m_angle;
};
// -------------------------------------------------------------------------------------
class SquareLattice2DItem : public Lattice2DItem {
public:
SquareLattice2DItem();
std::unique_ptr<Lattice2D> createLattice() const override;
void serialize(Serializer& s) override;
DoubleDescriptor latticeLength() const;
void setLatticeLength(double length);
......@@ -70,10 +78,13 @@ private:
DoubleProperty m_length;
};
// -------------------------------------------------------------------------------------
class HexagonalLattice2DItem : public Lattice2DItem {
public:
HexagonalLattice2DItem();
std::unique_ptr<Lattice2D> createLattice() const override;
void serialize(Serializer& s) override;
DoubleDescriptor latticeLength() const;
void setLatticeLength(double length);
......
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