// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- void ConvertOrientations::execute() { setErrorCondition(0); dataCheck(); if(getErrorCondition() < 0) { return; } IDataArray::Pointer iDataArrayPtr = getDataContainerArray()->getPrereqIDataArrayFromPath<IDataArray, AbstractFilter>(this, getInputOrientationArrayPath()); DataArrayPath outputArrayPath = getInputOrientationArrayPath(); outputArrayPath.setDataArrayName(getOutputOrientationArrayName()); FloatArrayType::Pointer fArray = std::dynamic_pointer_cast<FloatArrayType>(iDataArrayPtr); if(NULL != fArray.get()) { QVector<int32_t> componentCounts = OrientationConverter<float>::GetComponentCounts(); QVector<size_t> outputCDims(1, componentCounts[getOutputType()]); FloatArrayType::Pointer outData = getDataContainerArray()->getPrereqArrayFromPath<DataArray<float>, AbstractFilter>(this, outputArrayPath, outputCDims); generateRepresentation<float>(this, fArray, outData); } DoubleArrayType::Pointer dArray = std::dynamic_pointer_cast<DoubleArrayType>(iDataArrayPtr); if(NULL != dArray.get()) { QVector<int32_t> componentCounts = OrientationConverter<double>::GetComponentCounts(); QVector<size_t> outputCDims(1, componentCounts[getOutputType()]); DoubleArrayType::Pointer outData = getDataContainerArray()->getPrereqArrayFromPath<DataArray<double>, AbstractFilter>(this, outputArrayPath, outputCDims); generateRepresentation<double>(this, dArray, outData); } notifyStatusMessage(getHumanLabel(), "Complete"); }
// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- DoubleArrayType::Pointer ModifiedLambertProjection::createStereographicProjection(int dim) { DoubleArrayType::Pointer stereoIntensity = DoubleArrayType::CreateArray(dim * dim, 1, "ModifiedLambertProjection_StereographicProjection"); stereoIntensity->initializeWithZeros(); createStereographicProjection(dim, stereoIntensity.get()); return stereoIntensity; }
// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- DoubleArrayType::Pointer ModifiedLambertProjection::createStereographicProjection(int dim) { QVector<size_t> tDims(2, dim); QVector<size_t> cDims(1, 1); DoubleArrayType::Pointer stereoIntensity = DoubleArrayType::CreateArray(tDims, cDims, "ModifiedLambertProjection_StereographicProjection"); stereoIntensity->initializeWithZeros(); createStereographicProjection(dim, stereoIntensity.get()); return stereoIntensity; }
// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- void ConvertOrientations::dataCheck() { setErrorCondition(0); if(getInputType() == getOutputType()) { QString ss = QObject::tr("Input and output orientation representation types must be different"); setErrorCondition(-1000); notifyErrorMessage(getHumanLabel(), ss, getErrorCondition()); } if( getInputType() < OrientationConverter<float>::GetMinIndex() || getInputType() > OrientationConverter<float>::GetMaxIndex() ) { QString ss = QObject::tr("There was an error with teh selection of the input orientation type. The valid values range from 0 to %1").arg(OrientationConverter<float>::GetMaxIndex()); setErrorCondition(-1001); notifyErrorMessage(getHumanLabel(), ss, getErrorCondition()); } if( getOutputType() < OrientationConverter<float>::GetMinIndex() || getOutputType() > OrientationConverter<float>::GetMaxIndex() ) { QString ss = QObject::tr("There was an error with the selection of the output orientation type. The valid values range from 0 to %1").arg(OrientationConverter<float>::GetMaxIndex()); setErrorCondition(-1002); notifyErrorMessage(getHumanLabel(), ss, getErrorCondition()); } // We need to return NOW because the next lines assume we have and index that is within // the valid bounds if(getErrorCondition() < 0) { return; } // Figure out what kind of Array the user selected // Get the input data and create the output Data appropriately IDataArray::Pointer iDataArrayPtr = getDataContainerArray()->getPrereqIDataArrayFromPath<IDataArray, AbstractFilter>(this, getInputOrientationArrayPath()); DataArrayPath outputArrayPath = getInputOrientationArrayPath(); outputArrayPath.setDataArrayName(getOutputOrientationArrayName()); FloatArrayType::Pointer fArray = std::dynamic_pointer_cast<FloatArrayType>(iDataArrayPtr); if(NULL != fArray.get()) { QVector<int32_t> componentCounts = OrientationConverter<float>::GetComponentCounts(); QVector<size_t> outputCDims(1, componentCounts[getOutputType()]); getDataContainerArray()->createNonPrereqArrayFromPath<DataArray<float>, AbstractFilter, float>(this, outputArrayPath, 0, outputCDims); } DoubleArrayType::Pointer dArray = std::dynamic_pointer_cast<DoubleArrayType>(iDataArrayPtr); if(NULL != dArray.get()) { QVector<int32_t> componentCounts = OrientationConverter<double>::GetComponentCounts(); QVector<size_t> outputCDims(1, componentCounts[getOutputType()]); getDataContainerArray()->createNonPrereqArrayFromPath<DataArray<double>, AbstractFilter, double>(this, outputArrayPath, 0, outputCDims); } }