From 1bc667ec05d3a18718c02cb74b87871c21fbda20 Mon Sep 17 00:00:00 2001 From: Csaba Pinter Date: Tue, 16 Oct 2018 15:11:25 -0400 Subject: [PATCH] BUG: Fix default display and storage node creation The CreateDefaultDisplayNodes and CreateDefaultStorageNode functions did not use the CreateNewNodeByClass infrastructure so default nodes were not considered. This has been fixed in all node classes using such functions. Tests also needed to be fixed accordingly. Null check for scene and raw ID setting has been removed from EXERCISE_ALL_BASIC_MRML_METHODS, and all failing tests have been changed so that the tested node is in a scene. --- .../vtkMRMLBSplineTransformNodeTest1.cxx | 3 + .../Testing/vtkMRMLColorTableNodeTest1.cxx | 12 ++- .../vtkMRMLDiffusionImageVolumeNodeTest1.cxx | 3 + .../vtkMRMLDiffusionTensorVolumeNodeTest1.cxx | 3 + ...tkMRMLDiffusionWeightedVolumeNodeTest1.cxx | 3 + .../Testing/vtkMRMLDoubleArrayNodeTest1.cxx | 3 + .../Testing/vtkMRMLFiducialListNodeTest1.cxx | 3 + ...MRMLFreeSurferProceduralColorNodeTest1.cxx | 3 + .../Testing/vtkMRMLGridTransformNodeTest1.cxx | 3 + .../vtkMRMLLinearTransformNodeTest1.cxx | 3 + .../Core/Testing/vtkMRMLModelNodeTest1.cxx | 3 + .../vtkMRMLPETProceduralColorNodeTest1.cxx | 3 + .../vtkMRMLProceduralColorNodeTest1.cxx | 3 + .../Testing/vtkMRMLScalarVolumeNodeTest1.cxx | 3 + .../Testing/vtkMRMLSceneViewNodeTest1.cxx | 6 +- .../Core/Testing/vtkMRMLTableNodeTest1.cxx | 5 ++ .../Testing/vtkMRMLTensorVolumeNodeTest1.cxx | 3 + .../Testing/vtkMRMLTransformNodeTest1.cxx | 5 +- .../Testing/vtkMRMLVectorVolumeNodeTest1.cxx | 3 + ...vtkMRMLdGEMRICProceduralColorNodeTest1.cxx | 3 + Libs/MRML/Core/vtkMRMLColorTableNode.cxx | 8 +- .../MRML/Core/vtkMRMLCoreTestingUtilities.cxx | 6 -- .../Core/vtkMRMLDiffusionTensorVolumeNode.cxx | 13 +++- .../vtkMRMLDiffusionWeightedVolumeNode.cxx | 13 +++- Libs/MRML/Core/vtkMRMLDoubleArrayNode.cxx | 18 ++++- Libs/MRML/Core/vtkMRMLFiducialListNode.cxx | 9 ++- Libs/MRML/Core/vtkMRMLLabelMapVolumeNode.cxx | 4 +- Libs/MRML/Core/vtkMRMLModelNode.cxx | 16 +++- Libs/MRML/Core/vtkMRMLProceduralColorNode.cxx | 10 ++- Libs/MRML/Core/vtkMRMLScalarVolumeNode.cxx | 13 +++- Libs/MRML/Core/vtkMRMLSceneViewNode.cxx | 9 ++- Libs/MRML/Core/vtkMRMLSegmentationNode.cxx | 13 +++- Libs/MRML/Core/vtkMRMLTableNode.cxx | 10 ++- Libs/MRML/Core/vtkMRMLTensorVolumeNode.cxx | 13 +++- Libs/MRML/Core/vtkMRMLTransformNode.cxx | 13 +++- Libs/MRML/Core/vtkMRMLVectorVolumeNode.cxx | 13 +++- .../MRML/vtkMRMLAnnotationAngleNode.cxx | 17 +++- .../vtkMRMLAnnotationControlPointsNode.cxx | 9 ++- .../MRML/vtkMRMLAnnotationLinesNode.cxx | 10 ++- .../MRML/vtkMRMLAnnotationNode.cxx | 9 ++- .../MRML/vtkMRMLAnnotationRulerNode.cxx | 17 +++- .../MRML/vtkMRMLAnnotationSnapshotNode.cxx | 10 ++- .../Cxx/vtkMRMLAnnotationAngleNodeTest1.cxx | 55 ++++++------- ...tkMRMLAnnotationControlPointsNodeTest1.cxx | 6 +- .../vtkMRMLAnnotationFiducialNodeTest1.cxx | 4 +- .../Cxx/vtkMRMLAnnotationLinesNodeTest1.cxx | 6 +- .../Cxx/vtkMRMLAnnotationNodeTest1.cxx | 78 +++++-------------- .../Cxx/vtkMRMLAnnotationROINodeTest1.cxx | 22 +++--- .../Cxx/vtkMRMLAnnotationRulerNodeTest1.cxx | 6 +- .../MRML/vtkMRMLMarkupsFiducialNode.cxx | 13 +++- .../Markups/MRML/vtkMRMLMarkupsNode.cxx | 9 ++- .../Cxx/vtkMRMLMarkupsFiducialNodeTest1.cxx | 5 +- .../Testing/Cxx/vtkMRMLMarkupsNodeTest1.cxx | 3 + .../MRML/vtkMRMLVolumePropertyNode.cxx | 11 ++- .../Cxx/vtkMRMLVolumePropertyNodeTest1.cxx | 3 +- 55 files changed, 368 insertions(+), 182 deletions(-) diff --git a/Libs/MRML/Core/Testing/vtkMRMLBSplineTransformNodeTest1.cxx b/Libs/MRML/Core/Testing/vtkMRMLBSplineTransformNodeTest1.cxx index b69a6996b..11da053bf 100644 --- a/Libs/MRML/Core/Testing/vtkMRMLBSplineTransformNodeTest1.cxx +++ b/Libs/MRML/Core/Testing/vtkMRMLBSplineTransformNodeTest1.cxx @@ -12,10 +12,13 @@ #include "vtkMRMLBSplineTransformNode.h" #include "vtkMRMLCoreTestingMacros.h" +#include "vtkMRMLScene.h" int vtkMRMLBSplineTransformNodeTest1(int , char * [] ) { vtkNew node1; + vtkNew scene; + scene->AddNode(node1); EXERCISE_ALL_BASIC_MRML_METHODS(node1.GetPointer()); return EXIT_SUCCESS; } diff --git a/Libs/MRML/Core/Testing/vtkMRMLColorTableNodeTest1.cxx b/Libs/MRML/Core/Testing/vtkMRMLColorTableNodeTest1.cxx index d08221b73..08ca4b233 100644 --- a/Libs/MRML/Core/Testing/vtkMRMLColorTableNodeTest1.cxx +++ b/Libs/MRML/Core/Testing/vtkMRMLColorTableNodeTest1.cxx @@ -27,7 +27,11 @@ using namespace vtkMRMLCoreTestingUtilities; int vtkMRMLColorTableNodeTest1(int argc, char * argv[]) { vtkNew node1; - EXERCISE_ALL_BASIC_MRML_METHODS(node1.GetPointer()); + { + vtkNew scene; + scene->AddNode(node1); + EXERCISE_ALL_BASIC_MRML_METHODS(node1.GetPointer()); + } if (argc != 2) { @@ -57,15 +61,15 @@ int vtkMRMLColorTableNodeTest1(int argc, char * argv[]) colorNode->SetColor(2, "two", 0.0, 1.0, 0.0, 1.0); colorNode->NamesInitialisedOn(); - vtkSmartPointer colorStorageNode = - vtkSmartPointer::Take(colorNode->CreateDefaultStorageNode()); - // add node to the scene vtkNew scene; scene->SetRootDirectory(tempDir); CHECK_NOT_NULL(scene->AddNode(colorNode.GetPointer())); // add storage node to the scene + vtkSmartPointer colorStorageNode = + vtkSmartPointer::Take(colorNode->CreateDefaultStorageNode()); + scene->AddNode(colorStorageNode); colorNode->SetAndObserveStorageNodeID(colorStorageNode->GetID()); diff --git a/Libs/MRML/Core/Testing/vtkMRMLDiffusionImageVolumeNodeTest1.cxx b/Libs/MRML/Core/Testing/vtkMRMLDiffusionImageVolumeNodeTest1.cxx index 3a7b8284a..753970e17 100644 --- a/Libs/MRML/Core/Testing/vtkMRMLDiffusionImageVolumeNodeTest1.cxx +++ b/Libs/MRML/Core/Testing/vtkMRMLDiffusionImageVolumeNodeTest1.cxx @@ -12,10 +12,13 @@ #include "vtkMRMLCoreTestingMacros.h" #include "vtkMRMLDiffusionImageVolumeNode.h" +#include "vtkMRMLScene.h" int vtkMRMLDiffusionImageVolumeNodeTest1(int , char * [] ) { vtkNew node1; + vtkNew scene; + scene->AddNode(node1); EXERCISE_ALL_BASIC_MRML_METHODS(node1.GetPointer()); return EXIT_SUCCESS; } diff --git a/Libs/MRML/Core/Testing/vtkMRMLDiffusionTensorVolumeNodeTest1.cxx b/Libs/MRML/Core/Testing/vtkMRMLDiffusionTensorVolumeNodeTest1.cxx index 71e217aa3..1f36778d2 100644 --- a/Libs/MRML/Core/Testing/vtkMRMLDiffusionTensorVolumeNodeTest1.cxx +++ b/Libs/MRML/Core/Testing/vtkMRMLDiffusionTensorVolumeNodeTest1.cxx @@ -12,10 +12,13 @@ #include "vtkMRMLCoreTestingMacros.h" #include "vtkMRMLDiffusionTensorVolumeNode.h" +#include "vtkMRMLScene.h" int vtkMRMLDiffusionTensorVolumeNodeTest1(int , char * [] ) { vtkNew node1; + vtkNew scene; + scene->AddNode(node1); EXERCISE_ALL_BASIC_MRML_METHODS(node1.GetPointer()); return EXIT_SUCCESS; } diff --git a/Libs/MRML/Core/Testing/vtkMRMLDiffusionWeightedVolumeNodeTest1.cxx b/Libs/MRML/Core/Testing/vtkMRMLDiffusionWeightedVolumeNodeTest1.cxx index 5405552b0..c6dfb2c81 100644 --- a/Libs/MRML/Core/Testing/vtkMRMLDiffusionWeightedVolumeNodeTest1.cxx +++ b/Libs/MRML/Core/Testing/vtkMRMLDiffusionWeightedVolumeNodeTest1.cxx @@ -12,10 +12,13 @@ #include "vtkMRMLCoreTestingMacros.h" #include "vtkMRMLDiffusionWeightedVolumeNode.h" +#include "vtkMRMLScene.h" int vtkMRMLDiffusionWeightedVolumeNodeTest1(int , char * [] ) { vtkNew node1; + vtkNew scene; + scene->AddNode(node1); EXERCISE_ALL_BASIC_MRML_METHODS(node1.GetPointer()); return EXIT_SUCCESS; } diff --git a/Libs/MRML/Core/Testing/vtkMRMLDoubleArrayNodeTest1.cxx b/Libs/MRML/Core/Testing/vtkMRMLDoubleArrayNodeTest1.cxx index ca71b57a3..db65a1d6a 100644 --- a/Libs/MRML/Core/Testing/vtkMRMLDoubleArrayNodeTest1.cxx +++ b/Libs/MRML/Core/Testing/vtkMRMLDoubleArrayNodeTest1.cxx @@ -14,6 +14,7 @@ #include "vtkMRMLCoreTestingMacros.h" #include "vtkMRMLDoubleArrayNode.h" #include "vtkMRMLDoubleArrayStorageNode.h" +#include "vtkMRMLScene.h" // VTK includes #include @@ -39,6 +40,8 @@ bool TestReadOldFile(std::string filepath); int vtkMRMLDoubleArrayNodeTest1(int argc, char * argv[]) { vtkNew node1; + vtkNew scene; + scene->AddNode(node1); EXERCISE_ALL_BASIC_MRML_METHODS(node1.GetPointer()); if (argc != 3) diff --git a/Libs/MRML/Core/Testing/vtkMRMLFiducialListNodeTest1.cxx b/Libs/MRML/Core/Testing/vtkMRMLFiducialListNodeTest1.cxx index b886c560f..917c5a88a 100644 --- a/Libs/MRML/Core/Testing/vtkMRMLFiducialListNodeTest1.cxx +++ b/Libs/MRML/Core/Testing/vtkMRMLFiducialListNodeTest1.cxx @@ -12,10 +12,13 @@ #include "vtkMRMLCoreTestingMacros.h" #include "vtkMRMLFiducialListNode.h" +#include "vtkMRMLScene.h" int vtkMRMLFiducialListNodeTest1(int , char * [] ) { vtkNew< vtkMRMLFiducialListNode > node1; + vtkNew scene; + scene->AddNode(node1); EXERCISE_ALL_BASIC_MRML_METHODS(node1.GetPointer()); return EXIT_SUCCESS; } diff --git a/Libs/MRML/Core/Testing/vtkMRMLFreeSurferProceduralColorNodeTest1.cxx b/Libs/MRML/Core/Testing/vtkMRMLFreeSurferProceduralColorNodeTest1.cxx index 66536d0d3..289b1f541 100644 --- a/Libs/MRML/Core/Testing/vtkMRMLFreeSurferProceduralColorNodeTest1.cxx +++ b/Libs/MRML/Core/Testing/vtkMRMLFreeSurferProceduralColorNodeTest1.cxx @@ -12,10 +12,13 @@ #include "vtkMRMLCoreTestingMacros.h" #include "vtkMRMLFreeSurferProceduralColorNode.h" +#include "vtkMRMLScene.h" int vtkMRMLFreeSurferProceduralColorNodeTest1(int , char * [] ) { vtkNew node1; + vtkNew scene; + scene->AddNode(node1); node1->SetTypeToBlueRed(); EXERCISE_ALL_BASIC_MRML_METHODS(node1.GetPointer()); return EXIT_SUCCESS; diff --git a/Libs/MRML/Core/Testing/vtkMRMLGridTransformNodeTest1.cxx b/Libs/MRML/Core/Testing/vtkMRMLGridTransformNodeTest1.cxx index 31fed68b0..9d8194e6b 100644 --- a/Libs/MRML/Core/Testing/vtkMRMLGridTransformNodeTest1.cxx +++ b/Libs/MRML/Core/Testing/vtkMRMLGridTransformNodeTest1.cxx @@ -12,10 +12,13 @@ #include "vtkMRMLCoreTestingMacros.h" #include "vtkMRMLGridTransformNode.h" +#include "vtkMRMLScene.h" int vtkMRMLGridTransformNodeTest1(int , char * [] ) { vtkNew node1; + vtkNew scene; + scene->AddNode(node1); EXERCISE_ALL_BASIC_MRML_METHODS(node1.GetPointer()); return EXIT_SUCCESS; } diff --git a/Libs/MRML/Core/Testing/vtkMRMLLinearTransformNodeTest1.cxx b/Libs/MRML/Core/Testing/vtkMRMLLinearTransformNodeTest1.cxx index 95fba1131..cd4d1efee 100644 --- a/Libs/MRML/Core/Testing/vtkMRMLLinearTransformNodeTest1.cxx +++ b/Libs/MRML/Core/Testing/vtkMRMLLinearTransformNodeTest1.cxx @@ -12,11 +12,14 @@ #include "vtkMRMLCoreTestingMacros.h" #include "vtkMRMLLinearTransformNode.h" +#include "vtkMRMLScene.h" //--------------------------------------------------------------------------- int vtkMRMLLinearTransformNodeTest1(int , char * [] ) { vtkNew node1; + vtkNew scene; + scene->AddNode(node1); EXERCISE_ALL_BASIC_MRML_METHODS(node1.GetPointer()); return EXIT_SUCCESS; } diff --git a/Libs/MRML/Core/Testing/vtkMRMLModelNodeTest1.cxx b/Libs/MRML/Core/Testing/vtkMRMLModelNodeTest1.cxx index 2d51cffde..8eefe9c6c 100644 --- a/Libs/MRML/Core/Testing/vtkMRMLModelNodeTest1.cxx +++ b/Libs/MRML/Core/Testing/vtkMRMLModelNodeTest1.cxx @@ -13,6 +13,7 @@ // MRML includes #include "vtkMRMLCoreTestingMacros.h" #include "vtkMRMLModelNode.h" +#include "vtkMRMLScene.h" // VTK includes #include @@ -38,6 +39,8 @@ int vtkMRMLModelNodeTest1(int , char * [] ) int ExerciseBasicMethods() { vtkNew node1; + vtkNew scene; + scene->AddNode(node1); EXERCISE_ALL_BASIC_MRML_METHODS(node1.GetPointer()); return EXIT_SUCCESS; } diff --git a/Libs/MRML/Core/Testing/vtkMRMLPETProceduralColorNodeTest1.cxx b/Libs/MRML/Core/Testing/vtkMRMLPETProceduralColorNodeTest1.cxx index 2ce0c722b..faf6201c8 100644 --- a/Libs/MRML/Core/Testing/vtkMRMLPETProceduralColorNodeTest1.cxx +++ b/Libs/MRML/Core/Testing/vtkMRMLPETProceduralColorNodeTest1.cxx @@ -12,10 +12,13 @@ #include "vtkMRMLCoreTestingMacros.h" #include "vtkMRMLPETProceduralColorNode.h" +#include "vtkMRMLScene.h" int vtkMRMLPETProceduralColorNodeTest1(int , char * [] ) { vtkNew node1; + vtkNew scene; + scene->AddNode(node1); EXERCISE_ALL_BASIC_MRML_METHODS(node1.GetPointer()); return EXIT_SUCCESS; } diff --git a/Libs/MRML/Core/Testing/vtkMRMLProceduralColorNodeTest1.cxx b/Libs/MRML/Core/Testing/vtkMRMLProceduralColorNodeTest1.cxx index aeeed2fed..b2d38c312 100644 --- a/Libs/MRML/Core/Testing/vtkMRMLProceduralColorNodeTest1.cxx +++ b/Libs/MRML/Core/Testing/vtkMRMLProceduralColorNodeTest1.cxx @@ -12,10 +12,13 @@ #include "vtkMRMLCoreTestingMacros.h" #include "vtkMRMLProceduralColorNode.h" +#include "vtkMRMLScene.h" int vtkMRMLProceduralColorNodeTest1(int , char * [] ) { vtkNew node1; + vtkNew scene; + scene->AddNode(node1); EXERCISE_ALL_BASIC_MRML_METHODS(node1.GetPointer()); return EXIT_SUCCESS; } diff --git a/Libs/MRML/Core/Testing/vtkMRMLScalarVolumeNodeTest1.cxx b/Libs/MRML/Core/Testing/vtkMRMLScalarVolumeNodeTest1.cxx index 9f35ceb99..ccb1e53d8 100644 --- a/Libs/MRML/Core/Testing/vtkMRMLScalarVolumeNodeTest1.cxx +++ b/Libs/MRML/Core/Testing/vtkMRMLScalarVolumeNodeTest1.cxx @@ -12,10 +12,13 @@ #include "vtkMRMLCoreTestingMacros.h" #include "vtkMRMLScalarVolumeNode.h" +#include "vtkMRMLScene.h" int vtkMRMLScalarVolumeNodeTest1(int , char * [] ) { vtkNew node1; + vtkNew scene; + scene->AddNode(node1); EXERCISE_ALL_BASIC_MRML_METHODS(node1.GetPointer()); return EXIT_SUCCESS; } diff --git a/Libs/MRML/Core/Testing/vtkMRMLSceneViewNodeTest1.cxx b/Libs/MRML/Core/Testing/vtkMRMLSceneViewNodeTest1.cxx index dd93e15b4..afd0a3d62 100644 --- a/Libs/MRML/Core/Testing/vtkMRMLSceneViewNodeTest1.cxx +++ b/Libs/MRML/Core/Testing/vtkMRMLSceneViewNodeTest1.cxx @@ -23,19 +23,17 @@ int vtkMRMLSceneViewNodeTest1(int , char * [] ) { vtkNew node1; - EXERCISE_ALL_BASIC_MRML_METHODS(node1.GetPointer()); // test with null scene node1->StoreScene(); node1->SetAbsentStorageFileNames(); - TESTING_OUTPUT_ASSERT_ERRORS_BEGIN(); vtkCollection *col = node1->GetNodesByClass(NULL); - TESTING_OUTPUT_ASSERT_ERRORS_END(); CHECK_NULL(col); // make a scene and test again vtkNew scene; - node1->SetScene(scene.GetPointer()); + scene->AddNode(node1); + EXERCISE_ALL_BASIC_MRML_METHODS(node1.GetPointer()); node1->StoreScene(); vtkMRMLScene *storedScene = node1->GetStoredScene(); diff --git a/Libs/MRML/Core/Testing/vtkMRMLTableNodeTest1.cxx b/Libs/MRML/Core/Testing/vtkMRMLTableNodeTest1.cxx index 6e4cb6b35..d720882a6 100644 --- a/Libs/MRML/Core/Testing/vtkMRMLTableNodeTest1.cxx +++ b/Libs/MRML/Core/Testing/vtkMRMLTableNodeTest1.cxx @@ -20,6 +20,7 @@ ==============================================================================*/ +#include "vtkMRMLScene.h" #include "vtkMRMLTableNode.h" #include "vtkMRMLTableStorageNode.h" @@ -31,10 +32,14 @@ int vtkMRMLTableNodeTest1(int , char * [] ) { + vtkNew scene; + vtkNew node1; + scene->AddNode(node1); EXERCISE_ALL_BASIC_MRML_METHODS(node1.GetPointer()); vtkNew node2; + scene->AddNode(node2); vtkTable* table = node2->GetTable(); CHECK_NOT_NULL(table); diff --git a/Libs/MRML/Core/Testing/vtkMRMLTensorVolumeNodeTest1.cxx b/Libs/MRML/Core/Testing/vtkMRMLTensorVolumeNodeTest1.cxx index 93ff4267e..c982eca8c 100644 --- a/Libs/MRML/Core/Testing/vtkMRMLTensorVolumeNodeTest1.cxx +++ b/Libs/MRML/Core/Testing/vtkMRMLTensorVolumeNodeTest1.cxx @@ -12,10 +12,13 @@ #include "vtkMRMLCoreTestingMacros.h" #include "vtkMRMLTensorVolumeNode.h" +#include "vtkMRMLScene.h" int vtkMRMLTensorVolumeNodeTest1(int , char * [] ) { vtkNew node1; + vtkNew scene; + scene->AddNode(node1); EXERCISE_ALL_BASIC_MRML_METHODS(node1.GetPointer()); return EXIT_SUCCESS; } diff --git a/Libs/MRML/Core/Testing/vtkMRMLTransformNodeTest1.cxx b/Libs/MRML/Core/Testing/vtkMRMLTransformNodeTest1.cxx index 5ce0ce88f..90b3e7465 100644 --- a/Libs/MRML/Core/Testing/vtkMRMLTransformNodeTest1.cxx +++ b/Libs/MRML/Core/Testing/vtkMRMLTransformNodeTest1.cxx @@ -38,6 +38,8 @@ vtkMatrix4x4* CreateTransformMatrix(double translateX, double translateY, double int vtkMRMLTransformNodeTest1(int , char * [] ) { vtkNew node1; + vtkNew scene; + scene->AddNode(node1); vtkNew linearTransform; node1->SetMatrixTransformToParent(linearTransform.GetPointer()); EXERCISE_ALL_BASIC_MRML_METHODS(node1.GetPointer()); @@ -64,7 +66,7 @@ int vtkMRMLTransformNodeTest1(int , char * [] ) qTransform->SetMatrixTransformToParent(b_from_q_mx.GetPointer()); rTransform->SetMatrixTransformToParent(q_from_r_mx.GetPointer()); - // Create transfor hierarchy in the scene + // Create transform hierarchy in the scene // // WORLD -> w coordinate system // |-- bTransform @@ -74,7 +76,6 @@ int vtkMRMLTransformNodeTest1(int , char * [] ) // |-- qTransform // |-- rTransform // - vtkNew scene; scene->AddNode(bTransform.GetPointer()); scene->AddNode(cTransform.GetPointer()); scene->AddNode(dTransform.GetPointer()); diff --git a/Libs/MRML/Core/Testing/vtkMRMLVectorVolumeNodeTest1.cxx b/Libs/MRML/Core/Testing/vtkMRMLVectorVolumeNodeTest1.cxx index 672452db3..4c218197d 100644 --- a/Libs/MRML/Core/Testing/vtkMRMLVectorVolumeNodeTest1.cxx +++ b/Libs/MRML/Core/Testing/vtkMRMLVectorVolumeNodeTest1.cxx @@ -12,10 +12,13 @@ #include "vtkMRMLCoreTestingMacros.h" #include "vtkMRMLVectorVolumeNode.h" +#include "vtkMRMLScene.h" int vtkMRMLVectorVolumeNodeTest1(int , char * [] ) { vtkNew node1; + vtkNew scene; + scene->AddNode(node1); EXERCISE_ALL_BASIC_MRML_METHODS(node1.GetPointer()); return EXIT_SUCCESS; } diff --git a/Libs/MRML/Core/Testing/vtkMRMLdGEMRICProceduralColorNodeTest1.cxx b/Libs/MRML/Core/Testing/vtkMRMLdGEMRICProceduralColorNodeTest1.cxx index 9cc2d2a39..2c5a7697f 100644 --- a/Libs/MRML/Core/Testing/vtkMRMLdGEMRICProceduralColorNodeTest1.cxx +++ b/Libs/MRML/Core/Testing/vtkMRMLdGEMRICProceduralColorNodeTest1.cxx @@ -12,10 +12,13 @@ #include "vtkMRMLCoreTestingMacros.h" #include "vtkMRMLdGEMRICProceduralColorNode.h" +#include "vtkMRMLScene.h" int vtkMRMLdGEMRICProceduralColorNodeTest1(int , char * [] ) { vtkNew node1; + vtkNew scene; + scene->AddNode(node1); EXERCISE_ALL_BASIC_MRML_METHODS(node1.GetPointer()); return EXIT_SUCCESS; } diff --git a/Libs/MRML/Core/vtkMRMLColorTableNode.cxx b/Libs/MRML/Core/vtkMRMLColorTableNode.cxx index 84153331f..831067fb5 100644 --- a/Libs/MRML/Core/vtkMRMLColorTableNode.cxx +++ b/Libs/MRML/Core/vtkMRMLColorTableNode.cxx @@ -1429,7 +1429,13 @@ void vtkMRMLColorTableNode::Reset(vtkMRMLNode* defaultNode) //--------------------------------------------------------------------------- vtkMRMLStorageNode* vtkMRMLColorTableNode::CreateDefaultStorageNode() { - return vtkMRMLColorTableStorageNode::New(); + vtkMRMLScene* scene = this->GetScene(); + if (scene == NULL) + { + vtkErrorMacro("CreateDefaultStorageNode failed: scene is invalid"); + return NULL; + } + return vtkMRMLStorageNode::SafeDownCast(scene->CreateNodeByClass("vtkMRMLColorTableStorageNode")); } //---------------------------------------------------------------------------- diff --git a/Libs/MRML/Core/vtkMRMLCoreTestingUtilities.cxx b/Libs/MRML/Core/vtkMRMLCoreTestingUtilities.cxx index 8def30f23..f48fd886f 100644 --- a/Libs/MRML/Core/vtkMRMLCoreTestingUtilities.cxx +++ b/Libs/MRML/Core/vtkMRMLCoreTestingUtilities.cxx @@ -188,9 +188,6 @@ int ExerciseBasicMRMLMethods(vtkMRMLNode* node) node1->SetName("copywithscenewithsinglemodified"); node->CopyWithSceneWithSingleModifiedEvent(node1); - // Test GetScene() - CHECK_NULL(node->GetScene()); - // Test UpdateReferences() node->UpdateReferences(); node->UpdateReferenceID("oldID", "newID"); @@ -201,7 +198,6 @@ int ExerciseBasicMRMLMethods(vtkMRMLNode* node) // Test ReadXMLAttributes() const char *atts[] = { - "id", "vtkMRMLNodeTest1", "name", "MyName", "description", "Testing a mrml node", "hideFromEditors", "false", @@ -210,8 +206,6 @@ int ExerciseBasicMRMLMethods(vtkMRMLNode* node) NULL}; node->ReadXMLAttributes(atts); - CHECK_STRING(node->GetID(), "vtkMRMLNodeTest1"); - // Test WriteXML std::cout << "WriteXML output:" << std::endl << "------------------" << std::endl; node->WriteXML(std::cout, 0); diff --git a/Libs/MRML/Core/vtkMRMLDiffusionTensorVolumeNode.cxx b/Libs/MRML/Core/vtkMRMLDiffusionTensorVolumeNode.cxx index bbae8d730..6d70abef1 100644 --- a/Libs/MRML/Core/vtkMRMLDiffusionTensorVolumeNode.cxx +++ b/Libs/MRML/Core/vtkMRMLDiffusionTensorVolumeNode.cxx @@ -66,7 +66,14 @@ vtkMRMLDiffusionTensorVolumeDisplayNode* vtkMRMLDiffusionTensorVolumeNode //---------------------------------------------------------------------------- vtkMRMLStorageNode* vtkMRMLDiffusionTensorVolumeNode::CreateDefaultStorageNode() { - return vtkMRMLNRRDStorageNode::New(); + vtkMRMLScene* scene = this->GetScene(); + if (scene == NULL) + { + vtkErrorMacro("CreateDefaultStorageNode failed: scene is invalid"); + return NULL; + } + return vtkMRMLStorageNode::SafeDownCast( + scene->CreateNodeByClass("vtkMRMLNRRDStorageNode")); } //---------------------------------------------------------------------------- @@ -82,8 +89,8 @@ void vtkMRMLDiffusionTensorVolumeNode::CreateDefaultDisplayNodes() vtkErrorMacro("vtkMRMLDiffusionTensorVolumeNode::CreateDefaultDisplayNodes failed: scene is invalid"); return; } - vtkNew dispNode; - this->GetScene()->AddNode(dispNode.GetPointer()); + vtkMRMLDiffusionTensorVolumeDisplayNode* dispNode = vtkMRMLDiffusionTensorVolumeDisplayNode::SafeDownCast( + this->GetScene()->AddNewNodeByClass("vtkMRMLDiffusionTensorVolumeDisplayNode") ); dispNode->SetDefaultColorMap(); this->SetAndObserveDisplayNodeID(dispNode->GetID()); // add slice display nodes diff --git a/Libs/MRML/Core/vtkMRMLDiffusionWeightedVolumeNode.cxx b/Libs/MRML/Core/vtkMRMLDiffusionWeightedVolumeNode.cxx index 196b38e12..83b29171a 100644 --- a/Libs/MRML/Core/vtkMRMLDiffusionWeightedVolumeNode.cxx +++ b/Libs/MRML/Core/vtkMRMLDiffusionWeightedVolumeNode.cxx @@ -446,7 +446,14 @@ vtkMRMLDiffusionWeightedVolumeDisplayNode* vtkMRMLDiffusionWeightedVolumeNode::G //---------------------------------------------------------------------------- vtkMRMLStorageNode* vtkMRMLDiffusionWeightedVolumeNode::CreateDefaultStorageNode() { - return vtkMRMLNRRDStorageNode::New(); + vtkMRMLScene* scene = this->GetScene(); + if (scene == NULL) + { + vtkErrorMacro("CreateDefaultStorageNode failed: scene is invalid"); + return NULL; + } + return vtkMRMLStorageNode::SafeDownCast( + scene->CreateNodeByClass("vtkMRMLNRRDStorageNode")); } //---------------------------------------------------------------------------- @@ -462,8 +469,8 @@ void vtkMRMLDiffusionWeightedVolumeNode::CreateDefaultDisplayNodes() vtkErrorMacro("vtkMRMLDiffusionWeightedVolumeNode::CreateDefaultDisplayNodes failed: scene is invalid"); return; } - vtkNew dispNode; - this->GetScene()->AddNode(dispNode.GetPointer()); + vtkMRMLDiffusionWeightedVolumeDisplayNode* dispNode = vtkMRMLDiffusionWeightedVolumeDisplayNode::SafeDownCast( + this->GetScene()->AddNewNodeByClass("vtkMRMLDiffusionWeightedVolumeDisplayNode") ); dispNode->SetDefaultColorMap(); this->SetAndObserveDisplayNodeID(dispNode->GetID()); } diff --git a/Libs/MRML/Core/vtkMRMLDoubleArrayNode.cxx b/Libs/MRML/Core/vtkMRMLDoubleArrayNode.cxx index 7730af61f..09d2b8ce0 100644 --- a/Libs/MRML/Core/vtkMRMLDoubleArrayNode.cxx +++ b/Libs/MRML/Core/vtkMRMLDoubleArrayNode.cxx @@ -15,6 +15,7 @@ Version: $Revision: 1.2 $ // MRML includes #include "vtkMRMLDoubleArrayNode.h" #include "vtkMRMLDoubleArrayStorageNode.h" +#include "vtkMRMLScene.h" // VTK includes #include @@ -298,10 +299,10 @@ int vtkMRMLDoubleArrayNode::GetXYValue(int index, double* x, double* y) std::vector tuple(this->Array->GetNumberOfComponents()); int success = this->GetValues(index, &tuple[0]); - + *x = tuple[0]; *y = tuple[1]; - + return success; } @@ -624,11 +625,13 @@ void vtkMRMLDoubleArrayNode::GetYRange(double* range, int fIncludeError) } +//--------------------------------------------------------------------------- void vtkMRMLDoubleArrayNode::SetLabels(const LabelsVectorType &labels) { this->Labels = labels; } +//--------------------------------------------------------------------------- const vtkMRMLDoubleArrayNode::LabelsVectorType & vtkMRMLDoubleArrayNode::GetLabels() const { return this->Labels; @@ -638,5 +641,12 @@ const vtkMRMLDoubleArrayNode::LabelsVectorType & vtkMRMLDoubleArrayNode::GetLabe //--------------------------------------------------------------------------- vtkMRMLStorageNode* vtkMRMLDoubleArrayNode::CreateDefaultStorageNode() { - return vtkMRMLDoubleArrayStorageNode::New(); -}; + vtkMRMLScene* scene = this->GetScene(); + if (scene == NULL) + { + vtkErrorMacro("CreateDefaultStorageNode failed: scene is invalid"); + return NULL; + } + return vtkMRMLStorageNode::SafeDownCast( + scene->CreateNodeByClass("vtkMRMLDoubleArrayStorageNode")); +} diff --git a/Libs/MRML/Core/vtkMRMLFiducialListNode.cxx b/Libs/MRML/Core/vtkMRMLFiducialListNode.cxx index 1820c17e5..0e8fa7dcb 100644 --- a/Libs/MRML/Core/vtkMRMLFiducialListNode.cxx +++ b/Libs/MRML/Core/vtkMRMLFiducialListNode.cxx @@ -1666,7 +1666,14 @@ void vtkMRMLFiducialListNode::ApplyTransform(vtkAbstractTransform* transform) //--------------------------------------------------------------------------- vtkMRMLStorageNode* vtkMRMLFiducialListNode::CreateDefaultStorageNode() { - return vtkMRMLFiducialListStorageNode::New(); + vtkMRMLScene* scene = this->GetScene(); + if (scene == NULL) + { + vtkErrorMacro("CreateDefaultStorageNode failed: scene is invalid"); + return NULL; + } + return vtkMRMLStorageNode::SafeDownCast( + scene->CreateNodeByClass("vtkMRMLFiducialListStorageNode")); } //--------------------------------------------------------------------------- diff --git a/Libs/MRML/Core/vtkMRMLLabelMapVolumeNode.cxx b/Libs/MRML/Core/vtkMRMLLabelMapVolumeNode.cxx index 303eae92e..3608df85e 100644 --- a/Libs/MRML/Core/vtkMRMLLabelMapVolumeNode.cxx +++ b/Libs/MRML/Core/vtkMRMLLabelMapVolumeNode.cxx @@ -71,8 +71,8 @@ void vtkMRMLLabelMapVolumeNode::CreateDefaultDisplayNodes() vtkErrorMacro("vtkMRMLLabelMapVolumeNode::CreateDefaultDisplayNodes failed: scene is invalid"); return; } - vtkNew dispNode; - this->GetScene()->AddNode(dispNode.GetPointer()); + vtkMRMLLabelMapVolumeDisplayNode* dispNode = vtkMRMLLabelMapVolumeDisplayNode::SafeDownCast( + this->GetScene()->AddNewNodeByClass("vtkMRMLLabelMapVolumeDisplayNode") ); dispNode->SetDefaultColorMap(); this->SetAndObserveDisplayNodeID(dispNode->GetID()); } diff --git a/Libs/MRML/Core/vtkMRMLModelNode.cxx b/Libs/MRML/Core/vtkMRMLModelNode.cxx index 7cdc39265..5778dc4e9 100644 --- a/Libs/MRML/Core/vtkMRMLModelNode.cxx +++ b/Libs/MRML/Core/vtkMRMLModelNode.cxx @@ -803,7 +803,14 @@ void vtkMRMLModelNode::TransformBoundsToRAS(double inputBounds_Local[6], double //--------------------------------------------------------------------------- vtkMRMLStorageNode* vtkMRMLModelNode::CreateDefaultStorageNode() { - return vtkMRMLStorageNode::SafeDownCast(vtkMRMLModelStorageNode::New()); + vtkMRMLScene* scene = this->GetScene(); + if (scene == NULL) + { + vtkErrorMacro("CreateDefaultStorageNode failed: scene is invalid"); + return NULL; + } + return vtkMRMLStorageNode::SafeDownCast( + scene->CreateNodeByClass("vtkMRMLModelStorageNode")); } //--------------------------------------------------------------------------- @@ -835,12 +842,14 @@ void vtkMRMLModelNode::CreateDefaultDisplayNodes() // display node already exists return; } - if (this->GetScene()==NULL) + vtkMRMLScene* scene = this->GetScene(); + if (scene == NULL) { vtkErrorMacro("vtkMRMLModelNode::CreateDefaultDisplayNodes failed: scene is invalid"); return; } - vtkNew dispNode; + vtkMRMLModelDisplayNode* dispNode = vtkMRMLModelDisplayNode::SafeDownCast( + scene->AddNewNodeByClass("vtkMRMLModelDisplayNode") ); if (this->GetMesh()) { @@ -859,7 +868,6 @@ void vtkMRMLModelNode::CreateDefaultDisplayNodes() dispNode->SetAndObserveColorNodeID("vtkMRMLFreeSurferProceduralColorNodeRedGreen"); } - this->GetScene()->AddNode( dispNode.GetPointer() ); this->SetAndObserveDisplayNodeID( dispNode->GetID() ); } diff --git a/Libs/MRML/Core/vtkMRMLProceduralColorNode.cxx b/Libs/MRML/Core/vtkMRMLProceduralColorNode.cxx index 91cc20ea3..c1695733f 100644 --- a/Libs/MRML/Core/vtkMRMLProceduralColorNode.cxx +++ b/Libs/MRML/Core/vtkMRMLProceduralColorNode.cxx @@ -15,6 +15,7 @@ Version: $Revision: 1.0 $ // MRML includes #include "vtkMRMLProceduralColorNode.h" #include "vtkMRMLProceduralColorStorageNode.h" +#include "vtkMRMLScene.h" // VTK includes #include @@ -262,7 +263,14 @@ bool vtkMRMLProceduralColorNode::GetColor(int entry, double color[4]) //--------------------------------------------------------------------------- vtkMRMLStorageNode * vtkMRMLProceduralColorNode::CreateDefaultStorageNode() { - return vtkMRMLProceduralColorStorageNode::New(); + vtkMRMLScene* scene = this->GetScene(); + if (scene == NULL) + { + vtkErrorMacro("CreateDefaultStorageNode failed: scene is invalid"); + return NULL; + } + return vtkMRMLStorageNode::SafeDownCast( + scene->CreateNodeByClass("vtkMRMLProceduralColorStorageNode")); } //---------------------------------------------------------------------------- diff --git a/Libs/MRML/Core/vtkMRMLScalarVolumeNode.cxx b/Libs/MRML/Core/vtkMRMLScalarVolumeNode.cxx index 58db1e2a8..2ea1e6db1 100644 --- a/Libs/MRML/Core/vtkMRMLScalarVolumeNode.cxx +++ b/Libs/MRML/Core/vtkMRMLScalarVolumeNode.cxx @@ -152,7 +152,14 @@ void vtkMRMLScalarVolumeNode::PrintSelf(ostream& os, vtkIndent indent) //--------------------------------------------------------------------------- vtkMRMLStorageNode* vtkMRMLScalarVolumeNode::CreateDefaultStorageNode() { - return vtkMRMLVolumeArchetypeStorageNode::New(); + vtkMRMLScene* scene = this->GetScene(); + if (scene == NULL) + { + vtkErrorMacro("CreateDefaultStorageNode failed: scene is invalid"); + return NULL; + } + return vtkMRMLStorageNode::SafeDownCast( + scene->CreateNodeByClass("vtkMRMLVolumeArchetypeStorageNode")); } //---------------------------------------------------------------------------- @@ -168,8 +175,8 @@ void vtkMRMLScalarVolumeNode::CreateDefaultDisplayNodes() vtkErrorMacro("vtkMRMLScalarVolumeNode::CreateDefaultDisplayNodes failed: scene is invalid"); return; } - vtkNew dispNode; - this->GetScene()->AddNode(dispNode.GetPointer()); + vtkMRMLScalarVolumeDisplayNode* dispNode = vtkMRMLScalarVolumeDisplayNode::SafeDownCast( + this->GetScene()->AddNewNodeByClass("vtkMRMLScalarVolumeDisplayNode") ); dispNode->SetDefaultColorMap(); this->SetAndObserveDisplayNodeID(dispNode->GetID()); } diff --git a/Libs/MRML/Core/vtkMRMLSceneViewNode.cxx b/Libs/MRML/Core/vtkMRMLSceneViewNode.cxx index 66fb5661f..3eacd0c46 100644 --- a/Libs/MRML/Core/vtkMRMLSceneViewNode.cxx +++ b/Libs/MRML/Core/vtkMRMLSceneViewNode.cxx @@ -707,7 +707,14 @@ void vtkMRMLSceneViewNode::SetAbsentStorageFileNames() //---------------------------------------------------------------------------- vtkMRMLStorageNode* vtkMRMLSceneViewNode::CreateDefaultStorageNode() { - return vtkMRMLSceneViewStorageNode::New(); + vtkMRMLScene* scene = this->GetScene(); + if (scene == NULL) + { + vtkErrorMacro("CreateDefaultStorageNode failed: scene is invalid"); + return NULL; + } + return vtkMRMLStorageNode::SafeDownCast( + scene->CreateNodeByClass("vtkMRMLSceneViewStorageNode")); } //---------------------------------------------------------------------------- diff --git a/Libs/MRML/Core/vtkMRMLSegmentationNode.cxx b/Libs/MRML/Core/vtkMRMLSegmentationNode.cxx index 99609c877..950e4253e 100644 --- a/Libs/MRML/Core/vtkMRMLSegmentationNode.cxx +++ b/Libs/MRML/Core/vtkMRMLSegmentationNode.cxx @@ -377,7 +377,14 @@ void vtkMRMLSegmentationNode::OnSubjectHierarchyUIDAdded( //---------------------------------------------------------------------------- vtkMRMLStorageNode* vtkMRMLSegmentationNode::CreateDefaultStorageNode() { - return vtkMRMLSegmentationStorageNode::New(); + vtkMRMLScene* scene = this->GetScene(); + if (scene == NULL) + { + vtkErrorMacro("CreateDefaultStorageNode failed: scene is invalid"); + return NULL; + } + return vtkMRMLStorageNode::SafeDownCast( + scene->CreateNodeByClass("vtkMRMLSegmentationStorageNode")); } //---------------------------------------------------------------------------- @@ -393,8 +400,8 @@ void vtkMRMLSegmentationNode::CreateDefaultDisplayNodes() vtkErrorMacro("vtkMRMLSegmentationNode::CreateDefaultDisplayNodes failed: Scene is invalid"); return; } - vtkNew displayNode; - this->GetScene()->AddNode(displayNode.GetPointer()); + vtkMRMLSegmentationDisplayNode* displayNode = vtkMRMLSegmentationDisplayNode::SafeDownCast( + this->GetScene()->AddNewNodeByClass("vtkMRMLSegmentationDisplayNode") ); this->SetAndObserveDisplayNodeID(displayNode->GetID()); } diff --git a/Libs/MRML/Core/vtkMRMLTableNode.cxx b/Libs/MRML/Core/vtkMRMLTableNode.cxx index 7c5ab6607..30aaa15db 100644 --- a/Libs/MRML/Core/vtkMRMLTableNode.cxx +++ b/Libs/MRML/Core/vtkMRMLTableNode.cxx @@ -21,6 +21,7 @@ ==============================================================================*/ // MRML includes +#include "vtkMRMLScene.h" #include "vtkMRMLTableNode.h" #include "vtkMRMLTableStorageNode.h" @@ -238,7 +239,14 @@ void vtkMRMLTableNode::PrintSelf(ostream& os, vtkIndent indent) //--------------------------------------------------------------------------- vtkMRMLStorageNode* vtkMRMLTableNode::CreateDefaultStorageNode() { - return vtkMRMLStorageNode::SafeDownCast(vtkMRMLTableStorageNode::New()); + vtkMRMLScene* scene = this->GetScene(); + if (scene == NULL) + { + vtkErrorMacro("CreateDefaultStorageNode failed: scene is invalid"); + return NULL; + } + return vtkMRMLStorageNode::SafeDownCast( + scene->CreateNodeByClass("vtkMRMLTableStorageNode")); } //---------------------------------------------------------------------------- diff --git a/Libs/MRML/Core/vtkMRMLTensorVolumeNode.cxx b/Libs/MRML/Core/vtkMRMLTensorVolumeNode.cxx index 97ea0579a..3e319b254 100644 --- a/Libs/MRML/Core/vtkMRMLTensorVolumeNode.cxx +++ b/Libs/MRML/Core/vtkMRMLTensorVolumeNode.cxx @@ -14,8 +14,9 @@ Version: $Revision: 1.14 $ // MRML includes #include "vtkMRMLDiffusionTensorVolumeDisplayNode.h" -#include "vtkMRMLTensorVolumeNode.h" #include "vtkMRMLNRRDStorageNode.h" +#include "vtkMRMLScene.h" +#include "vtkMRMLTensorVolumeNode.h" // VTK includes #include @@ -217,6 +218,12 @@ void vtkMRMLTensorVolumeNode::PrintSelf(ostream& os, vtkIndent indent) //---------------------------------------------------------------------------- vtkMRMLStorageNode* vtkMRMLTensorVolumeNode::CreateDefaultStorageNode() { - return vtkMRMLNRRDStorageNode::New(); + vtkMRMLScene* scene = this->GetScene(); + if (scene == NULL) + { + vtkErrorMacro("CreateDefaultStorageNode failed: scene is invalid"); + return NULL; + } + return vtkMRMLStorageNode::SafeDownCast( + scene->CreateNodeByClass("vtkMRMLNRRDStorageNode")); } - diff --git a/Libs/MRML/Core/vtkMRMLTransformNode.cxx b/Libs/MRML/Core/vtkMRMLTransformNode.cxx index a2fb67cc0..044ee2301 100644 --- a/Libs/MRML/Core/vtkMRMLTransformNode.cxx +++ b/Libs/MRML/Core/vtkMRMLTransformNode.cxx @@ -782,7 +782,14 @@ bool vtkMRMLTransformNode::IsAbstractTransformComputedFromInverse(vtkAbstractTra //---------------------------------------------------------------------------- vtkMRMLStorageNode* vtkMRMLTransformNode::CreateDefaultStorageNode() { - return vtkMRMLTransformStorageNode::New(); + vtkMRMLScene* scene = this->GetScene(); + if (scene == NULL) + { + vtkErrorMacro("CreateDefaultStorageNode failed: scene is invalid"); + return NULL; + } + return vtkMRMLStorageNode::SafeDownCast( + scene->CreateNodeByClass("vtkMRMLTransformStorageNode")); } //---------------------------------------------------------------------------- @@ -798,8 +805,8 @@ void vtkMRMLTransformNode::CreateDefaultDisplayNodes() vtkErrorMacro("vtkMRMLTransformNode::CreateDefaultDisplayNodes failed: scene is invalid"); return; } - vtkNew dispNode; - this->GetScene()->AddNode(dispNode.GetPointer()); + vtkMRMLTransformDisplayNode* dispNode = vtkMRMLTransformDisplayNode::SafeDownCast( + this->GetScene()->AddNewNodeByClass("vtkMRMLTransformDisplayNode") ); this->SetAndObserveDisplayNodeID(dispNode->GetID()); } diff --git a/Libs/MRML/Core/vtkMRMLVectorVolumeNode.cxx b/Libs/MRML/Core/vtkMRMLVectorVolumeNode.cxx index 84b2eea35..0bf8341c6 100644 --- a/Libs/MRML/Core/vtkMRMLVectorVolumeNode.cxx +++ b/Libs/MRML/Core/vtkMRMLVectorVolumeNode.cxx @@ -72,7 +72,14 @@ vtkMRMLVectorVolumeDisplayNode* vtkMRMLVectorVolumeNode::GetVectorVolumeDisplayN //---------------------------------------------------------------------------- vtkMRMLStorageNode* vtkMRMLVectorVolumeNode::CreateDefaultStorageNode() { - return vtkMRMLVolumeArchetypeStorageNode::New(); + vtkMRMLScene* scene = this->GetScene(); + if (scene == NULL) + { + vtkErrorMacro("CreateDefaultStorageNode failed: scene is invalid"); + return NULL; + } + return vtkMRMLStorageNode::SafeDownCast( + scene->CreateNodeByClass("vtkMRMLVolumeArchetypeStorageNode")); } //---------------------------------------------------------------------------- @@ -88,8 +95,8 @@ void vtkMRMLVectorVolumeNode::CreateDefaultDisplayNodes() vtkErrorMacro("vtkMRMLVectorVolumeNode::CreateDefaultDisplayNodes failed: scene is invalid"); return; } - vtkNew dispNode; - this->GetScene()->AddNode(dispNode.GetPointer()); + vtkMRMLVectorVolumeDisplayNode* dispNode = vtkMRMLVectorVolumeDisplayNode::SafeDownCast( + this->GetScene()->AddNewNodeByClass("vtkMRMLVectorVolumeDisplayNode") ); dispNode->SetDefaultColorMap(); this->SetAndObserveDisplayNodeID(dispNode->GetID()); } diff --git a/Modules/Loadable/Annotations/MRML/vtkMRMLAnnotationAngleNode.cxx b/Modules/Loadable/Annotations/MRML/vtkMRMLAnnotationAngleNode.cxx index 2f87a021b..7e5842508 100644 --- a/Modules/Loadable/Annotations/MRML/vtkMRMLAnnotationAngleNode.cxx +++ b/Modules/Loadable/Annotations/MRML/vtkMRMLAnnotationAngleNode.cxx @@ -1,15 +1,19 @@ -#include - +//MRML includes #include "vtkMRMLAnnotationAngleNode.h" #include "vtkMRMLAnnotationTextDisplayNode.h" #include "vtkMRMLAnnotationPointDisplayNode.h" #include "vtkMRMLAnnotationLineDisplayNode.h" #include "vtkMRMLAnnotationAngleStorageNode.h" +#include "vtkMRMLScene.h" +// VTK includes #include #include #include +// STD includes +#include + //---------------------------------------------------------------------------- vtkMRMLNodeNewMacro(vtkMRMLAnnotationAngleNode); @@ -492,7 +496,14 @@ void vtkMRMLAnnotationAngleNode::ApplyTransform(vtkAbstractTransform* transform) //------------------------------------------------------------------------- vtkMRMLStorageNode* vtkMRMLAnnotationAngleNode::CreateDefaultStorageNode() { - return vtkMRMLStorageNode::SafeDownCast(vtkMRMLAnnotationAngleStorageNode::New()); + vtkMRMLScene* scene = this->GetScene(); + if (scene == NULL) + { + vtkErrorMacro("CreateDefaultStorageNode failed: scene is invalid"); + return NULL; + } + return vtkMRMLStorageNode::SafeDownCast( + scene->CreateNodeByClass("vtkMRMLAnnotationAngleStorageNode")); } //--------------------------------------------------------------------------- diff --git a/Modules/Loadable/Annotations/MRML/vtkMRMLAnnotationControlPointsNode.cxx b/Modules/Loadable/Annotations/MRML/vtkMRMLAnnotationControlPointsNode.cxx index c4a9af4e6..83660c539 100644 --- a/Modules/Loadable/Annotations/MRML/vtkMRMLAnnotationControlPointsNode.cxx +++ b/Modules/Loadable/Annotations/MRML/vtkMRMLAnnotationControlPointsNode.cxx @@ -482,7 +482,14 @@ const char *vtkMRMLAnnotationControlPointsNode::GetAttributeTypesEnumAsString(in //------------------------------------------------------------------------- vtkMRMLStorageNode* vtkMRMLAnnotationControlPointsNode::CreateDefaultStorageNode() { - return vtkMRMLStorageNode::SafeDownCast(vtkMRMLAnnotationControlPointsStorageNode::New()); + vtkMRMLScene* scene = this->GetScene(); + if (scene == NULL) + { + vtkErrorMacro("CreateDefaultStorageNode failed: scene is invalid"); + return NULL; + } + return vtkMRMLStorageNode::SafeDownCast( + scene->CreateNodeByClass("vtkMRMLAnnotationControlPointsStorageNode")); } //--------------------------------------------------------------------------- diff --git a/Modules/Loadable/Annotations/MRML/vtkMRMLAnnotationLinesNode.cxx b/Modules/Loadable/Annotations/MRML/vtkMRMLAnnotationLinesNode.cxx index 97ec9a84e..d49164d68 100644 --- a/Modules/Loadable/Annotations/MRML/vtkMRMLAnnotationLinesNode.cxx +++ b/Modules/Loadable/Annotations/MRML/vtkMRMLAnnotationLinesNode.cxx @@ -437,10 +437,16 @@ const char *vtkMRMLAnnotationLinesNode::GetAttributeTypesEnumAsString(int val) //------------------------------------------------------------------------- vtkMRMLStorageNode* vtkMRMLAnnotationLinesNode::CreateDefaultStorageNode() { - return vtkMRMLStorageNode::SafeDownCast(vtkMRMLAnnotationLinesStorageNode::New()); + vtkMRMLScene* scene = this->GetScene(); + if (scene == NULL) + { + vtkErrorMacro("CreateDefaultStorageNode failed: scene is invalid"); + return NULL; + } + return vtkMRMLStorageNode::SafeDownCast( + scene->CreateNodeByClass("vtkMRMLAnnotationLinesStorageNode")); } - //--------------------------------------------------------------------------- int vtkMRMLAnnotationLinesNode::SetLine(int id, int ctrlPtIdStart, int ctrlPtIdEnd,int selectedFlag, int visibleFlag) { diff --git a/Modules/Loadable/Annotations/MRML/vtkMRMLAnnotationNode.cxx b/Modules/Loadable/Annotations/MRML/vtkMRMLAnnotationNode.cxx index 4e9236cb9..ba6ec9a41 100644 --- a/Modules/Loadable/Annotations/MRML/vtkMRMLAnnotationNode.cxx +++ b/Modules/Loadable/Annotations/MRML/vtkMRMLAnnotationNode.cxx @@ -584,7 +584,14 @@ std::string vtkMRMLAnnotationNode::GetDefaultStorageNodeClassName(const char* fi //------------------------------------------------------------------------- vtkMRMLStorageNode* vtkMRMLAnnotationNode::CreateDefaultStorageNode() { - return vtkMRMLStorageNode::SafeDownCast(vtkMRMLAnnotationStorageNode::New()); + vtkMRMLScene* scene = this->GetScene(); + if (scene == NULL) + { + vtkErrorMacro("CreateDefaultStorageNode failed: scene is invalid"); + return NULL; + } + return vtkMRMLStorageNode::SafeDownCast( + scene->CreateNodeByClass("vtkMRMLAnnotationStorageNode")); } //---------------------------------------------------------------------------- diff --git a/Modules/Loadable/Annotations/MRML/vtkMRMLAnnotationRulerNode.cxx b/Modules/Loadable/Annotations/MRML/vtkMRMLAnnotationRulerNode.cxx index 5699959c6..092576b32 100644 --- a/Modules/Loadable/Annotations/MRML/vtkMRMLAnnotationRulerNode.cxx +++ b/Modules/Loadable/Annotations/MRML/vtkMRMLAnnotationRulerNode.cxx @@ -1,16 +1,20 @@ -#include - +// MRML includes #include "vtkMRMLAnnotationRulerNode.h" #include "vtkMRMLAnnotationTextDisplayNode.h" #include "vtkMRMLAnnotationPointDisplayNode.h" #include "vtkMRMLAnnotationLineDisplayNode.h" #include "vtkMRMLAnnotationRulerStorageNode.h" +#include "vtkMRMLScene.h" +// VTK includes #include #include #include #include +// STD includes +#include + //---------------------------------------------------------------------------- vtkMRMLNodeNewMacro(vtkMRMLAnnotationRulerNode); @@ -365,7 +369,14 @@ void vtkMRMLAnnotationRulerNode::ApplyTransform(vtkAbstractTransform* transform) //--------------------------------------------------------------------------- vtkMRMLStorageNode* vtkMRMLAnnotationRulerNode::CreateDefaultStorageNode() { - return vtkMRMLStorageNode::SafeDownCast(vtkMRMLAnnotationRulerStorageNode::New()); + vtkMRMLScene* scene = this->GetScene(); + if (scene == NULL) + { + vtkErrorMacro("CreateDefaultStorageNode failed: scene is invalid"); + return NULL; + } + return vtkMRMLStorageNode::SafeDownCast( + scene->CreateNodeByClass("vtkMRMLAnnotationRulerStorageNode")); } //--------------------------------------------------------------------------- diff --git a/Modules/Loadable/Annotations/MRML/vtkMRMLAnnotationSnapshotNode.cxx b/Modules/Loadable/Annotations/MRML/vtkMRMLAnnotationSnapshotNode.cxx index ddaed95f6..220aea5d6 100644 --- a/Modules/Loadable/Annotations/MRML/vtkMRMLAnnotationSnapshotNode.cxx +++ b/Modules/Loadable/Annotations/MRML/vtkMRMLAnnotationSnapshotNode.cxx @@ -1,6 +1,7 @@ // MRML includes #include "vtkMRMLAnnotationSnapshotNode.h" #include "vtkMRMLAnnotationSnapshotStorageNode.h" +#include "vtkMRMLScene.h" // VTKsys includes #include @@ -97,7 +98,14 @@ void vtkMRMLAnnotationSnapshotNode::ReadXMLAttributes(const char** atts) //---------------------------------------------------------------------------- vtkMRMLStorageNode* vtkMRMLAnnotationSnapshotNode::CreateDefaultStorageNode() { - return vtkMRMLAnnotationSnapshotStorageNode::New(); + vtkMRMLScene* scene = this->GetScene(); + if (scene == NULL) + { + vtkErrorMacro("CreateDefaultStorageNode failed: scene is invalid"); + return NULL; + } + return vtkMRMLStorageNode::SafeDownCast( + scene->CreateNodeByClass("vtkMRMLAnnotationSnapshotStorageNode")); } //---------------------------------------------------------------------------- diff --git a/Modules/Loadable/Annotations/Testing/Cxx/vtkMRMLAnnotationAngleNodeTest1.cxx b/Modules/Loadable/Annotations/Testing/Cxx/vtkMRMLAnnotationAngleNodeTest1.cxx index 7f8d55fbb..1108ac991 100644 --- a/Modules/Loadable/Annotations/Testing/Cxx/vtkMRMLAnnotationAngleNodeTest1.cxx +++ b/Modules/Loadable/Annotations/Testing/Cxx/vtkMRMLAnnotationAngleNodeTest1.cxx @@ -8,33 +8,33 @@ int vtkMRMLAnnotationAngleNodeTest1(int , char * [] ) { - // ====================== // Basic Setup // ====================== - vtkSmartPointer< vtkMRMLAnnotationAngleNode > node2 = vtkSmartPointer< vtkMRMLAnnotationAngleNode >::New(); - vtkSmartPointer mrmlScene = vtkSmartPointer::New(); - // node2->Initialize(mrmlScene); + vtkNew node2; + vtkNew mrmlScene; + vtkNew node1; + mrmlScene->AddNode(node1); - { + node1->UpdateReferences(); + node2->Copy( node1 ); - vtkSmartPointer< vtkMRMLAnnotationAngleNode > node1 = vtkSmartPointer< vtkMRMLAnnotationAngleNode >::New(); - // node1->Initialize(mrmlScene); - EXERCISE_ALL_BASIC_MRML_METHODS(node1); + mrmlScene->RegisterNodeClass(node1); + mrmlScene->AddNode(node2); - node1->UpdateReferences(); - node2->Copy( node1 ); + vtkNew prototypeStorageNode; + mrmlScene->RegisterNodeClass(prototypeStorageNode); + vtkMRMLAnnotationAngleStorageNode *storNode = vtkMRMLAnnotationAngleStorageNode::SafeDownCast( + node2->CreateDefaultStorageNode()); - mrmlScene->RegisterNodeClass(node1); - mrmlScene->AddNode(node2); - } - vtkMRMLAnnotationAngleStorageNode *storNode = dynamic_cast (node2->CreateDefaultStorageNode()); + EXERCISE_ALL_BASIC_MRML_METHODS(node1); + mrmlScene->RemoveNode(node1); if( !storNode ) { - std::cerr << "Error in CreateDefaultStorageNode()" << std::endl; - return EXIT_FAILURE; + std::cerr << "Error in CreateDefaultStorageNode()" << std::endl; + return EXIT_FAILURE; } storNode->Delete(); @@ -45,8 +45,6 @@ int vtkMRMLAnnotationAngleNodeTest1(int , char * [] ) // ====================== node2->Reset(NULL); node2->StartModify(); - // node2->Initialize(mrmlScene); - node2->SetName("AnnotationAngleNodeTest") ; @@ -66,24 +64,21 @@ int vtkMRMLAnnotationAngleNodeTest1(int , char * [] ) node2->SetPositionCenter(ctp); } - int vis = 1; node2->SetRay1Visibility(vis); - double *ctrlPointID = node2->GetPositionCenter(); if (ctrlPointID[0]!= 1 || (ctrlPointID[1] != 2) || (ctrlPointID[2] != 3) || node2->GetRay1Visibility() != vis) { - std::cerr << "Error in Array Attributes: " << ctrlPointID[0] << "!=1, " << ctrlPointID[1]<< "!=2" << ctrlPointID[2]<< "!=3, " - << node2->GetRay1Visibility() <<"!="<< vis << std::endl; - return EXIT_FAILURE; + std::cerr << "Error in Array Attributes: " << ctrlPointID[0] << "!=1, " << ctrlPointID[1]<< "!=2" << ctrlPointID[2]<< "!=3, " + << node2->GetRay1Visibility() <<"!="<< vis << std::endl; + return EXIT_FAILURE; } vtkIndent ind; node2->PrintAnnotationInfo(cout,ind); - cout << "Passed Adding and Deleting Data" << endl; node2->Modified(); @@ -101,22 +96,19 @@ int vtkMRMLAnnotationAngleNodeTest1(int , char * [] ) if (mrmlScene->GetNumberOfNodesByClass("vtkMRMLAnnotationAngleNode") != 1) { - std::cerr << "Error in ReadXML() or WriteXML() - Did not create a class called vtkMRMLAnnotationAngleNode" << std::endl; + std::cerr << "Error in ReadXML() or WriteXML() - Did not create a class called vtkMRMLAnnotationAngleNode" << std::endl; return EXIT_FAILURE; } vtkMRMLAnnotationAngleNode *node3 = vtkMRMLAnnotationAngleNode::SafeDownCast(mrmlScene->GetFirstNodeByClass("vtkMRMLAnnotationAngleNode")); if (!node3) - { + { std::cerr << "Error in ReadXML() or WriteXML(): could not find vtkMRMLAnnotationAngleNode" << std::endl; return EXIT_FAILURE; - } + } std::stringstream initialAnnotation, afterAnnotation; - - // node2->PrintSelf(cout,ind); - node2->PrintAnnotationInfo(initialAnnotation,ind); node3->PrintAnnotationInfo(afterAnnotation,ind); @@ -130,7 +122,4 @@ int vtkMRMLAnnotationAngleNodeTest1(int , char * [] ) cout << "Passed XML" << endl; return EXIT_SUCCESS; - } - - diff --git a/Modules/Loadable/Annotations/Testing/Cxx/vtkMRMLAnnotationControlPointsNodeTest1.cxx b/Modules/Loadable/Annotations/Testing/Cxx/vtkMRMLAnnotationControlPointsNodeTest1.cxx index 79590a663..8220fb28b 100644 --- a/Modules/Loadable/Annotations/Testing/Cxx/vtkMRMLAnnotationControlPointsNodeTest1.cxx +++ b/Modules/Loadable/Annotations/Testing/Cxx/vtkMRMLAnnotationControlPointsNodeTest1.cxx @@ -10,12 +10,14 @@ int vtkMRMLAnnotationControlPointsNodeTest1(int , char * [] ) { vtkNew node1; - EXERCISE_ALL_BASIC_MRML_METHODS(node1.GetPointer()); + vtkNew mrmlScene; + mrmlScene->AddNode(node1); + EXERCISE_ALL_BASIC_MRML_METHODS(node1); + mrmlScene->RemoveNode(node1); // ====================== // Basic Setup // ====================== - vtkNew mrmlScene; mrmlScene->RegisterNodeClass(vtkSmartPointer::New()); mrmlScene->RegisterNodeClass(vtkSmartPointer::New()); diff --git a/Modules/Loadable/Annotations/Testing/Cxx/vtkMRMLAnnotationFiducialNodeTest1.cxx b/Modules/Loadable/Annotations/Testing/Cxx/vtkMRMLAnnotationFiducialNodeTest1.cxx index 1cb2b8417..2763c9151 100644 --- a/Modules/Loadable/Annotations/Testing/Cxx/vtkMRMLAnnotationFiducialNodeTest1.cxx +++ b/Modules/Loadable/Annotations/Testing/Cxx/vtkMRMLAnnotationFiducialNodeTest1.cxx @@ -9,12 +9,14 @@ int vtkMRMLAnnotationFiducialNodeTest1(int , char * [] ) { vtkNew node1; + vtkNew mrmlScene; + mrmlScene->AddNode(node1); EXERCISE_ALL_BASIC_MRML_METHODS(node1.GetPointer()); + mrmlScene->RemoveNode(node1); // ====================== // Basic Setup // ====================== - vtkNew mrmlScene; mrmlScene->RegisterNodeClass(vtkSmartPointer::New()); mrmlScene->RegisterNodeClass(vtkSmartPointer::New()); diff --git a/Modules/Loadable/Annotations/Testing/Cxx/vtkMRMLAnnotationLinesNodeTest1.cxx b/Modules/Loadable/Annotations/Testing/Cxx/vtkMRMLAnnotationLinesNodeTest1.cxx index 50e50bdba..81f14efb4 100644 --- a/Modules/Loadable/Annotations/Testing/Cxx/vtkMRMLAnnotationLinesNodeTest1.cxx +++ b/Modules/Loadable/Annotations/Testing/Cxx/vtkMRMLAnnotationLinesNodeTest1.cxx @@ -29,12 +29,14 @@ void SetControlPointsAndText(vtkMRMLAnnotationLinesNode* node2) int vtkMRMLAnnotationLinesNodeTest1(int , char * [] ) { vtkNew< vtkMRMLAnnotationLinesNode > node1; - EXERCISE_ALL_BASIC_MRML_METHODS(node1.GetPointer()); + vtkNew mrmlScene; + mrmlScene->AddNode(node1); + EXERCISE_ALL_BASIC_MRML_METHODS(node1); + mrmlScene->RemoveNode(node1); // ====================== // Basic Setup // ====================== - vtkNew mrmlScene; mrmlScene->RegisterNodeClass(vtkSmartPointer::New()); mrmlScene->RegisterNodeClass(vtkSmartPointer::New()); diff --git a/Modules/Loadable/Annotations/Testing/Cxx/vtkMRMLAnnotationNodeTest1.cxx b/Modules/Loadable/Annotations/Testing/Cxx/vtkMRMLAnnotationNodeTest1.cxx index 086bcb5ab..9524c6574 100644 --- a/Modules/Loadable/Annotations/Testing/Cxx/vtkMRMLAnnotationNodeTest1.cxx +++ b/Modules/Loadable/Annotations/Testing/Cxx/vtkMRMLAnnotationNodeTest1.cxx @@ -13,44 +13,47 @@ int vtkMRMLAnnotationNodeTest1(int , char * [] ) // ====================== // Basic Setup // ====================== - vtkSmartPointer< vtkMRMLAnnotationNode > node2 = vtkSmartPointer< vtkMRMLAnnotationNode >::New(); + vtkNew node2; // This was a bug - used to crash node2->GetText(0); - vtkSmartPointer mrmlScene = vtkSmartPointer::New(); - { - vtkNew node1; - EXERCISE_ALL_BASIC_MRML_METHODS(node1.GetPointer()); + vtkNew mrmlScene; + vtkNew node1; + mrmlScene->AddNode(node1); - node1->UpdateReferences(); - node2->Copy( node1.GetPointer() ); + node1->UpdateReferences(); + node2->Copy(node1); - mrmlScene->RegisterNodeClass( node1.GetPointer() ); - mrmlScene->AddNode(node2); - } + mrmlScene->RegisterNodeClass(node1); + mrmlScene->AddNode(node2); + + vtkNew prototypeStorageNode; + mrmlScene->RegisterNodeClass(prototypeStorageNode); + vtkMRMLAnnotationStorageNode *storNode = vtkMRMLAnnotationStorageNode::SafeDownCast( + node2->CreateDefaultStorageNode()); - vtkMRMLAnnotationStorageNode *storNode = dynamic_cast (node2->CreateDefaultStorageNode()); + EXERCISE_ALL_BASIC_MRML_METHODS(node1); + mrmlScene->RemoveNode(node1); if( !storNode ) { - std::cerr << "Error in CreateDefaultStorageNode()" << std::endl; - return EXIT_FAILURE; + std::cerr << "Error in CreateDefaultStorageNode()" << std::endl; + return EXIT_FAILURE; } storNode->Delete(); std::cout << "Passed StorageNode" << std::endl; - node2->CreateAnnotationTextDisplayNode(); vtkMRMLAnnotationTextDisplayNode *textDisplayNode = node2->GetAnnotationTextDisplayNode(); if (!textDisplayNode) { - std::cerr << "Error in AnnotationTextDisplayNode() " << std::endl; - return EXIT_FAILURE; + std::cerr << "Error in AnnotationTextDisplayNode() " << std::endl; + return EXIT_FAILURE; } else { - // register the node type to the sceen + // register the node type to the scene mrmlScene->RegisterNodeClass(textDisplayNode); } std::cout << "Passed DisplayNode" << std::endl; @@ -149,44 +152,3 @@ int vtkMRMLAnnotationNodeTest1(int , char * [] ) return EXIT_SUCCESS; } - - - // std::stringstream ss; - // node2->WriteXML(ss,5); - // std::string writeXML = ss.str(); - // std::vector tmpVec; - // - // size_t pos = writeXML.find(" "); - // while (pos != std::string::npos) - // { - // pos += 6; - // size_t fix = writeXML.find('=',pos); - // tmpVec.push_back(writeXML.substr(pos,fix - pos)); - // fix +=2; - // pos = writeXML.find("\" ",fix); - // - // if (pos == std::string::npos) - // { - // std::string tmp = writeXML.substr(fix); - // std::replace(tmp.begin(), tmp.end(), '\"', ' '); - // // tmp.erase(remove_if(tmp.begin(), tmp.end(), isspace), tmp.end()); - // tmpVec.push_back(tmp); - // } - // else - // { - // tmpVec.push_back(writeXML.substr(fix,pos-fix)); - // pos ++; - // } - // } - // - // - // const char **readXML = new const char*[tmpVec.size()+1]; - // for (int i= 0 ; i < int(tmpVec.size()); i++) - // { - // readXML[i] = tmpVec[i].c_str(); - // } - // readXML[tmpVec.size()]= NULL; - // node2->ReadXMLAttributes(readXML); - // delete[] readXML; - - diff --git a/Modules/Loadable/Annotations/Testing/Cxx/vtkMRMLAnnotationROINodeTest1.cxx b/Modules/Loadable/Annotations/Testing/Cxx/vtkMRMLAnnotationROINodeTest1.cxx index 3bf1eb69e..fba3c3991 100644 --- a/Modules/Loadable/Annotations/Testing/Cxx/vtkMRMLAnnotationROINodeTest1.cxx +++ b/Modules/Loadable/Annotations/Testing/Cxx/vtkMRMLAnnotationROINodeTest1.cxx @@ -24,26 +24,24 @@ int TestGetTransformedPlanes(vtkMRMLScene* scene, vtkMRMLAnnotationROINode* node //---------------------------------------------------------------------------- int vtkMRMLAnnotationROINodeTest1(int , char * [] ) { - // ====================== // Basic Setup // ====================== - vtkSmartPointer node2 = vtkSmartPointer< vtkMRMLAnnotationROINode >::New(); - vtkSmartPointer mrmlScene = vtkSmartPointer::New(); - - { + vtkNew node2; + vtkNew mrmlScene; - vtkNew node1; + vtkNew node1; + mrmlScene->AddNode(node1); - EXERCISE_ALL_BASIC_MRML_METHODS(node1.GetPointer()); + node1->UpdateReferences(); + node2->Copy(node1.GetPointer()); - node1->UpdateReferences(); - node2->Copy(node1.GetPointer()); + mrmlScene->RegisterNodeClass(node1.GetPointer()); + mrmlScene->AddNode(node2); - mrmlScene->RegisterNodeClass(node1.GetPointer()); - mrmlScene->AddNode(node2); - } + EXERCISE_ALL_BASIC_MRML_METHODS(node1); + mrmlScene->RemoveNode(node1); // ====================== // Modify Properties diff --git a/Modules/Loadable/Annotations/Testing/Cxx/vtkMRMLAnnotationRulerNodeTest1.cxx b/Modules/Loadable/Annotations/Testing/Cxx/vtkMRMLAnnotationRulerNodeTest1.cxx index 1529d7032..c8f41da9e 100644 --- a/Modules/Loadable/Annotations/Testing/Cxx/vtkMRMLAnnotationRulerNodeTest1.cxx +++ b/Modules/Loadable/Annotations/Testing/Cxx/vtkMRMLAnnotationRulerNodeTest1.cxx @@ -12,15 +12,17 @@ int vtkMRMLAnnotationRulerNodeTest1(int , char * [] ) { vtkNew node1; + vtkNew mrmlScene; + mrmlScene->AddNode(node1); TESTING_OUTPUT_ASSERT_ERRORS_BEGIN(); EXERCISE_ALL_BASIC_MRML_METHODS(node1.GetPointer()); TESTING_OUTPUT_ASSERT_ERRORS(4); // write XML fails for a ruler without points defined TESTING_OUTPUT_ASSERT_ERRORS_END(); + mrmlScene->RemoveNode(node1); // ====================== // Basic Setup // ====================== - vtkNew mrmlScene; mrmlScene->RegisterNodeClass(vtkSmartPointer::New()); mrmlScene->RegisterNodeClass(vtkSmartPointer::New()); @@ -114,5 +116,3 @@ int vtkMRMLAnnotationRulerNodeTest1(int , char * [] ) return EXIT_SUCCESS; } - - diff --git a/Modules/Loadable/Markups/MRML/vtkMRMLMarkupsFiducialNode.cxx b/Modules/Loadable/Markups/MRML/vtkMRMLMarkupsFiducialNode.cxx index c27ab0243..b727ee36e 100644 --- a/Modules/Loadable/Markups/MRML/vtkMRMLMarkupsFiducialNode.cxx +++ b/Modules/Loadable/Markups/MRML/vtkMRMLMarkupsFiducialNode.cxx @@ -134,7 +134,14 @@ void vtkMRMLMarkupsFiducialNode::PrintSelf(ostream& os, vtkIndent indent) //------------------------------------------------------------------------- vtkMRMLStorageNode* vtkMRMLMarkupsFiducialNode::CreateDefaultStorageNode() { - return vtkMRMLStorageNode::SafeDownCast(vtkMRMLMarkupsFiducialStorageNode::New()); + vtkMRMLScene* scene = this->GetScene(); + if (scene == NULL) + { + vtkErrorMacro("CreateDefaultStorageNode failed: scene is invalid"); + return NULL; + } + return vtkMRMLStorageNode::SafeDownCast( + scene->CreateNodeByClass("vtkMRMLMarkupsFiducialStorageNode")); } //------------------------------------------------------------------------- @@ -151,8 +158,8 @@ void vtkMRMLMarkupsFiducialNode::CreateDefaultDisplayNodes() vtkErrorMacro("vtkMRMLMarkupsFiducialNode::CreateDefaultDisplayNodes failed: scene is invalid"); return; } - vtkNew dispNode; - this->GetScene()->AddNode(dispNode.GetPointer()); + vtkMRMLMarkupsDisplayNode* dispNode = vtkMRMLMarkupsDisplayNode::SafeDownCast( + this->GetScene()->AddNewNodeByClass("vtkMRMLMarkupsDisplayNode") ); this->SetAndObserveDisplayNodeID(dispNode->GetID()); } diff --git a/Modules/Loadable/Markups/MRML/vtkMRMLMarkupsNode.cxx b/Modules/Loadable/Markups/MRML/vtkMRMLMarkupsNode.cxx index 7bbf88afc..39b8a1d9b 100644 --- a/Modules/Loadable/Markups/MRML/vtkMRMLMarkupsNode.cxx +++ b/Modules/Loadable/Markups/MRML/vtkMRMLMarkupsNode.cxx @@ -345,7 +345,14 @@ void vtkMRMLMarkupsNode::RemoveAllTexts() //------------------------------------------------------------------------- vtkMRMLStorageNode* vtkMRMLMarkupsNode::CreateDefaultStorageNode() { - return vtkMRMLStorageNode::SafeDownCast(vtkMRMLMarkupsStorageNode::New()); + vtkMRMLScene* scene = this->GetScene(); + if (scene == NULL) + { + vtkErrorMacro("CreateDefaultStorageNode failed: scene is invalid"); + return NULL; + } + return vtkMRMLStorageNode::SafeDownCast( + scene->CreateNodeByClass("vtkMRMLMarkupsStorageNode")); } //--------------------------------------------------------------------------- diff --git a/Modules/Loadable/Markups/Testing/Cxx/vtkMRMLMarkupsFiducialNodeTest1.cxx b/Modules/Loadable/Markups/Testing/Cxx/vtkMRMLMarkupsFiducialNodeTest1.cxx index 36ee292a4..7c9c4da02 100644 --- a/Modules/Loadable/Markups/Testing/Cxx/vtkMRMLMarkupsFiducialNodeTest1.cxx +++ b/Modules/Loadable/Markups/Testing/Cxx/vtkMRMLMarkupsFiducialNodeTest1.cxx @@ -19,6 +19,7 @@ #include "vtkMRMLCoreTestingMacros.h" #include "vtkMRMLMarkupsDisplayNode.h" #include "vtkMRMLMarkupsFiducialNode.h" +#include "vtkMRMLScene.h" #include "vtkURIHandler.h" // VTK includes @@ -28,7 +29,9 @@ int vtkMRMLMarkupsFiducialNodeTest1(int , char * [] ) { vtkNew node1; - EXERCISE_ALL_BASIC_MRML_METHODS(node1.GetPointer()); + vtkNew scene; + scene->AddNode(node1); + EXERCISE_ALL_BASIC_MRML_METHODS(node1); vtkMRMLMarkupsDisplayNode *dispNode = node1->GetMarkupsDisplayNode(); std::cout << "Get MarkupsDisplayNode returned " << (dispNode ? "valid" : "null") << " pointer" << std::endl; diff --git a/Modules/Loadable/Markups/Testing/Cxx/vtkMRMLMarkupsNodeTest1.cxx b/Modules/Loadable/Markups/Testing/Cxx/vtkMRMLMarkupsNodeTest1.cxx index c4631b599..537ac2b98 100644 --- a/Modules/Loadable/Markups/Testing/Cxx/vtkMRMLMarkupsNodeTest1.cxx +++ b/Modules/Loadable/Markups/Testing/Cxx/vtkMRMLMarkupsNodeTest1.cxx @@ -18,6 +18,7 @@ // MRML includes #include "vtkMRMLCoreTestingMacros.h" #include "vtkMRMLMarkupsNode.h" +#include "vtkMRMLScene.h" // VTK includes #include @@ -32,6 +33,8 @@ int vtkMRMLMarkupsNodeTest1(int , char * [] ) { vtkNew node1; + vtkNew scene; + scene->AddNode(node1); EXERCISE_ALL_BASIC_MRML_METHODS(node1.GetPointer()); TEST_SET_GET_BOOLEAN(node1, Locked); diff --git a/Modules/Loadable/VolumeRendering/MRML/vtkMRMLVolumePropertyNode.cxx b/Modules/Loadable/VolumeRendering/MRML/vtkMRMLVolumePropertyNode.cxx index 93603a5f8..5bd5dae89 100644 --- a/Modules/Loadable/VolumeRendering/MRML/vtkMRMLVolumePropertyNode.cxx +++ b/Modules/Loadable/VolumeRendering/MRML/vtkMRMLVolumePropertyNode.cxx @@ -1,5 +1,5 @@ - // MRML includes +#include "vtkMRMLScene.h" #include "vtkMRMLVolumePropertyNode.h" #include "vtkMRMLVolumePropertyStorageNode.h" @@ -364,7 +364,14 @@ double vtkMRMLVolumePropertyNode::HigherAndUnique(double value, double &previous //--------------------------------------------------------------------------- vtkMRMLStorageNode* vtkMRMLVolumePropertyNode::CreateDefaultStorageNode() { - return vtkMRMLVolumePropertyStorageNode::New(); + vtkMRMLScene* scene = this->GetScene(); + if (scene == NULL) + { + vtkErrorMacro("CreateDefaultStorageNode failed: scene is invalid"); + return NULL; + } + return vtkMRMLStorageNode::SafeDownCast( + scene->CreateNodeByClass("vtkMRMLVolumePropertyStorageNode")); } //--------------------------------------------------------------------------- diff --git a/Modules/Loadable/VolumeRendering/Testing/Cxx/vtkMRMLVolumePropertyNodeTest1.cxx b/Modules/Loadable/VolumeRendering/Testing/Cxx/vtkMRMLVolumePropertyNodeTest1.cxx index 25403f120..9dab98b51 100644 --- a/Modules/Loadable/VolumeRendering/Testing/Cxx/vtkMRMLVolumePropertyNodeTest1.cxx +++ b/Modules/Loadable/VolumeRendering/Testing/Cxx/vtkMRMLVolumePropertyNodeTest1.cxx @@ -46,12 +46,13 @@ int vtkMRMLVolumePropertyNodeTest1(int argc, char *[] ) } vtkNew node1; + vtkNew scene; + scene->AddNode(node1); EXERCISE_ALL_BASIC_MRML_METHODS(node1.GetPointer()); CHECK_EXIT_SUCCESS(readWrite()); CHECK_EXIT_SUCCESS(piecewiseFunctionFromString()); - vtkNew scene; vtkNew applicationLogic; applicationLogic->SetMRMLScene(scene.GetPointer()); // register custom nodes vtkNew vrLogic; -- GitLab