diff --git a/particle-track-and-trace/src/QT/MainWindow.cpp b/particle-track-and-trace/src/QT/MainWindow.cpp index 7595eee..ceae547 100644 --- a/particle-track-and-trace/src/QT/MainWindow.cpp +++ b/particle-track-and-trace/src/QT/MainWindow.cpp @@ -178,10 +178,10 @@ void MainWindow::on_SquareButton_clicked(bool checked) { } -void MainWindow::on_HexagonButton_clicked(bool checked) { +void MainWindow::on_CrossButton_clicked(bool checked) { if (checked) { for (Technique *t : ui->program->getTechniques()) { - t->setGlyphStyle(HEXAGON); + t->setGlyphStyle(CROSS); } ui->program->requestRender(); } diff --git a/particle-track-and-trace/src/QT/MainWindow.h b/particle-track-and-trace/src/QT/MainWindow.h index 32516a7..a377400 100644 --- a/particle-track-and-trace/src/QT/MainWindow.h +++ b/particle-track-and-trace/src/QT/MainWindow.h @@ -26,7 +26,7 @@ private slots: void on_CircleButton_clicked(bool checked); void on_TriangleButton_clicked(bool checked); void on_SquareButton_clicked(bool checked); - void on_HexagonButton_clicked(bool checked); + void on_CrossButton_clicked(bool checked); void on_FullySampledButton_clicked(bool checked); void on_RegularlySubsampledButton_clicked(bool checked); void on_IregularlySubsampledButton_clicked(bool checked); diff --git a/particle-track-and-trace/src/QT/ui_mainwindow.h b/particle-track-and-trace/src/QT/ui_mainwindow.h index 794ba0c..16dd934 100644 --- a/particle-track-and-trace/src/QT/ui_mainwindow.h +++ b/particle-track-and-trace/src/QT/ui_mainwindow.h @@ -47,7 +47,7 @@ public: QRadioButton *CircleButton; QRadioButton *TriangleButton; QRadioButton *SquareButton; - QRadioButton *HexagonButton; + QRadioButton *CrossButton; QGroupBox *GlyphBox_2; QVBoxLayout *verticalLayout_16; QRadioButton *FullySampledButton; @@ -188,10 +188,10 @@ public: verticalLayout_14->addWidget(SquareButton); - HexagonButton = new QRadioButton(GlyphBox); - HexagonButton->setObjectName(QString::fromUtf8("HexagonButton")); + CrossButton = new QRadioButton(GlyphBox); + CrossButton->setObjectName(QString::fromUtf8("CrossButton")); - verticalLayout_14->addWidget(HexagonButton); + verticalLayout_14->addWidget(CrossButton); GlyphBox_2 = new QGroupBox(ChannelBox); GlyphBox_2->setObjectName(QString::fromUtf8("GlyphBox_2")); @@ -260,11 +260,11 @@ public: CircleButton->setText(QCoreApplication::translate("MainWindow", "Circle", nullptr)); TriangleButton->setText(QCoreApplication::translate("MainWindow", "Triangle", nullptr)); SquareButton->setText(QCoreApplication::translate("MainWindow", "Square", nullptr)); - HexagonButton->setText(QCoreApplication::translate("MainWindow", "Hexagon", nullptr)); + CrossButton->setText(QCoreApplication::translate("MainWindow", "Cross", nullptr)); GlyphBox_2->setTitle(QCoreApplication::translate("MainWindow", "Glyph count", nullptr)); FullySampledButton->setText(QCoreApplication::translate("MainWindow", "Fully sampled", nullptr)); RegularlySubsampledButton->setText(QCoreApplication::translate("MainWindow", "Regularly subsampled", nullptr)); - IregularlySubsampledButton->setText(QCoreApplication::translate("MainWindow", "Irregularly sampled", nullptr)); + IregularlySubsampledButton->setText(QCoreApplication::translate("MainWindow", "Irregularly subsampled", nullptr)); } // retranslateUi }; diff --git a/particle-track-and-trace/src/layers/LGlyphLayer.cpp b/particle-track-and-trace/src/layers/LGlyphLayer.cpp index 13a2169..d458553 100644 --- a/particle-track-and-trace/src/layers/LGlyphLayer.cpp +++ b/particle-track-and-trace/src/layers/LGlyphLayer.cpp @@ -59,13 +59,13 @@ LGlyphLayer::LGlyphLayer(std::shared_ptr uvGrid, std::unique_ptr transformFilter = createCartographicTransformFilter(uvGrid); transformFilter->SetInputData(data); - vtkNew circleSource; - circleSource->SetGlyphTypeToCircle(); - circleSource->SetScale(0.02); - circleSource->Update(); + this->glyphSource = vtkSmartPointer::New(); + this->glyphSource->SetGlyphTypeToCircle(); + this->glyphSource->SetScale(0.02); + this->glyphSource->Update(); vtkNew glyph2D; - glyph2D->SetSourceConnection(circleSource->GetOutputPort()); + glyph2D->SetSourceConnection(this->glyphSource->GetOutputPort()); glyph2D->SetInputConnection(transformFilter->GetOutputPort()); glyph2D->SetScaleModeToDataScalingOff(); glyph2D->Update(); @@ -202,6 +202,23 @@ void LGlyphLayer::setSaturationMode(SaturationMode mode) { } } +void LGlyphLayer::setGlyphStyle(GlyphStyle style) { + switch (style) { + case CIRCLE: + this->glyphSource->SetGlyphTypeToCircle(); + break; + case SQUARE: + this->glyphSource->SetGlyphTypeToSquare(); + break; + case TRIANGLE: + this->glyphSource->SetGlyphTypeToTriangle(); + break; + case CROSS: + this->glyphSource->SetGlyphTypeToCross(); + break; + } +} + void LGlyphLayer::setDt(int dt) { this->dt = dt; diff --git a/particle-track-and-trace/src/layers/LGlyphLayer.h b/particle-track-and-trace/src/layers/LGlyphLayer.h index 0a1411c..38c9a77 100644 --- a/particle-track-and-trace/src/layers/LGlyphLayer.h +++ b/particle-track-and-trace/src/layers/LGlyphLayer.h @@ -4,6 +4,7 @@ #include "Layer.h" #include "../advection/kernel/AdvectionKernel.h" #include "../commands/SpawnPointCallback.h" +#include #include #include @@ -18,6 +19,7 @@ private: vtkSmartPointer particlesAge; vtkSmartPointer lutIdx; vtkSmartPointer mapper; + vtkSmartPointer glyphSource; std::unique_ptr advector; std::shared_ptr uvGrid; int dt = 3600; @@ -54,6 +56,7 @@ public: void setColourMode(ColourMode mode) override; void setSaturationMode(SaturationMode mode) override; + void setGlyphStyle(GlyphStyle style) override; /** * Sets a custom DT value, needed for advect calls to the simulation logic. diff --git a/particle-track-and-trace/src/layers/enums.h b/particle-track-and-trace/src/layers/enums.h index 2639e07..1637693 100644 --- a/particle-track-and-trace/src/layers/enums.h +++ b/particle-track-and-trace/src/layers/enums.h @@ -25,7 +25,7 @@ enum GlyphStyle { CIRCLE = 0, TRIANGLE = 1, SQUARE = 2, - HEXAGON = 3, + CROSS = 3, }; enum SamplingMode {