Index: mbi-sb/Testing/mitkVtkPropRendererTest_sb.cpp =================================================================== --- mbi-sb/Testing/mitkVtkPropRendererTest_sb.cpp (revision 14801) +++ mbi-sb/Testing/mitkVtkPropRendererTest_sb.cpp (working copy) @@ -64,41 +64,41 @@ ipPicGetTags(argv[1], picheader); //Read pic-Image from file -// std::cout << "Reading image: "; + std::cout << "Reading image: "; mitk::PicFileReader::Pointer reader = mitk::PicFileReader::New(); reader->SetFileName(argv[1]); reader->Update(); -// std::cout<<"[PASSED]"<GetOutput(); -// std::cout << "Creating node: "; + std::cout << "Creating node: "; mitk::DataTreeNode::Pointer node = mitk::DataTreeNode::New(); node->SetData(image); -// std::cout<<"[PASSED]"<Register(); //@FIXME: da DataTreeIteratorClone keinen Smartpointer auf DataTree h�lt, wird tree sonst gel�scht. -// std::cout<<"[PASSED]"<SetLevelWindow( levelwindow ); node->GetPropertyList()->SetProperty( "levelwindow", levWinProp ); -// std::cout<<"[PASSED]"<SetRadius(1.0); sphere->SetThetaResolution(18); @@ -106,53 +106,56 @@ vtkPolyDataMapper *map = vtkPolyDataMapper::New(); map->SetInput(sphere->GetOutput()); + sphere->Delete(); vtkActor *aSphere = vtkActor::New(); aSphere->SetMapper(map); + map->Delete(); aSphere->GetProperty()->SetColor(0,0,1); // sphere color blue -// std::cout<<"[PASSED]"<AddActor(aSphere); + aSphere->Delete(); //sphereRenderer->SetBackground(1,1,1); // Background color white -// std::cout<<"[PASSED]"<SetMapperID(2); -// std::cout<<"[PASSED]"<AddRenderer(sphereRenderer); //renderWindow->SetErase(0); -// std::cout << "BaseRenderer::SetData(iterator): "; + std::cout << "BaseRenderer::SetData(iterator): "; propRenderer->SetData(&it); -// std::cout<<"[PASSED]"<SetPropRenderer(propRenderer); propRenderer->GetVtkRenderer()->AddViewProp(renderProp); -// std::cout<<"[PASSED]"<InsertForegroundRenderer(sphereRenderer,true); -// std::cout<<"[PASSED]"<SetRenderWindow(renderWindow); -// std::cout << "Setting and getting size of renderWindow: "; + std::cout << "Setting and getting size of renderWindow: "; renderWindow->SetSize(400, 400); int *size = renderWindow->GetSize(); -// std::cout<<"[PASSED]"<Render(); -// std::cout<<"[PASSED]"<Start(); @@ -164,20 +167,20 @@ propRenderer->PickWorldPoint(p, p_mm); std::cout << "returned world position: " << p_mm << "\n"; -// std::cout << "Creating vtkUnsignedCharArray: "; + std::cout << "Creating vtkUnsignedCharArray: "; vtkUnsignedCharArray *vtkImage = vtkUnsignedCharArray::New(); -// std::cout<<"[PASSED]"<GetRGBACharPixelData(0, 0, size[0]-1, size[1]-1, 0, vtkImage); -// cout << "Read " << size[0]*size[1] << " data points\n"; + cout << "Read " << size[0]*size[1] << " data points\n"; cout << "Computing sum of all RGBA values..\n"; long int sum_now = 0; for(int i=0;iGetValue(i); std::cout << "Sum of all RGBA values: " << sum_now << "\n"; -// std::cout << "Sum should be: " << sum_orig_Pic3D_pic_gz << "\n"; + std::cout << "Sum should be: " << sum_orig_Pic3D_pic_gz << "\n"; //std::string Pic3d_pic_gz_str("Pic3D.pic.gz"); //std::cout << "pic3d " << Pic3d_pic_gz_str << "\n"; @@ -195,6 +198,11 @@ // return EXIT_FAILURE; // } // std::cout<<"[PASSED]"<" << std::endl; + propRenderer->GetVtkRenderer()->RemoveViewProp(renderProp); + renderProp->Delete(); + propRenderer = NULL; + sphereRenderer->Delete(); renderWindow->Delete(); + + vtkImage->Delete(); tree = NULL; // As the tree has been registered explicitely, destroy it again. std::cout<<"[TEST DONE]"< +#include mitk::ManualSegmentationToSurfaceFilter::ManualSegmentationToSurfaceFilter() { @@ -49,11 +50,8 @@ for( int t=tstart; tGetVtkImageData(t); + vtkSmartPointer vtkimage = image->GetVtkImageData(t); - //Inkrement Referenzcounter Counter (hier: RC) - vtkimage->Register(NULL); - // Median -->smooth 3D if(m_MedianFilter3D) { @@ -63,9 +61,7 @@ median->ReleaseDataFlagOn(); median->UpdateInformation(); median->Update(); - vtkimage->Delete(); //->Input vtkimage = median->GetOutput(); //->Out - vtkimage->Register(NULL); median->Delete(); } @@ -81,9 +77,7 @@ imageresample->SetAxisOutputSpacing(2, m_MedianKernelSizeZ); imageresample->UpdateInformation(); imageresample->Update(); - vtkimage->Delete(); //->Input vtkimage=imageresample->GetOutput();//->Output - vtkimage->Register(NULL); imageresample->Delete(); } @@ -101,15 +95,14 @@ vtkImageGaussianSmooth *gaussian = vtkImageGaussianSmooth::New(); gaussian->SetInput(vtkimagethreshold->GetOutput()); + vtkimagethreshold->Delete(); gaussian->SetDimensionality(3); gaussian->SetRadiusFactor(0.49); gaussian->SetStandardDeviation( m_GaussianStandardDeviation ); gaussian->ReleaseDataFlagOn(); gaussian->UpdateInformation(); gaussian->Update(); - vtkimage->Delete();//->Input vtkimage = gaussian->GetOutput(); //->Out - gaussian->Register(NULL); gaussian->Delete(); } Index: mitk/Core/Controllers/mitkSlicesRotator.cpp =================================================================== --- mitk/Core/Controllers/mitkSlicesRotator.cpp (revision 14801) +++ mitk/Core/Controllers/mitkSlicesRotator.cpp (working copy) @@ -48,12 +48,7 @@ SlicesRotator::Pointer SlicesRotator::New() { - // from itkNewMacro() - Pointer smartPtr; - SlicesRotator* rawPtr = new SlicesRotator("slices-rotator"); - smartPtr = rawPtr; - rawPtr->UnRegister(); - return smartPtr; + return SlicesRotator::New("slices-rotator"); } SlicesRotator::SlicesRotator(const char* machine) Index: mitk/Core/Controllers/mitkSlicesRotator.h =================================================================== --- mitk/Core/Controllers/mitkSlicesRotator.h (revision 14801) +++ mitk/Core/Controllers/mitkSlicesRotator.h (working copy) @@ -66,11 +66,13 @@ mitkClassMacro(SlicesRotator, SlicesCoordinator); - /// @TODO FIX StateMachine smart pointer handling (or learn about the reason) static Pointer New(); - /// @TODO public ONLY because of StateMachine's meddling with m_ReferenceCount - SlicesRotator(const char* machine); + /** + * @brief New Macro with one parameter for creating this object with static New(..) method + **/ + mitkNewMacro1Param(Self, const char*); + virtual void SetGeometry(const itk::EventObject& EventObject); virtual void RotateToPoint( SliceNavigationController *rotationPlaneSNC, @@ -79,6 +81,7 @@ protected: + SlicesRotator(const char* machine); // clear list of controllers virtual ~SlicesRotator(); Index: mitk/Core/Controllers/mitkSlicesSwiveller.cpp =================================================================== --- mitk/Core/Controllers/mitkSlicesSwiveller.cpp (revision 14801) +++ mitk/Core/Controllers/mitkSlicesSwiveller.cpp (working copy) @@ -47,12 +47,7 @@ SlicesSwiveller::Pointer SlicesSwiveller::New() { - // from itkNewMacro() - Pointer smartPtr; - SlicesSwiveller* rawPtr = new SlicesSwiveller("slices-rotator"); - smartPtr = rawPtr; - rawPtr->UnRegister(); - return smartPtr; + return SlicesSwiveller::New("slices-rotator"); } SlicesSwiveller::SlicesSwiveller(const char* machine) Index: mitk/Core/Controllers/mitkSlicesSwiveller.h =================================================================== --- mitk/Core/Controllers/mitkSlicesSwiveller.h (revision 14801) +++ mitk/Core/Controllers/mitkSlicesSwiveller.h (working copy) @@ -67,14 +67,16 @@ mitkClassMacro(SlicesSwiveller, SlicesCoordinator); - /// @TODO FIX StateMachine smart pointer handling (or learn about the reason) static Pointer New(); - /// @TODO public ONLY because of StateMachine's meddling with m_ReferenceCount - SlicesSwiveller(const char* machine); + /** + * @brief New Macro with one parameter for creating this object with static New(..) method + **/ + mitkNewMacro1Param(Self, const char*); virtual void SetGeometry(const itk::EventObject& EventObject); protected: + SlicesSwiveller(const char* machine); // clear list of controllers virtual ~SlicesSwiveller(); Index: mitk/Core/Controllers/mitkUndoController.cpp =================================================================== --- mitk/Core/Controllers/mitkUndoController.cpp (revision 14801) +++ mitk/Core/Controllers/mitkUndoController.cpp (working copy) @@ -62,6 +62,18 @@ } } +mitk::UndoController::~UndoController() +{ + // sth like the following has to be done here + //UndoModelMapIter undoModelIter = m_UndoModelList.begin(); + //while(undoModelIter != m_UndoModelList.end()) + //{ + // delete (*undoModelIter).second; + // ++undoModelIter; + //} + //m_UndoModelList.clear(); +} + //##ModelId=3E5F543402C5 bool mitk::UndoController::SetOperationEvent(UndoStackItem* operationEvent) { Index: mitk/Core/Controllers/mitkUndoController.h =================================================================== --- mitk/Core/Controllers/mitkUndoController.h (revision 14801) +++ mitk/Core/Controllers/mitkUndoController.h (working copy) @@ -48,6 +48,7 @@ //## Constructor; Adds the new UndoType or if undoType exists , //## switches it to undoType; for UndoTypes see definitionmitkInteractionConst.h UndoController(UndoType undoType = DEFAULTUNDOMODEL); + virtual ~UndoController(); //##ModelId=3E5F543402C5 bool SetOperationEvent(UndoStackItem* operationEvent); Index: mitk/Core/DataStructures/itkVtkAbstractTransform.txx =================================================================== --- mitk/Core/DataStructures/itkVtkAbstractTransform.txx (revision 14801) +++ mitk/Core/DataStructures/itkVtkAbstractTransform.txx (working copy) @@ -16,6 +16,8 @@ template itk::VtkAbstractTransform::~VtkAbstractTransform() { + if(m_VtkAbstractTransform!=NULL) + m_VtkAbstractTransform->UnRegister(NULL); } template @@ -39,15 +41,11 @@ if(m_VtkAbstractTransform!=NULL) m_VtkAbstractTransform->UnRegister(NULL); - if(m_InverseVtkAbstractTransform!=NULL) - m_InverseVtkAbstractTransform->UnRegister(NULL); - m_VtkAbstractTransform=aVtkAbstractTransform; if(m_VtkAbstractTransform!=NULL) { m_VtkAbstractTransform->Register(NULL); - m_InverseVtkAbstractTransform=m_VtkAbstractTransform->GetInverse(); - m_InverseVtkAbstractTransform->Register(NULL); + m_InverseVtkAbstractTransform=m_VtkAbstractTransform->GetInverse(); // memory managed by m_VtkAbstractTransform } m_LastVtkAbstractTransformTimeStamp = m_VtkAbstractTransform->GetMTime(); Index: mitk/Core/DataStructures/mitkDataStorage/mitkDataStorage.cpp =================================================================== --- mitk/Core/DataStructures/mitkDataStorage/mitkDataStorage.cpp (revision 14801) +++ mitk/Core/DataStructures/mitkDataStorage/mitkDataStorage.cpp (working copy) @@ -37,6 +37,18 @@ mitk::DataStorage::~DataStorage() { + if(m_DataTree.IsNotNull()) + { + m_DataTree->RemoveObserver(m_DeleteInTreeObserverTag); + } + + // workaround for bug #343: do another UnRegister in case we re-create a DataStorage + // which happens when a PlugIn is re-initialized within Chili + if(s_Instance.IsNotNull()) + { + s_Instance->m_DataTree->UnRegister(); + } + m_DataTree = NULL; } @@ -444,3 +456,12 @@ return result; } + +void mitk::DataStorage::ShutdownSingleton() +{ + if(s_Instance.IsNotNull()) + { + s_Instance->m_DataTree->UnRegister(); + } + s_Instance = NULL; +} \ No newline at end of file Index: mitk/Core/DataStructures/mitkDataStorage/mitkDataStorage.h =================================================================== --- mitk/Core/DataStructures/mitkDataStorage/mitkDataStorage.h (revision 14801) +++ mitk/Core/DataStructures/mitkDataStorage/mitkDataStorage.h (working copy) @@ -61,8 +61,12 @@ static DataStorage* CreateInstance(mitk::DataTree* tree); // create method that initializes singleton object static DataStorage* GetInstance(); // Singleton pattern like access method - + //##Documentation + //## @brief Shutdown the singleton. Workaround for bug #1446 + static void ShutdownSingleton(); + + //##Documentation //## @brief A Container of objects that is used as a resultset of GetSubset() query operations (Set of SmartPointers to DataTreeNodes). typedef itk::VectorContainer SetOfObjects; Index: mitk/Core/DataStructures/mitkDataTreeNode.cpp =================================================================== --- mitk/Core/DataStructures/mitkDataTreeNode.cpp (revision 14801) +++ mitk/Core/DataStructures/mitkDataTreeNode.cpp (working copy) @@ -104,10 +104,12 @@ { Interactor* interactor = this->GetInteractor(); - if ( interactor ) + if ( ( interactor ) && ( mitk::GlobalInteraction::HasInstance() ) ) { mitk::GlobalInteraction::GetInstance()->RemoveInteractor( interactor ); } + m_Mappers.clear(); + m_Data = NULL; } //##ModelId=3E33F5D7032D Index: mitk/Core/DataStructures/mitkLevelWindowPreset.cpp =================================================================== --- mitk/Core/DataStructures/mitkLevelWindowPreset.cpp (revision 14801) +++ mitk/Core/DataStructures/mitkLevelWindowPreset.cpp (working copy) @@ -17,11 +17,14 @@ #include "mitkLevelWindowPreset.h" #include "mitkStandardFileLocations.h" +#include namespace mitk { - const std::string LevelWindowPreset::PRESET = "preset"; +const std::string LevelWindowPreset::PRESET = "preset"; +vtkStandardNewMacro(LevelWindowPreset); + LevelWindowPreset::LevelWindowPreset() { } @@ -142,4 +145,5 @@ m_Window = newWindow; save(); } + } Index: mitk/Core/DataStructures/mitkLevelWindowPreset.h =================================================================== --- mitk/Core/DataStructures/mitkLevelWindowPreset.h (revision 14801) +++ mitk/Core/DataStructures/mitkLevelWindowPreset.h (working copy) @@ -25,38 +25,39 @@ namespace mitk { - class MITK_CORE_EXPORT LevelWindowPreset : public vtkXMLParser - { - public: - LevelWindowPreset(); - ~LevelWindowPreset(); +class MITK_CORE_EXPORT LevelWindowPreset : public vtkXMLParser +{ +public: + static LevelWindowPreset *New(); + vtkTypeMacro(LevelWindowPreset,vtkXMLParser); - bool LoadPreset(); - bool LoadPreset(std::string fileName); - double getLevel(std::string name); - double getWindow(std::string window); - std::map& getLevelPresets(); - std::map& getWindowPresets(); - void newPresets(std::map newLevel, std::map newWindow); - + bool LoadPreset(); + bool LoadPreset(std::string fileName); + double getLevel(std::string name); + double getWindow(std::string window); + std::map& getLevelPresets(); + std::map& getWindowPresets(); + void newPresets(std::map newLevel, std::map newWindow); +protected: + LevelWindowPreset(); + ~LevelWindowPreset(); - private: +private: + //##Documentation + //## @brief method used in XLM-Reading; gets called when a start-tag is read + void StartElement (const char *elementName, const char **atts); - //##Documentation - //## @brief method used in XLM-Reading; gets called when a start-tag is read - void StartElement (const char *elementName, const char **atts); - - void saveXML(mitk::XMLWriter& xmlWriter); - void save(); + void saveXML(mitk::XMLWriter& xmlWriter); + void save(); - //##Documentation - //## @brief reads an XML-String-Attribute - std::string ReadXMLStringAttribut( std::string name, const char** atts); + //##Documentation + //## @brief reads an XML-String-Attribute + std::string ReadXMLStringAttribut( std::string name, const char** atts); - static const std::string PRESET; - std::map m_Level; - std::map m_Window; - std::string m_XmlFileName; - }; + static const std::string PRESET; + std::map m_Level; + std::map m_Window; + std::string m_XmlFileName; +}; } #endif Index: mitk/Core/DataStructures/mitkThinPlateSplineCurvedGeometry.cpp =================================================================== --- mitk/Core/DataStructures/mitkThinPlateSplineCurvedGeometry.cpp (revision 14801) +++ mitk/Core/DataStructures/mitkThinPlateSplineCurvedGeometry.cpp (working copy) @@ -31,6 +31,14 @@ mitk::ThinPlateSplineCurvedGeometry::~ThinPlateSplineCurvedGeometry() { + // don't need to delete m_ThinPlateSplineTransform, because it is + // the same as m_InterpolatingAbstractTransform, which will be deleted + // by the superclass. + + if(m_VtkTargetLandmarks!=NULL) + m_VtkTargetLandmarks->Delete(); + if(m_VtkProjectedLandmarks!=NULL) + m_VtkProjectedLandmarks->Delete(); } bool mitk::ThinPlateSplineCurvedGeometry::IsValid() const Index: mitk/Core/DataStructures/mitkTransferFunctionProperty.h =================================================================== --- mitk/Core/DataStructures/mitkTransferFunctionProperty.h (revision 14801) +++ mitk/Core/DataStructures/mitkTransferFunctionProperty.h (working copy) @@ -83,6 +83,10 @@ : BaseProperty() {}; + virtual ~TransferFunctionProperty() + { + }; + TransferFunctionProperty( mitk::TransferFunction::Pointer value ) : BaseProperty(), m_Value( value ) {}; Index: mitk/Core/Interactions/mitkCoordinateSupplier.cpp =================================================================== --- mitk/Core/Interactions/mitkCoordinateSupplier.cpp (revision 14801) +++ mitk/Core/Interactions/mitkCoordinateSupplier.cpp (working copy) @@ -31,14 +31,17 @@ #include "mitkAction.h" -//##ModelId=3F0189F0025B mitk::CoordinateSupplier::CoordinateSupplier(const char * type, mitk::OperationActor* operationActor) : mitk::StateMachine(type), m_Destination(operationActor) { m_CurrentPoint.Fill(0); } -//##ModelId=3F0189F00269 +mitk::CoordinateSupplier::~CoordinateSupplier() +{ + +} + bool mitk::CoordinateSupplier::ExecuteAction(Action* action, mitk::StateEvent const* stateEvent) { bool ok = false; Index: mitk/Core/Interactions/mitkCoordinateSupplier.h =================================================================== --- mitk/Core/Interactions/mitkCoordinateSupplier.h (revision 14801) +++ mitk/Core/Interactions/mitkCoordinateSupplier.h (working copy) @@ -49,6 +49,8 @@ //## @param operationActor: the Data, operations (+ points) are send to CoordinateSupplier(const char * type, OperationActor* operationActor); + ~CoordinateSupplier(); + //##Documentation //## @brief executes the actions that are sent to this statemachine //## derived from StateMachine Index: mitk/Core/Interactions/mitkEventMapper.cpp =================================================================== --- mitk/Core/Interactions/mitkEventMapper.cpp (revision 14801) +++ mitk/Core/Interactions/mitkEventMapper.cpp (working copy) @@ -44,6 +44,12 @@ #include #include "mitkCoreObjectFactory.h" +#include +namespace mitk +{ +vtkStandardNewMacro(EventMapper); +} + #ifdef MBI_INTERNAL_CONFERENCE #include #include @@ -554,7 +560,7 @@ if ( fileName.empty() ) return false; - mitk::EventMapper* eventMapper = new EventMapper(); + mitk::EventMapper* eventMapper = EventMapper::New(); eventMapper->SetFileName( fileName.c_str() ); if ( ! eventMapper->Parse() ) Index: mitk/Core/Interactions/mitkEventMapper.h =================================================================== --- mitk/Core/Interactions/mitkEventMapper.h (revision 14801) +++ mitk/Core/Interactions/mitkEventMapper.h (working copy) @@ -60,10 +60,8 @@ class MITK_CORE_EXPORT EventMapper : public vtkXMLParser { public: - //##ModelId=3F02F896006D - EventMapper(); - //##ModelId=3F02F896008C - ~EventMapper(); + static EventMapper *New(); + vtkTypeMacro(EventMapper,vtkXMLParser); //##ModelId=3F0177080269 typedef std::vector EventDescriptionVec; @@ -124,6 +122,9 @@ friend class mitk::GlobalInteraction; protected: + EventMapper(); + ~EventMapper(); + //##Documentation //##@brief method only for GlobalInteraction to change the Event (from DiplayPositionEvent to PositionEvent) static void SetStateEvent(Event* event); Index: mitk/Core/Interactions/mitkGlobalInteraction.cpp =================================================================== --- mitk/Core/Interactions/mitkGlobalInteraction.cpp (revision 14801) +++ mitk/Core/Interactions/mitkGlobalInteraction.cpp (working copy) @@ -349,6 +349,11 @@ return s_GlobalInteraction.GetPointer(); } +bool mitk::GlobalInteraction::HasInstance() +{ + return s_GlobalInteraction.IsNotNull(); +} + bool mitk::GlobalInteraction::AddToSelectedInteractors(mitk::Interactor* interactor) { InteractorListIter position = std::find(m_SelectedList.begin(), m_SelectedList.end(),interactor); Index: mitk/Core/Interactions/mitkGlobalInteraction.h =================================================================== --- mitk/Core/Interactions/mitkGlobalInteraction.h (revision 14801) +++ mitk/Core/Interactions/mitkGlobalInteraction.h (working copy) @@ -135,8 +135,15 @@ static bool StandardInteractionSetup(const char * XMLbehaviorFile = NULL, const char * globalInteractionName = NULL); + //##Documentation + //## @brief Returns the global (singleton) instance of + //## GlobalInteraction. Create it, if it does not exist. static GlobalInteraction* GetInstance(); + //##Documentation + //## @brief Returns whether an instance exists + static bool HasInstance(); + //so that the interactors can call AddToSelectedInteractors() and RemoveFromSelectedInteractors() friend class Interactor; Index: mitk/Core/Interactions/mitkStateMachineFactory.cpp =================================================================== --- mitk/Core/Interactions/mitkStateMachineFactory.cpp (revision 14801) +++ mitk/Core/Interactions/mitkStateMachineFactory.cpp (working copy) @@ -55,6 +55,12 @@ const std::string mitk::StateMachineFactory::STRING_PARAMETER = "stringParameter"; const std::string mitk::StateMachineFactory::VALUE = "VALUE"; +#include +namespace mitk +{ +vtkStandardNewMacro(StateMachineFactory); +} + mitk::StateMachineFactory::StateMachineFactory() : m_AktStateMachineName("") {} @@ -97,7 +103,7 @@ s_LastLoadedBehavior = fileName; //call a new instance of this class and let it build up static containers - mitk::StateMachineFactory* stateMachineFactory = new StateMachineFactory(); + mitk::StateMachineFactory* stateMachineFactory = StateMachineFactory::New(); stateMachineFactory->SetFileName( fileName.c_str() ); InteractionDebug::SetXMLFileName( "StateMachine.xml" ); Index: mitk/Core/Interactions/mitkStateMachineFactory.h =================================================================== --- mitk/Core/Interactions/mitkStateMachineFactory.h (revision 14801) +++ mitk/Core/Interactions/mitkStateMachineFactory.h (working copy) @@ -43,6 +43,9 @@ class MITK_CORE_EXPORT StateMachineFactory : public vtkXMLParser { public: + static StateMachineFactory *New(); + vtkTypeMacro(StateMachineFactory,vtkXMLParser); + /** * @brief Typedef for all states that are defined as start-states **/ @@ -66,16 +69,6 @@ typedef std::map AllStateMachineMapType; /** - * @brief Default Constructor - **/ - StateMachineFactory(); - - /** - * @brief Default Destructor - **/ - ~StateMachineFactory(); - - /** * @brief Returns the StartState of the StateMachine with the name type; * * Returns NULL if no entry with name type is found. @@ -119,6 +112,17 @@ **/ friend class StateMachine; + protected: + /** + * @brief Default Constructor + **/ + StateMachineFactory(); + + /** + * @brief Default Destructor + **/ + ~StateMachineFactory(); + private: /** * @brief Derived from XMLReader Index: mitk/Core/IO/mitkPointSetReader.cpp =================================================================== --- mitk/Core/IO/mitkPointSetReader.cpp (revision 14801) +++ mitk/Core/IO/mitkPointSetReader.cpp (working copy) @@ -53,7 +53,7 @@ } in.close(); - mitk::vtkPointSetXMLParser* parser = new mitk::vtkPointSetXMLParser(); + mitk::vtkPointSetXMLParser* parser = mitk::vtkPointSetXMLParser::New(); parser->SetFileName( m_FileName.c_str() ); if ( parser->Parse() == 0 ) //Parse returns zero as error indicator { Index: mitk/Core/IO/vtkPointSetXMLParser.cpp =================================================================== --- mitk/Core/IO/vtkPointSetXMLParser.cpp (revision 14801) +++ mitk/Core/IO/vtkPointSetXMLParser.cpp (working copy) @@ -1,12 +1,24 @@ #include "vtkPointSetXMLParser.h" +#include "vtkObjectFactory.h" #include "mitkPointSetWriter.h" #include "mitkOperation.h" #include "mitkInteractionConst.h" #include "mitkPointOperation.h" +namespace mitk +{ +vtkStandardNewMacro(vtkPointSetXMLParser); +} +mitk::vtkPointSetXMLParser::vtkPointSetXMLParser() +{ +} +mitk::vtkPointSetXMLParser::~vtkPointSetXMLParser() +{ +} + void mitk::vtkPointSetXMLParser::StartElement ( const char *name, const char ** /*atts */) { std::string currentElement = name; Index: mitk/Core/IO/vtkPointSetXMLParser.h =================================================================== --- mitk/Core/IO/vtkPointSetXMLParser.h (revision 14801) +++ mitk/Core/IO/vtkPointSetXMLParser.h (working copy) @@ -22,6 +22,10 @@ class MITK_CORE_EXPORT vtkPointSetXMLParser : public vtkXMLParser { public: + vtkTypeMacro(vtkPointSetXMLParser,vtkXMLParser); + + static vtkPointSetXMLParser* New(); + typedef mitk::PointSet PointSetType; typedef std::stack< std::string > ParseStack; @@ -69,6 +73,8 @@ virtual PointSetList GetParsedPointSets(); protected: + vtkPointSetXMLParser(); + virtual ~vtkPointSetXMLParser(); /** * A stack containing the parsed start-tags. Index: mitk/Core/Rendering/mitkBaseRenderer.cpp =================================================================== --- mitk/Core/Rendering/mitkBaseRenderer.cpp (revision 14801) +++ mitk/Core/Rendering/mitkBaseRenderer.cpp (working copy) @@ -180,14 +180,9 @@ m_CameraRotationController->AcquireCamera(); m_CameraController = VtkInteractorCameraController::New(); //B/ - - m_ReferenceCountLock.Lock(); - m_ReferenceCount = 0; - m_ReferenceCountLock.Unlock(); + m_VtkRenderer = vtkRenderer::New(); - m_VtkRenderer = vtkRenderer::New(); - if (mitk::VtkLayerController::GetInstance(m_RenderWindow) == NULL) { mitk::VtkLayerController::AddInstance(m_RenderWindow,m_VtkRenderer); @@ -201,6 +196,12 @@ //##ModelId=3E3D2F12008C mitk::BaseRenderer::~BaseRenderer() { + if(m_VtkRenderer!=NULL) + { + m_VtkRenderer->Delete(); + m_VtkRenderer = NULL; + } + if(m_CameraController.IsNotNull()) m_CameraController->SetRenderer(NULL); Index: mitk/Core/Rendering/mitkColoredRectangleRendering.cpp =================================================================== --- mitk/Core/Rendering/mitkColoredRectangleRendering.cpp (revision 14801) +++ mitk/Core/Rendering/mitkColoredRectangleRendering.cpp (working copy) @@ -92,7 +92,9 @@ rect->SetColor(col1, col2, col3); m_RectangleRenderer->AddViewProp(rect); - + + rect->Delete(); + if(!mitk::VtkLayerController::GetInstance(m_RenderWindow)->IsRendererInserted( m_RectangleRenderer )) { #if ( VTK_MAJOR_VERSION >= 5 ) Index: mitk/Core/Rendering/mitkGeometry2DDataVtkMapper3D.cpp =================================================================== --- mitk/Core/Rendering/mitkGeometry2DDataVtkMapper3D.cpp (revision 14801) +++ mitk/Core/Rendering/mitkGeometry2DDataVtkMapper3D.cpp (working copy) @@ -93,9 +93,12 @@ m_BackgroundActor->GetProperty()->SetColor( 0.0, 0.0, 0.0 ); m_BackgroundActor->GetProperty()->SetOpacity( 1.0 ); m_BackgroundActor->SetMapper( m_BackgroundMapper ); - m_BackgroundActor->SetBackfaceProperty( m_BackgroundActor->MakeProperty() ); - m_BackgroundActor->GetBackfaceProperty()->SetColor( 0.0, 0.0, 0.0 ); + vtkProperty * backfaceProperty = m_BackgroundActor->MakeProperty(); + backfaceProperty->SetColor( 0.0, 0.0, 0.0 ); + m_BackgroundActor->SetBackfaceProperty( backfaceProperty ); + backfaceProperty->Delete(); + m_FrontHedgeHog = vtkHedgeHog::New(); m_BackHedgeHog = vtkHedgeHog::New(); @@ -152,12 +155,12 @@ m_BackHedgeHog->Delete(); // Delete entries in m_ImageActors list one by one - ActorList::iterator it; - - for ( it = m_ImageActors.begin(); it != m_ImageActors.end(); ++it ) - { - it->second->Delete(); - } + m_ImageActors.clear(); + //ActorList::iterator it; + //for ( it = m_ImageActors.begin(); it != m_ImageActors.end(); ++it ) + //{ + // it->second->Delete(); + //} } @@ -286,7 +289,7 @@ { if ( m_ImageActors.count( imageMapper ) > 0) { - m_ImageActors[imageMapper]->Delete(); + m_ImageActors[imageMapper].m_Sender = NULL; // sender is already destroying itself m_ImageActors.erase( imageMapper ); } if ( m_LookupTableProperties.count( imageMapper ) > 0 ) @@ -548,19 +551,14 @@ texture->UnRegister( NULL ); // Store the actor so that it may be accessed in following - // passes. - m_ImageActors[imageMapper] = imageActor; - - // Get informed when ImageMapper object is deleted, so that - // the datastructures built here can be deleted as well - imageMapper->AddObserver( - itk::DeleteEvent(), m_ImageMapperDeletedCommand ); + // passes. + m_ImageActors[imageMapper].Initialize(imageActor, imageMapper, m_ImageMapperDeletedCommand); } else { // Else, retrieve the actor and associated objects from the // previous pass. - imageActor = m_ImageActors[imageMapper]; + imageActor = m_ImageActors[imageMapper].m_Actor; dataSetMapper = (vtkDataSetMapper *)imageActor->GetMapper(); texture = imageActor->GetTexture(); lookupTable = texture->GetLookupTable(); @@ -771,5 +769,31 @@ } +void +Geometry2DDataVtkMapper3D::ActorInfo::Initialize(vtkActor* actor, itk::Object* sender, itk::Command* command) +{ + m_Actor = actor; + m_Sender = sender; + // Get informed when ImageMapper object is deleted, so that + // the data structures built here can be deleted as well + m_ObserverID = sender->AddObserver( itk::DeleteEvent(), command ); +} + +Geometry2DDataVtkMapper3D::ActorInfo::ActorInfo() : m_Actor(NULL), m_Sender(NULL), m_ObserverID(0) +{ +} + +Geometry2DDataVtkMapper3D::ActorInfo::~ActorInfo() +{ + if(m_Sender != NULL) + { + m_Sender->RemoveObserver(m_ObserverID); + } + if(m_Actor != NULL) + { + m_Actor->Delete(); + } +} + } // namespace mitk Index: mitk/Core/Rendering/mitkGeometry2DDataVtkMapper3D.h =================================================================== --- mitk/Core/Rendering/mitkGeometry2DDataVtkMapper3D.h (revision 14801) +++ mitk/Core/Rendering/mitkGeometry2DDataVtkMapper3D.h (working copy) @@ -201,11 +201,26 @@ /** A default grayscale lookup-table, used for reference */ vtkLookupTable *m_DefaultLookupTable; + class MITK_CORE_EXPORT ActorInfo + { + public: + vtkActor * m_Actor; + // we do not need a smart-pointer, because we delete our + // connection, when the referenced mapper is destroyed + itk::Object* m_Sender; + unsigned long m_ObserverID; + void Initialize(vtkActor* actor, itk::Object* sender, itk::Command* command); + + ActorInfo(); + + ~ActorInfo(); + }; + /** \brief List holding the vtkActor to map the image into 3D for each * ImageMapper */ - typedef std::map< ImageMapper2D *, vtkActor * > ActorList; + typedef std::map< ImageMapper2D *, ActorInfo > ActorList; ActorList m_ImageActors; struct LookupTableProperties Index: mitk/Core/Rendering/mitkGradientBackground.cpp =================================================================== --- mitk/Core/Rendering/mitkGradientBackground.cpp (revision 14801) +++ mitk/Core/Rendering/mitkGradientBackground.cpp (working copy) @@ -68,6 +68,10 @@ m_Plane->SetPolys( cellArray ); m_Plane->GetPointData()->SetScalars( data ); + points->Delete(); + cellArray->Delete(); + data->Delete(); + m_Lut->SetNumberOfColors( 2 ); m_Lut->Build(); m_Lut->SetTableValue( m_Lut->GetIndex(0), 1, 1, 1 ); Index: mitk/Core/Rendering/mitkLogoRendering.cpp =================================================================== --- mitk/Core/Rendering/mitkLogoRendering.cpp (revision 14801) +++ mitk/Core/Rendering/mitkLogoRendering.cpp (working copy) @@ -188,7 +188,7 @@ *dest++ = a; } - m_VtkImageImport->SetImportVoidPointer(m_ImageData); + m_VtkImageImport->SetImportVoidPointer(m_ImageData, 0 /*delete on destruct*/); m_VtkImageImport->Modified(); m_VtkImageImport->Update(); Index: mitk/Core/Rendering/mitkPointSetVtkMapper3D.cpp =================================================================== --- mitk/Core/Rendering/mitkPointSetVtkMapper3D.cpp (revision 14801) +++ mitk/Core/Rendering/mitkPointSetVtkMapper3D.cpp (working copy) @@ -80,12 +80,20 @@ { m_PointsAssembly->Delete(); - //m_SelectedActor->Delete(); //leads to an exeption + m_SelectedActor->Delete(); m_UnselectedActor->Delete(); m_ContourActor->Delete(); } +void mitk::PointSetVtkMapper3D::ReleaseGraphicsResources(vtkWindow *renWin) +{ + m_PointsAssembly->ReleaseGraphicsResources(renWin); + m_SelectedActor->ReleaseGraphicsResources(renWin); + m_UnselectedActor->ReleaseGraphicsResources(renWin); + m_ContourActor->ReleaseGraphicsResources(renWin); +} + void mitk::PointSetVtkMapper3D::GenerateData() { m_PointsAssembly->VisibilityOn(); @@ -340,7 +348,6 @@ { m_VtkSelectedPolyDataMapper = vtkPolyDataMapper::New(); m_VtkSelectedPolyDataMapper->SetInput(m_vtkSelectedPointList->GetOutput()); - m_vtkSelectedPointList->Delete(); //create a new instance of the actor m_SelectedActor->Delete(); @@ -350,12 +357,12 @@ m_VtkSelectedPolyDataMapper->Delete(); m_PointsAssembly->AddPart(m_SelectedActor); } + m_vtkSelectedPointList->Delete(); if (m_NumberOfUnselectedAdded > 0) { m_VtkUnselectedPolyDataMapper = vtkPolyDataMapper::New(); m_VtkUnselectedPolyDataMapper->SetInput(m_vtkUnselectedPointList->GetOutput()); - m_vtkUnselectedPointList->Delete(); //create a new instance of the actor m_UnselectedActor->Delete(); @@ -365,6 +372,7 @@ m_VtkUnselectedPolyDataMapper->Delete(); m_PointsAssembly->AddPart(m_UnselectedActor); } + m_vtkUnselectedPointList->Delete(); //apply props Superclass::ApplyProperties( m_ContourActor, NULL ); Index: mitk/Core/Rendering/mitkPointSetVtkMapper3D.h =================================================================== --- mitk/Core/Rendering/mitkPointSetVtkMapper3D.h (revision 14801) +++ mitk/Core/Rendering/mitkPointSetVtkMapper3D.h (working copy) @@ -80,6 +80,8 @@ static void SetDefaultProperties(mitk::DataTreeNode* node, mitk::BaseRenderer* renderer = NULL, bool overwrite = false); + void ReleaseGraphicsResources(vtkWindow *renWin); + protected: PointSetVtkMapper3D(); Index: mitk/Core/Rendering/mitkVolumeDataVtkMapper3D.cpp =================================================================== --- mitk/Core/Rendering/mitkVolumeDataVtkMapper3D.cpp (revision 14801) +++ mitk/Core/Rendering/mitkVolumeDataVtkMapper3D.cpp (working copy) @@ -164,6 +164,10 @@ m_VolumeLOD->Delete(); m_ClippingPlane->Delete(); m_PlaneWidget->Delete(); + m_Prop3DAssembly->Delete(); + m_BoundingBox->Delete(); + m_BoundingBoxMapper->Delete(); + m_BoundingBoxActor->Delete(); m_ImageMaskFilter->Delete(); if (m_Mask) Index: mitk/Core/Rendering/vtkMitkRectangleProp.h =================================================================== --- mitk/Core/Rendering/vtkMitkRectangleProp.h (revision 14801) +++ mitk/Core/Rendering/vtkMitkRectangleProp.h (working copy) @@ -27,8 +27,8 @@ class MITK_CORE_EXPORT vtkMitkRectangleProp : public vtkProp { public: - static vtkMitkRectangleProp* New(); + vtkTypeMacro(vtkMitkRectangleProp,vtkProp); int RenderOpaqueGeometry(vtkViewport* viewport); int RenderTranslucentGeometry(vtkViewport* viewport); Index: mitk/Core/Rendering/vtkMitkRenderProp.h =================================================================== --- mitk/Core/Rendering/vtkMitkRenderProp.h (revision 14801) +++ mitk/Core/Rendering/vtkMitkRenderProp.h (working copy) @@ -38,8 +38,8 @@ class MITK_CORE_EXPORT vtkMitkRenderProp : public vtkProp { public: - static vtkMitkRenderProp *New(); + vtkTypeMacro(vtkMitkRenderProp,vtkProp); void SetPropRenderer(mitk::VtkPropRenderer::Pointer propRenderer); Index: mitk/Q4mitk/QmitkRenderWindow.cpp =================================================================== --- mitk/Q4mitk/QmitkRenderWindow.cpp (revision 14801) +++ mitk/Q4mitk/QmitkRenderWindow.cpp (working copy) @@ -39,7 +39,7 @@ { if(m_Renderer.IsNull()) { - m_Renderer = new mitk::VtkPropRenderer( qPrintable(name), GetRenderWindow()); + m_Renderer = mitk::VtkPropRenderer::New( qPrintable(name), GetRenderWindow()); } m_Renderer->InitRenderer(this->GetRenderWindow()); Index: mitk/QApplications/Tutorial/Step6.cpp =================================================================== --- mitk/QApplications/Tutorial/Step6.cpp (revision 14801) +++ mitk/QApplications/Tutorial/Step6.cpp (working copy) @@ -106,9 +106,6 @@ // Part I: Basic initialization //************************************************************************* - // Create a tree - m_Tree=mitk::DataTree::New(); - // Create an iterator on the tree mitk::DataTreePreOrderIterator it(m_Tree); Index: mitk/Qmitk/QmitkApplicationBase/QmitkMainTemplate.ui =================================================================== --- mitk/Qmitk/QmitkApplicationBase/QmitkMainTemplate.ui (revision 14801) +++ mitk/Qmitk/QmitkApplicationBase/QmitkMainTemplate.ui (working copy) @@ -1327,6 +1327,7 @@ class QmitkSimpleExampleFunctionality class QmitkStdMultiWidget class QmitkSelectableGLWidget + class posOutputType bool m_InOptionsUpdate; @@ -1343,6 +1344,7 @@ mitk::UndoController* m_UndoController; static QmitkMainTemplate* m_Instance; QPalette m_StandardPalette; + posOutputType* m_PosOutput; ShowWidgetPlanesToggled(bool) Index: mitk/Qmitk/QmitkApplicationBase/QmitkMainTemplate.ui.h =================================================================== --- mitk/Qmitk/QmitkApplicationBase/QmitkMainTemplate.ui.h (revision 14801) +++ mitk/Qmitk/QmitkApplicationBase/QmitkMainTemplate.ui.h (working copy) @@ -724,6 +724,7 @@ m_StandardPalette = QApplication::palette(); m_FirstFileOpen = true; m_NoMITKOptions = false; + m_PosOutput = NULL; //creating a QmitkStatusBar for Output on the QStatusBar and connecting it with the MainStatusBar QmitkStatusBar *statusBar = new QmitkStatusBar(this->statusBar()); @@ -799,9 +800,9 @@ //could the behavior file be found? if ( smLoadOK ) { - posOutputType* posOutput = new posOutputType(&it); + m_PosOutput = new posOutputType(&it); - mitk::GlobalInteraction::GetInstance()->AddListener(mitk::CoordinateSupplier::New("navigation", posOutput)); //sends PointOperations + mitk::GlobalInteraction::GetInstance()->AddListener(mitk::CoordinateSupplier::New("navigation", m_PosOutput)); //sends PointOperations } else { @@ -1276,6 +1277,9 @@ delete m_SceneWidget; #endif + delete m_PosOutput; + + mitk::DataStorage::GetInstance()->ShutdownSingleton(); m_Tree = NULL; } Index: mitk/Qmitk/QmitkLevelWindowWidgetContextMenu.cpp =================================================================== --- mitk/Qmitk/QmitkLevelWindowWidgetContextMenu.cpp (revision 14801) +++ mitk/Qmitk/QmitkLevelWindowWidgetContextMenu.cpp (working copy) @@ -24,7 +24,7 @@ QmitkLevelWindowWidgetContextMenu::QmitkLevelWindowWidgetContextMenu(QWidget * parent, const char * name, WFlags f ) : QWidget( parent, name, f ) { - m_LevelWindowPreset = new mitk::LevelWindowPreset(); + m_LevelWindowPreset = mitk::LevelWindowPreset::New(); m_LevelWindowPreset->LoadPreset(); } Index: mitk/Qmitk/QmitkStdMultiWidget.ui =================================================================== --- mitk/Qmitk/QmitkStdMultiWidget.ui (revision 14801) +++ mitk/Qmitk/QmitkStdMultiWidget.ui (working copy) @@ -191,8 +191,8 @@ mitk::PositionTracker::Pointer m_PositionTracker; mitk::DataTreeNode::Pointer m_PositionTrackerNode; mitk::DataTreeBase::Pointer m_Tree; - mitk::SlicesRotator *m_SlicesRotator; - mitk::SlicesSwiveller *m_SlicesSwiveller; + mitk::SlicesRotator::Pointer m_SlicesRotator; + mitk::SlicesSwiveller::Pointer m_SlicesSwiveller; mitk::GradientBackground::Pointer m_GradientBackground1; mitk::GradientBackground::Pointer m_GradientBackground2; mitk::LogoRendering::Pointer m_LogoRendering1; Index: mitk/Qmitk/QmitkStdMultiWidget.ui.h =================================================================== --- mitk/Qmitk/QmitkStdMultiWidget.ui.h (revision 14801) +++ mitk/Qmitk/QmitkStdMultiWidget.ui.h (working copy) @@ -98,7 +98,7 @@ // m_SlicesRotator = mitk::SlicesRotator::New(); // @TODO next line causes sure memory leak // rotator will be created nonetheless (will be switched on and off) - m_SlicesRotator = new mitk::SlicesRotator("slices-rotator"); + m_SlicesRotator = mitk::SlicesRotator::New("slices-rotator"); m_SlicesRotator->AddSliceController( mitkWidget1->GetSliceNavigationController() ); m_SlicesRotator->AddSliceController( @@ -107,7 +107,7 @@ mitkWidget3->GetSliceNavigationController() ); // create a slice swiveller (using the same state-machine as SlicesRotator) - m_SlicesSwiveller = new mitk::SlicesSwiveller("slices-rotator"); + m_SlicesSwiveller = mitk::SlicesSwiveller::New("slices-rotator"); m_SlicesSwiveller->AddSliceController( mitkWidget1->GetSliceNavigationController() ); m_SlicesSwiveller->AddSliceController( Index: mitk/Testing/mitkContourMapper2DTest.cpp =================================================================== --- mitk/Testing/mitkContourMapper2DTest.cpp (revision 14801) +++ mitk/Testing/mitkContourMapper2DTest.cpp (working copy) @@ -44,8 +44,8 @@ } else { std::cout<<"[PASSED]"<SetDataTreeNode( node ); contourMapper->Update(NULL); mitk::Contour* testContour = (mitk::Contour*)contourMapper->GetInput(); @@ -53,27 +53,26 @@ mitk::DataTree::Pointer dataTree = mitk::DataTree::New(); mitk::DataTreePreOrderIterator it(dataTree); - + it.Add( node ); - + mitk::BoundingBox::Pointer bounds = mitk::DataTree::ComputeBoundingBox(&it); - + std::cout << "bounds: " << bounds << std::endl; bounds = mitk::DataTree::ComputeVisibleBoundingBox(&it); std::cout << "visible bounds: " << bounds << std::endl; - + vtkRenderWindow* renWin = vtkRenderWindow::New(); - mitk::VtkPropRenderer * renderer = new mitk::VtkPropRenderer("ContourRenderer",renWin); - + mitk::VtkPropRenderer::Pointer renderer = mitk::VtkPropRenderer::New("ContourRenderer",renWin); + std::cout<<"Testing mitk::BaseRenderer::SetData()"<SetData(&it); std::cout<<"[TEST DONE]"<Delete(); - renderer->Delete(); return EXIT_SUCCESS; } Index: mitk/Testing/mitkEventTest.cpp =================================================================== --- mitk/Testing/mitkEventTest.cpp (revision 14801) +++ mitk/Testing/mitkEventTest.cpp (working copy) @@ -23,11 +23,11 @@ int mitkEventTest(int /*argc*/, char* /*argv*/[]) { vtkRenderWindow* renWin = vtkRenderWindow::New(); - mitk::VtkPropRenderer * renderer = new mitk::VtkPropRenderer("ContourRenderer",renWin); - + mitk::VtkPropRenderer::Pointer renderer = mitk::VtkPropRenderer::New("ContourRenderer",renWin); + //Create Event mitk::Event * event = new mitk::Event(renderer, 0, 1, 2, 3); - + //check Get... std::cout << "check the get methods of the Event"; if (event->GetSender() != renderer || @@ -44,7 +44,6 @@ std::cout<<"[PASSED]"<Delete(); - renderer->Delete(); std::cout<<"[TEST DONE]"< #include #include +#include +#include +#include #include +#include "mitkReferenceCountWatcher.h" + #include int mitkImageMapper2DTest(int /*argc*/, char* /*argv*/[]) { @@ -50,10 +55,28 @@ std::cout<<"[PASSED]"<Register(); //@FIXME: da DataTreeIteratorClone keinen Smartpointer auf DataTree h�lt, wird tree sonst gel�scht. + mitk::DataTree::Pointer tree; + tree=mitk::DataTree::New(); std::cout<<"[PASSED]"<GetReferenceCount()!=1) + { + std::cout<GetReferenceCount()<<"!=1 [FAILED]"<GetReferenceCount()!=1) + { + std::cout<GetReferenceCount()<<"!=1 [FAILED]"<SetData(&it); std::cout<<"[PASSED]"<GetReferenceCount()!=2) + { + std::cout<GetReferenceCount()<<"!=2 [FAILED]"<(node->GetMapper(1))==NULL) + if(dynamic_cast(node->GetMapper(mitk::BaseRenderer::Standard2D))==NULL) { std::cout<<"[FAILED]"<(node->GetMapper(mitk::BaseRenderer::Standard3D))==NULL) + { + std::cout<<"[FAILED]"<GetProperty(transferFctProperty, "TransferFunction") == false) + { + std::cout<<"[FAILED]"<GetValue(); + if(transferFct.IsNull()) + { + std::cout<<"[FAILED]"<GetReferenceCount()!=1) + { + std::cout<GetReferenceCount()<<"!=1 [FAILED]"<GetReferenceCount()!=1) + { + std::cout<GetReferenceCount()<<"!=1 [FAILED]"<Delete(); - tree = NULL; // As the tree has been registered explicitely, destroy it again. + node = NULL; + tree = NULL; + std::cout<<"[PASSED]"<GetReferenceCount()!=0) + { + std::cout<GetReferenceCount()<<"!=0 [FAILED]"<GetReferenceCount()!=0) + { + std::cout<GetReferenceCount()<<"!=0 [FAILED]"<GetReferenceCount()!=0) + { + std::cout<GetReferenceCount()<<"!=0 [FAILED]"<GetReferenceCount()!=0) + { + std::cout<GetReferenceCount()<<"!=0 [FAILED]"<SetFileName( fileIn.c_str() ); factory->Update(); Index: mitk/Testing/mitkStateMachineFactoryTest.cpp =================================================================== --- mitk/Testing/mitkStateMachineFactoryTest.cpp (revision 14801) +++ mitk/Testing/mitkStateMachineFactoryTest.cpp (working copy) @@ -23,7 +23,7 @@ int mitkStateMachineFactoryTest(int /*argc*/, char* /*argv*/[]) { //create statemachinefactory - mitk::StateMachineFactory* statemachineFactory = new mitk::StateMachineFactory(); + mitk::StateMachineFactory* statemachineFactory = mitk::StateMachineFactory::New(); //load standard behavior std::cout << "Testing LoadStandardBehavior(): "; Index: mitk/Testing/mitkVtkPropRendererTest.cpp =================================================================== --- mitk/Testing/mitkVtkPropRendererTest.cpp (revision 14801) +++ mitk/Testing/mitkVtkPropRendererTest.cpp (working copy) @@ -75,8 +75,8 @@ std::cout<<"[PASSED]"<Register(); //@FIXME: da DataTreeIteratorClone keinen Smartpointer auf DataTree h�lt, wird tree sonst gel�scht. + mitk::DataTree::Pointer tree; + tree=mitk::DataTree::New(); std::cout<<"[PASSED]"<SetInput(sphere->GetOutput()); + sphere->Delete(); vtkActor *aSphere = vtkActor::New(); aSphere->SetMapper(map); + map->Delete(); aSphere->GetProperty()->SetColor(0,0,1); // sphere color blue std::cout<<"[PASSED]"<AddActor(aSphere); + aSphere->Delete(); //sphereRenderer->SetBackground(1,1,1); // Background color white std::cout<<"[PASSED]"<SetMapperID(2); std::cout<<"[PASSED]"<GetVtkRenderer()->RemoveViewProp(renderProp); + renderProp->Delete(); + propRenderer = NULL; + sphereRenderer->Delete(); + renderWindow->Delete(); + + vtkImage->Delete(); tree = NULL; // As the tree has been registered explicitely, destroy it again. std::cout<<"[TEST DONE]"<