#ifndef __CPEXTENSIONS__DATASTRUCTURES__IMAGEINDEXESCONTAINER__H__ #define __CPEXTENSIONS__DATASTRUCTURES__IMAGEINDEXESCONTAINER__H__ #include #include #include namespace cpExtensions { namespace DataStructures { /** */ template< unsigned int _NDim > class ImageIndexesContainer : public itk::SimpleDataObjectDecorator< std::vector< itk::Index< _NDim > > > { public: typedef itk::Index< _NDim > TIndex; typedef std::vector< TIndex > TContainer; typedef itk::SimpleDataObjectDecorator< TContainer > Superclass; typedef ImageIndexesContainer Self; typedef itk::SmartPointer< Self > Pointer; typedef itk::SmartPointer< const Self > ConstPointer; typedef itk::ImageBase< _NDim > TImageBase; public: itkNewMacro( Self ); itkTypeMacro( ImageIndexesContainer, itk::SimpleDataObjectDecorator ); public: TImageBase* GetReferenceImage( ) { return( this->m_ReferenceImage ); } const TImageBase* GetReferenceImage( ) const { return( this->m_ReferenceImage ); } void SetReferenceImage( const TImageBase* image ) { this->m_ReferenceImage = TImageBase::New( ); this->m_ReferenceImage->SetDirection( image->GetDirection( ) ); this->m_ReferenceImage->SetOrigin( image->GetOrigin( ) ); this->m_ReferenceImage->SetSpacing( image->GetSpacing( ) ); this->Modified( ); } protected: ImageIndexesContainer( ) { } virtual ~ImageIndexesContainer( ) { } private: // Purposely not implemented ImageIndexesContainer( const Self& other ); Self& operator=( const Self& other ); protected: typename TImageBase::Pointer m_ReferenceImage; }; } // ecapseman } // ecapseman #endif // __CPEXTENSIONS__DATASTRUCTURES__IMAGEINDEXESCONTAINER__H__ // eof - $RCSfile$