From a4c668beb93760d73fbbc19a1c9330065ae6b9e1 Mon Sep 17 00:00:00 2001 From: Romain Lacroix Date: Tue, 14 Jan 2020 16:55:19 +0100 Subject: [PATCH 1/2] Bugfix: the DecoratorSurfaceColor failed when fed data of type QVariant. --- .../dtkVisualizationDecoratorSurfaceColor.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/dtkVisualization/dtkVisualizationDecoratorSurfaceColor.cpp b/src/dtkVisualization/dtkVisualizationDecoratorSurfaceColor.cpp index 87ac32b..bfae0cb 100644 --- a/src/dtkVisualization/dtkVisualizationDecoratorSurfaceColor.cpp +++ b/src/dtkVisualization/dtkVisualizationDecoratorSurfaceColor.cpp @@ -80,6 +80,19 @@ dtkVisualizationDecoratorSurfaceColor::~dtkVisualizationDecoratorSurfaceColor(vo void dtkVisualizationDecoratorSurfaceColor::setData(const QVariant& data) { vtkDataSet *dataset = data.value(); + + if (!dataset) { + dataset = data.value(); + } + + if (!dataset) { + dataset = data.value(); + } + + if (!dataset) { + dataset = data.value(); + } + if (!dataset) { dtkWarn() << Q_FUNC_INFO << "vtkDataSet is expected. Input data is not stored."; return; -- GitLab From c2d122135300a2cc8b3fded0cb89cccf02a06add Mon Sep 17 00:00:00 2001 From: Tristan Cabel Date: Wed, 15 Jan 2020 11:20:44 +0100 Subject: [PATCH 2/2] cast to dataset from other vtk types --- .../dtkVisualizationDecoratorAxes.cpp | 13 +++++++++++++ .../dtkVisualizationDecoratorClutEditor.cpp | 12 ++++++++++++ .../dtkVisualizationDecoratorClutEditorSimple.cpp | 12 ++++++++++++ .../dtkVisualizationDecoratorInfo.cpp | 11 +++++++++++ .../dtkVisualizationDecoratorIsocontours.cpp | 13 +++++++++++++ .../dtkVisualizationDecoratorScalarGlyphs.cpp | 13 +++++++++++++ .../dtkVisualizationDecoratorSlices.cpp | 14 ++++++++++++++ .../dtkVisualizationDecoratorSurfaceColor.cpp | 14 +++++++------- ...dtkVisualizationDecoratorVectorCurvedGlyphs.cpp | 13 +++++++++++++ .../dtkVisualizationDecoratorVectorGlyphs.cpp | 13 +++++++++++++ ...dtkVisualizationDecoratorVectorStreamTracer.cpp | 13 +++++++++++++ .../dtkVisualizationDecoratorVectorStreamlines.cpp | 13 +++++++++++++ .../dtkVisualizationDecoratorVolume.cpp | 13 +++++++++++++ 13 files changed, 160 insertions(+), 7 deletions(-) diff --git a/src/dtkVisualization/dtkVisualizationDecoratorAxes.cpp b/src/dtkVisualization/dtkVisualizationDecoratorAxes.cpp index f95cff9..e2d3030 100644 --- a/src/dtkVisualization/dtkVisualizationDecoratorAxes.cpp +++ b/src/dtkVisualization/dtkVisualizationDecoratorAxes.cpp @@ -141,6 +141,19 @@ dtkVisualizationDecoratorAxes::~dtkVisualizationDecoratorAxes(void) void dtkVisualizationDecoratorAxes::setData(const QVariant& data) { d->dataset = data.value(); + + if (!d->dataset) { + //try to cast from other types of structures + if(dynamic_cast(data.value())) + d->dataset = vtkSmartPointer(data.value()); + + if(dynamic_cast(data.value())) + d->dataset = vtkSmartPointer(data.value()); + + if(dynamic_cast(data.value())) + d->dataset = vtkSmartPointer(data.value()); + } + if (!d->dataset) { dtkWarn() << Q_FUNC_INFO << "vtkDataSet is expected. Input data is not stored."; return; diff --git a/src/dtkVisualization/dtkVisualizationDecoratorClutEditor.cpp b/src/dtkVisualization/dtkVisualizationDecoratorClutEditor.cpp index e03733f..3fbcc2e 100644 --- a/src/dtkVisualization/dtkVisualizationDecoratorClutEditor.cpp +++ b/src/dtkVisualization/dtkVisualizationDecoratorClutEditor.cpp @@ -210,6 +210,18 @@ bool dtkVisualizationDecoratorClutEditor::isDecorating(void) void dtkVisualizationDecoratorClutEditor::setData(const QVariant& data) { d->dataset = data.value(); + if (!d->dataset) { + //try to cast from other types of structures + if(dynamic_cast(data.value())) + d->dataset = vtkSmartPointer(data.value()); + + if(dynamic_cast(data.value())) + d->dataset = vtkSmartPointer(data.value()); + + if(dynamic_cast(data.value())) + d->dataset = vtkSmartPointer(data.value()); + } + if (!d->dataset) { dtkWarn() << Q_FUNC_INFO << "vtkDataSet is expected. Input data is not stored."; return; diff --git a/src/dtkVisualization/dtkVisualizationDecoratorClutEditorSimple.cpp b/src/dtkVisualization/dtkVisualizationDecoratorClutEditorSimple.cpp index 6a7919e..4a1b37d 100644 --- a/src/dtkVisualization/dtkVisualizationDecoratorClutEditorSimple.cpp +++ b/src/dtkVisualization/dtkVisualizationDecoratorClutEditorSimple.cpp @@ -252,6 +252,18 @@ bool dtkVisualizationDecoratorClutEditorSimple::isDecorating(void) void dtkVisualizationDecoratorClutEditorSimple::setData(const QVariant& data) { d->dataset = data.value(); + if (!d->dataset) { + //try to cast from other types of structures + if(dynamic_cast(data.value())) + d->dataset = vtkSmartPointer(data.value()); + + if(dynamic_cast(data.value())) + d->dataset = vtkSmartPointer(data.value()); + + if(dynamic_cast(data.value())) + d->dataset = vtkSmartPointer(data.value()); + } + if (!d->dataset) { dtkWarn() << Q_FUNC_INFO << "vtkDataSet is expected. Input data is not stored."; return; diff --git a/src/dtkVisualization/dtkVisualizationDecoratorInfo.cpp b/src/dtkVisualization/dtkVisualizationDecoratorInfo.cpp index d1199e4..0d40af9 100644 --- a/src/dtkVisualization/dtkVisualizationDecoratorInfo.cpp +++ b/src/dtkVisualization/dtkVisualizationDecoratorInfo.cpp @@ -174,6 +174,17 @@ void dtkVisualizationDecoratorInfo::setVisibility(bool visible) void dtkVisualizationDecoratorInfo::setData(const QVariant& data) { d->dataset = data.value(); + if (!d->dataset) { + //try to cast from other types of structures + if(dynamic_cast(data.value())) + d->dataset = vtkSmartPointer(data.value()); + + if(dynamic_cast(data.value())) + d->dataset = vtkSmartPointer(data.value()); + + if(dynamic_cast(data.value())) + d->dataset = vtkSmartPointer(data.value()); + } if (d->dataset) { for (int row = 0; row < d->layout->rowCount(); ++row) { diff --git a/src/dtkVisualization/dtkVisualizationDecoratorIsocontours.cpp b/src/dtkVisualization/dtkVisualizationDecoratorIsocontours.cpp index 6ef69f7..be92204 100644 --- a/src/dtkVisualization/dtkVisualizationDecoratorIsocontours.cpp +++ b/src/dtkVisualization/dtkVisualizationDecoratorIsocontours.cpp @@ -216,6 +216,19 @@ void dtkVisualizationDecoratorIsocontours::touchRange(void) void dtkVisualizationDecoratorIsocontours::setData(const QVariant& data) { vtkDataSet *dataset = data.value(); + + if (!dataset) { + //try to cast from other types of structures + if(dynamic_cast(data.value())) + dataset = vtkSmartPointer(data.value()); + + if(dynamic_cast(data.value())) + dataset = vtkSmartPointer(data.value()); + + if(dynamic_cast(data.value())) + dataset = vtkSmartPointer(data.value()); + } + if (!dataset) { dtkWarn() << Q_FUNC_INFO << "vtkDataSet is expected. Input data is not stored."; return; diff --git a/src/dtkVisualization/dtkVisualizationDecoratorScalarGlyphs.cpp b/src/dtkVisualization/dtkVisualizationDecoratorScalarGlyphs.cpp index a27b9b4..dcb0fe2 100644 --- a/src/dtkVisualization/dtkVisualizationDecoratorScalarGlyphs.cpp +++ b/src/dtkVisualization/dtkVisualizationDecoratorScalarGlyphs.cpp @@ -222,6 +222,19 @@ void dtkVisualizationDecoratorScalarGlyphs::restoreSettings(void) void dtkVisualizationDecoratorScalarGlyphs::setData(const QVariant& data) { vtkDataSet *dataset = data.value(); + + if (!dataset) { + //try to cast from other types of structures + if(dynamic_cast(data.value())) + dataset = vtkSmartPointer(data.value()); + + if(dynamic_cast(data.value())) + dataset = vtkSmartPointer(data.value()); + + if(dynamic_cast(data.value())) + dataset = vtkSmartPointer(data.value()); + } + if (!dataset) { dtkWarn() << Q_FUNC_INFO << "vtkDataSet is expected. Input data is not stored."; return; diff --git a/src/dtkVisualization/dtkVisualizationDecoratorSlices.cpp b/src/dtkVisualization/dtkVisualizationDecoratorSlices.cpp index 8953c71..77c5b25 100644 --- a/src/dtkVisualization/dtkVisualizationDecoratorSlices.cpp +++ b/src/dtkVisualization/dtkVisualizationDecoratorSlices.cpp @@ -303,6 +303,20 @@ bool dtkVisualizationDecoratorSlices::isDecorating(void) void dtkVisualizationDecoratorSlices::setData(const QVariant& data) { vtkDataSet *dataset = data.value(); + + if (!dataset) { + //try to cast from other types of structures + if(dynamic_cast(data.value())) + dataset = vtkSmartPointer(data.value()); + + if(dynamic_cast(data.value())) + dataset = vtkSmartPointer(data.value()); + + if(dynamic_cast(data.value())) + dataset = vtkSmartPointer(data.value()); + } + + if (!dataset) { dtkWarn() << Q_FUNC_INFO << "vtkDataSet is expected. Input data is not stored."; return; diff --git a/src/dtkVisualization/dtkVisualizationDecoratorSurfaceColor.cpp b/src/dtkVisualization/dtkVisualizationDecoratorSurfaceColor.cpp index bfae0cb..d0fbcf5 100644 --- a/src/dtkVisualization/dtkVisualizationDecoratorSurfaceColor.cpp +++ b/src/dtkVisualization/dtkVisualizationDecoratorSurfaceColor.cpp @@ -82,15 +82,15 @@ void dtkVisualizationDecoratorSurfaceColor::setData(const QVariant& data) vtkDataSet *dataset = data.value(); if (!dataset) { - dataset = data.value(); - } + //try to cast from other types of structures + if(dynamic_cast(data.value())) + dataset = vtkSmartPointer(data.value()); - if (!dataset) { - dataset = data.value(); - } + if(dynamic_cast(data.value())) + dataset = vtkSmartPointer(data.value()); - if (!dataset) { - dataset = data.value(); + if(dynamic_cast(data.value())) + dataset = vtkSmartPointer(data.value()); } if (!dataset) { diff --git a/src/dtkVisualization/dtkVisualizationDecoratorVectorCurvedGlyphs.cpp b/src/dtkVisualization/dtkVisualizationDecoratorVectorCurvedGlyphs.cpp index bc73626..cc038c8 100644 --- a/src/dtkVisualization/dtkVisualizationDecoratorVectorCurvedGlyphs.cpp +++ b/src/dtkVisualization/dtkVisualizationDecoratorVectorCurvedGlyphs.cpp @@ -314,6 +314,19 @@ void dtkVisualizationDecoratorVectorCurvedGlyphs::restoreSettings(void) void dtkVisualizationDecoratorVectorCurvedGlyphs::setData(const QVariant& data) { vtkDataSet *dataset = data.value(); + + if (!dataset) { + //try to cast from other types of structures + if(dynamic_cast(data.value())) + dataset = vtkSmartPointer(data.value()); + + if(dynamic_cast(data.value())) + dataset = vtkSmartPointer(data.value()); + + if(dynamic_cast(data.value())) + dataset = vtkSmartPointer(data.value()); + } + if (!dataset) { dtkWarn() << Q_FUNC_INFO << "vtkDataSet is expected. Input data is not stored."; return; diff --git a/src/dtkVisualization/dtkVisualizationDecoratorVectorGlyphs.cpp b/src/dtkVisualization/dtkVisualizationDecoratorVectorGlyphs.cpp index 2b6619a..8ce0ec3 100644 --- a/src/dtkVisualization/dtkVisualizationDecoratorVectorGlyphs.cpp +++ b/src/dtkVisualization/dtkVisualizationDecoratorVectorGlyphs.cpp @@ -190,6 +190,19 @@ void dtkVisualizationDecoratorVectorGlyphs::restoreSettings(void) void dtkVisualizationDecoratorVectorGlyphs::setData(const QVariant& data) { vtkDataSet *dataset = data.value(); + + if (!dataset) { + //try to cast from other types of structures + if(dynamic_cast(data.value())) + dataset = vtkSmartPointer(data.value()); + + if(dynamic_cast(data.value())) + dataset = vtkSmartPointer(data.value()); + + if(dynamic_cast(data.value())) + dataset = vtkSmartPointer(data.value()); + } + if (!dataset) { dtkWarn() << Q_FUNC_INFO << "vtkDataSet is expected. Input data is not stored."; return; diff --git a/src/dtkVisualization/dtkVisualizationDecoratorVectorStreamTracer.cpp b/src/dtkVisualization/dtkVisualizationDecoratorVectorStreamTracer.cpp index 606d8e1..48ec35e 100644 --- a/src/dtkVisualization/dtkVisualizationDecoratorVectorStreamTracer.cpp +++ b/src/dtkVisualization/dtkVisualizationDecoratorVectorStreamTracer.cpp @@ -505,6 +505,19 @@ void dtkVisualizationDecoratorVectorStreamTracer::restoreSettings(void) void dtkVisualizationDecoratorVectorStreamTracer::setData(const QVariant& data) { vtkDataSet *dataset = data.value(); + + if (!dataset) { + //try to cast from other types of structures + if(dynamic_cast(data.value())) + dataset = vtkSmartPointer(data.value()); + + if(dynamic_cast(data.value())) + dataset = vtkSmartPointer(data.value()); + + if(dynamic_cast(data.value())) + dataset = vtkSmartPointer(data.value()); + } + if (!dataset) { dtkWarn() << Q_FUNC_INFO << "vtkDataSet is expected. Input data is not stored."; return; diff --git a/src/dtkVisualization/dtkVisualizationDecoratorVectorStreamlines.cpp b/src/dtkVisualization/dtkVisualizationDecoratorVectorStreamlines.cpp index d214515..c4d21ac 100644 --- a/src/dtkVisualization/dtkVisualizationDecoratorVectorStreamlines.cpp +++ b/src/dtkVisualization/dtkVisualizationDecoratorVectorStreamlines.cpp @@ -281,6 +281,19 @@ bool dtkVisualizationDecoratorVectorStreamlines::isCurrentFieldUniform(void) void dtkVisualizationDecoratorVectorStreamlines::setData(const QVariant& data) { vtkDataSet *dataset = data.value(); + + if (!dataset) { + //try to cast from other types of structures + if(dynamic_cast(data.value())) + dataset = vtkSmartPointer(data.value()); + + if(dynamic_cast(data.value())) + dataset = vtkSmartPointer(data.value()); + + if(dynamic_cast(data.value())) + dataset = vtkSmartPointer(data.value()); + } + if (!dataset) { dtkWarn() << Q_FUNC_INFO << "vtkDataSet is expected. Input data is not stored."; return; diff --git a/src/dtkVisualization/dtkVisualizationDecoratorVolume.cpp b/src/dtkVisualization/dtkVisualizationDecoratorVolume.cpp index 6f3cb74..6488aab 100644 --- a/src/dtkVisualization/dtkVisualizationDecoratorVolume.cpp +++ b/src/dtkVisualization/dtkVisualizationDecoratorVolume.cpp @@ -136,6 +136,19 @@ bool dtkVisualizationDecoratorVolume::isDecorating(void) void dtkVisualizationDecoratorVolume::setData(const QVariant& data) { vtkDataSet *dataset = data.value(); + + if (!dataset) { + //try to cast from other types of structures + if(dynamic_cast(data.value())) + dataset = vtkSmartPointer(data.value()); + + if(dynamic_cast(data.value())) + dataset = vtkSmartPointer(data.value()); + + if(dynamic_cast(data.value())) + dataset = vtkSmartPointer(data.value()); + } + if (!dataset) { dtkWarn() << Q_FUNC_INFO << "vtkDataSet is expected. Input data is not stored."; return; -- GitLab