// Create and associate actor
this->_Block( );
- this->m_UI->Viewer->AddActor( output->CreateVTKActor( ) );
+ this->m_UI->Viewer->AddActor( output->GetVTKActor( ) );
this->_UnBlock( );
}
dynamic_cast< vtkImageSliceMapper* >( real_actor->GetMapper( ) );
if( real_mapper == NULL )
return;
+ this->m_Actor = real_actor;
this->m_Mapper = real_mapper;
this->_ConfigureInput( orientation );
}
#include <itkDataObject.h>
#include <vtkImageData.h>
#include <vtkPolyData.h>
-#include <vtkRenderWindow.h>
+#include <vtkProp.h>
// -------------------------------------------------------------------------
cpPlugins::ProcessObject* cpPlugins::DataObject::
// -------------------------------------------------------------------------
vtkProp* cpPlugins::DataObject::
-CreateVTKActor( )
+GetVTKActor( )
{
- return( NULL );
+ if( this->m_Actor == NULL )
+ this->_CreateVTKActor( );
+ return( this->m_Actor );
+}
+
+// -------------------------------------------------------------------------
+const vtkProp* cpPlugins::DataObject::
+GetVTKActor( ) const
+{
+ if( this->m_Actor == NULL )
+ this->_CreateVTKActor( );
+ return( this->m_Actor );
}
// -------------------------------------------------------------------------
cpPlugins::DataObject::
DataObject( )
: Superclass( ),
- m_Source( NULL )
+ m_Source( NULL ),
+ m_Actor( NULL )
{
}
// -------------------------------------------------------------------------
cpPlugins::DataObject::
~DataObject( )
+{
+ if( this->m_Actor != NULL )
+ this->m_Actor->Delete( );
+}
+
+// -------------------------------------------------------------------------
+void cpPlugins::DataObject::
+_CreateVTKActor( ) const
{
}
virtual DataObjectVisualizationQtDialog* CreateQtDialog( );
// VTK actors
- virtual vtkProp* CreateVTKActor( );
+ vtkProp* GetVTKActor( );
+ const vtkProp* GetVTKActor( ) const;
protected:
DataObject( );
virtual ~DataObject( );
+ virtual void _CreateVTKActor( ) const;
+
private:
// Purposely not implemented
DataObject( const Self& );
Self& operator=( const Self& );
protected:
- ProcessObject* m_Source;
+ ProcessObject* m_Source;
+ mutable vtkProp* m_Actor;
};
} // ecapseman
std::exit( 1 );
}
-// -------------------------------------------------------------------------
-vtkProp* cpPlugins::Image::
-CreateVTKActor( )
-{
- vtkImageSliceMapper* mapper = vtkImageSliceMapper::New( );
- vtkImageActor* actor = vtkImageActor::New( );
- mapper->SetInputData( this->GetVTK< vtkImageData >( ) );
- actor->SetMapper( mapper );
- mapper->Delete( );
- return( actor );
-}
-
// -------------------------------------------------------------------------
cpPlugins::Image::
Image( )
{
}
+// -------------------------------------------------------------------------
+void cpPlugins::Image::
+_CreateVTKActor( ) const
+{
+ vtkImageData* image =
+ const_cast< vtkImageData* >( this->GetVTK< vtkImageData >( ) );
+ if( image != NULL )
+ {
+ vtkImageSliceMapper* mapper = vtkImageSliceMapper::New( );
+ vtkImageActor* actor = vtkImageActor::New( );
+ mapper->SetInputData( image );
+ actor->SetMapper( mapper );
+ this->m_Actor = actor;
+ // TODO: mapper->Delete( );
+
+ } // fi
+}
+
// eof - $RCSfile$
virtual void SetITK( itk::LightObject* o ) ITK_OVERRIDE;
virtual void SetVTK( vtkObjectBase* o ) ITK_OVERRIDE;
- virtual vtkProp* CreateVTKActor( ) ITK_OVERRIDE;
-
protected:
Image( );
virtual ~Image( );
+ virtual void _CreateVTKActor( ) const ITK_OVERRIDE;
+
template< unsigned int D >
inline bool _ITK_2_VTK_0( itk::LightObject* o );