X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcpPlugins%2FInterface%2FImage.h;h=68367fdf7c9bba0fb9acee81f0f4de8246a0efc7;hb=2361f4f97631e09d88d8a5510a369817dcaa19db;hp=e6b2b7762708360c5781af9651fe1f6ffc91212d;hpb=1adce86c283e253ec41f762652bc477d56d617a5;p=cpPlugins.git diff --git a/lib/cpPlugins/Interface/Image.h b/lib/cpPlugins/Interface/Image.h index e6b2b77..68367fd 100644 --- a/lib/cpPlugins/Interface/Image.h +++ b/lib/cpPlugins/Interface/Image.h @@ -3,44 +3,68 @@ #include #include -#include -#include +#include #include +#define ITK_MANUAL_INSTANTIATION +#include + class vtkImageData; +// ------------------------------------------------------------------------- +#define cpPlugins_Image_Demangle( p, d, o, f, r ) \ + if( dynamic_cast< itk::Image< p, d >* >( o ) != NULL ) \ + r = this->f< itk::Image< p, d > >( o ) + +// ------------------------------------------------------------------------- +#define cpPlugins_Image_Array_Demangle( a, p, da, di, o, f, r ) \ + if( dynamic_cast< itk::Image< a< p, da >, di >* >( o ) != NULL ) \ + r = this->f< itk::Image< a< p, da >, di > >( o ) + +// ------------------------------------------------------------------------- namespace cpPlugins { namespace Interface { /** */ - class cpPlugins_Interface_EXPORT Image + class cpPlugins_EXPORT Image : public DataObject { public: - typedef Image Self; - typedef DataObject Superclass; + typedef Image Self; + typedef DataObject Superclass; + typedef itk::SmartPointer< Self > Pointer; + typedef itk::SmartPointer< const Self > ConstPointer; public: - Image( ); - virtual ~Image( ); + itkNewMacro( Self ); + itkTypeMacro( Image, DataObject ); - virtual std::string GetClassName( ) const; - virtual void SetDataObject( itk::DataObject* dobj ); + public: + virtual void SetITKDataObject( itk::DataObject* o ); + virtual void SetVTKDataObject( vtkDataObject* o ); - vtkImageData* GetVTKImageData( ) const; + virtual vtkImageData* GetVTKImageData( ); + virtual const vtkImageData* GetVTKImageData( ) const; protected: + Image( ); + virtual ~Image( ); + template< unsigned int D > - void _ConnectToVTK_0( ); + bool _Dim( itk::DataObject* o ); + + template< class I > + bool _Type( itk::DataObject* o ); - template< class P, unsigned int D > - void _ConnectToVTK_1( ); + private: + // Purposely not implemented + Image( const Self& ); + Self& operator=( const Self& ); protected: - itk::ProcessObject::Pointer m_Image2VTKImageData; - vtkImageData* m_VTKImageData; + itk::ProcessObject::Pointer m_ITKvVTKConnection; }; } // ecapseman