CTL  0.6.1
Computed Tomography Library
abstractdatamodel2d.h
Go to the documentation of this file.
1 #ifndef CTL_ABSTRACTDATAMODEL2D_H
2 #define CTL_ABSTRACTDATAMODEL2D_H
3 
5 
6 #include <memory>
7 
8 namespace CTL {
9 
10 template<typename>
11 class Chunk2D;
12 template<typename>
13 class Range;
14 
15 typedef Range<float> SamplingRange;
16 
48 {
50 
51  public:virtual float valueAt(float x, float y) const = 0;
52  public:virtual AbstractDataModel2D* clone() const = 0;
53 
54 public:
55  virtual QVariant parameter() const;
56  virtual void setParameter(const QVariant& parameter);
57 
58  void setParameter(const QString& name, const QVariant& value);
59 
60  // SerializationInterface interface
61  void fromVariant(const QVariant &variant) override;
62  QVariant toVariant() const override;
63 
64  QString name() const { return _name; }
65  void setName(const QString& name) { _name = name; }
66 
67  Chunk2D<float> sampleChunk(const SamplingRange& xRange, const SamplingRange& yRange,
68  uint nbSamplesX, uint nbSamplesY) const;
69 
70  ~AbstractDataModel2D() override = default;
71 
72 private:
73  QString _name;
74 
75 protected:
76  AbstractDataModel2D() = default;
77  AbstractDataModel2D(const AbstractDataModel2D&) = default;
78  AbstractDataModel2D(AbstractDataModel2D&&) = default;
79  AbstractDataModel2D& operator=(const AbstractDataModel2D&) = default;
80  AbstractDataModel2D& operator=(AbstractDataModel2D&&) = default;
81 };
82 
83 // Data model operators
84 std::shared_ptr<AbstractDataModel2D> operator+(std::shared_ptr<AbstractDataModel2D> lhs,
85  std::shared_ptr<AbstractDataModel2D> rhs);
86 std::shared_ptr<AbstractDataModel2D> operator-(std::shared_ptr<AbstractDataModel2D> lhs,
87  std::shared_ptr<AbstractDataModel2D> rhs);
88 std::shared_ptr<AbstractDataModel2D> operator*(std::shared_ptr<AbstractDataModel2D> lhs,
89  std::shared_ptr<AbstractDataModel2D> rhs);
90 std::shared_ptr<AbstractDataModel2D> operator/(std::shared_ptr<AbstractDataModel2D> lhs,
91  std::shared_ptr<AbstractDataModel2D> rhs);
92 std::shared_ptr<AbstractDataModel2D>& operator+=(std::shared_ptr<AbstractDataModel2D>& lhs,
93  const std::shared_ptr<AbstractDataModel2D>& rhs);
94 std::shared_ptr<AbstractDataModel2D>& operator-=(std::shared_ptr<AbstractDataModel2D>& lhs,
95  const std::shared_ptr<AbstractDataModel2D>& rhs);
96 std::shared_ptr<AbstractDataModel2D>& operator*=(std::shared_ptr<AbstractDataModel2D>& lhs,
97  const std::shared_ptr<AbstractDataModel2D>& rhs);
98 std::shared_ptr<AbstractDataModel2D>& operator/=(std::shared_ptr<AbstractDataModel2D>& lhs,
99  const std::shared_ptr<AbstractDataModel2D>& rhs);
100 
101 } // namespace CTL
102 
104 
206 
208 #endif // CTL_ABSTRACT2DDATAMODEL2D_H
void fromVariant(const QVariant &variant) override
Definition: abstractdatamodel2d.cpp:55
The AbstractDataModel2D class is the base class for two-dimensional data models.
Definition: abstractdatamodel2d.h:47
virtual void setParameter(const QVariant &parameter)
Definition: abstractdatamodel2d.cpp:32
virtual QVariant parameter() const
Definition: abstractdatamodel2d.cpp:19
Specify an interface for de-/serialization from/to QVariants.
Definition: serializationinterface.h:17
QVariant toVariant() const override
Definition: abstractdatamodel2d.cpp:70
#define CTL_TYPE_ID(newIndex)
Definition: serializationinterface.h:189
unsigned int uint
Qt style alias for unsigned int.
Definition: modulelayout.h:6
Chunk2D< float > sampleChunk(const SamplingRange &xRange, const SamplingRange &yRange, uint nbSamplesX, uint nbSamplesY) const
Definition: abstractdatamodel2d.cpp:88