diff --git a/Libs/MRML/Core/Testing/vtkMRMLBSplineTransformNodeTest1.cxx b/Libs/MRML/Core/Testing/vtkMRMLBSplineTransformNodeTest1.cxx index b69a6996b559cc76542a962f42178b55740aa01d..11da053bf72caabf67cc0a6951aaf71dc28eba22 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 d08221b73b7cd5692057b4e075b1ab97e722c960..08ca4b233407eb4ba24305fec05ca924f8979415 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 3a7b8284a052ee540000e57ccb1c7c9b136025c5..753970e17b4126bdcd95d6d5fc784fec995bba1e 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 71e217aa3f1a2727a7ba0de88181ba893c91f213..1f36778d28b1eae12027c651fda589a590755917 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 5405552b0885e23232682f2195bd87c9b0aaca3d..c6dfb2c8135b7b02fbbdda82356bc3dee3495f38 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 ca71b57a3dcc5c8bb271add2dfa29594d4b49279..db65a1d6a43c57e298e450477267ccc0477a2dcd 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 b886c560fbc71f5aa1bfa776fd17a4b8deccbdeb..917c5a88a354f657f5744da0a21d8d591ca33355 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 66536d0d36a9f5a44da1f8860c5b9374ede48d17..289b1f5415a5e40904753bc5496e1b8f2470e81d 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 31fed68b031d58b75d08cbafba010c7dc62d780d..9d8194e6b523461d3dca65502e12f43dcded2899 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 95fba11310ad1b71fe76164c3af6aa4d20d3f98a..cd4d1efee0b610e52abfd8682b28d049121b5d83 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 2d51cffde40174fe317ff74779b87cc7bfccac80..8eefe9c6c1eaa920073997f0e3b35c88d92c42f8 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 2ce0c722b997eaa00e930b8d4643386778dd583d..faf6201c889e6f2b8c97b8d9fafada126aba9287 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 aeeed2fed4e27e42ae4648a884932ff7b9d37db9..b2d38c31233596d7a9339fa2eff980bd22276d36 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 9f35ceb9924f1f389dd37463ddd2f977f57e7f78..ccb1e53d8a5aaf17c0b921cb8b988e5e38afc286 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 dd93e15b458349ed8069b7d0862e0978de32e4e3..afd0a3d62d56e5e29346e0df8f1fdc4eca59139d 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 6e4cb6b353d58195e776d9313411ea66dc5e8510..d720882a644c2434e4631cec661b7c7ff1753f1d 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 93ff4267e4bc9a0ce10b3927f676fa3d3270f476..c982eca8cdc561985df2d5525c4353ba12bea7e8 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 5ce0ce88fa46a60b8a1c8a7dd433b3baaa204587..90b3e7465878a4698f8bacb27a717b2fa4af2f9e 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 672452db3e42e7d83efa5371aa7ae767393010c6..4c218197d9360c6dff4e89e84d2c2954322a96c2 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 9cc2d2a39a748ecd0163fb0d94d2bad48758b2af..2c5a7697fae44c220e5754077241709262d0805c 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 84153331fac8ad43d28a17ddcb1447607df9097e..831067fb5bbbb466be23361cb3998a09e1b9e2ef 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 8def30f2307526a4577a1bed506dcfc12b6635e3..f48fd886f91ea96f47c3a5d08d62eca352aa764c 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 bbae8d730199128c0fc8e023fccc2b012b6a4890..6d70abef1161abb128150218956c9bb823f6496e 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 196b38e128fe454d1fae4110c80eb485c66b41c2..83b29171a07b06544434b6f21e66d9bba9dcbdcf 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 7730af61fea47dc67ea367ba97bfcaf458650715..09d2b8ce0b72786eff6303e97e8b05bea508b778 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 1820c17e5e5531de00f432681c12bef702cf194c..0e8fa7dcb7819fa9f67fd921de10ca10f43b5a72 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 303eae92ecb6cc3e4bd21c6ac2eb8e6710043a5b..3608df85e819a548b04accb6cec8e162687c6e4f 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 7cdc392655448f396219c993d99924e570655986..5778dc4e95c0ef3379d33a635ee577c054b05111 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 91cc20ea3469dfbd84bc9741b45691a051802b68..c1695733fd00491b936d403ec54e92f31ffdcf15 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 58db1e2a8c44c3ccd132d033a78f141df71c7906..2ea1e6db1df9bfbcf4337a9f08998f40657d8bcd 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 66fb5661f251340431cf519f4a512ca1e40be546..3eacd0c469eba2542f8a3f1772896f7ea85b5562 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 99609c87761637a6fa17fe102410c9bcd2c1a912..950e4253e7c0f1377d9cb5ecdb83031cab9a59ad 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 7c5ab6607fedf76334cf3f0e303044437e88f502..30aaa15dbb668ac267f2ab0ec965a4e374d34d08 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 97ea0579a8d55baec14af9c5ce5f450c442ff4d8..3e319b254a26eda6d54f6c67f94109f80131204e 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 a2fb67cc0d3cb82c4d85dd72144f3fcadbcba51a..044ee23011ce25272c2fc83bda0b9e82906d90f2 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 84b2eea354d3f6cdfd187fc414928acbd1cef2e9..0bf8341c6b32d992cb742d73f7cfc5aa76f582c9 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 2f87a021b34c52a41feb3c7c660ce56a1afaa742..7e584250863069f8c294a663e3b9ae167ec82691 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 c4a9af4e633c1cc5cb5719f38108bb03a6e385e2..83660c539755176c54c136030476ba0dc0de1273 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 97ec9a84e08945ee990b7e6fdd5d0b76c0fa254b..d49164d68f7fc6f8c7728add826e2eabbc071931 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 4e9236cb95e04479c099cfefc0604722a7897375..ba6ec9a41eb754c9cd91b06720292b998fca7995 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 5699959c69984270141591be06c290772fee8ccf..092576b320318a9398b6f32d1a9495b87502427a 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 ddaed95f6692d711f61884eefa8150bab1890fad..220aea5d67f6b3fcc291ff23d8757f4c841e1885 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 7f8d55fbbaf56d8e92268a230c8a28dd6305e9f7..1108ac991ecedb6c1d56c0d2d4b373751d73945f 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 79590a663d647ab5f488ede8f4521fc7be0686c8..8220fb28b19cf9a2a241d88523d6ed9ea3a28748 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 1cb2b8417eedb367309380b847238f38a2d86314..2763c9151f88d3a6d6698c7ba83a1f9890791772 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 50e50bdbade98bb431140c5126defb5fccd03bcc..81f14efb474b5ab99f8479b932c63b3746ccef74 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 086bcb5ab649e8d5a6197199c0d292bf4e7636e7..9524c65742b4687d02b9dba0427b95eff4f9d4e0 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 3bf1eb69e4b20556edfaa70becdb546963c041d8..fba3c3991f8d678ac5c44694826aaa16c2160391 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 1529d70324afd3afe45974f26f73587d20e68cea..c8f41da9e4f3fbeb09c3d5da351d077371113236 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 c27ab0243f1d6cb3e883812bb95fa686b60be37b..b727ee36e4bfc102a0282332c0035de19c68c017 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 7bbf88afc6f63f4aca266cae78ed134643925be7..39b8a1d9bbcadab32e90edf5a15e35957c880a2b 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 36ee292a4a1e56d010babaa7e625146f0ea9b342..7c9c4da02c30ab62455faccca8c515c4cf22e722 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 c4631b5998919edc4344f2a22f8a34f641e01658..537ac2b98e20607946c2135cfafc816dddac9548 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 93603a5f853c76283cb4b55744393f3362024621..5bd5dae893cede7392cacd5273ec6e564821c1aa 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 25403f1206a9e102c26b0498ffa21b302c9d64f1..9dab98b511166a149e2de9f8f3516e80e981e920 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;