diff --git a/app/dtkVisualizationViewer/dtkVisualizationViewer.cpp b/app/dtkVisualizationViewer/dtkVisualizationViewer.cpp index 849bfade593429714c9795d83627df29d3a7a737..cf11b8c575298ebb8e6ae128761fe5261d51501f 100644 --- a/app/dtkVisualizationViewer/dtkVisualizationViewer.cpp +++ b/app/dtkVisualizationViewer/dtkVisualizationViewer.cpp @@ -162,7 +162,7 @@ void dtkVisualizationViewer::importDataSet(const QString& path) dtkVisualizationDecoratorScalarIsolines *decorator_scalar_isolines = new dtkVisualizationDecoratorScalarIsolines; dtkVisualizationDecoratorScalarGlyphs *decorator_scalar_glyphs = new dtkVisualizationDecoratorScalarGlyphs; - decorator_clut_editor->setName("my clut editor"); + // decorator_clut_editor->setName("my clut editor"); //chain all decorators *decorator_clut_editor << *decorator_scalar_isolines << *decorator_scalar_glyphs << *decorator_scalar_color_map ; diff --git a/src/dtkVisualization/dtkVisualizationDecoratorScalarColorMap.cpp b/src/dtkVisualization/dtkVisualizationDecoratorScalarColorMap.cpp index 913001ba8c52b55772524f5d58f7c1defd67bcc2..34d4106d12870e1417cdd55fcafff87d0c5b092f 100644 --- a/src/dtkVisualization/dtkVisualizationDecoratorScalarColorMap.cpp +++ b/src/dtkVisualization/dtkVisualizationDecoratorScalarColorMap.cpp @@ -46,12 +46,6 @@ class dtkVisualizationDecoratorScalarColorMapPrivate { -public: - enum Support { - Point, - Cell - }; - public: QStringList eligible_field_names; QString current_field_name; @@ -66,10 +60,6 @@ public: public: vtkSmartPointer actor; vtkSmartPointer mapper; - - -public: - QHash supports; }; // /////////////////////////////////////////////////////////////////// @@ -100,11 +90,8 @@ dtkVisualizationDecoratorScalarColorMap::~dtkVisualizationDecoratorScalarColorMa void dtkVisualizationDecoratorScalarColorMap::draw(void) { - if (d->supports[d->current_field_name] == dtkVisualizationDecoratorScalarColorMapPrivate::Support::Point) { - d->dataset->GetPointData()->SetActiveScalars(qPrintable(d->current_field_name)); - } else if (d->supports[d->current_field_name] == dtkVisualizationDecoratorScalarColorMapPrivate::Support::Cell) { - d->dataset->GetCellData()->SetActiveScalars(qPrintable(d->current_field_name)); - } + d->dataset->GetPointData()->SetActiveScalars(qPrintable(d->current_field_name)); + if (!d->dataset || d->current_field_name.isEmpty()) { dtkWarn() << Q_FUNC_INFO << "Set dataset and field name before updating actor."; return; @@ -134,30 +121,16 @@ void dtkVisualizationDecoratorScalarColorMap::setData(const QVariant& data) d->current_field_name.clear(); d->eligible_field_names.clear(); - d->supports.clear(); vtkIdType number_of_point_arrays = d->dataset->GetPointData()->GetNumberOfArrays(); for (vtkIdType i = 0; i < number_of_point_arrays; ++i) { if (d->dataset->GetPointData()->GetArray(i)->GetNumberOfComponents() == 1) { QString field_name = QString::fromUtf8(d->dataset->GetPointData()->GetArrayName(i)); d->eligible_field_names << field_name; - d->supports[field_name] = dtkVisualizationDecoratorScalarColorMapPrivate::Support::Point; - d->dataset->GetPointData()->SetActiveScalars(qPrintable(field_name)); } } - vtkIdType number_of_cell_arrays = d->dataset->GetCellData()->GetNumberOfArrays(); - for (vtkIdType i = 0; i < number_of_cell_arrays; ++i) { - if (d->dataset->GetCellData()->GetArray(i)->GetNumberOfComponents() == 1) { - QString field_name = QString::fromUtf8(d->dataset->GetCellData()->GetArrayName(i)); - d->eligible_field_names << field_name; - d->supports[field_name] = dtkVisualizationDecoratorScalarColorMapPrivate::Support::Cell; - - d->dataset->GetCellData()->SetActiveScalars(qPrintable(field_name)); - } - } - if (d->eligible_field_names.size() > 0) { d->eligible_field_names.sort(); @@ -338,6 +311,11 @@ void dtkVisualizationDecoratorScalarColorMap::hide(void) { } } +QString dtkVisualizationDecoratorScalarColorMap::currentFieldName() const +{ + return d->current_field_name; +} + bool dtkVisualizationDecoratorScalarColorMap::setCurrentFieldName(const QString& scalar_field_name) { if (scalar_field_name.isEmpty()) { @@ -358,11 +336,7 @@ bool dtkVisualizationDecoratorScalarColorMap::setCurrentFieldName(const QString& d->current_field_name = scalar_field_name; - if (d->supports[d->current_field_name] == dtkVisualizationDecoratorScalarColorMapPrivate::Support::Point) { - d->dataset->GetPointData()->SetActiveScalars(qPrintable(d->current_field_name)); - } else if (d->supports[d->current_field_name] == dtkVisualizationDecoratorScalarColorMapPrivate::Support::Cell) { - d->dataset->GetCellData()->SetActiveScalars(qPrintable(d->current_field_name)); - } + d->dataset->GetPointData()->SetActiveScalars(qPrintable(d->current_field_name)); vtkSmartPointer color_function; QPair range; diff --git a/src/dtkVisualization/dtkVisualizationDecoratorScalarColorMap.h b/src/dtkVisualization/dtkVisualizationDecoratorScalarColorMap.h index 8b357681bdb384b2be8209aa7fab070ebb5c5b99..f558f2dcaf77b93c70fcedc17b4f6a879c4b9934 100644 --- a/src/dtkVisualization/dtkVisualizationDecoratorScalarColorMap.h +++ b/src/dtkVisualization/dtkVisualizationDecoratorScalarColorMap.h @@ -42,6 +42,7 @@ public: void hide(void); protected: + QString currentFieldName() const; bool setCurrentFieldName(const QString&); void draw(void) override; diff --git a/src/dtkVisualization/dtkVisualizationDecoratorScalarGlyphs.cpp b/src/dtkVisualization/dtkVisualizationDecoratorScalarGlyphs.cpp index 005a04932c74b41050e2ab6b6abfdfdff4c59175..51cfe5c25c9985bcf66014e8393719b4c2f099cd 100644 --- a/src/dtkVisualization/dtkVisualizationDecoratorScalarGlyphs.cpp +++ b/src/dtkVisualization/dtkVisualizationDecoratorScalarGlyphs.cpp @@ -133,6 +133,12 @@ dtkVisualizationDecoratorScalarGlyphs::~dtkVisualizationDecoratorScalarGlyphs(vo void dtkVisualizationDecoratorScalarGlyphs::draw(void) { + if (d->supports[d->current_field_name] == dtkVisualizationDecoratorScalarGlyphsPrivate::Support::Point) { + d->dataset->GetPointData()->SetActiveScalars(qPrintable(d->current_field_name)); + } else if (d->supports[d->current_field_name] == dtkVisualizationDecoratorScalarGlyphsPrivate::Support::Cell) { + d->dataset->GetCellData()->SetActiveScalars(qPrintable(d->current_field_name)); + } + if (!d->dataset || d->current_field_name.isEmpty()) { dtkWarn() << Q_FUNC_INFO << "Set dataset and field name before updating actor."; return; @@ -195,7 +201,6 @@ void dtkVisualizationDecoratorScalarGlyphs::setData(const QVariant& data) if (d->eligible_field_names.size() > 0) { d->eligible_field_names.sort(); - if(d->fields_box) { d->fields_box->clear(); d->fields_box->addItems(d->eligible_field_names); @@ -405,6 +410,11 @@ void dtkVisualizationDecoratorScalarGlyphs::hide(void) { } } +QString dtkVisualizationDecoratorScalarGlyphs::currentFieldName() const +{ + return d->current_field_name; +} + bool dtkVisualizationDecoratorScalarGlyphs::setCurrentFieldName(const QString& scalar_field_name) { if (scalar_field_name.isEmpty()) { @@ -476,6 +486,11 @@ bool dtkVisualizationDecoratorScalarGlyphs::setCurrentFieldName(const QString& s d->mapper->Modified(); d->actor->Modified(); + if (this->canvas() && this->canvas()->interactor()) { + this->canvas()->interactor()->Render(); + this->canvas()->renderer()->GetRenderWindow()->Render(); + } + emit this->currentGlyphsSizeChanged(glyphs_size); emit this->currentGlyphsSourceChanged(glyphs_source); diff --git a/src/dtkVisualization/dtkVisualizationDecoratorScalarGlyphs.h b/src/dtkVisualization/dtkVisualizationDecoratorScalarGlyphs.h index f88e0d63f2440c8fa42b825b5a3079f4933232a3..acb0f2878813a37122a6dd5eadaeaffebb59c41f 100644 --- a/src/dtkVisualization/dtkVisualizationDecoratorScalarGlyphs.h +++ b/src/dtkVisualization/dtkVisualizationDecoratorScalarGlyphs.h @@ -53,6 +53,7 @@ signals: void currentGlyphsSourceChanged(const QString&); protected: + QString currentFieldName() const; bool setCurrentFieldName(const QString&); void draw(void) override;