#include #include #include #include #include #include "dtkItkImageConverter.h" class medITKImageDTKImageConverterPrivate { public: void setImage(dtkImage* img) { this->img=img; } void setId(QString id) { qDebug()<id=id; } template void exec() { qDebug()< Converter; typedef itk::Image::itkPixelType,dim> ImageType; typename ImageType::Pointer itkImage=ImageType::New(); qDebug()<(medAbstractDataFactory::instance()->create(id)); qDebug()<setData(itkImage); qDebug()<identifier(); qDebug()<xDimension()<yDimension()<zDimension(); if ( id == "itkDataImageChar3" ) return toDtkImage_helper,3>(medImage); else if ( id == "itkDataImageUChar3" ) return toDtkImage_helper,3>(medImage); else if ( id == "itkDataImageShort3" ) return toDtkImage_helper,3>(medImage); else if ( id == "itkDataImageUShort3" ) return toDtkImage_helper,3>(medImage); else if ( id == "itkDataImageInt3" ) return toDtkImage_helper,3>(medImage); else if ( id == "itkDataImageUInt3" ) return toDtkImage_helper,3>(medImage); else if ( id == "itkDataImageLong3" ) return toDtkImage_helper,3>(medImage); else if ( id== "itkDataImageULong3" ) return toDtkImage_helper,3>(medImage); else if ( id == "itkDataImageFloat3" ) return toDtkImage_helper,3>(medImage); else if ( id == "itkDataImageDouble3" ) return toDtkImage_helper,3>(medImage); return 0; } template dtkImage* medITKImageDTKImageConverter::toDtkImage_helper(medAbstractImageData* medImage) { typedef dtkItkImageConverter ConverterType; typedef typename ConverterType::ItkImageType ItkType; ItkType* itkImg=static_cast (medImage->image()); dtkImage *img=new dtkImage(); if(itkImg) ConverterType::convertFromNative(itkImg, img); else qWarning()<<"cast failed"; return img; } medAbstractImageData* medITKImageDTKImageConverter::toMedImage(dtkImage* image) { QString id="itkDataImage"; switch(image->storageType()) { case QMetaType::Char: id+="Char"; break; case QMetaType::UChar: id+="UChar"; break; case QMetaType::Short: id+="Short"; break; case QMetaType::UShort: id+="UShort"; break; case QMetaType::Int: id+="Int"; break; case QMetaType::UInt: id+="UInt"; break; case QMetaType::Long: id+="Long"; break; case QMetaType::ULong: id+="ULong"; break; case QMetaType::Float: id+="Float"; break; case QMetaType::Double: id+="Double"; break; } qDebug()<dim()); qDebug()<::run(&converter, image); qDebug()<