CTL  0.6.1
Computed Tomography Library
datamodeloperations.h
1 #ifndef CTL_DATAMODELOPERATIONS_H
2 #define CTL_DATAMODELOPERATIONS_H
3 
4 #include "abstractdatamodel.h"
5 #include "abstractdatamodel2d.h"
6 
7 namespace CTL {
8 
10 {
11 public:
12  AbstractDataModelOperation(std::shared_ptr<AbstractDataModel> lhs,
13  std::shared_ptr<AbstractDataModel> rhs);
14 
15  QVariant parameter() const override;
16  void setParameter(const QVariant& parameter) override;
17 
18  ~AbstractDataModelOperation() override = default;
19 
20 protected:
21  std::shared_ptr<AbstractDataModel> _lhs;
22  std::shared_ptr<AbstractDataModel> _rhs;
23 
24  AbstractDataModelOperation() = default;
27  AbstractDataModelOperation& operator=(const AbstractDataModelOperation&) = default;
29 };
30 
32 {
34 
35  // abstract interface
36  public: float valueAt(float position) const override;
37  public: AbstractDataModel* clone() const override;
38 
39 public:
41 };
42 
44 {
46 
47  // abstract interface
48  public: float valueAt(float position) const override;
49  public: AbstractDataModel* clone() const override;
50 
51 public:
53 };
54 
56 {
58 
59  // abstract interface
60  public: float valueAt(float position) const override;
61  public: AbstractDataModel* clone() const override;
62 
63 public:
65 };
66 
68 {
70 
71  // abstract interface
72  public: float valueAt(float position) const override;
73  public: AbstractDataModel* clone() const override;
74 
75 public:
77 };
78 
80 {
82 
83  // abstract interface
84  public: float valueAt(float position) const override;
85  public: AbstractDataModel* clone() const override;
86 
87 public:
89 };
90 
91 // Operations for integrable models
93 {
94 public:
95  AbstractIntegrableDataModelOperation(std::shared_ptr<AbstractIntegrableDataModel> lhs,
96  std::shared_ptr<AbstractIntegrableDataModel> rhs);
97 
98  QVariant parameter() const override;
99  void setParameter(const QVariant& parameter) override;
100 
101  ~AbstractIntegrableDataModelOperation() override = default;
102 
103 protected:
104  std::shared_ptr<AbstractIntegrableDataModel> _lhs;
105  std::shared_ptr<AbstractIntegrableDataModel> _rhs;
106 
112 };
113 
115 {
117 
118  // abstract interface
119  public: float valueAt(float position) const override;
120  public: float binIntegral(float position, float binWidth) const override;
121  public: AbstractIntegrableDataModel* clone() const override;
122 
123 public:
125 };
126 
128 {
130 
131  // abstract interface
132  public: float valueAt(float position) const override;
133  public: float binIntegral(float position, float binWidth) const override;
134  public: AbstractIntegrableDataModel* clone() const override;
135 
136 public:
138 };
139 
140 // #########
141 // 2D models
143 {
144 public:
145  AbstractDataModel2DOperation(std::shared_ptr<AbstractDataModel2D> lhs,
146  std::shared_ptr<AbstractDataModel2D> rhs);
147 
148  QVariant parameter() const override;
149  void setParameter(const QVariant& parameter) override;
150 
151  ~AbstractDataModel2DOperation() override = default;
152 
153 protected:
154  std::shared_ptr<AbstractDataModel2D> _lhs;
155  std::shared_ptr<AbstractDataModel2D> _rhs;
156 
157  AbstractDataModel2DOperation() = default;
160  AbstractDataModel2DOperation& operator=(const AbstractDataModel2DOperation&) = default;
162 };
163 
165 {
167 
168  // abstract interface
169  public: float valueAt(float x, float y) const override;
170  public: AbstractDataModel2D* clone() const override;
171 
172 public:
174 };
175 
177 {
179 
180  // abstract interface
181  public: float valueAt(float x, float y) const override;
182  public: AbstractDataModel2D* clone() const override;
183 
184 public:
186 };
187 
189 {
191 
192  // abstract interface
193  public: float valueAt(float x, float y) const override;
194  public: AbstractDataModel2D* clone() const override;
195 
196 public:
198 };
199 
201 {
203 
204  // abstract interface
205  public: float valueAt(float x, float y) const override;
206  public: AbstractDataModel2D* clone() const override;
207 
208 public:
210 };
211 
212 
213 } // namespace CTL
214 
215 #endif // CTL_DATAMODELOPERATIONS_H
Definition: datamodeloperations.h:200
Definition: datamodeloperations.h:55
The AbstractDataModel2D class is the base class for two-dimensional data models.
Definition: abstractdatamodel2d.h:47
Definition: datamodeloperations.h:43
Definition: datamodeloperations.h:9
QVariant parameter() const override
Definition: datamodeloperations.cpp:42
Definition: datamodeloperations.h:31
void setParameter(const QVariant &parameter) override
Definition: datamodeloperations.cpp:44
Definition: datamodeloperations.h:142
AbstractDataModel * clone() const override
Definition: datamodeloperations.cpp:73
Definition: datamodeloperations.h:79
Definition: datamodeloperations.h:67
Definition: datamodeloperations.h:127
The AbstractDataModel class is the base class for basic data models.
Definition: abstractdatamodel.h:55
#define CTL_TYPE_ID(newIndex)
Definition: serializationinterface.h:189
float valueAt(float position) const override
Definition: datamodeloperations.cpp:51
Definition: datamodeloperations.h:114
Definition: datamodeloperations.h:92
Definition: datamodeloperations.h:176
Definition: datamodeloperations.h:188
The AbstractIntegrableDataModel class is the base class for data models that provide a means to integ...
Definition: abstractdatamodel.h:110
Definition: datamodeloperations.h:164