From cc3e62af0534ca6901f8f2887df1b97cf82b0678 Mon Sep 17 00:00:00 2001 From: djairoh Date: Sun, 26 May 2024 16:43:53 +0200 Subject: [PATCH] prep for configurable options --- particle-track-and-trace/src/CMakeLists.txt | 1 + particle-track-and-trace/src/Program.cpp | 5 ++ particle-track-and-trace/src/Program.h | 2 + .../src/QT/MainWindow.cpp | 59 +++++++++++++------ particle-track-and-trace/src/layers/Layer.cpp | 22 ++++--- particle-track-and-trace/src/layers/Layer.h | 7 +++ .../src/layers/Technique.cpp | 28 +++++++++ .../src/layers/Technique.h | 7 +++ particle-track-and-trace/src/layers/enums.h | 36 +++++++++++ 9 files changed, 138 insertions(+), 29 deletions(-) create mode 100644 particle-track-and-trace/src/layers/enums.h diff --git a/particle-track-and-trace/src/CMakeLists.txt b/particle-track-and-trace/src/CMakeLists.txt index 88ef71d..bb885c4 100644 --- a/particle-track-and-trace/src/CMakeLists.txt +++ b/particle-track-and-trace/src/CMakeLists.txt @@ -56,6 +56,7 @@ add_executable(ParticleTrackTrace MACOSX_BUNDLE main.cpp layers/LGlyphLayer.h layers/Technique.cpp layers/Technique.h + layers/enums.h Program.cpp Program.h commands/TimerCallbackCommand.h diff --git a/particle-track-and-trace/src/Program.cpp b/particle-track-and-trace/src/Program.cpp index de2f932..ca6ea7c 100644 --- a/particle-track-and-trace/src/Program.cpp +++ b/particle-track-and-trace/src/Program.cpp @@ -118,3 +118,8 @@ Program::~Program() { vtkSmartPointer Program::getCamera() { return this->cam; } + + +std::vector Program::getTechniques() { + return this->techniques; +} diff --git a/particle-track-and-trace/src/Program.h b/particle-track-and-trace/src/Program.h index bd259ac..193b76a 100644 --- a/particle-track-and-trace/src/Program.h +++ b/particle-track-and-trace/src/Program.h @@ -79,6 +79,8 @@ public: vtkSmartPointer getCamera(); + std::vector getTechniques(); + }; #endif diff --git a/particle-track-and-trace/src/QT/MainWindow.cpp b/particle-track-and-trace/src/QT/MainWindow.cpp index 40b4685..877fe3e 100644 --- a/particle-track-and-trace/src/QT/MainWindow.cpp +++ b/particle-track-and-trace/src/QT/MainWindow.cpp @@ -15,6 +15,8 @@ #include "../advection/UVGrid.h" #include "../advection/kernel/RK4AdvectionKernel.h" #include "../advection/kernel/SnapBoundaryConditionKernel.h" +#include "../layers/enums.h" + using namespace std; MainWindow::MainWindow(QWidget* parent) @@ -59,8 +61,6 @@ void MainWindow::setupTechniques() { // technique2->addLayer(new LColLayer(uvGrid)); // TODO: add LColLayer technique2->addLayer(lGlyph); - cout << technique1->numberOfLayers() << endl; - program->addTechnique(technique1); program->addTechnique(technique2); @@ -81,98 +81,123 @@ void MainWindow::setupTechniques() { void MainWindow::on_FirstButton_clicked(bool checked) { if (checked) { - ui->program->setActiveTechnique(0); + ui->program->setActiveTechnique(COLGLYPH); } } void MainWindow::on_SecondButton_clicked(bool checked) { if (checked) { - ui->program->setActiveTechnique(1); + ui->program->setActiveTechnique(GLYPHCOL); } } void MainWindow::on_ComplementaryButton_clicked(bool checked) { if (checked) { - + for (Technique *t : ui->program->getTechniques()) { + t->setColorMode(COMPLEMENTARY); + } } } void MainWindow::on_ContrastingButton_clicked(bool checked) { if (checked) { - + for (Technique *t : ui->program->getTechniques()) { + t->setColorMode(CONTRASTING); + } } } void MainWindow::on_MonochromaticButton_clicked(bool checked) { if (checked) { - + for (Technique *t : ui->program->getTechniques()) { + t->setColorMode(MONOCHROMATIC); + } } } void MainWindow::on_SaturateButton_clicked(bool checked) { if (checked) { - + for (Technique *t : ui->program->getTechniques()) { + t->setSaturationMode(SATURATED); + } } } void MainWindow::on_DesaturateButton_clicked(bool checked) { if (checked) { - + for (Technique *t : ui->program->getTechniques()) { + t->setSaturationMode(DESATURATED); + } } } void MainWindow::on_CircleButton_clicked(bool checked) { if (checked) { - + for (Technique *t : ui->program->getTechniques()) { + t->setGlyphStyle(CIRCLE); + } } } void MainWindow::on_TriangleButton_clicked(bool checked) { if (checked) { - + for (Technique *t : ui->program->getTechniques()) { + t->setGlyphStyle(TRIANGLE); + } } } void MainWindow::on_SquareButton_clicked(bool checked) { if (checked) { - + for (Technique *t : ui->program->getTechniques()) { + t->setGlyphStyle(SQUARE); + } } } void MainWindow::on_HexagonButton_clicked(bool checked) { if (checked) { - + for (Technique *t : ui->program->getTechniques()) { + t->setGlyphStyle(HEXAGON); + } } } void MainWindow::on_FullySampledButton_clicked(bool checked) { if (checked) { - + for (Technique *t : ui->program->getTechniques()) { + t->setSamplingMode(FULLYSAMPLED); + } } } void MainWindow::on_RegularlySubsampledButton_clicked(bool checked) { if (checked) { - + for (Technique *t : ui->program->getTechniques()) { + t->setSamplingMode(REGULARLYSUBSAMPLED); + } } } void MainWindow::on_IregularlySubsampledButton_clicked(bool checked) { if (checked) { - - }} + for (Technique *t : ui->program->getTechniques()) { + t->setSamplingMode(IRREGULARLYSUBSAMPLED); + } + } +} diff --git a/particle-track-and-trace/src/layers/Layer.cpp b/particle-track-and-trace/src/layers/Layer.cpp index df1c0c9..500a5a2 100644 --- a/particle-track-and-trace/src/layers/Layer.cpp +++ b/particle-track-and-trace/src/layers/Layer.cpp @@ -9,18 +9,16 @@ vtkSmartPointer Layer::getLayer() { return this->ren; } -void Layer::updateData(int t) { - // By default, do nothing -} - -void Layer::addObservers(vtkSmartPointer interactor) { - // By default, do nothing -} - -void Layer::removeObservers(vtkSmartPointer interactor) { - // By default, do nothing -} - void Layer::setCamera(vtkSmartPointer cam) { this->getLayer()->SetActiveCamera(cam.GetPointer()); } + + +void Layer::updateData(int t) {} +void Layer::addObservers(vtkSmartPointer interactor) {} +void Layer::removeObservers(vtkSmartPointer interactor) {} +void Layer::setColorMode(ColourMode mode) {} +void Layer::setSaturationMode(SaturationMode mode) {} +void Layer::setGlyphStyle(GlyphStyle style) {} +void Layer::setSamplingMode(SamplingMode mode) {} + diff --git a/particle-track-and-trace/src/layers/Layer.h b/particle-track-and-trace/src/layers/Layer.h index 4594f9a..3eaf1b0 100644 --- a/particle-track-and-trace/src/layers/Layer.h +++ b/particle-track-and-trace/src/layers/Layer.h @@ -1,6 +1,7 @@ #ifndef LAYER_H #define LAYER_H +#include "enums.h" #include #include @@ -38,6 +39,12 @@ public: * Used to share one camera between multiple layers. */ virtual void setCamera(vtkSmartPointer cam); + + + virtual void setColorMode(ColourMode mode); + virtual void setSaturationMode(SaturationMode mode); + virtual void setGlyphStyle(GlyphStyle style); + virtual void setSamplingMode(SamplingMode mode); }; #endif diff --git a/particle-track-and-trace/src/layers/Technique.cpp b/particle-track-and-trace/src/layers/Technique.cpp index e9221ff..c4db355 100644 --- a/particle-track-and-trace/src/layers/Technique.cpp +++ b/particle-track-and-trace/src/layers/Technique.cpp @@ -48,3 +48,31 @@ void Technique::unbind(vtkSmartPointer win, vtkSmartPointerSetNumberOfLayers(0); } + + +void Technique::setColorMode(ColourMode mode) { + for (Layer *l : this->layers) { + l->setColorMode(mode); + } +} + + +void Technique::setSaturationMode(SaturationMode mode) { + for (Layer *l : this->layers) { + l->setSaturationMode(mode); + } +} + + +void Technique::setGlyphStyle(GlyphStyle style) { + for (Layer *l : this->layers) { + l->setGlyphStyle(style); + } +} + + +void Technique::setSamplingMode(SamplingMode mode) { + for (Layer *l : this->layers) { + l->setSamplingMode(mode); + } +} diff --git a/particle-track-and-trace/src/layers/Technique.h b/particle-track-and-trace/src/layers/Technique.h index 4027f09..e594221 100644 --- a/particle-track-and-trace/src/layers/Technique.h +++ b/particle-track-and-trace/src/layers/Technique.h @@ -4,6 +4,8 @@ #include "Layer.h" #include #include +#include "enums.h" + class Technique { private: std::vector layers; @@ -18,6 +20,11 @@ public: void bind(vtkSmartPointer win, vtkSmartPointer intr); void unbind(vtkSmartPointer win, vtkSmartPointer intr); + void setColorMode(ColourMode mode); + void setSaturationMode(SaturationMode mode); + void setGlyphStyle(GlyphStyle style); + void setSamplingMode(SamplingMode mode); + }; diff --git a/particle-track-and-trace/src/layers/enums.h b/particle-track-and-trace/src/layers/enums.h new file mode 100644 index 0000000..537dc58 --- /dev/null +++ b/particle-track-and-trace/src/layers/enums.h @@ -0,0 +1,36 @@ +#ifndef ENUMS_H +#define ENUMS_H + +enum ActiveTechnique { + COLGLYPH = 0, + GLYPHCOL = 1, +}; + + +enum ColourMode { + COMPLEMENTARY = 0, + CONTRASTING = 1, + MONOCHROMATIC = 2, +}; + + +enum SaturationMode { + SATURATED = 0, + DESATURATED = 1, +}; + + +enum GlyphStyle { + CIRCLE = 0, + TRIANGLE = 1, + SQUARE = 2, + HEXAGON = 3, +}; + +enum SamplingMode { + FULLYSAMPLED = 0, + REGULARLYSUBSAMPLED = 1, + IRREGULARLYSUBSAMPLED = 2, +}; + +#endif