/*========================================================================= medInria Copyright (c) INRIA 2013 - 2020. All rights reserved. See LICENSE.txt for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. =========================================================================*/ #include #include #include #include #include #include #include #include #include // ///////////////////////////////////////////////////////////////// // itkDataTensorImagePrivate // ///////////////////////////////////////////////////////////////// class itkDataTensorImageDouble3Private { public: typedef itk::Tensor TensorType; typedef itk::Image TensorImageType; TensorImageType::Pointer tensors; }; // ///////////////////////////////////////////////////////////////// // itkDataTensorImage // ///////////////////////////////////////////////////////////////// itkDataTensorImageDouble3::itkDataTensorImageDouble3() : medAbstractTypedDiffusionModelImageData<3,double>(), d(new itkDataTensorImageDouble3Private) { d->tensors = nullptr; } itkDataTensorImageDouble3::~itkDataTensorImageDouble3() { delete d; d = nullptr; } bool itkDataTensorImageDouble3::registered() { return medAbstractDataFactory::instance()->registerDataType(); } void *itkDataTensorImageDouble3::data() { return d->tensors.GetPointer(); } void *itkDataTensorImageDouble3::output() { return d->tensors.GetPointer(); } void itkDataTensorImageDouble3::setData(void *data) { typedef itkDataTensorImageDouble3Private::TensorImageType TensorImageType; if( TensorImageType* tensors = dynamic_cast( (itk::Object*)(data) ) ) { d->tensors = tensors; } else { qDebug() << "Cannot cast pointer to correct tensor type"; } } int itkDataTensorImageDouble3::xDimension() { if (!d->tensors.IsNull()) return d->tensors->GetLargestPossibleRegion().GetSize()[0]; return -1; } int itkDataTensorImageDouble3::yDimension() { if (!d->tensors.IsNull()) return d->tensors->GetLargestPossibleRegion().GetSize()[1]; return -1; } int itkDataTensorImageDouble3::zDimension() { if (!d->tensors.IsNull()) return d->tensors->GetLargestPossibleRegion().GetSize()[2]; return -1; }