+ itk::ImageIOBase::IOComponentType ct = io->GetComponentType( );
+ itk::ImageIOBase::IOPixelType pt = io->GetPixelType( );
+ std::string r = "";
+
+ if( pt == itk::ImageIOBase::SCALAR )
+ {
+ switch( ct )
+ {
+ case itk::ImageIOBase::UCHAR:
+ r = this->_RealGD< unsigned char, D >( names );
+ break;
+ case itk::ImageIOBase::CHAR:
+ r = this->_RealGD< char, D >( names );
+ break;
+ case itk::ImageIOBase::USHORT:
+ r = this->_RealGD< unsigned short, D >( names );
+ break;
+ case itk::ImageIOBase::SHORT:
+ r = this->_RealGD< short, D >( names );
+ break;
+ case itk::ImageIOBase::UINT:
+ r = this->_RealGD< unsigned int, D >( names );
+ break;
+ case itk::ImageIOBase::INT:
+ r = this->_RealGD< int, D >( names );
+ break;
+ case itk::ImageIOBase::ULONG:
+ r = this->_RealGD< unsigned long, D >( names );
+ break;
+ case itk::ImageIOBase::LONG:
+ r = this->_RealGD< long, D >( names );
+ break;
+ case itk::ImageIOBase::FLOAT:
+ r = this->_RealGD< float, D >( names );
+ break;
+ case itk::ImageIOBase::DOUBLE:
+ r = this->_RealGD< double, D >( names );
+ break;
+ default:
+ r = "ImageReader: Scalar pixel type not supported.";
+ break;
+ } // hctiws
+ }
+ else if( pt == itk::ImageIOBase::RGB )
+ {
+ if( D == 2 )
+ {
+ switch( ct )
+ {
+ case itk::ImageIOBase::UCHAR:
+ r = this->_RealGD< itk::RGBPixel< unsigned char >, 2 >( names );
+ break;
+ case itk::ImageIOBase::CHAR:
+ r = this->_RealGD< itk::RGBPixel< char >, 2 >( names );
+ break;
+ case itk::ImageIOBase::USHORT:
+ r = this->_RealGD< itk::RGBPixel< unsigned short >, 2 >( names );
+ break;
+ case itk::ImageIOBase::SHORT:
+ r = this->_RealGD< itk::RGBPixel< short >, 2 >( names );
+ break;
+ case itk::ImageIOBase::UINT:
+ r = this->_RealGD< itk::RGBPixel< unsigned int >, 2 >( names );
+ break;
+ case itk::ImageIOBase::INT:
+ r = this->_RealGD< itk::RGBPixel< int >, 2 >( names );
+ break;
+ case itk::ImageIOBase::ULONG:
+ r = this->_RealGD< itk::RGBPixel< unsigned long >, 2 >( names );
+ break;
+ case itk::ImageIOBase::LONG:
+ r = this->_RealGD< itk::RGBPixel< long >, 2 >( names );
+ break;
+ case itk::ImageIOBase::FLOAT:
+ r = this->_RealGD< itk::RGBPixel< float >, 2 >( names );
+ break;
+ case itk::ImageIOBase::DOUBLE:
+ r = this->_RealGD< itk::RGBPixel< double >, 2 >( names );
+ break;
+ default:
+ r = "ImageReader: RGB pixel type not supported.";
+ break;
+ } // hctiws
+ }
+ else if( D == 3 )
+ {
+ switch( ct )
+ {
+ case itk::ImageIOBase::UCHAR:
+ r = this->_RealGD< itk::RGBPixel< unsigned char >, 3 >( names );
+ break;
+ case itk::ImageIOBase::CHAR:
+ r = this->_RealGD< itk::RGBPixel< char >, 3 >( names );
+ break;
+ case itk::ImageIOBase::USHORT:
+ r = this->_RealGD< itk::RGBPixel< unsigned short >, 3 >( names );
+ break;
+ case itk::ImageIOBase::SHORT:
+ r = this->_RealGD< itk::RGBPixel< short >, 3 >( names );
+ break;
+ case itk::ImageIOBase::UINT:
+ r = this->_RealGD< itk::RGBPixel< unsigned int >, 3 >( names );
+ break;
+ case itk::ImageIOBase::INT:
+ r = this->_RealGD< itk::RGBPixel< int >, 3 >( names );
+ break;
+ case itk::ImageIOBase::ULONG:
+ r = this->_RealGD< itk::RGBPixel< unsigned long >, 3 >( names );
+ break;
+ case itk::ImageIOBase::LONG:
+ r = this->_RealGD< itk::RGBPixel< long >, 3 >( names );
+ break;
+ case itk::ImageIOBase::FLOAT:
+ r = this->_RealGD< itk::RGBPixel< float >, 3 >( names );
+ break;
+ case itk::ImageIOBase::DOUBLE:
+ r = this->_RealGD< itk::RGBPixel< double >, 3 >( names );
+ break;
+ default:
+ r = "ImageReader: RGB pixel type not supported.";
+ break;
+ } // hctiws
+ }
+ else if( D == 4 )
+ {
+ switch( ct )
+ {
+ case itk::ImageIOBase::UCHAR:
+ r = this->_RealGD< itk::RGBPixel< unsigned char >, 4 >( names );
+ break;
+ case itk::ImageIOBase::CHAR:
+ r = this->_RealGD< itk::RGBPixel< char >, 4 >( names );
+ break;
+ case itk::ImageIOBase::USHORT:
+ r = this->_RealGD< itk::RGBPixel< unsigned short >, 4 >( names );
+ break;
+ case itk::ImageIOBase::SHORT:
+ r = this->_RealGD< itk::RGBPixel< short >, 4 >( names );
+ break;
+ case itk::ImageIOBase::UINT:
+ r = this->_RealGD< itk::RGBPixel< unsigned int >, 4 >( names );
+ break;
+ case itk::ImageIOBase::INT:
+ r = this->_RealGD< itk::RGBPixel< int >, 4 >( names );
+ break;
+ case itk::ImageIOBase::ULONG:
+ r = this->_RealGD< itk::RGBPixel< unsigned long >, 4 >( names );
+ break;
+ case itk::ImageIOBase::LONG:
+ r = this->_RealGD< itk::RGBPixel< long >, 4 >( names );
+ break;
+ case itk::ImageIOBase::FLOAT:
+ r = this->_RealGD< itk::RGBPixel< float >, 4 >( names );
+ break;
+ case itk::ImageIOBase::DOUBLE:
+ r = this->_RealGD< itk::RGBPixel< double >, 4 >( names );
+ break;
+ default:
+ r = "ImageReader: RGB pixel type not supported.";
+ break;
+ } // hctiws