@@ -15,6 +15,8 | |||
|
15 | 15 | #include <Common/Numeric.h> |
|
16 | 16 | #include <Data/DateTimeRange.h> |
|
17 | 17 | |
|
18 | enum class TransformationType { ZoomOut, ZoomIn, PanRight, PanLeft, Unknown }; | |
|
19 | ||
|
18 | 20 | namespace DateTimeRangeHelper { |
|
19 | 21 | |
|
20 | 22 | |
@@ -40,6 +42,7 namespace DateTimeRangeHelper { | |||
|
40 | 42 | SciQLop::numeric::almost_equal<double>(range1.center(), range2.center(),1); |
|
41 | 43 | } |
|
42 | 44 | |
|
45 | ||
|
43 | 46 | /** |
|
44 | 47 | * @brief computeTransformation such as range2 = zoom*range1 + shift |
|
45 | 48 | * @param range1 |
@@ -60,6 +63,24 namespace DateTimeRangeHelper { | |||
|
60 | 63 | return transformation; |
|
61 | 64 | } |
|
62 | 65 | |
|
66 | inline TransformationType getTransformationType(const DateTimeRange& range1, const DateTimeRange& range2) | |
|
67 | { | |
|
68 | auto transformation = computeTransformation (range1,range2); | |
|
69 | if(transformation.has_value ()) | |
|
70 | { | |
|
71 | if(SciQLop::numeric::almost_equal(transformation->zoom,1.)) | |
|
72 | { | |
|
73 | if(transformation->shift > 0.) | |
|
74 | return TransformationType::PanRight; | |
|
75 | return TransformationType::PanLeft; | |
|
76 | } | |
|
77 | if(transformation->zoom > 0.) | |
|
78 | return TransformationType::ZoomOut; | |
|
79 | return TransformationType::ZoomIn; | |
|
80 | } | |
|
81 | return TransformationType::Unknown; | |
|
82 | } | |
|
83 | ||
|
63 | 84 | } |
|
64 | 85 | |
|
65 | 86 | #endif // SCIQLOP_DATETIMERANGEHELPER_H |
@@ -37,7 +37,13 public: | |||
|
37 | 37 | |
|
38 | 38 | void synchronize(const std::shared_ptr<Variable>& var, const std::shared_ptr<Variable>& with); |
|
39 | 39 | |
|
40 | //This should be somewhere else VC has nothing to do with MIMEData | |
|
40 | 41 | QByteArray mimeData(const std::vector<std::shared_ptr<Variable>> &variables) const; |
|
42 | const std::vector<std::shared_ptr<Variable>> variables(QByteArray mimeData); | |
|
43 | ||
|
44 | const std::shared_ptr<Variable>& operator[] (int index) const; | |
|
45 | std::shared_ptr<Variable> operator[] (int index); | |
|
46 | ||
|
41 | 47 | |
|
42 | 48 | signals: |
|
43 | 49 | void variableAdded(const std::shared_ptr<Variable>&); |
@@ -61,6 +61,15 class VariableController2::VariableController2Private | |||
|
61 | 61 | return _variables[variable]; |
|
62 | 62 | } |
|
63 | 63 | |
|
64 | inline std::shared_ptr<Variable> variable(int index) | |
|
65 | { | |
|
66 | QReadLocker lock{&_lock}; | |
|
67 | [[unlikely]] | |
|
68 | if(!_variables.size() > index) | |
|
69 | SCIQLOP_ERROR(threadSafeVaraiblesMaps,"Index is out of bounds"); | |
|
70 | return _variables.values()[index]; | |
|
71 | } | |
|
72 | ||
|
64 | 73 | inline const std::vector<std::shared_ptr<Variable>> variables() |
|
65 | 74 | { |
|
66 | 75 | std::vector<std::shared_ptr<Variable>> vars; |
@@ -239,6 +248,16 public: | |||
|
239 | 248 | return newVar; |
|
240 | 249 | } |
|
241 | 250 | |
|
251 | std::shared_ptr<Variable> variable(QUuid ID) | |
|
252 | { | |
|
253 | return _maps.variable(ID); | |
|
254 | } | |
|
255 | ||
|
256 | std::shared_ptr<Variable> variable(int index) | |
|
257 | { | |
|
258 | return _maps.variable(index); | |
|
259 | } | |
|
260 | ||
|
242 | 261 | std::shared_ptr<Variable> cloneVariable(const std::shared_ptr<Variable>& variable) |
|
243 | 262 | { |
|
244 | 263 | auto newVar = variable->clone(); |
@@ -356,3 +375,29 QByteArray VariableController2::mimeData(const std::vector<std::shared_ptr<Varia | |||
|
356 | 375 | } |
|
357 | 376 | return encodedData; |
|
358 | 377 | } |
|
378 | ||
|
379 | const std::vector<std::shared_ptr<Variable>> VariableController2::variables(QByteArray mimeData) | |
|
380 | { | |
|
381 | std::vector<std::shared_ptr<Variable>> variables; | |
|
382 | QDataStream stream{mimeData}; | |
|
383 | ||
|
384 | QVariantList ids; | |
|
385 | stream >> ids; | |
|
386 | ||
|
387 | for (const auto& id : ids) { | |
|
388 | auto uuid = QUuid{id.toByteArray()}; | |
|
389 | variables.push_back (impl->variable(uuid)); | |
|
390 | } | |
|
391 | ||
|
392 | return variables; | |
|
393 | } | |
|
394 | ||
|
395 | const std::shared_ptr<Variable> &VariableController2::operator[](int index) const | |
|
396 | { | |
|
397 | return impl->variable (index); | |
|
398 | } | |
|
399 | ||
|
400 | std::shared_ptr<Variable> VariableController2::operator[](int index) | |
|
401 | { | |
|
402 | return impl->variable (index); | |
|
403 | } |
General Comments 0
You need to be logged in to leave comments.
Login now