OpenTwin 0.1
OpenTwin
 
Loading...
Searching...
No Matches
RubberbandConfiguration.h
Go to the documentation of this file.
1/*
2 * File: RubberbandConfiguration.h
3 * Package: rbeCore
4 *
5 * Created on: November 07, 2021
6 * Author: Alexander Kuester
7 * Copyright (c) 2021 Alexander Kuester
8 * This file is part of the RubberbandEngine package.
9 * This file is subject to the terms and conditions defined in
10 * file 'LICENSE', which is part of this source code package.
11 */
12
13#pragma once
14
15#ifdef RUBBERBANDENGINECORE_EXPORTS
16#pragma warning(disable: 4251)
17#endif // RUBBERBANDENGINECORE_EXPORTS
18
19#include <rbeCore/dataTypes.h>
20
21#include <rapidjson/document.h>
22
23#include <string>
24#include <list>
25
26namespace rbeCore {
27
28 class cfgStep;
29 class cfgLimit;
30 class cfgPoint;
31 class ConnectionConfigurationData;
32 class cfgLineConnection;
33 class cfgHistoryConnection;
34 class cfgCircleConnection;
35
37 public:
38
41
42 // #############################################################################################
43
44 // Defaults
45
46 void setToDefaultCuboid(void);
47
48 void setToDefaultCylinder(void);
49
50 void setToDefaultSphere(void);
51
52 void setToDefaultTorus(void);
53
54 void setToDefaultCone(void);
55
56 void setToDefaultPyramid(void);
57
58 // #############################################################################################
59
60 // Getter
61
62 const std::list<cfgStep> steps(void) const { return m_steps; }
63
64 void addToJsonObject(rapidjson::Document& _doc, rapidjson::Value& _object) const;
65
66 // #############################################################################################
67
68 // Operators
69
70 void clear(void);
71
72 RubberbandConfiguration& operator << (const cfgStep& _step);
73
74 std::string toJson(void) const;
75
76 private:
77 std::list<cfgStep> m_steps;
78
81 };
82
83 // ##################################################################################################################################################
84
85 // ##################################################################################################################################################
86
87 // ##################################################################################################################################################
88
90 public:
95
96 // ###########################################################################################################
97
98 // Setter
99
100 void add(const cfgCircleConnection& _connection);
101 void add(const cfgLineConnection& _connection);
102 void add(const cfgHistoryConnection& _connection);
103
104 // #############################################################################################
105
106 // Getter
107
108 const std::list<cfgCircleConnection>& circles(void) const { return m_circles; }
109 const std::list<cfgLineConnection>& lines(void) const { return m_lines; }
110 const std::list<cfgHistoryConnection>& history(void) const { return m_history; }
111
112 void addToJsonArray(rapidjson::Document& _doc, rapidjson::Value& _array) const;
113
114 private:
115
116 std::list<cfgCircleConnection> m_circles;
117 std::list<cfgLineConnection> m_lines;
118 std::list<cfgHistoryConnection> m_history;
119 };
120
121 // ##################################################################################################################################################
122
123 // ##################################################################################################################################################
124
125 // ##################################################################################################################################################
126
128 public:
131 W
132 };
133
136 cfgStep(Projection _projection = UV, bool _mayEndWithoutThisStep = false);
137 cfgStep(const cfgStep& _other);
138 virtual ~cfgStep();
139 cfgStep& operator = (const cfgStep& _other);
140
141 // #############################################################################################
142
143 // Getter
144
145 const std::list<cfgPoint>& points(void) const { return m_points; }
146 Projection projection(void) const { return m_projection; }
147 const ConnectionConfigurationData& connectionData(void) const { return m_connectionData; }
148 bool mayEndWithout(void) const { return m_mayEndWithoutThisStep; }
149
150 void addToJsonObject(rapidjson::Document& _doc, rapidjson::Value& _object, int _id) const;
151
152 // #############################################################################################
153
154 cfgStep& operator << (const cfgPoint& _point);
155 cfgStep& operator << (const cfgLineConnection& _connection);
156 cfgStep& operator << (const cfgCircleConnection& _connection);
157 cfgStep& operator << (const cfgHistoryConnection& _connection);
158 cfgStep& operator << (const ConnectionConfigurationData& _connectionData);
159 cfgStep& operator << (const cfgLimit& _limit);
160
161 private:
162
163 Projection m_projection;
164 bool m_mayEndWithoutThisStep;
165 std::list<cfgPoint> m_points;
166 std::list<cfgLimit> m_limits;
167 ConnectionConfigurationData m_connectionData;
168 };
169
170 // ##################################################################################################################################################
171
172 // ##################################################################################################################################################
173
174 // ##################################################################################################################################################
175
177 public:
178 cfgLimit(AxisLimit _axisLimit, int _pointId);
179 cfgLimit(AxisLimit _axisLimit, const std::string& _formula);
180 cfgLimit(const cfgLimit& _other);
181 virtual ~cfgLimit(void);
182 cfgLimit& operator = (const cfgLimit& _other);
183
184 // ###########################################################################################################
185
186 // Getter
187
188 void addToJsonObject(rapidjson::Document& _doc, rapidjson::Value& _object) const;
189
190 private:
191
192 AxisLimit m_axisLimit;
193 std::string m_formula;
194
195 cfgLimit() = delete;
196 };
197
198 // ##################################################################################################################################################
199
200 // ##################################################################################################################################################
201
202 // ##################################################################################################################################################
203
205 public:
206 cfgPoint(int _id, const std::string& _formulaU, const std::string& _formulaV, const std::string& _formulaW);
207 cfgPoint(int _id, DefaultPoint _formulaU, const std::string& _formulaV, const std::string& _formulaW);
208 cfgPoint(int _id, const std::string& _formulaU, DefaultPoint _formulaV, const std::string& _formulaW);
209 cfgPoint(int _id, DefaultPoint _formulaU, DefaultPoint _formulaV, const std::string& _formulaW);
210 cfgPoint(int _id, const std::string& _formulaU, const std::string& _formulaV, DefaultPoint _formulaW);
211 cfgPoint(int _id, DefaultPoint, const std::string& _formulaV, DefaultPoint _formulaW);
212 cfgPoint(int _id, const std::string& _formulaU, DefaultPoint _formulaV, DefaultPoint _formulaW);
213 cfgPoint(int _id, DefaultPoint _formulaU, DefaultPoint _formulaV, DefaultPoint _formulaW);
214 cfgPoint(const cfgPoint& _other);
215 virtual ~cfgPoint();
216 cfgPoint& operator = (const cfgPoint& _other);
217
218 // ###########################################################################################################
219
220 // Getter
221
222 int id(void) const { return m_id; }
223 const std::string& u(void) const { return m_formulaU; }
224 const std::string& v(void) const { return m_formulaV; }
225 const std::string& w(void) const { return m_formulaW; }
226
227 void addToJsonObject(rapidjson::Document& _doc, rapidjson::Value& _object) const;
228
229 private:
230 static std::string toString(DefaultPoint _f, eAxis _axis);
231
232 int m_id;
233 std::string m_formulaU;
234 std::string m_formulaV;
235 std::string m_formulaW;
236 };
237
238 // ##################################################################################################################################################
239
240 // ##################################################################################################################################################
241
242 // ##################################################################################################################################################
243
245 public:
246 cfgLineConnection(int _pointFromId, int _pointToId, bool _ignoreInHistory = false);
247 cfgLineConnection(DefaultPoint _pointFrom, int _pointToId, bool _ignoreInHistory = false);
248 cfgLineConnection(int _pointFromId, DefaultPoint _pointTo, bool _ignoreInHistory = false);
249 cfgLineConnection(DefaultPoint _pointFrom, DefaultPoint _pointTo, bool _ignoreInHistory = false);
251 virtual ~cfgLineConnection();
252 cfgLineConnection& operator = (const cfgLineConnection& _other);
253
254 // ###########################################################################################################
255
256 // Getter
257
258 const std::string& idFrom(void) const { return m_from; }
259 const std::string& idTo(void) const { return m_to; }
260
261 void addToJsonObject(rapidjson::Document& _doc, rapidjson::Value& _object) const;
262
263 private:
264
265 std::string m_from;
266 std::string m_to;
267 bool m_ignoreInHistory;
268
269 cfgLineConnection() = delete;
270 };
271
272 // ##################################################################################################################################################
273
274 // ##################################################################################################################################################
275
276 // ##################################################################################################################################################
277
279 public:
281 cfgHistoryConnection(int _stepId, bool _ignoreInHistory = false);
283 virtual ~cfgHistoryConnection();
284 cfgHistoryConnection& operator = (const cfgHistoryConnection& _other);
285
286 // ###########################################################################################################
287
288 // Getter
289
290 int stepId(void) const { return m_stepId; }
291
292 void addToJsonObject(rapidjson::Document& _doc, rapidjson::Value& _object) const;
293
294 private:
295 int m_stepId;
296 bool m_ignoreInHistory;
297
298 cfgHistoryConnection() = delete;
299 };
300
301 // ##################################################################################################################################################
302
303 // ##################################################################################################################################################
304
305 // ##################################################################################################################################################
306
308 public:
309 cfgCircleConnection(int _centerPointId, const std::string& _radius, CircleOrientation _circleOrientation, bool _ignoreInHistory = false);
310 cfgCircleConnection(DefaultPoint _centerPoint, const std::string& _radius, CircleOrientation _circleOrientation, bool _ignoreInHistory = false);
312 virtual ~cfgCircleConnection();
313 cfgCircleConnection& operator = (const cfgCircleConnection& _other);
314 // ###########################################################################################################
315
316 // Getter
317
318 const std::string& centerPoint(void) const { return m_centerPoint; }
319 const std::string& radiusFormula(void) const { return m_radius; }
320 CircleOrientation orientation(void) const { return m_orientation; }
321
322 void addToJsonObject(rapidjson::Document& _doc, rapidjson::Value& _object) const;
323
324 private:
325 std::string m_centerPoint;
326 std::string m_radius;
327 CircleOrientation m_orientation;
328 bool m_ignoreInHistory;
329 };
330}
Definition RubberbandConfiguration.h:89
const std::list< cfgHistoryConnection > & history(void) const
Definition RubberbandConfiguration.h:110
const std::list< cfgLineConnection > & lines(void) const
Definition RubberbandConfiguration.h:109
const std::list< cfgCircleConnection > & circles(void) const
Definition RubberbandConfiguration.h:108
Definition RubberbandConfiguration.h:36
const std::list< cfgStep > steps(void) const
Definition RubberbandConfiguration.h:62
Definition RubberbandConfiguration.h:307
CircleOrientation orientation(void) const
Definition RubberbandConfiguration.h:320
const std::string & centerPoint(void) const
Definition RubberbandConfiguration.h:318
const std::string & radiusFormula(void) const
Definition RubberbandConfiguration.h:319
Definition RubberbandConfiguration.h:278
int stepId(void) const
Definition RubberbandConfiguration.h:290
Definition RubberbandConfiguration.h:176
Definition RubberbandConfiguration.h:244
const std::string & idTo(void) const
Definition RubberbandConfiguration.h:259
const std::string & idFrom(void) const
Definition RubberbandConfiguration.h:258
Definition RubberbandConfiguration.h:204
const std::string & u(void) const
Definition RubberbandConfiguration.h:223
const std::string & v(void) const
Definition RubberbandConfiguration.h:224
const std::string & w(void) const
Definition RubberbandConfiguration.h:225
int id(void) const
Definition RubberbandConfiguration.h:222
Definition RubberbandConfiguration.h:127
Projection projection(void) const
Definition RubberbandConfiguration.h:146
Projection
Definition RubberbandConfiguration.h:129
@ UV
Definition RubberbandConfiguration.h:130
const ConnectionConfigurationData & connectionData(void) const
Definition RubberbandConfiguration.h:147
const std::list< cfgPoint > & points(void) const
Definition RubberbandConfiguration.h:145
bool mayEndWithout(void) const
Definition RubberbandConfiguration.h:148
#define RBE_API_EXPORT
Definition dataTypes.h:18
Definition ParserAPI.h:21
AxisLimit
Definition dataTypes.h:61
CircleOrientation
Definition dataTypes.h:55
DefaultPoint
Definition dataTypes.h:50
eAxis
Definition dataTypes.h:31
@ W
Definition dataTypes.h:34