diff --git a/GUI/Model/Sample/Lattice2DItems.cpp b/GUI/Model/Sample/Lattice2DItems.cpp index 2f7c4b5f59003a7d34b619c0ef102b809a29b6a2..6526d6717b5294cd31446edc8f4ad285a4d7cddc 100644 --- a/GUI/Model/Sample/Lattice2DItems.cpp +++ b/GUI/Model/Sample/Lattice2DItems.cpp @@ -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; diff --git a/GUI/Model/Sample/Lattice2DItems.h b/GUI/Model/Sample/Lattice2DItems.h index bd18d691e13b12e356a82c620f89e76e4f03eb6e..c11f0ecab67acb94f6e4569e7dbd163f3e283a85 100644 --- a/GUI/Model/Sample/Lattice2DItems.h +++ b/GUI/Model/Sample/Lattice2DItems.h @@ -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);