Skip to content

Commit

Permalink
[OMEdit] Additional parameters for vector scaling (#9428)
Browse files Browse the repository at this point in the history
* Reorder members of classes in Visualization.h/.cpp

* Add missing attributes updates in VisualizationFMU

* Abstract init and update of visualizers attributes

* Move some VisualizationAbs members to OMVisualBase

* Add generic method to list all visualizers objects

* Make containers of visualizers now private members

* Add two parameters to heuristics for vector scales
  • Loading branch information
anotheruserofgithub committed Sep 28, 2022
1 parent 6314a69 commit 0887137
Show file tree
Hide file tree
Showing 11 changed files with 605 additions and 780 deletions.
2 changes: 1 addition & 1 deletion OMEdit/OMEditLIB/Animation/AbstractAnimationWindow.cpp
Expand Up @@ -418,7 +418,7 @@ bool AbstractAnimationWindow::loadVisualization()
//add scene for the chosen visualization
mpViewerWidget->getSceneView()->setSceneData(mpVisualization->getOMVisScene()->getScene().getRootNode().get());
//choose suitable scales for the vector visualizers so that they fit well in the scene
mpVisualization->chooseVectorScales(mpViewerWidget->getSceneView(), mpViewerWidget->getFrameMutex(), std::bind(&ViewerWidget::frame, mpViewerWidget));
mpVisualization->getBaseData()->chooseVectorScales(mpViewerWidget->getSceneView(), mpViewerWidget->getFrameMutex(), std::bind(&ViewerWidget::frame, mpViewerWidget));
}
//add window title
setWindowTitle(QString::fromStdString(mFileName));
Expand Down
3 changes: 3 additions & 0 deletions OMEdit/OMEditLIB/Animation/Vector.h
Expand Up @@ -59,11 +59,14 @@ class VectorObject : public AbstractVisualizerObject
float getScaleTransf() const {return mScaleTransf;}
void setAutoScaleCancellationRequired(const bool required) {mAutoScaleCancellationRequired = required;}
bool getAutoScaleCancellationRequired() const {return mAutoScaleCancellationRequired;}
void setCoordinates(const float x, const float y, const float z) {_coords[0].exp = x, _coords[1].exp = y, _coords[2].exp = z;}
void getCoordinates(float* x, float* y, float* z) const {*x = _coords[0].exp, *y = _coords[1].exp, *z = _coords[2].exp;}
float getLength () const {return mScaleTransf * mScaleLength * std::sqrt(_coords[0].exp * _coords[0].exp + _coords[1].exp * _coords[1].exp + _coords[2].exp * _coords[2].exp);}
float getRadius () const {return mScaleTransf * mScaleRadius * kRadius ;}
float getHeadLength() const {return mScaleTransf * mScaleRadius * kHeadLength;}
float getHeadRadius() const {return mScaleTransf * mScaleRadius * kHeadRadius;}
VectorQuantity getQuantity() const {return static_cast<VectorQuantity>(_quantity.exp);}
bool areCoordinatesConstant() const {return _coords[0].isConst && _coords[1].isConst && _coords[2].isConst;}
bool hasHeadAtOrigin() const {return _headAtOrigin.exp;}
bool isTwoHeadedArrow() const {return _twoHeadedArrow.exp;}
bool isAdjustableRadius() const {return getQuantity() != VectorQuantity::relativePosition;}
Expand Down
26 changes: 8 additions & 18 deletions OMEdit/OMEditLIB/Animation/ViewerWidget.cpp
Expand Up @@ -342,7 +342,7 @@ void ViewerWidget::changeVisualizerTransparency()
currentTransparency, min, max, step, &ok);
if (ok) { // Picked transparency is not OK if the user cancels the dialog
mpSelectedVisualizer->setTransparency((float) (transparency - min) / (max - min));
mpAnimationWidget->getVisualization()->modifyVisualizer(mpSelectedVisualizer);
mpAnimationWidget->getVisualization()->getBaseData()->modifyVisualizer(mpSelectedVisualizer);
}
mpSelectedVisualizer = nullptr;
}
Expand All @@ -365,7 +365,7 @@ void ViewerWidget::makeVisualizerInvisible()
}
}
mpSelectedVisualizer->setTransparency(1.0);
mpAnimationWidget->getVisualization()->modifyVisualizer(mpSelectedVisualizer);
mpAnimationWidget->getVisualization()->getBaseData()->modifyVisualizer(mpSelectedVisualizer);
mpSelectedVisualizer = nullptr;
}
}
Expand All @@ -390,7 +390,7 @@ void ViewerWidget::changeVisualizerColor()
const QColor color = QColorDialog::getColor(currentColor, this, Helper::chooseColor);
if (color.isValid()) { // Picked color is invalid if the user cancels the dialog
mpSelectedVisualizer->setColor(color);
mpAnimationWidget->getVisualization()->modifyVisualizer(mpSelectedVisualizer);
mpAnimationWidget->getVisualization()->getBaseData()->modifyVisualizer(mpSelectedVisualizer);
}
mpSelectedVisualizer = nullptr;
}
Expand All @@ -413,7 +413,7 @@ void ViewerWidget::applyCheckerTexture()
}
}
mpSelectedVisualizer->setTextureImagePath(":/Resources/bitmaps/check.png");
mpAnimationWidget->getVisualization()->modifyVisualizer(mpSelectedVisualizer);
mpAnimationWidget->getVisualization()->getBaseData()->modifyVisualizer(mpSelectedVisualizer);
mpSelectedVisualizer = nullptr;
}
}
Expand All @@ -439,7 +439,7 @@ void ViewerWidget::applyCustomTexture()
(QString*) currentFileName, Helper::bitmapFileTypes, nullptr);
if (!fileName.isEmpty()) { // Picked file name is empty if the user cancels the dialog
mpSelectedVisualizer->setTextureImagePath(fileName.toStdString());
mpAnimationWidget->getVisualization()->modifyVisualizer(mpSelectedVisualizer);
mpAnimationWidget->getVisualization()->getBaseData()->modifyVisualizer(mpSelectedVisualizer);
}
mpSelectedVisualizer = nullptr;
}
Expand All @@ -462,7 +462,7 @@ void ViewerWidget::removeTexture()
}
}
mpSelectedVisualizer->setTextureImagePath("");
mpAnimationWidget->getVisualization()->modifyVisualizer(mpSelectedVisualizer);
mpAnimationWidget->getVisualization()->getBaseData()->modifyVisualizer(mpSelectedVisualizer);
mpSelectedVisualizer = nullptr;
}
}
Expand All @@ -473,20 +473,10 @@ void ViewerWidget::removeTexture()
*/
void ViewerWidget::resetTransparencyAndTextureForAllVisualizers()
{
std::vector<ShapeObject>& shapes = mpAnimationWidget->getVisualization()->getBaseData()->_shapes;
std::vector<VectorObject>& vectors = mpAnimationWidget->getVisualization()->getBaseData()->_vectors;
std::vector<std::reference_wrapper<AbstractVisualizerObject>> visualizers;
visualizers.reserve(shapes.size() + vectors.size());
for (ShapeObject& shape : shapes) {
visualizers.push_back(shape);
}
for (VectorObject& vector : vectors) {
visualizers.push_back(vector);
}
for (AbstractVisualizerObject& visualizer : visualizers) {
for (AbstractVisualizerObject& visualizer : mpAnimationWidget->getVisualization()->getBaseData()->getVisualizerObjects()) {
visualizer.setTransparency(0.0);
visualizer.setTextureImagePath("");
mpAnimationWidget->getVisualization()->modifyVisualizer(visualizer);
mpAnimationWidget->getVisualization()->getBaseData()->modifyVisualizer(visualizer);
}
}

Expand Down

0 comments on commit 0887137

Please sign in to comment.