diff --git a/Modules/Bundles/org.mitk.gui.qt.diffusionimaging/files.cmake b/Modules/Bundles/org.mitk.gui.qt.diffusionimaging/files.cmake
index ee77a40cef..525cd9521b 100644
--- a/Modules/Bundles/org.mitk.gui.qt.diffusionimaging/files.cmake
+++ b/Modules/Bundles/org.mitk.gui.qt.diffusionimaging/files.cmake
@@ -1,102 +1,102 @@
SET(SRC_CPP_FILES
QmitkODFDetailsWidget.cpp
QmitkODFRenderWidget.cpp
QmitkPartialVolumeAnalysisWidget.cpp
QmitkIVIMWidget.cpp
)
SET(INTERNAL_CPP_FILES
mitkPluginActivator.cpp
QmitkQBallReconstructionView.cpp
QmitkPreprocessingView.cpp
QmitkDiffusionDicomImportView.cpp
QmitkDiffusionQuantificationView.cpp
QmitkTensorReconstructionView.cpp
QmitkDiffusionImagingPublicPerspective.cpp
QmitkControlVisualizationPropertiesView.cpp
QmitkODFDetailsView.cpp
QmitkGibbsTrackingView.cpp
QmitkStochasticFiberTrackingView.cpp
- QmitkFiberBundleOperationsView.cpp
+ QmitkFiberProcessingView.cpp
QmitkFiberBundleDeveloperView.cpp
QmitkPartialVolumeAnalysisView.cpp
QmitkIVIMView.cpp
QmitkScreenshotMaker.cpp
)
SET(UI_FILES
src/internal/QmitkQBallReconstructionViewControls.ui
src/internal/QmitkPreprocessingViewControls.ui
src/internal/QmitkDiffusionDicomImportViewControls.ui
src/internal/QmitkDiffusionQuantificationViewControls.ui
src/internal/QmitkTensorReconstructionViewControls.ui
src/internal/QmitkControlVisualizationPropertiesViewControls.ui
src/internal/QmitkODFDetailsViewControls.ui
src/internal/QmitkGibbsTrackingViewControls.ui
src/internal/QmitkStochasticFiberTrackingViewControls.ui
- src/internal/QmitkFiberBundleOperationsViewControls.ui
+ src/internal/QmitkFiberProcessingViewControls.ui
src/internal/QmitkFiberBundleDeveloperViewControls.ui
src/internal/QmitkPartialVolumeAnalysisViewControls.ui
src/internal/QmitkIVIMViewControls.ui
src/internal/QmitkScreenshotMakerControls.ui
)
SET(MOC_H_FILES
src/internal/mitkPluginActivator.h
src/internal/QmitkQBallReconstructionView.h
src/internal/QmitkPreprocessingView.h
src/internal/QmitkDiffusionDicomImportView.h
src/internal/QmitkDiffusionImagingPublicPerspective.h
src/internal/QmitkDiffusionQuantificationView.h
src/internal/QmitkTensorReconstructionView.h
src/internal/QmitkControlVisualizationPropertiesView.h
src/internal/QmitkODFDetailsView.h
src/QmitkODFRenderWidget.h
src/QmitkODFDetailsWidget.h
src/internal/QmitkGibbsTrackingView.h
src/internal/QmitkStochasticFiberTrackingView.h
- src/internal/QmitkFiberBundleOperationsView.h
+ src/internal/QmitkFiberProcessingView.h
src/internal/QmitkFiberBundleDeveloperView.h
src/internal/QmitkPartialVolumeAnalysisView.h
src/QmitkPartialVolumeAnalysisWidget.h
src/internal/QmitkIVIMView.h
src/internal/QmitkScreenshotMaker.h
)
SET(CACHED_RESOURCE_FILES
# list of resource files which can be used by the plug-in
# system without loading the plug-ins shared library,
# for example the icon used in the menu and tabs for the
# plug-in views in the workbench
plugin.xml
resources/preprocessing.png
resources/dwiimport.png
resources/quantification.png
resources/reconodf.png
resources/recontensor.png
resources/vizControls.png
resources/OdfDetails.png
resources/GibbsTracking.png
resources/FiberBundleOperations.png
resources/PartialVolumeAnalysis_24.png
resources/IVIM_48.png
resources/screenshot_maker.png
resources/stochFB.png
)
SET(QRC_FILES
# uncomment the following line if you want to use Qt resources
resources/QmitkDiffusionImaging.qrc
)
SET(CPP_FILES )
foreach(file ${SRC_CPP_FILES})
SET(CPP_FILES ${CPP_FILES} src/${file})
endforeach(file ${SRC_CPP_FILES})
foreach(file ${INTERNAL_CPP_FILES})
SET(CPP_FILES ${CPP_FILES} src/internal/${file})
endforeach(file ${INTERNAL_CPP_FILES})
diff --git a/Modules/Bundles/org.mitk.gui.qt.diffusionimaging/plugin.xml b/Modules/Bundles/org.mitk.gui.qt.diffusionimaging/plugin.xml
index 40aead2ee8..cc0063c353 100644
--- a/Modules/Bundles/org.mitk.gui.qt.diffusionimaging/plugin.xml
+++ b/Modules/Bundles/org.mitk.gui.qt.diffusionimaging/plugin.xml
@@ -1,110 +1,110 @@
-
diff --git a/Modules/Bundles/org.mitk.gui.qt.diffusionimaging/src/internal/QmitkFiberBundleOperationsView.cpp b/Modules/Bundles/org.mitk.gui.qt.diffusionimaging/src/internal/QmitkFiberBundleOperationsView.cpp
deleted file mode 100644
index 0eb2acf5aa..0000000000
--- a/Modules/Bundles/org.mitk.gui.qt.diffusionimaging/src/internal/QmitkFiberBundleOperationsView.cpp
+++ /dev/null
@@ -1,1801 +0,0 @@
-/*=========================================================================
-
- Program: Medical Imaging & Interaction Toolkit
- Language: C++
- Date: $Date: 2010-03-31 16:40:27 +0200 (Mi, 31 Mrz 2010) $
- Version: $Revision: 21975 $
-
- Copyright (c) German Cancer Research Center, Division of Medical and
- Biological Informatics. All rights reserved.
- See MITKCopyright.txt or http://www.mitk.org/copyright.html for details.
-
- This software is distributed WITHOUT ANY WARRANTY; without even
- the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- PURPOSE. See the above copyright notices for more information.
-
- =========================================================================*/
-
-
-// Blueberry
-#include
-#include
-
-
-
-// Qmitk
-#include "QmitkFiberBundleOperationsView.h"
-#include "QmitkStdMultiWidget.h"
-
-// Qt
-#include
-
-//MITK
-#include "mitkNodePredicateProperty.h"
-//#include "mitkNodePredicateAND.h"
-#include "mitkImageCast.h"
-
-#include "mitkPointSet.h"
-
-
-#include "mitkPlanarCircle.h"
-#include "mitkPlanarPolygon.h"
-#include
-#include "mitkPlanarFigureInteractor.h"
-#include "mitkGlobalInteraction.h"
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-
-const std::string QmitkFiberBundleOperationsView::VIEW_ID = "org.mitk.views.fiberbundleoperations";
-const std::string id_DataManager = "org.mitk.views.datamanager";
-using namespace berry;
-using namespace mitk;
-
-struct FboSelListener : ISelectionListener
-{
-
- berryObjectMacro(FboSelListener);
-
- FboSelListener(QmitkFiberBundleOperationsView* view)
- {
- m_View = view;
- }
-
- void DoSelectionChanged(ISelection::ConstPointer selection)
- {
- // save current selection in member variable
- m_View->m_CurrentSelection = selection.Cast();
-
- // do something with the selected items
- if(m_View->m_CurrentSelection)
- {
- bool foundFiberBundle = false;
- std::string classname = "FiberBundle";
-
- // iterate selection
- for (IStructuredSelection::iterator i = m_View->m_CurrentSelection->Begin();
- i != m_View->m_CurrentSelection->End(); ++i)
- {
-
- // extract datatree node
- if (mitk::DataNodeObject::Pointer nodeObj = i->Cast())
- {
- mitk::DataNode::Pointer node = nodeObj->GetDataNode();
- std::string fname = node->GetData()->GetNameOfClass();
- if(node->GetData() && classname.compare(node->GetData()->GetNameOfClass())==0)
- {
- foundFiberBundle = true;
- }
- }
- }
-
- if(foundFiberBundle)
- {
- m_View->m_Controls->m_CircleButton->setEnabled(true);
- m_View->m_Controls->m_PolygonButton->setEnabled(true);
- m_View->m_Controls->m_RectangleButton->setEnabled(true);
- }
- else{
- m_View->m_Controls->m_CircleButton->setEnabled(false);
- m_View->m_Controls->m_PolygonButton->setEnabled(false);
- m_View->m_Controls->m_RectangleButton->setEnabled(false);
- }
- }
- }
-
- void SelectionChanged(IWorkbenchPart::Pointer part, ISelection::ConstPointer selection)
- {
- // check, if selection comes from datamanager
- if (part)
- {
- QString partname(part->GetPartName().c_str());
- if(partname.compare("Datamanager")==0)
- {
-
- // apply selection
- DoSelectionChanged(selection);
-
- }
- }
- }
-
- QmitkFiberBundleOperationsView* m_View;
-};
-
-
-
-QmitkFiberBundleOperationsView::QmitkFiberBundleOperationsView()
-: QmitkFunctionality()
-, m_Controls( 0 )
-, m_MultiWidget( NULL )
-, m_EllipseCounter(0)
-, m_PolygonCounter(0)
-//, m_SelectedFBNodes( NULL )
-//, m_SelectedPFNodes(0)
-, m_UpsamplingFactor(5)
-{
-
-}
-
-// Destructor
-QmitkFiberBundleOperationsView::~QmitkFiberBundleOperationsView()
-{
-
-}
-
-
-void QmitkFiberBundleOperationsView::CreateQtPartControl( QWidget *parent )
-{
- // build up qt view, unless already done
- if ( !m_Controls )
- {
- // create GUI widgets from the Qt Designer's .ui file
- m_Controls = new Ui::QmitkFiberBundleOperationsViewControls;
- m_Controls->setupUi( parent );
- m_Controls->doExtractFibersButton->setDisabled(true);
- m_Controls->PFCompoANDButton->setDisabled(true);
- m_Controls->PFCompoORButton->setDisabled(true);
- m_Controls->PFCompoNOTButton->setDisabled(true);
- m_Controls->m_CircleButton->setEnabled(false);
- m_Controls->m_PolygonButton->setEnabled(false);
- m_Controls->m_RectangleButton->setEnabled(false);
- m_Controls->m_RectangleButton->setVisible(false);
-
- connect( m_Controls->doExtractFibersButton, SIGNAL(clicked()), this, SLOT(DoFiberExtraction()) );
- //connect( m_Controls->comboBox_fiberAlgo, SIGNAL(selected()), this, SLOT(handleAlgoSelection() );
- connect( m_Controls->m_CircleButton, SIGNAL( clicked() ), this, SLOT( ActionDrawEllipseTriggered() ) );
- connect( m_Controls->m_PolygonButton, SIGNAL( clicked() ), this, SLOT( ActionDrawPolygonTriggered() ) );
- connect(m_Controls->PFCompoANDButton, SIGNAL(clicked()), this, SLOT(generatePFCompo_AND()) );
- connect(m_Controls->PFCompoORButton, SIGNAL(clicked()), this, SLOT(generatePFCompo_OR()) );
- connect(m_Controls->PFCompoNOTButton, SIGNAL(clicked()), this, SLOT(generatePFCompo_NOT()) );
-
- connect(m_Controls->m_JoinBundles, SIGNAL(clicked()), this, SLOT(JoinBundles()) );
- connect(m_Controls->m_SubstractBundles, SIGNAL(clicked()), this, SLOT(SubstractBundles()) );
- connect(m_Controls->m_GenerateROIImage, SIGNAL(clicked()), this, SLOT(GenerateROIImage()) );
-
- connect( m_Controls->m_GenerationStartButton, SIGNAL(clicked()), this, SLOT(GenerationStart()) );
- }
-
- m_SelListener = berry::ISelectionListener::Pointer(new FboSelListener(this));
- this->GetSite()->GetWorkbenchWindow()->GetSelectionService()->AddPostSelectionListener(/*"org.mitk.views.datamanager",*/ m_SelListener);
- berry::ISelection::ConstPointer sel(
- this->GetSite()->GetWorkbenchWindow()->GetSelectionService()->GetSelection("org.mitk.views.datamanager"));
- m_CurrentSelection = sel.Cast();
- m_SelListener.Cast()->DoSelectionChanged(sel);
-}
-
-void QmitkFiberBundleOperationsView::GenerateROIImage(){
-
- if (m_Image.IsNull() || m_SelectedPF.empty())
- return;
-
- mitk::Image* image = const_cast(m_Image.GetPointer());
-
- MaskImage3DType::Pointer temp = MaskImage3DType::New();
- mitk::CastToItkImage(m_Image, temp);
-
- m_PlanarFigureImage = MaskImage3DType::New();
- m_PlanarFigureImage->SetSpacing( temp->GetSpacing() ); // Set the image spacing
- m_PlanarFigureImage->SetOrigin( temp->GetOrigin() ); // Set the image origin
- m_PlanarFigureImage->SetDirection( temp->GetDirection() ); // Set the image direction
- m_PlanarFigureImage->SetRegions( temp->GetLargestPossibleRegion() );
- m_PlanarFigureImage->Allocate();
- m_PlanarFigureImage->FillBuffer( 0 );
-
-
- for (int i=0; iInitializeByItk(m_PlanarFigureImage.GetPointer());
- tmpImage->SetVolume(m_PlanarFigureImage->GetBufferPointer());
- node->SetData(tmpImage);
- node->SetName("ROI Image");
- this->GetDefaultDataStorage()->Add(node);
-}
-
-void QmitkFiberBundleOperationsView::CompositeExtraction(mitk::DataNode::Pointer node, mitk::Image* image)
-{
- if (dynamic_cast(node.GetPointer()->GetData()) && !dynamic_cast(node.GetPointer()->GetData()))
- {
- m_PlanarFigure = dynamic_cast(node.GetPointer()->GetData());
- AccessFixedDimensionByItk_2(
- image,
- InternalReorientImagePlane, 3,
- m_PlanarFigure->GetGeometry(), -1);
-
-// itk::Image< unsigned char, 3 >::Pointer outimage = itk::Image< unsigned char, 3 >::New();
-
-// outimage->SetSpacing( m_PlanarFigure->GetGeometry()->GetSpacing()/m_UpsamplingFactor ); // Set the image spacing
-
-// mitk::Point3D origin = m_PlanarFigure->GetGeometry()->GetOrigin();
-// mitk::Point3D indexOrigin;
-// m_PlanarFigure->GetGeometry()->WorldToIndex(origin, indexOrigin);
-// indexOrigin[0] = indexOrigin[0] - .5 * (1.0-1.0/m_UpsamplingFactor);
-// indexOrigin[1] = indexOrigin[1] - .5 * (1.0-1.0/m_UpsamplingFactor);
-// indexOrigin[2] = indexOrigin[2] - .5 * (1.0-1.0/m_UpsamplingFactor);
-// mitk::Point3D newOrigin;
-// m_PlanarFigure->GetGeometry()->IndexToWorld(indexOrigin, newOrigin);
-
-// outimage->SetOrigin( newOrigin ); // Set the image origin
-// itk::Matrix matrix;
-// for (int i=0; i<3; i++)
-// for (int j=0; j<3; j++)
-// matrix[j][i] = m_PlanarFigure->GetGeometry()->GetMatrixColumn(i)[j]/m_PlanarFigure->GetGeometry()->GetSpacing().GetElement(i);
-// outimage->SetDirection( matrix ); // Set the image direction
-
-// itk::ImageRegion<3> upsampledRegion;
-// upsampledRegion.SetSize(0, m_PlanarFigure->GetGeometry()->GetParametricExtentInMM(0)/m_PlanarFigure->GetGeometry()->GetSpacing()[0]);
-// upsampledRegion.SetSize(1, m_PlanarFigure->GetGeometry()->GetParametricExtentInMM(1)/m_PlanarFigure->GetGeometry()->GetSpacing()[1]);
-// upsampledRegion.SetSize(2, 1);
-
-// typename itk::Image< unsigned char, 3 >::RegionType::SizeType upsampledSize = upsampledRegion.GetSize();
-// for (unsigned int n = 0; n < 2; n++)
-// {
-// upsampledSize[n] = upsampledSize[n] * m_UpsamplingFactor;
-// }
-// upsampledRegion.SetSize( upsampledSize );
-// outimage->SetRegions( upsampledRegion );
-
-// outimage->Allocate();
-
-// this->m_InternalImage = mitk::Image::New();
-// this->m_InternalImage->InitializeByItk( outimage.GetPointer() );
-// this->m_InternalImage->SetVolume( outimage->GetBufferPointer() );
-
- AccessFixedDimensionByItk_2(
- m_InternalImage,
- InternalCalculateMaskFromPlanarFigure,
- 3, 2, node->GetName() );
- }
-}
-
-template < typename TPixel, unsigned int VImageDimension >
- void QmitkFiberBundleOperationsView::InternalReorientImagePlane(
- const itk::Image< TPixel, VImageDimension > *image, mitk::Geometry3D* planegeo3D, int additionalIndex )
-{
-
- MITK_INFO << "InternalReorientImagePlane() start";
-
- typedef itk::Image< TPixel, VImageDimension > ImageType;
- typedef itk::Image< float, VImageDimension > FloatImageType;
-
- typedef itk::ResampleImageFilter ResamplerType;
- typename ResamplerType::Pointer resampler = ResamplerType::New();
-
- mitk::PlaneGeometry* planegeo = dynamic_cast(planegeo3D);
-
- float upsamp = m_UpsamplingFactor;
- float gausssigma = 0.5;
-
- // Spacing
- typename ResamplerType::SpacingType spacing = planegeo->GetSpacing();
- spacing[0] = image->GetSpacing()[0] / upsamp;
- spacing[1] = image->GetSpacing()[1] / upsamp;
- spacing[2] = image->GetSpacing()[2];
- resampler->SetOutputSpacing( spacing );
-
- // Size
- typename ResamplerType::SizeType size;
- size[0] = planegeo->GetParametricExtentInMM(0) / spacing[0];
- size[1] = planegeo->GetParametricExtentInMM(1) / spacing[1];
- size[2] = 1;
- resampler->SetSize( size );
-
- // Origin
- typename mitk::Point3D orig = planegeo->GetOrigin();
- typename mitk::Point3D corrorig;
- planegeo3D->WorldToIndex(orig,corrorig);
- corrorig[0] += 0.5/upsamp;
- corrorig[1] += 0.5/upsamp;
- corrorig[2] += 0;
- planegeo3D->IndexToWorld(corrorig,corrorig);
- resampler->SetOutputOrigin(corrorig );
-
- // Direction
- typename ResamplerType::DirectionType direction;
- typename mitk::AffineTransform3D::MatrixType matrix = planegeo->GetIndexToWorldTransform()->GetMatrix();
- for(int c=0; cSetOutputDirection( direction );
-
- // Gaussian interpolation
- if(gausssigma != 0)
- {
- double sigma[3];
- for( unsigned int d = 0; d < 3; d++ )
- {
- sigma[d] = gausssigma * image->GetSpacing()[d];
- }
- double alpha = 2.0;
-
- typedef itk::GaussianInterpolateImageFunction
- GaussianInterpolatorType;
-
- typename GaussianInterpolatorType::Pointer interpolator
- = GaussianInterpolatorType::New();
-
- interpolator->SetInputImage( image );
- interpolator->SetParameters( sigma, alpha );
-
- resampler->SetInterpolator( interpolator );
- }
- else
- {
- // typedef typename itk::BSplineInterpolateImageFunction
- // InterpolatorType;
- typedef typename itk::LinearInterpolateImageFunction InterpolatorType;
-
- typename InterpolatorType::Pointer interpolator
- = InterpolatorType::New();
-
- interpolator->SetInputImage( image );
-
- resampler->SetInterpolator( interpolator );
-
- }
-
- // Other resampling options
- resampler->SetInput( image );
- resampler->SetDefaultPixelValue(0);
-
- MITK_INFO << "Resampling requested image plane ... ";
- resampler->Update();
- MITK_INFO << " ... done";
-
- if(additionalIndex < 0)
- {
- this->m_InternalImage = mitk::Image::New();
- this->m_InternalImage->InitializeByItk( resampler->GetOutput() );
- this->m_InternalImage->SetVolume( resampler->GetOutput()->GetBufferPointer() );
- }
-}
-
-template < typename TPixel, unsigned int VImageDimension >
- void QmitkFiberBundleOperationsView::InternalCalculateMaskFromPlanarFigure(
- itk::Image< TPixel, VImageDimension > *image, unsigned int axis, std::string nodeName )
-{
-
- MITK_INFO << "InternalCalculateMaskFromPlanarFigure() start";
-
- typedef itk::Image< TPixel, VImageDimension > ImageType;
- typedef itk::CastImageFilter< ImageType, MaskImage3DType > CastFilterType;
-
- // Generate mask image as new image with same header as input image and
- // initialize with "1".
- MaskImage3DType::Pointer newMaskImage = MaskImage3DType::New();
- newMaskImage->SetSpacing( image->GetSpacing() ); // Set the image spacing
- newMaskImage->SetOrigin( image->GetOrigin() ); // Set the image origin
- newMaskImage->SetDirection( image->GetDirection() ); // Set the image direction
- newMaskImage->SetRegions( image->GetLargestPossibleRegion() );
- newMaskImage->Allocate();
- newMaskImage->FillBuffer( 1 );
-
- // Generate VTK polygon from (closed) PlanarFigure polyline
- // (The polyline points are shifted by -0.5 in z-direction to make sure
- // that the extrusion filter, which afterwards elevates all points by +0.5
- // in z-direction, creates a 3D object which is cut by the the plane z=0)
- const Geometry2D *planarFigureGeometry2D = m_PlanarFigure->GetGeometry2D();
- const PlanarFigure::PolyLineType planarFigurePolyline = m_PlanarFigure->GetPolyLine( 0 );
- const Geometry3D *imageGeometry3D = m_InternalImage->GetGeometry( 0 );
-
- vtkPolyData *polyline = vtkPolyData::New();
- polyline->Allocate( 1, 1 );
-
- // Determine x- and y-dimensions depending on principal axis
- int i0, i1;
- switch ( axis )
- {
- case 0:
- i0 = 1;
- i1 = 2;
- break;
-
- case 1:
- i0 = 0;
- i1 = 2;
- break;
-
- case 2:
- default:
- i0 = 0;
- i1 = 1;
- break;
- }
-
- // Create VTK polydata object of polyline contour
- vtkPoints *points = vtkPoints::New();
- PlanarFigure::PolyLineType::const_iterator it;
- std::vector indices;
-
- unsigned int numberOfPoints = 0;
-
- for ( it = planarFigurePolyline.begin();
- it != planarFigurePolyline.end();
- ++it )
- {
- Point3D point3D;
-
- // Convert 2D point back to the local index coordinates of the selected
- // image
- Point2D point2D = it->Point;
- planarFigureGeometry2D->WorldToIndex(point2D, point2D);
- point2D[0] -= 0.5/m_UpsamplingFactor;
- point2D[1] -= 0.5/m_UpsamplingFactor;
- planarFigureGeometry2D->IndexToWorld(point2D, point2D);
- planarFigureGeometry2D->Map( point2D, point3D );
-
- // Polygons (partially) outside of the image bounds can not be processed
- // further due to a bug in vtkPolyDataToImageStencil
- if ( !imageGeometry3D->IsInside( point3D ) )
- {
- float bounds[2] = {0,0};
- bounds[0] =
- this->m_InternalImage->GetLargestPossibleRegion().GetSize().GetElement(i0);
- bounds[1] =
- this->m_InternalImage->GetLargestPossibleRegion().GetSize().GetElement(i1);
-
- imageGeometry3D->WorldToIndex( point3D, point3D );
-
-// if (point3D[i0]<0)
-// point3D[i0] = 0.5;
-// else if (point3D[i0]>bounds[0])
-// point3D[i0] = bounds[0]-0.5;
-
-// if (point3D[i1]<0)
-// point3D[i1] = 0.5;
-// else if (point3D[i1]>bounds[1])
-// point3D[i1] = bounds[1]-0.5;
-
- if (point3D[i0]<0)
- point3D[i0] = 0.0;
- else if (point3D[i0]>bounds[0])
- point3D[i0] = bounds[0]-0.001;
-
- if (point3D[i1]<0)
- point3D[i1] = 0.0;
- else if (point3D[i1]>bounds[1])
- point3D[i1] = bounds[1]-0.001;
-
- points->InsertNextPoint( point3D[i0], point3D[i1], -0.5 );
- numberOfPoints++;
- }
- else
- {
- imageGeometry3D->WorldToIndex( point3D, point3D );
-
- // Add point to polyline array
- points->InsertNextPoint( point3D[i0], point3D[i1], -0.5 );
- numberOfPoints++;
- }
- }
- polyline->SetPoints( points );
- points->Delete();
-
- vtkIdType *ptIds = new vtkIdType[numberOfPoints];
- for ( vtkIdType i = 0; i < numberOfPoints; ++i )
- {
- ptIds[i] = i;
- }
- polyline->InsertNextCell( VTK_POLY_LINE, numberOfPoints, ptIds );
-
-
- // Extrude the generated contour polygon
- vtkLinearExtrusionFilter *extrudeFilter = vtkLinearExtrusionFilter::New();
- extrudeFilter->SetInput( polyline );
- extrudeFilter->SetScaleFactor( 1 );
- extrudeFilter->SetExtrusionTypeToNormalExtrusion();
- extrudeFilter->SetVector( 0.0, 0.0, 1.0 );
-
- // Make a stencil from the extruded polygon
- vtkPolyDataToImageStencil *polyDataToImageStencil = vtkPolyDataToImageStencil::New();
- polyDataToImageStencil->SetInput( extrudeFilter->GetOutput() );
-
-
-
- // Export from ITK to VTK (to use a VTK filter)
- typedef itk::VTKImageImport< MaskImage3DType > ImageImportType;
- typedef itk::VTKImageExport< MaskImage3DType > ImageExportType;
-
- typename ImageExportType::Pointer itkExporter = ImageExportType::New();
- itkExporter->SetInput( newMaskImage );
-
- vtkImageImport *vtkImporter = vtkImageImport::New();
- this->ConnectPipelines( itkExporter, vtkImporter );
- vtkImporter->Update();
-
-
- // Apply the generated image stencil to the input image
- vtkImageStencil *imageStencilFilter = vtkImageStencil::New();
- imageStencilFilter->SetInputConnection( vtkImporter->GetOutputPort() );
- imageStencilFilter->SetStencil( polyDataToImageStencil->GetOutput() );
- imageStencilFilter->ReverseStencilOff();
- imageStencilFilter->SetBackgroundValue( 0 );
- imageStencilFilter->Update();
-
-
- // Export from VTK back to ITK
- vtkImageExport *vtkExporter = vtkImageExport::New();
- vtkExporter->SetInputConnection( imageStencilFilter->GetOutputPort() );
- vtkExporter->Update();
-
- typename ImageImportType::Pointer itkImporter = ImageImportType::New();
- this->ConnectPipelines( vtkExporter, itkImporter );
- itkImporter->Update();
-
- // calculate cropping bounding box
- m_InternalImageMask3D = itkImporter->GetOutput();
- m_InternalImageMask3D->SetDirection(image->GetDirection());
-
- itk::ImageRegionConstIterator
- itmask(m_InternalImageMask3D, m_InternalImageMask3D->GetLargestPossibleRegion());
- itk::ImageRegionIterator
- itimage(image, image->GetLargestPossibleRegion());
-
- itmask = itmask.Begin();
- itimage = itimage.Begin();
-
- typename ImageType::SizeType lowersize = {{9999999999,9999999999,9999999999}};
- typename ImageType::SizeType uppersize = {{0,0,0}};
- while( !itmask.IsAtEnd() )
- {
- if(itmask.Get() == 0)
- {
- itimage.Set(0);
- }
- else
- {
- typename ImageType::IndexType index = itimage.GetIndex();
- typename ImageType::SizeType signedindex;
- signedindex[0] = index[0];
- signedindex[1] = index[1];
- signedindex[2] = index[2];
-
- lowersize[0] = signedindex[0] < lowersize[0] ? signedindex[0] : lowersize[0];
- lowersize[1] = signedindex[1] < lowersize[1] ? signedindex[1] : lowersize[1];
- lowersize[2] = signedindex[2] < lowersize[2] ? signedindex[2] : lowersize[2];
-
- uppersize[0] = signedindex[0] > uppersize[0] ? signedindex[0] : uppersize[0];
- uppersize[1] = signedindex[1] > uppersize[1] ? signedindex[1] : uppersize[1];
- uppersize[2] = signedindex[2] > uppersize[2] ? signedindex[2] : uppersize[2];
- }
-
- ++itmask;
- ++itimage;
- }
-
- typename ImageType::IndexType index;
- index[0] = lowersize[0];
- index[1] = lowersize[1];
- index[2] = lowersize[2];
-
- typename ImageType::SizeType size;
- size[0] = uppersize[0] - lowersize[0] + 1;
- size[1] = uppersize[1] - lowersize[1] + 1;
- size[2] = uppersize[2] - lowersize[2] + 1;
-
- itk::ImageRegion<3> cropRegion = itk::ImageRegion<3>(index, size);
-
- // crop internal mask
- typedef itk::RegionOfInterestImageFilter< MaskImage3DType, MaskImage3DType > ROIMaskFilterType;
- typename ROIMaskFilterType::Pointer roi2 = ROIMaskFilterType::New();
- roi2->SetRegionOfInterest(cropRegion);
- roi2->SetInput(m_InternalImageMask3D);
- roi2->Update();
- m_InternalImageMask3D = roi2->GetOutput();
-
- Image::Pointer tmpImage = Image::New();
- tmpImage->InitializeByItk(m_InternalImageMask3D.GetPointer());
- tmpImage->SetVolume(m_InternalImageMask3D->GetBufferPointer());
-
- Image::Pointer tmpImage2 = Image::New();
- tmpImage2->InitializeByItk(m_PlanarFigureImage.GetPointer());
- const Geometry3D *pfImageGeometry3D = tmpImage2->GetGeometry( 0 );
-
- const Geometry3D *intImageGeometry3D = tmpImage->GetGeometry( 0 );
-
- typedef itk::ImageRegionIteratorWithIndex IteratorType;
- IteratorType imageIterator (m_InternalImageMask3D, m_InternalImageMask3D->GetRequestedRegion());
- imageIterator.GoToBegin();
- while ( !imageIterator.IsAtEnd() )
- {
- unsigned char val = imageIterator.Value();
- if (val>0)
- {
- itk::Index<3> index = imageIterator.GetIndex();
- Point3D point;
- point[0] = index[0];
- point[1] = index[1];
- point[2] = index[2];
-
- intImageGeometry3D->IndexToWorld(point, point);
- pfImageGeometry3D->WorldToIndex(point, point);
-
- point[i0] += 0.5;
- point[i1] += 0.5;
-
- index[0] = point[0];
- index[1] = point[1];
- index[2] = point[2];
-
- m_PlanarFigureImage->SetPixel(index, 1);
- }
- ++imageIterator;
- }
-
- // Clean up VTK objects
- polyline->Delete();
- extrudeFilter->Delete();
- polyDataToImageStencil->Delete();
- vtkImporter->Delete();
- imageStencilFilter->Delete();
- //vtkExporter->Delete(); // TODO: crashes when outcommented; memory leak??
- delete[] ptIds;
-
-}
-
-void QmitkFiberBundleOperationsView::StdMultiWidgetAvailable (QmitkStdMultiWidget &stdMultiWidget)
-{
- m_MultiWidget = &stdMultiWidget;
-}
-
-
-void QmitkFiberBundleOperationsView::StdMultiWidgetNotAvailable()
-{
- m_MultiWidget = NULL;
-}
-
-/* OnSelectionChanged is registered to SelectionService, therefore no need to
- implement SelectionService Listener explicitly */
-
-void QmitkFiberBundleOperationsView::OnSelectionChanged( std::vector nodes )
-{
- if ( !this->IsVisible() )
- return;
-
- if (nodes.empty())
- {
- m_Controls->doExtractFibersButton->setDisabled(true);
- m_Controls->PFCompoANDButton->setDisabled(true);
- m_Controls->PFCompoORButton->setDisabled(true);
- m_Controls->PFCompoNOTButton->setDisabled(true);
- m_Controls->m_JoinBundles->setEnabled(false);
- m_Controls->m_SubstractBundles->setEnabled(false);
- m_Controls->m_GenerationStartButton->setEnabled(false);
- }
-
- //reset existing Vectors containing FiberBundles and PlanarFigures from a previous selection
- m_SelectedFB.clear();
- m_SelectedPF.clear();
- m_Image = NULL;
-
- for( std::vector::iterator it = nodes.begin(); it != nodes.end(); ++it )
- {
- mitk::DataNode::Pointer node = *it;
- if ( dynamic_cast(node->GetData()) )
- {
- m_SelectedFB.push_back(node);
- mitk::FiberBundle::Pointer bundle = dynamic_cast(node->GetData());
- QString numFibers;
- this->m_Controls->m_NumFibersLabel->setText(numFibers.setNum(bundle->GetNumTracts()));
- }
- else if (dynamic_cast(node->GetData()))
- m_SelectedPF.push_back(node);
- else if (dynamic_cast(node->GetData()))
- m_Image = dynamic_cast(node->GetData());
- }
-
- if (m_SelectedPF.size() >= 1 && m_Image.IsNotNull())
- m_Controls->m_GenerateROIImage->setEnabled(true);
- else
- m_Controls->m_GenerateROIImage->setEnabled(false);
-
- if (m_SelectedPF.size() == 1)
- {
- m_Controls->PFCompoANDButton->setDisabled(true);
- m_Controls->PFCompoORButton->setDisabled(true);
- m_Controls->PFCompoNOTButton->setEnabled(true);
- }
- else if (m_SelectedPF.size() > 1)
- {
- m_Controls->PFCompoANDButton->setEnabled(true);
- m_Controls->PFCompoORButton->setEnabled(true);
- m_Controls->PFCompoNOTButton->setDisabled(true);
- }
-
- if (m_SelectedFB.size() == 1 && m_SelectedPF.size() == 1)
- m_Controls->doExtractFibersButton->setEnabled(true);
-
- if (m_SelectedFB.size() == 2)
- {
- m_Controls->m_JoinBundles->setEnabled(true);
- m_Controls->m_SubstractBundles->setEnabled(true);
- }
- else
- {
- m_Controls->m_JoinBundles->setEnabled(false);
- m_Controls->m_SubstractBundles->setEnabled(false);
- }
-
- if (m_SelectedFB.size()>0)
- m_Controls->m_GenerationStartButton->setEnabled(true);
- else
- m_Controls->m_GenerationStartButton->setEnabled(false);
-}
-
-
-void QmitkFiberBundleOperationsView::ActionDrawPolygonTriggered()
-{
- // bool checked = m_Controls->m_PolygonButton->isChecked();
- // if(!this->AssertDrawingIsPossible(checked))
- // return;
-
- mitk::PlanarPolygon::Pointer figure = mitk::PlanarPolygon::New();
- figure->ClosedOn();
- this->AddFigureToDataStorage(figure, QString("Polygon%1").arg(++m_PolygonCounter));
-
- MITK_INFO << "PlanarPolygon created ...";
-
- mitk::DataStorage::SetOfObjects::ConstPointer _NodeSet = this->GetDefaultDataStorage()->GetAll();
- mitk::DataNode* node = 0;
- mitk::PlanarFigureInteractor::Pointer figureInteractor = 0;
- mitk::PlanarFigure* figureP = 0;
-
- for(mitk::DataStorage::SetOfObjects::ConstIterator it=_NodeSet->Begin(); it!=_NodeSet->End()
- ; it++)
- {
- node = const_cast(it->Value().GetPointer());
- figureP = dynamic_cast(node->GetData());
-
- if(figureP)
- {
- figureInteractor = dynamic_cast(node->GetInteractor());
-
- if(figureInteractor.IsNull())
- figureInteractor = mitk::PlanarFigureInteractor::New("PlanarFigureInteractor", node);
-
- mitk::GlobalInteraction::GetInstance()->AddInteractor(figureInteractor);
- }
- }
-
-}
-
-
-void QmitkFiberBundleOperationsView::ActionDrawEllipseTriggered()
-{
- //bool checked = m_Controls->m_CircleButton->isChecked();
- //if(!this->AssertDrawingIsPossible(checked))
- // return;
-
- mitk::PlanarCircle::Pointer figure = mitk::PlanarCircle::New();
- this->AddFigureToDataStorage(figure, QString("Circle%1").arg(++m_EllipseCounter));
-
- this->GetDataStorage()->Modified();
- MITK_INFO << "PlanarCircle created ...";
-
- //call
-
- mitk::DataStorage::SetOfObjects::ConstPointer _NodeSet = this->GetDefaultDataStorage()->GetAll();
- mitk::DataNode* node = 0;
- mitk::PlanarFigureInteractor::Pointer figureInteractor = 0;
- mitk::PlanarFigure* figureP = 0;
-
- for(mitk::DataStorage::SetOfObjects::ConstIterator it=_NodeSet->Begin(); it!=_NodeSet->End()
- ; it++)
- {
- node = const_cast(it->Value().GetPointer());
- figureP = dynamic_cast(node->GetData());
-
- if(figureP)
- {
- figureInteractor = dynamic_cast(node->GetInteractor());
-
- if(figureInteractor.IsNull())
- figureInteractor = mitk::PlanarFigureInteractor::New("PlanarFigureInteractor", node);
-
- mitk::GlobalInteraction::GetInstance()->AddInteractor(figureInteractor);
- }
- }
-
-
-
-}
-
-void QmitkFiberBundleOperationsView::Activated()
-{
-
- MITK_INFO << "FB OPerations ACTIVATED()";
- /*
-
- mitk::DataStorage::SetOfObjects::ConstPointer _NodeSet = this->GetDefaultDataStorage()->GetAll();
- mitk::DataNode* node = 0;
- mitk::PlanarFigureInteractor::Pointer figureInteractor = 0;
- mitk::PlanarFigure* figure = 0;
-
- for(mitk::DataStorage::SetOfObjects::ConstIterator it=_NodeSet->Begin(); it!=_NodeSet->End()
- ; it++)
- {
- node = const_cast(it->Value().GetPointer());
- figure = dynamic_cast(node->GetData());
-
- if(figure)
- {
- figureInteractor = dynamic_cast(node->GetInteractor());
-
- if(figureInteractor.IsNull())
- figureInteractor = mitk::PlanarFigureInteractor::New("PlanarFigureInteractor", node);
-
- mitk::GlobalInteraction::GetInstance()->AddInteractor(figureInteractor);
- }
- }
-
- */
-
-
-}
-
-void QmitkFiberBundleOperationsView::AddFigureToDataStorage(mitk::PlanarFigure* figure, const QString& name,
- const char *propertyKey, mitk::BaseProperty *property )
-{
- // initialize figure's geometry with empty geometry
- mitk::PlaneGeometry::Pointer emptygeometry = mitk::PlaneGeometry::New();
- figure->SetGeometry2D( emptygeometry );
-
- //set desired data to DataNode where Planarfigure is stored
- mitk::DataNode::Pointer newNode = mitk::DataNode::New();
- newNode->SetName(name.toStdString());
- newNode->SetData(figure);
-
- newNode->AddProperty( "planarfigure.default.line.color", mitk::ColorProperty::New(1.0,0.0,0.0));
- newNode->AddProperty( "planarfigure.line.width", mitk::FloatProperty::New(2.0));
- newNode->AddProperty( "planarfigure.drawshadow", mitk::BoolProperty::New(true));
-
-
-
-
-
-
- newNode->AddProperty( "selected", mitk::BoolProperty::New(true) );
- newNode->AddProperty( "planarfigure.ishovering", mitk::BoolProperty::New(true) );
- newNode->AddProperty( "planarfigure.drawoutline", mitk::BoolProperty::New(true) );
- newNode->AddProperty( "planarfigure.drawquantities", mitk::BoolProperty::New(false) );
- newNode->AddProperty( "planarfigure.drawshadow", mitk::BoolProperty::New(true) );
-
- newNode->AddProperty( "planarfigure.line.width", mitk::FloatProperty::New(3.0) );
- newNode->AddProperty( "planarfigure.shadow.widthmodifier", mitk::FloatProperty::New(2.0) );
- newNode->AddProperty( "planarfigure.outline.width", mitk::FloatProperty::New(2.0) );
- newNode->AddProperty( "planarfigure.helperline.width", mitk::FloatProperty::New(2.0) );
-
-// PlanarFigureControlPointStyleProperty::Pointer styleProperty =
-// dynamic_cast< PlanarFigureControlPointStyleProperty* >( node->GetProperty( "planarfigure.controlpointshape" ) );
-// if ( styleProperty.IsNotNull() )
-// {
-// m_ControlPointShape = styleProperty->GetShape();
-// }
-
- newNode->AddProperty( "planarfigure.default.line.color", mitk::ColorProperty::New(1.0,1.0,1.0) );
- newNode->AddProperty( "planarfigure.default.line.opacity", mitk::FloatProperty::New(2.0) );
- newNode->AddProperty( "planarfigure.default.outline.color", mitk::ColorProperty::New(1.0,0.0,0.0) );
- newNode->AddProperty( "planarfigure.default.outline.opacity", mitk::FloatProperty::New(2.0) );
- newNode->AddProperty( "planarfigure.default.helperline.color", mitk::ColorProperty::New(1.0,0.0,0.0) );
- newNode->AddProperty( "planarfigure.default.helperline.opacity", mitk::FloatProperty::New(2.0) );
- newNode->AddProperty( "planarfigure.default.markerline.color", mitk::ColorProperty::New(0.0,0.0,0.0) );
- newNode->AddProperty( "planarfigure.default.markerline.opacity", mitk::FloatProperty::New(2.0) );
- newNode->AddProperty( "planarfigure.default.marker.color", mitk::ColorProperty::New(1.0,1.0,1.0) );
- newNode->AddProperty( "planarfigure.default.marker.opacity",mitk::FloatProperty::New(2.0) );
-
- newNode->AddProperty( "planarfigure.hover.line.color", mitk::ColorProperty::New(1.0,0.0,0.0) );
- newNode->AddProperty( "planarfigure.hover.line.opacity", mitk::FloatProperty::New(2.0) );
- newNode->AddProperty( "planarfigure.hover.outline.color", mitk::ColorProperty::New(1.0,0.0,0.0) );
- newNode->AddProperty( "planarfigure.hover.outline.opacity", mitk::FloatProperty::New(2.0) );
- newNode->AddProperty( "planarfigure.hover.helperline.color", mitk::ColorProperty::New(1.0,0.0,0.0) );
- newNode->AddProperty( "planarfigure.hover.helperline.opacity", mitk::FloatProperty::New(2.0) );
- newNode->AddProperty( "planarfigure.hover.markerline.color", mitk::ColorProperty::New(1.0,0.0,0.0) );
- newNode->AddProperty( "planarfigure.hover.markerline.opacity", mitk::FloatProperty::New(2.0) );
- newNode->AddProperty( "planarfigure.hover.marker.color", mitk::ColorProperty::New(1.0,0.0,0.0) );
- newNode->AddProperty( "planarfigure.hover.marker.opacity", mitk::FloatProperty::New(2.0) );
-
- newNode->AddProperty( "planarfigure.selected.line.color", mitk::ColorProperty::New(1.0,0.0,0.0) );
- newNode->AddProperty( "planarfigure.selected.line.opacity",mitk::FloatProperty::New(2.0) );
- newNode->AddProperty( "planarfigure.selected.outline.color", mitk::ColorProperty::New(1.0,0.0,0.0) );
- newNode->AddProperty( "planarfigure.selected.outline.opacity", mitk::FloatProperty::New(2.0));
- newNode->AddProperty( "planarfigure.selected.helperline.color", mitk::ColorProperty::New(1.0,0.0,0.0) );
- newNode->AddProperty( "planarfigure.selected.helperline.opacity",mitk::FloatProperty::New(2.0) );
- newNode->AddProperty( "planarfigure.selected.markerline.color", mitk::ColorProperty::New(1.0,0.0,0.0) );
- newNode->AddProperty( "planarfigure.selected.markerline.opacity", mitk::FloatProperty::New(2.0) );
- newNode->AddProperty( "planarfigure.selected.marker.color", mitk::ColorProperty::New(1.0,0.0,0.0) );
- newNode->AddProperty( "planarfigure.selected.marker.opacity",mitk::FloatProperty::New(2.0));
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- // Add custom property, if available
- //if ( (propertyKey != NULL) && (property != NULL) )
- //{
- // newNode->AddProperty( propertyKey, property );
- //}
-
- //get current selected DataNode -which should be a FiberBundle- and set PlanarFigure as child
-
- //this->GetDataStorage()->GetNodes()
-
-
-
- // mitk::FiberBundle::Pointer selectedFBNode = m_SelectedFBNodes.at(0);
-
- // figure drawn on the topmost layer / image
- this->GetDataStorage()->Add(newNode );
-
- std::vector selectedNodes = GetDataManagerSelection();
- for(unsigned int i = 0; i < selectedNodes.size(); i++)
- {
- selectedNodes[i]->SetSelected(false);
- }
- //selectedNodes = m_SelectedPlanarFigureNodes->GetNodes();
- /*for(unsigned int i = 0; i < selectedNodes.size(); i++)
- {
- selectedNodes[i]->SetSelected(false);
- }
- */
- newNode->SetSelected(true);
-
- //Select(newNode);
-}
-
-void QmitkFiberBundleOperationsView::DoFiberExtraction()
-{
- mitk::FiberBundle::Pointer selFB = dynamic_cast(m_SelectedFB.at(0)->GetData());
- mitk::PlanarFigure::Pointer selPF = dynamic_cast (m_SelectedPF.at(0)->GetData());
-
-
- std::vector extFBset = selFB->extractFibersByPF(selPF);
-
-
- //MITK_INFO << "returned vector in FBOperationsView: " << extFBset.size();
- // for(std::vector::iterator dispIt = extFBset.begin(); dispIt != extFBset.end(); dispIt++)
- // {
- // MITK_INFO << "vector DTI ID: " << *dispIt;
- //
- // }
-
-
- mitk::FiberBundle::Pointer extFB = selFB->extractFibersById(extFBset);
- MITK_INFO << " Number Of Tracts in sourceFiberBundle: " << selFB->GetNumTracts();
- MITK_INFO << " Number Of Tracts in extractedFiberBundle: " << extFB->GetNumTracts();
-
- mitk::DataNode::Pointer fbNode;
- fbNode = mitk::DataNode::New();
- fbNode->SetData(extFB);
- fbNode->SetName("extGroupFinberBundle");
- fbNode->SetVisibility(true);
- GetDataStorage()->Add(fbNode);
-
-
-
-}
-
-void QmitkFiberBundleOperationsView::generatePFCompo_AND()
-{
- mitk::PlanarFigureComposite::Pointer PFCAnd = mitk::PlanarFigureComposite::New();
-
- mitk::PlaneGeometry* currentGeometry2D = dynamic_cast( const_cast(GetActiveStdMultiWidget()->GetRenderWindow1()->GetRenderer()->GetCurrentWorldGeometry2D()));
- PFCAnd->SetGeometry2D(currentGeometry2D);
-
- PFCAnd->setOperationType(mitk::PFCOMPOSITION_AND_OPERATION);
-
-
- for( std::vector::iterator it = m_SelectedPF.begin();
- it != m_SelectedPF.end(); ++it )
- {
-
- mitk::DataNode::Pointer nodePF = *it;
- mitk::PlanarFigure::Pointer tmpPF = dynamic_cast( nodePF->GetData() );
- PFCAnd->addPlanarFigure( tmpPF );
- PFCAnd->addDataNode( nodePF );
- PFCAnd->setDisplayName("AND_COMPO");
- // MITK_INFO << "PFCAND(): added to AND PF" << nodePF->GetName();
-
- }
-
- debugPFComposition(PFCAnd, 0);
-
-
- this->addPFCompositionToDataStorage(PFCAnd, NULL /*parent*/);
-
-}
-
-
-void QmitkFiberBundleOperationsView::debugPFComposition(mitk::PlanarFigureComposite::Pointer pfc, int itLevelStatus)
-{
- int myLevel = itLevelStatus;
- if (myLevel == 0)
- {
- MITK_INFO << "############################################## " ;
- MITK_INFO << "######### DEBUG START ############## " ;
- MITK_INFO << "############################################## " ;
- }
- MITK_INFO << "############################################## " ;
- MITK_INFO << "Name: " << pfc->getDisplayName();
- MITK_INFO << "iterationLevel: " << myLevel;
- MITK_INFO << "CompositionType: " << pfc->getOperationType();
- MITK_INFO << "Number of children: " << pfc->getNumberOfChildren();
-
-
- //iterate through pfcs children
- for(int i=0; igetNumberOfChildren(); ++i)
- {
-
- mitk::PlanarFigure::Pointer tmpPFchild = pfc->getChildAt(i);
- mitk::DataNode::Pointer savedPFchildNode = pfc->getDataNodeAt(i);
-
- if (tmpPFchild == savedPFchildNode->GetData())
- {
- MITK_INFO << "[OK] Pointers point to same Data...";
-
- }else{
- MITK_INFO << "Pointers differ in equation";
- }
-
- MITK_INFO << "Level: " << myLevel << " ChildNr.: " << i ;
-
- mitk::PlanarFigureComposite::Pointer pfcompcastNode= dynamic_cast(savedPFchildNode->GetData());
- mitk::PlanarFigureComposite::Pointer pfcompcast= dynamic_cast(tmpPFchild.GetPointer());
- if( !pfcompcast.IsNull() )
- { // we have a composite as child
-
- if ( pfcompcastNode.IsNull() )
- {
- MITK_INFO << "************** NODE DIFFER FROM PFC...ERROR! ***************";
- } else {
- MITK_INFO << "[OK]...node contains right type ";
- }
-
-
-
- itLevelStatus++;
- MITK_INFO << "child is PFC...debug this PFC";
- debugPFComposition(pfcompcast, itLevelStatus);
-
- } else {
-
-
- // we have a planarFigure as child
- // figure out which type
- mitk::PlanarCircle::Pointer circleName = mitk::PlanarCircle::New();
- mitk::PlanarRectangle::Pointer rectName = mitk::PlanarRectangle::New();
- mitk::PlanarPolygon::Pointer polyName = mitk::PlanarPolygon::New();
-
-
- if (tmpPFchild->GetNameOfClass() == circleName->GetNameOfClass() )
- {
- MITK_INFO << "a circle child of " << pfc->getDisplayName() ;
-
- } else if (tmpPFchild->GetNameOfClass() == rectName->GetNameOfClass() ){
-
- MITK_INFO << "a rectangle child of " << pfc->getDisplayName() ;
-
- } else if (tmpPFchild->GetNameOfClass() == polyName->GetNameOfClass() ) {
-
- MITK_INFO << "a polygon child of " << pfc->getDisplayName() ;
- }
-
- MITK_INFO << "....................................................... " ;
-
-
-
-
- }
-
- } //end for
- if (myLevel == 0)
- {
- MITK_INFO << "############################################## " ;
- MITK_INFO << "######### DEBUG END ############## " ;
- MITK_INFO << "############################################## " ;
- }
-
-
-
-}
-
-void QmitkFiberBundleOperationsView::generatePFCompo_OR()
-{
- mitk::PlanarFigureComposite::Pointer PFCOr = mitk::PlanarFigureComposite::New();
- mitk::PlaneGeometry* currentGeometry2D = dynamic_cast( const_cast(GetActiveStdMultiWidget()->GetRenderWindow1()->GetRenderer()->GetCurrentWorldGeometry2D()));
- PFCOr->SetGeometry2D(currentGeometry2D);
- PFCOr->setOperationType(mitk::PFCOMPOSITION_OR_OPERATION);
-
-
- for( std::vector::iterator it = m_SelectedPF.begin();
- it != m_SelectedPF.end(); ++it )
- {
-
- mitk::DataNode::Pointer nodePF = *it;
- mitk::PlanarFigure::Pointer tmpPF = dynamic_cast( nodePF->GetData() );
- PFCOr->addPlanarFigure( tmpPF );
- PFCOr->addDataNode( nodePF );
- PFCOr->setDisplayName("OR_COMPO");
- // MITK_INFO << "PFCAND(): added to AND PF" << nodePF->GetName();
-
- }
-
- debugPFComposition(PFCOr, 0);
-
-
- this->addPFCompositionToDataStorage(PFCOr, NULL /*parent*/);
-
-}
-
-void QmitkFiberBundleOperationsView::generatePFCompo_NOT()
-{
- mitk::PlanarFigureComposite::Pointer PFCNot = mitk::PlanarFigureComposite::New();
- mitk::PlaneGeometry* currentGeometry2D = dynamic_cast( const_cast(GetActiveStdMultiWidget()->GetRenderWindow1()->GetRenderer()->GetCurrentWorldGeometry2D()));
- PFCNot->SetGeometry2D(currentGeometry2D);
- PFCNot->setOperationType(mitk::PFCOMPOSITION_NOT_OPERATION);
-
-
- for( std::vector::iterator it = m_SelectedPF.begin();
- it != m_SelectedPF.end(); ++it )
- {
-
- mitk::DataNode::Pointer nodePF = *it;
- mitk::PlanarFigure::Pointer tmpPF = dynamic_cast( nodePF->GetData() );
- PFCNot->addPlanarFigure( tmpPF );
- PFCNot->addDataNode( nodePF );
- PFCNot->setDisplayName("NOT_COMPO");
- // MITK_INFO << "PFCAND(): added to AND PF" << nodePF->GetName();
-
- }
-
- debugPFComposition(PFCNot, 0);
-
-
- this->addPFCompositionToDataStorage(PFCNot, NULL /*parent*/);
-
-}
-
-void QmitkFiberBundleOperationsView::addPFCompositionToDataStorage(mitk::PlanarFigureComposite::Pointer pfcomp, mitk::DataNode::Pointer parentDataNode )
-{
-
- //a new planarFigureComposition arrived
- //convert it into a dataNode
- mitk::DataNode::Pointer newPFCNode;
- newPFCNode = mitk::DataNode::New();
- newPFCNode->SetName( pfcomp->getDisplayName() );
- //MITK_INFO << "PFComp Name: " << pfcomp->getDisplayName() << " newPFCNodeName: " << newPFCNode->GetName();
- newPFCNode->SetData(pfcomp);
- newPFCNode->SetVisibility(true);
-
- switch (pfcomp->getOperationType()) {
- case 0:
- {
- // AND PLANARFIGURECOMPOSITE
- // newPFCNode->SetName("AND_PFCombo");
-
- if (!parentDataNode.IsNull()) {
- MITK_INFO << "adding " << newPFCNode->GetName() << " to " << parentDataNode->GetName() ;
- GetDataStorage()->Add(newPFCNode, parentDataNode);
-
- } else {
- MITK_INFO << "adding " << newPFCNode->GetName();
- GetDataStorage()->Add(newPFCNode);
-
- }
-
-
- //iterate through its childs
-
- for(int i=0; igetNumberOfChildren(); ++i)
- {
- mitk::PlanarFigure::Pointer tmpPFchild = pfcomp->getChildAt(i);
- mitk::DataNode::Pointer savedPFchildNode = pfcomp->getDataNodeAt(i);
-
- mitk::PlanarFigureComposite::Pointer pfcompcast= dynamic_cast(tmpPFchild.GetPointer());
- if ( !pfcompcast.IsNull() )
- { // child is of type planar Figure composite
- // make new node of the child, cuz later the child has to be removed of its old position in datamanager
- // feed new dataNode with information of the savedDataNode, which is gonna be removed soon
- mitk::DataNode::Pointer newChildPFCNode;
- newChildPFCNode = mitk::DataNode::New();
- newChildPFCNode->SetData(tmpPFchild);
- newChildPFCNode->SetName( savedPFchildNode->GetName() );
- pfcompcast->setDisplayName( savedPFchildNode->GetName() ); //name might be changed in DataManager by user
-
- //update inside vector the dataNodePointer
- pfcomp->replaceDataNodeAt(i, newChildPFCNode);
-
- addPFCompositionToDataStorage(pfcompcast, newPFCNode); //the current PFCNode becomes the childs parent
-
-
- // remove savedNode here, cuz otherwise its children will change their position in the dataNodeManager
- // without having its parent anymore
- //GetDataStorage()->Remove(savedPFchildNode);
-
- if ( GetDataStorage()->Exists(savedPFchildNode)) {
- MITK_INFO << savedPFchildNode->GetName() << " exists in DS...trying to remove it";
-
- }else{
- MITK_INFO << "[ERROR] does NOT exist, but can I read its Name? " << savedPFchildNode->GetName();
-
- }
- // remove old child position in dataStorage
- GetDataStorage()->Remove(savedPFchildNode);
-
-
- if ( GetDataStorage()->Exists(savedPFchildNode)) {
- MITK_INFO << savedPFchildNode->GetName() << " still exists";
- }
-
-
- } else {
-
- // child is not of type PlanarFigureComposite, so its one of the planarFigures
- // create new dataNode containing the data of the old dataNode, but position in dataManager will be
- // modified cuz we re setting a (new) parent.
- mitk::DataNode::Pointer newPFchildNode = mitk::DataNode::New();
- newPFchildNode->SetName(savedPFchildNode->GetName() );
- newPFchildNode->SetData(tmpPFchild);
- newPFchildNode->SetVisibility(true);
-
- // replace the dataNode in PFComp DataNodeVector
- pfcomp->replaceDataNodeAt(i, newPFchildNode);
-
-
- if ( GetDataStorage()->Exists(savedPFchildNode)) {
- MITK_INFO << savedPFchildNode->GetName() << " exists in DS...trying to remove it";
-
- }else{
- MITK_INFO << "[ERROR] does NOT exist, but can I read its Name? " << savedPFchildNode->GetName();
-
- }
- // remove old child position in dataStorage
- GetDataStorage()->Remove(savedPFchildNode);
-
-
- if ( GetDataStorage()->Exists(savedPFchildNode)) {
- MITK_INFO << savedPFchildNode->GetName() << " still exists";
- }
-
- MITK_INFO << "adding " << newPFchildNode->GetName() << " to " << newPFCNode->GetName();
- //add new child to datamanager with its new position as child of newPFCNode parent
- GetDataStorage()->Add(newPFchildNode, newPFCNode);
-
- }
-
-
-
-
- }
- GetDataStorage()->Modified();
-
-
-
-
- break;
- }
- case 1:
- {
- // AND PLANARFIGURECOMPOSITE
- // newPFCNode->SetName("AND_PFCombo");
-
- if (!parentDataNode.IsNull()) {
- MITK_INFO << "adding " << newPFCNode->GetName() << " to " << parentDataNode->GetName() ;
- GetDataStorage()->Add(newPFCNode, parentDataNode);
-
- } else {
- MITK_INFO << "adding " << newPFCNode->GetName();
- GetDataStorage()->Add(newPFCNode);
-
- }
-
-
- //iterate through its childs
-
- for(int i=0; igetNumberOfChildren(); ++i)
- {
- mitk::PlanarFigure::Pointer tmpPFchild = pfcomp->getChildAt(i);
- mitk::DataNode::Pointer savedPFchildNode = pfcomp->getDataNodeAt(i);
-
- mitk::PlanarFigureComposite::Pointer pfcompcast= dynamic_cast(tmpPFchild.GetPointer());
- if ( !pfcompcast.IsNull() )
- { // child is of type planar Figure composite
- // make new node of the child, cuz later the child has to be removed of its old position in datamanager
- // feed new dataNode with information of the savedDataNode, which is gonna be removed soon
- mitk::DataNode::Pointer newChildPFCNode;
- newChildPFCNode = mitk::DataNode::New();
- newChildPFCNode->SetData(tmpPFchild);
- newChildPFCNode->SetName( savedPFchildNode->GetName() );
- pfcompcast->setDisplayName( savedPFchildNode->GetName() ); //name might be changed in DataManager by user
-
- //update inside vector the dataNodePointer
- pfcomp->replaceDataNodeAt(i, newChildPFCNode);
-
- addPFCompositionToDataStorage(pfcompcast, newPFCNode); //the current PFCNode becomes the childs parent
-
-
- // remove savedNode here, cuz otherwise its children will change their position in the dataNodeManager
- // without having its parent anymore
- //GetDataStorage()->Remove(savedPFchildNode);
-
- if ( GetDataStorage()->Exists(savedPFchildNode)) {
- MITK_INFO << savedPFchildNode->GetName() << " exists in DS...trying to remove it";
-
- }else{
- MITK_INFO << "[ERROR] does NOT exist, but can I read its Name? " << savedPFchildNode->GetName();
-
- }
- // remove old child position in dataStorage
- GetDataStorage()->Remove(savedPFchildNode);
-
-
- if ( GetDataStorage()->Exists(savedPFchildNode)) {
- MITK_INFO << savedPFchildNode->GetName() << " still exists";
- }
-
-
- } else {
-
- // child is not of type PlanarFigureComposite, so its one of the planarFigures
- // create new dataNode containing the data of the old dataNode, but position in dataManager will be
- // modified cuz we re setting a (new) parent.
- mitk::DataNode::Pointer newPFchildNode = mitk::DataNode::New();
- newPFchildNode->SetName(savedPFchildNode->GetName() );
- newPFchildNode->SetData(tmpPFchild);
- newPFchildNode->SetVisibility(true);
-
- // replace the dataNode in PFComp DataNodeVector
- pfcomp->replaceDataNodeAt(i, newPFchildNode);
-
-
- if ( GetDataStorage()->Exists(savedPFchildNode)) {
- MITK_INFO << savedPFchildNode->GetName() << " exists in DS...trying to remove it";
-
- }else{
- MITK_INFO << "[ERROR] does NOT exist, but can I read its Name? " << savedPFchildNode->GetName();
-
- }
- // remove old child position in dataStorage
- GetDataStorage()->Remove(savedPFchildNode);
-
-
- if ( GetDataStorage()->Exists(savedPFchildNode)) {
- MITK_INFO << savedPFchildNode->GetName() << " still exists";
- }
-
- MITK_INFO << "adding " << newPFchildNode->GetName() << " to " << newPFCNode->GetName();
- //add new child to datamanager with its new position as child of newPFCNode parent
- GetDataStorage()->Add(newPFchildNode, newPFCNode);
-
- }
-
-
-
-
- }
- GetDataStorage()->Modified();
-
-
-
-
- break;
-
- }
- case 2:
- {
- // AND PLANARFIGURECOMPOSITE
- // newPFCNode->SetName("AND_PFCombo");
-
- if (!parentDataNode.IsNull()) {
- MITK_INFO << "adding " << newPFCNode->GetName() << " to " << parentDataNode->GetName() ;
- GetDataStorage()->Add(newPFCNode, parentDataNode);
-
- } else {
- MITK_INFO << "adding " << newPFCNode->GetName();
- GetDataStorage()->Add(newPFCNode);
-
- }
-
-
- //iterate through its childs
-
- for(int i=0; igetNumberOfChildren(); ++i)
- {
- mitk::PlanarFigure::Pointer tmpPFchild = pfcomp->getChildAt(i);
- mitk::DataNode::Pointer savedPFchildNode = pfcomp->getDataNodeAt(i);
-
- mitk::PlanarFigureComposite::Pointer pfcompcast= dynamic_cast(tmpPFchild.GetPointer());
- if ( !pfcompcast.IsNull() )
- { // child is of type planar Figure composite
- // makeRemoveBundle new node of the child, cuz later the child has to be removed of its old position in datamanager
- // feed new dataNode with information of the savedDataNode, which is gonna be removed soon
- mitk::DataNode::Pointer newChildPFCNode;
- newChildPFCNode = mitk::DataNode::New();
- newChildPFCNode->SetData(tmpPFchild);
- newChildPFCNode->SetName( savedPFchildNode->GetName() );
- pfcompcast->setDisplayName( savedPFchildNode->GetName() ); //name might be changed in DataManager by user
-
- //update inside vector the dataNodePointer
- pfcomp->replaceDataNodeAt(i, newChildPFCNode);
-
- addPFCompositionToDataStorage(pfcompcast, newPFCNode); //the current PFCNode becomes the childs parent
-
-
- // remove savedNode here, cuz otherwise its children will change their position in the dataNodeManager
- // without having its parent anymore
- //GetDataStorage()->Remove(savedPFchildNode);
-
- if ( GetDataStorage()->Exists(savedPFchildNode)) {
- MITK_INFO << savedPFchildNode->GetName() << " exists in DS...trying to remove it";
-
- }else{
- MITK_INFO << "[ERROR] does NOT exist, but can I read its Name? " << savedPFchildNode->GetName();
- }
- // remove old child position in dataStorage
- GetDataStorage()->Remove(savedPFchildNode);
-
-
- if ( GetDataStorage()->Exists(savedPFchildNode)) {
- MITK_INFO << savedPFchildNode->GetName() << " still exists";
- }
-
-
- } else {
-
- // child is not of type PlanarFigureComposite, so its one of the planarFigures
- // create new dataNode containing the data of the old dataNode, but position in dataManager will be
- // modified cuz we re setting a (new) parent.
- mitk::DataNode::Pointer newPFchildNode = mitk::DataNode::New();
- newPFchildNode->SetName(savedPFchildNode->GetName() );
- newPFchildNode->SetData(tmpPFchild);
- newPFchildNode->SetVisibility(true);
-
- // replace the dataNode in PFComp DataNodeVector
- pfcomp->replaceDataNodeAt(i, newPFchildNode);
-
-
- if ( GetDataStorage()->Exists(savedPFchildNode)) {
- MITK_INFO << savedPFchildNode->GetName() << " exists in DS...trying to remove it";
-
- }else{
- MITK_INFO << "[ERROR] does NOT exist, but can I read its Name? " << savedPFchildNode->GetName();
-
- }
- // remove old child position in dataStorage
- GetDataStorage()->Remove(savedPFchildNode);
-
-
- if ( GetDataStorage()->Exists(savedPFchildNode)) {
- MITK_INFO << savedPFchildNode->GetName() << " still exists";
- }
-
- MITK_INFO << "adding " << newPFchildNode->GetName() << " to " << newPFCNode->GetName();
- //add new child to datamanager with its new position as child of newPFCNode parent
- GetDataStorage()->Add(newPFchildNode, newPFCNode);
-
- }
-
-
-
-
- }
- GetDataStorage()->Modified();
-
-
-
-
- break;
- }
- default:
- MITK_INFO << "we have an UNDEFINED composition... ERROR" ;
- break;
- }
-
-
-
-
-
-
-}
-
-
-void QmitkFiberBundleOperationsView::JoinBundles()
-{
- mitk::FiberBundle::Pointer bundle1 = dynamic_cast(m_SelectedFB.at(0)->GetData());
- mitk::FiberBundle::Pointer bundle2 = dynamic_cast(m_SelectedFB.at(1)->GetData());
-
- mitk::FiberBundle::Pointer newBundle = bundle1->JoinBundle(bundle2);
- mitk::DataNode::Pointer fbNode = mitk::DataNode::New();
- fbNode->SetData(newBundle);
- fbNode->SetName(m_SelectedFB.at(0)->GetName()+"+"+m_SelectedFB.at(1)->GetName());
- fbNode->SetVisibility(true);
- GetDataStorage()->Add(fbNode);
-}
-
-void QmitkFiberBundleOperationsView::SubstractBundles()
-{
- mitk::FiberBundle::Pointer bundle1 = dynamic_cast(m_SelectedFB.at(0)->GetData());
- mitk::FiberBundle::Pointer bundle2 = dynamic_cast(m_SelectedFB.at(1)->GetData());
-
- mitk::FiberBundle::Pointer newBundle = bundle1->SubstractBundle(bundle2);
- mitk::DataNode::Pointer fbNode = mitk::DataNode::New();
- fbNode->SetData(newBundle);
- fbNode->SetName(m_SelectedFB.at(0)->GetName()+"-"+m_SelectedFB.at(1)->GetName());
- fbNode->SetVisibility(true);
- GetDataStorage()->Add(fbNode);
-}
-
-void QmitkFiberBundleOperationsView::GenerationStart()
-{
- int generationMethod = m_Controls->m_GenerationBox->currentIndex();
-
- std::vector nodes = GetDataManagerSelection();
- if (nodes.empty()){
- QMessageBox::information( NULL, "Warning", "No data object selected!");
- MITK_WARN("QmitkFiberBundleOperationsView") << "no data object selected";
- return;
- }
-
- for( std::vector::iterator it = nodes.begin(); it != nodes.end(); ++it )
- {
- mitk::DataNode::Pointer node = *it;
-
- if (node.IsNotNull() && dynamic_cast(node->GetData()))
- {
- m_FiberBundle = dynamic_cast(node->GetData());
- m_FiberBundleNode = node;
- switch(generationMethod){
- case 0:
- GenerateTractDensityImage(true);
- break;
- case 1:
- GenerateTractDensityImage(false);
- break;
- case 2:
- GenerateColorHeatmap();
- break;
- case 3:
- GenerateFiberEndingsImage();
- break;
- case 4:
- GenerateFiberEndingsPointSet();
- break;
- }
- }
- }
-}
-
-// generate pointset displaying the fiber endings
-void QmitkFiberBundleOperationsView::GenerateFiberEndingsPointSet()
-{
- if(m_FiberBundle.IsNull()){
- QMessageBox::information( NULL, "Warning", "No fiber bundle selected!");
- MITK_WARN("QmitkGlobalFiberTrackingView") << "no fiber bundle selected";
- return;
- }
-
- mitk::Geometry3D::Pointer geometry = m_FiberBundle->GetGeometry();
-
- mitk::PointSet::Pointer pointSet = mitk::PointSet::New();
-
- int numTracts = m_FiberBundle->GetNumTracts();
- int count = 0;
- for( int i=0; iGetNumPoints(i);
- itk::Point start = m_FiberBundle->GetPoint(i,0);
- itk::Point world1;
- geometry->IndexToWorld(start, world1);
- pointSet->InsertPoint(count, world1);
- count++;
- // get fiber end point
- if(numVertices>1)
- {
- itk::Point end = m_FiberBundle->GetPoint(i,numVertices-1);
- itk::Point world;
- geometry->IndexToWorld(end, world);
- pointSet->InsertPoint(count, world);
- count++;
- }
- }
-
- mitk::DataNode::Pointer pointSetNode = mitk::DataNode::New();
- pointSetNode->SetData( pointSet );
- QString name(m_FiberBundleNode->GetName().c_str());
- name += "_fiber_endings";
- pointSetNode->SetName(name.toStdString());
- pointSetNode->SetProperty( "opacity", mitk::FloatProperty::New( 1 ) );
- pointSetNode->SetProperty( "pointsize", mitk::FloatProperty::New( 0.1*m_Controls->m_UpsamplingSpinBox->value()) );
- pointSetNode->SetColor( 1.0, 1.0, 1.0 );
-
- GetDefaultDataStorage()->Add(pointSetNode);
-}
-
-// generate image displaying the fiber endings
-void QmitkFiberBundleOperationsView::GenerateFiberEndingsImage()
-{
- if(m_FiberBundle.IsNull()){
- QMessageBox::information( NULL, "Warning", "No fiber bundle selected!");
- MITK_WARN("QmitkGlobalFiberTrackingView") << "no fiber bundle selected";
- return;
- }
-
- typedef unsigned char OutPixType;
-
- // run generator
- typedef itk::TractsToFiberEndingsImageFilter ImageGeneratorType;
- ImageGeneratorType::Pointer generator = ImageGeneratorType::New();
- generator->SetFiberBundle(m_FiberBundle);
-
- generator->SetUpsamplingFactor(m_Controls->m_UpsamplingSpinBox->value());
- generator->Update();
-
- // get result
- typedef itk::Image OutType;
- OutType::Pointer outImg = generator->GetOutput();
-
- mitk::Image::Pointer img = mitk::Image::New();
- img->InitializeByItk(outImg.GetPointer());
- img->SetVolume(outImg->GetBufferPointer());
-
- // to datastorage
- mitk::DataNode::Pointer node = mitk::DataNode::New();
- node->SetData(img);
- QString name(m_FiberBundleNode->GetName().c_str());
- name += "_fiber_endings";
- node->SetName(name.toStdString());
- node->SetVisibility(true);
-
- GetDataStorage()->Add(node);
-}
-
-// generate rgba heatmap from fiber bundle
-void QmitkFiberBundleOperationsView::GenerateColorHeatmap()
-{
- if(m_FiberBundle.IsNull() || m_FiberBundleNode.IsNull())
- {
- QMessageBox::information( NULL, "Warning", "No fiber bundle selected!");
- MITK_WARN("QmitkGlobalFiberTrackingView") << "no fiber bundle selected";
- return;
- }
-
- typedef itk::RGBAPixel OutPixType;
-
- // run generator
- typedef itk::TractsToProbabilityImageFilter
- ImageGeneratorType;
- ImageGeneratorType::Pointer generator = ImageGeneratorType::New();
- //generator->SetInput(NULL);
- generator->SetFiberBundle(m_FiberBundle);
-
- generator->SetUpsamplingFactor(m_Controls->m_UpsamplingSpinBox->value());
- generator->Update();
-
- // get result
- typedef itk::Image OutType;
- OutType::Pointer outImg = generator->GetOutput();
-
- mitk::Image::Pointer img = mitk::Image::New();
- img->InitializeByItk(outImg.GetPointer());
- img->SetVolume(outImg->GetBufferPointer());
-
- // to datastorage
- mitk::DataNode::Pointer node = mitk::DataNode::New();
- node->SetData(img);
- QString name(m_FiberBundleNode->GetName().c_str());
- node->SetName(name.toStdString());
- node->SetVisibility(true);
-
- mitk::LevelWindow opaclevwin;
- opaclevwin.SetRangeMinMax(0,255);
- opaclevwin.SetWindowBounds(0,0);
- mitk::LevelWindowProperty::Pointer prop =
- mitk::LevelWindowProperty::New(opaclevwin);
- node->AddProperty( "opaclevelwindow", prop );
-
- GetDataStorage()->Add(node);
-}
-
-// generate greyscale heatmap from fiber bundle
-void QmitkFiberBundleOperationsView::GenerateTractDensityImage(bool binary)
-{
- if(m_FiberBundle.IsNull() || m_FiberBundleNode.IsNull())
- {
- QMessageBox::information( NULL, "Warning", "No fiber bundle selected!");
- MITK_WARN("QmitkGlobalFiberTrackingView") << "no fiber bundle selected";
- return;
- }
-
- typedef unsigned char OutPixType;
-
- // run generator
- typedef itk::TractsToProbabilityImageFilter ImageGeneratorType;
- ImageGeneratorType::Pointer generator = ImageGeneratorType::New();
- generator->SetFiberBundle(m_FiberBundle);
- generator->SetInvertImage(m_Controls->m_InvertCheckbox->isChecked());
- generator->SetUpsamplingFactor(m_Controls->m_UpsamplingSpinBox->value());
- if (binary)
- generator->SetBinaryEnvelope(true);
- else
- generator->SetBinaryEnvelope(false);
- generator->Update();
-
- // get result
- typedef itk::Image OutType;
- OutType::Pointer outImg = generator->GetOutput();
-
- mitk::Image::Pointer img = mitk::Image::New();
- img->InitializeByItk(outImg.GetPointer());
- img->SetVolume(outImg->GetBufferPointer());
-
- // to datastorage
- mitk::DataNode::Pointer node = mitk::DataNode::New();
- node->SetData(img);
- QString name(m_FiberBundleNode->GetName().c_str());
- if(binary)
- name += "_envelope";
- else
- name += "_tdi";
- node->SetName(name.toStdString());
- node->SetVisibility(true);
-
- mitk::LevelWindow opaclevwin2;
- opaclevwin2.SetRangeMinMax(0,255);
- opaclevwin2.SetWindowBounds(0,0);
- mitk::LevelWindowProperty::Pointer prop2 =
- mitk::LevelWindowProperty::New(opaclevwin2);
- node->AddProperty( "opaclevelwindow", prop2 );
-
- GetDataStorage()->Add(node);
-}
-
diff --git a/Modules/Bundles/org.mitk.gui.qt.diffusionimaging/src/internal/QmitkFiberBundleOperationsView.h b/Modules/Bundles/org.mitk.gui.qt.diffusionimaging/src/internal/QmitkFiberBundleOperationsView.h
deleted file mode 100644
index 3adf3899e3..0000000000
--- a/Modules/Bundles/org.mitk.gui.qt.diffusionimaging/src/internal/QmitkFiberBundleOperationsView.h
+++ /dev/null
@@ -1,198 +0,0 @@
-/*=========================================================================
-
-Program: Medical Imaging & Interaction Toolkit
-Language: C++
-Date: $Date: 2010-03-31 16:40:27 +0200 (Mi, 31 Mrz 2010) $
-Version: $Revision: 21975 $
-
-Copyright (c) German Cancer Research Center, Division of Medical and
-Biological Informatics. All rights reserved.
-See MITKCopyright.txt or http://www.mitk.org/copyright.html for details.
-
-This software is distributed WITHOUT ANY WARRANTY; without even
-the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
-PURPOSE. See the above copyright notices for more information.
-
-=========================================================================*/
-
-#ifndef QmitkFiberBundleOperationsView_h
-#define QmitkFiberBundleOperationsView_h
-
-#include
-#include
-
-#include
-#include "ui_QmitkFiberBundleOperationsViewControls.h"
-
-#include "mitkDataStorage.h"
-#include "mitkDataStorageSelection.h"
-
-#include "mitkPlanarFigure.h"
-#include "mitkFiberBundle.h"
-#include "mitkPlanarFigureComposite.h"
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-#include
-#include
-
-struct FboSelListener;
-
-/*!
-\brief QmitkFiberBundleView
-
-\warning This application module is not yet documented. Use "svn blame/praise/annotate" and ask the author to provide basic documentation.
-
-\sa QmitkFunctionality
-\ingroup Functionalities
-*/
-class QmitkFiberBundleOperationsView : public QmitkFunctionality
-{
-
-
- friend struct FboSelListener;
-
- // this is needed for all Qt objects that should have a Qt meta-object
- // (everything that derives from QObject and wants to have signal/slots)
- Q_OBJECT
-
-public:
-
- typedef itk::Image< unsigned char, 3 > MaskImage3DType;
- typedef itk::Image< float, 3 > FloatImageType;
-
- static const std::string VIEW_ID;
-
- QmitkFiberBundleOperationsView();
- virtual ~QmitkFiberBundleOperationsView();
-
- virtual void CreateQtPartControl(QWidget *parent);
-
- virtual void StdMultiWidgetAvailable (QmitkStdMultiWidget &stdMultiWidget);
- virtual void StdMultiWidgetNotAvailable();
- virtual void Activated();
-
- protected slots:
-
- /// \brief Called when the user clicks the GUI button
- void ActionDrawEllipseTriggered();
- void ActionDrawPolygonTriggered();
- void DoFiberExtraction();
- void generatePFCompo_AND();
- void generatePFCompo_OR();
- void generatePFCompo_NOT();
-
- void JoinBundles();
- void SubstractBundles();
- void GenerateROIImage();
- void GenerationStart();
-
- virtual void AddFigureToDataStorage(mitk::PlanarFigure* figure, const QString& name,
- const char *propertyKey = NULL, mitk::BaseProperty *property = NULL );
-
-
-protected:
-
- /// \brief called by QmitkFunctionality when DataManager's selection has changed
- virtual void OnSelectionChanged( std::vector nodes );
-
- Ui::QmitkFiberBundleOperationsViewControls* m_Controls;
-
- QmitkStdMultiWidget* m_MultiWidget;
-
- //void Select( mitk::DataNode::Pointer node, bool clearMaskOnFirstArgNULL=false, bool clearImageOnFirstArgNULL=false );
-
- /** Connection from VTK to ITK */
- template
- void ConnectPipelines(VTK_Exporter* exporter, ITK_Importer importer)
- {
- importer->SetUpdateInformationCallback(exporter->GetUpdateInformationCallback());
-
- importer->SetPipelineModifiedCallback(exporter->GetPipelineModifiedCallback());
- importer->SetWholeExtentCallback(exporter->GetWholeExtentCallback());
- importer->SetSpacingCallback(exporter->GetSpacingCallback());
- importer->SetOriginCallback(exporter->GetOriginCallback());
- importer->SetScalarTypeCallback(exporter->GetScalarTypeCallback());
-
- importer->SetNumberOfComponentsCallback(exporter->GetNumberOfComponentsCallback());
-
- importer->SetPropagateUpdateExtentCallback(exporter->GetPropagateUpdateExtentCallback());
- importer->SetUpdateDataCallback(exporter->GetUpdateDataCallback());
- importer->SetDataExtentCallback(exporter->GetDataExtentCallback());
- importer->SetBufferPointerCallback(exporter->GetBufferPointerCallback());
- importer->SetCallbackUserData(exporter->GetCallbackUserData());
- }
-
- template
- void ConnectPipelines(ITK_Exporter exporter, VTK_Importer* importer)
- {
- importer->SetUpdateInformationCallback(exporter->GetUpdateInformationCallback());
-
- importer->SetPipelineModifiedCallback(exporter->GetPipelineModifiedCallback());
- importer->SetWholeExtentCallback(exporter->GetWholeExtentCallback());
- importer->SetSpacingCallback(exporter->GetSpacingCallback());
- importer->SetOriginCallback(exporter->GetOriginCallback());
- importer->SetScalarTypeCallback(exporter->GetScalarTypeCallback());
-
- importer->SetNumberOfComponentsCallback(exporter->GetNumberOfComponentsCallback());
-
- importer->SetPropagateUpdateExtentCallback(exporter->GetPropagateUpdateExtentCallback());
- importer->SetUpdateDataCallback(exporter->GetUpdateDataCallback());
- importer->SetDataExtentCallback(exporter->GetDataExtentCallback());
- importer->SetBufferPointerCallback(exporter->GetBufferPointerCallback());
- importer->SetCallbackUserData(exporter->GetCallbackUserData());
- }
-
- template < typename TPixel, unsigned int VImageDimension >
- void InternalCalculateMaskFromPlanarFigure(
- itk::Image< TPixel, VImageDimension > *image, unsigned int axis, std::string nodeName );
-
- template < typename TPixel, unsigned int VImageDimension >
- void InternalReorientImagePlane(
- const itk::Image< TPixel, VImageDimension > *image, mitk::Geometry3D* planegeo3D, int additionalIndex );
-
- berry::ISelectionListener::Pointer m_SelListener;
- berry::IStructuredSelection::ConstPointer m_CurrentSelection;
-
-private:
-
- int m_EllipseCounter;
- int m_PolygonCounter;
- //contains the selected FiberBundles
- std::vector m_SelectedFB;
-
- //contains the selected PlanarFigures
- std::vector m_SelectedPF;
-
- mitk::Image::ConstPointer m_Image;
- mitk::Image::Pointer m_InternalImage;
- mitk::PlanarFigure::Pointer m_PlanarFigure;
- float m_UpsamplingFactor;
- MaskImage3DType::Pointer m_InternalImageMask3D;
- MaskImage3DType::Pointer m_PlanarFigureImage;
- mitk::FiberBundle::Pointer m_FiberBundle;
- mitk::DataNode::Pointer m_FiberBundleNode;
-
- void addPFCompositionToDataStorage(mitk::PlanarFigureComposite::Pointer, mitk::DataNode::Pointer);
- void debugPFComposition(mitk::PlanarFigureComposite::Pointer , int );
- void CompositeExtraction(mitk::DataNode::Pointer node, mitk::Image* image);
- void GenerateTractDensityImage(bool binary);
- void GenerateColorHeatmap();
- void GenerateFiberEndingsImage();
- void GenerateFiberEndingsPointSet();
- void DWIGenerationStart();
-};
-
-
-
-#endif // _QMITKFIBERTRACKINGVIEW_H_INCLUDED
-
diff --git a/Modules/Bundles/org.mitk.gui.qt.diffusionimaging/src/internal/QmitkFiberBundleOperationsViewControls.ui b/Modules/Bundles/org.mitk.gui.qt.diffusionimaging/src/internal/QmitkFiberBundleOperationsViewControls.ui
deleted file mode 100644
index 0027cd1109..0000000000
--- a/Modules/Bundles/org.mitk.gui.qt.diffusionimaging/src/internal/QmitkFiberBundleOperationsViewControls.ui
+++ /dev/null
@@ -1,535 +0,0 @@
-
-
- QmitkFiberBundleOperationsViewControls
-
-
-
- 0
- 0
- 665
- 587
-
-
-
- Form
-
-
-
- 0
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 200
- 50
-
-
-
-
- 300
- 60
-
-
-
- QFrame::NoFrame
-
-
- QFrame::Raised
-
-
-
- 12
-
-
- 0
-
-
-
-
-
-
- 30
- 30
-
-
-
- Draw circular ROI
-
-
-
-
-
-
- :/QmitkDiffusionImaging/circle.png:/QmitkDiffusionImaging/circle.png
-
-
-
- 32
- 32
-
-
-
- false
-
-
- true
-
-
-
- -
-
-
-
- 30
- 30
-
-
-
- Draw rectangular ROI
-
-
-
-
-
-
- :/QmitkDiffusionImaging/rectangle.png:/QmitkDiffusionImaging/rectangle.png
-
-
-
- 32
- 32
-
-
-
- true
-
-
- true
-
-
-
- -
-
-
-
- 30
- 30
-
-
-
- Draw polygonal ROI
-
-
-
-
-
-
- :/QmitkDiffusionImaging/polygon.png:/QmitkDiffusionImaging/polygon.png
-
-
-
- 32
- 32
-
-
-
- true
-
-
- true
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
- -
-
-
-
- 16777215
- 16777215
-
-
-
- QFrame::NoFrame
-
-
- QFrame::Raised
-
-
-
- 0
-
-
- 0
-
-
-
-
-
- false
-
-
-
- 60
- 16777215
-
-
-
- Create AND composition with selected ROIs
-
-
- AND
-
-
-
- -
-
-
- false
-
-
-
- 60
- 16777215
-
-
-
- Create OR composition with selected ROIs
-
-
- OR
-
-
-
- -
-
-
- false
-
-
-
- 60
- 16777215
-
-
-
- Create NOT composition from selected ROI
-
-
- NOT
-
-
-
-
-
-
- -
-
-
- QFrame::NoFrame
-
-
- QFrame::Raised
-
-
-
- 0
-
-
-
-
-
- false
-
-
-
- 0
- 0
-
-
-
-
- 200
- 16777215
-
-
-
-
- 11
-
-
-
- Extract fibers passing through selected ROI or composite ROI
-
-
- Extract from ROIs
-
-
-
- -
-
-
- false
-
-
-
- 0
- 0
-
-
-
-
- 200
- 16777215
-
-
-
-
- 11
-
-
-
- Merge two fiber bundles
-
-
- Join Bundles
-
-
-
- -
-
-
- false
-
-
-
- 0
- 0
-
-
-
-
- 300
- 16777215
-
-
-
-
- 11
-
-
-
- Generate a binary image containing all selected ROIs
-
-
- Generate ROI Image
-
-
-
- -
-
-
- false
-
-
-
- 0
- 0
-
-
-
-
- 200
- 16777215
-
-
-
-
- 11
-
-
-
- Returns fiber bundle containing all fibers the two selected bundles dont't have in common
-
-
- Substract Bundles
-
-
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- QFrame::StyledPanel
-
-
- QFrame::Raised
-
-
-
-
-
-
- Fibers in Selected Bundle:
-
-
-
- -
-
-
- 0
-
-
-
-
-
-
- -
-
-
- QFrame::StyledPanel
-
-
- QFrame::Raised
-
-
-
-
-
-
-
- 0
- 0
-
-
-
-
-
- Binary Envelope
-
-
- -
-
- Tract Density Image (TDI)
-
-
- -
-
- Fiber Bundle Image
-
-
- -
-
- Fiber Endings Image
-
-
- -
-
- Fiber Endings Pointset
-
-
-
-
- -
-
-
- Upsampling Factor
-
-
- 1
-
-
- 10
-
-
- 4
-
-
-
- -
-
-
- false
-
-
-
- 0
- 0
-
-
-
-
- 200
- 16777215
-
-
-
-
- 11
-
-
-
- Perform selected operation on fiber bundle
-
-
- Generate
-
-
-
- -
-
-
- If selected operation generates an image, the inverse image is returned
-
-
- Invert
-
-
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 40
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Modules/Bundles/org.mitk.gui.qt.diffusionimaging/src/internal/mitkPluginActivator.cpp b/Modules/Bundles/org.mitk.gui.qt.diffusionimaging/src/internal/mitkPluginActivator.cpp
index 97a8407366..5ff89f0889 100644
--- a/Modules/Bundles/org.mitk.gui.qt.diffusionimaging/src/internal/mitkPluginActivator.cpp
+++ b/Modules/Bundles/org.mitk.gui.qt.diffusionimaging/src/internal/mitkPluginActivator.cpp
@@ -1,52 +1,52 @@
#include "mitkPluginActivator.h"
#include
#include "src/internal/QmitkDiffusionImagingPublicPerspective.h"
#include "src/internal/QmitkQBallReconstructionView.h"
#include "src/internal/QmitkPreprocessingView.h"
#include "src/internal/QmitkDiffusionDicomImportView.h"
#include "src/internal/QmitkDiffusionQuantificationView.h"
#include "src/internal/QmitkTensorReconstructionView.h"
#include "src/internal/QmitkControlVisualizationPropertiesView.h"
#include "src/internal/QmitkODFDetailsView.h"
#include "src/internal/QmitkGibbsTrackingView.h"
#include "src/internal/QmitkStochasticFiberTrackingView.h"
-#include "src/internal/QmitkFiberBundleOperationsView.h"
+#include "src/internal/QmitkFiberProcessingView.h"
#include "src/internal/QmitkFiberBundleDeveloperView.h"
#include "src/internal/QmitkPartialVolumeAnalysisView.h"
#include "src/internal/QmitkIVIMView.h"
#include "src/internal/QmitkScreenshotMaker.h"
namespace mitk {
void PluginActivator::start(ctkPluginContext* context)
{
BERRY_REGISTER_EXTENSION_CLASS(QmitkDiffusionImagingPublicPerspective, context)
BERRY_REGISTER_EXTENSION_CLASS(QmitkQBallReconstructionView, context)
BERRY_REGISTER_EXTENSION_CLASS(QmitkPreprocessingView, context)
BERRY_REGISTER_EXTENSION_CLASS(QmitkDiffusionDicomImport, context)
BERRY_REGISTER_EXTENSION_CLASS(QmitkDiffusionQuantificationView, context)
BERRY_REGISTER_EXTENSION_CLASS(QmitkTensorReconstructionView, context)
BERRY_REGISTER_EXTENSION_CLASS(QmitkControlVisualizationPropertiesView, context)
BERRY_REGISTER_EXTENSION_CLASS(QmitkODFDetailsView, context)
BERRY_REGISTER_EXTENSION_CLASS(QmitkGibbsTrackingView, context)
BERRY_REGISTER_EXTENSION_CLASS(QmitkStochasticFiberTrackingView, context)
- BERRY_REGISTER_EXTENSION_CLASS(QmitkFiberBundleOperationsView, context)
+ BERRY_REGISTER_EXTENSION_CLASS(QmitkFiberProcessingView, context)
BERRY_REGISTER_EXTENSION_CLASS(QmitkFiberBundleDeveloperView, context)
BERRY_REGISTER_EXTENSION_CLASS(QmitkPartialVolumeAnalysisView, context)
BERRY_REGISTER_EXTENSION_CLASS(QmitkIVIMView, context)
BERRY_REGISTER_EXTENSION_CLASS(QmitkScreenshotMaker, context)
}
void PluginActivator::stop(ctkPluginContext* context)
{
Q_UNUSED(context)
}
}
Q_EXPORT_PLUGIN2(org_mitk_gui_qt_diffusionimaging, mitk::PluginActivator)
diff --git a/Modules/Bundles/org.mitk.gui.qt.diffusionimagingapp/src/QmitkDiffusionImagingAppWorkbenchAdvisor.cpp b/Modules/Bundles/org.mitk.gui.qt.diffusionimagingapp/src/QmitkDiffusionImagingAppWorkbenchAdvisor.cpp
index e1807f72b2..fa72429d37 100644
--- a/Modules/Bundles/org.mitk.gui.qt.diffusionimagingapp/src/QmitkDiffusionImagingAppWorkbenchAdvisor.cpp
+++ b/Modules/Bundles/org.mitk.gui.qt.diffusionimagingapp/src/QmitkDiffusionImagingAppWorkbenchAdvisor.cpp
@@ -1,116 +1,116 @@
/*=========================================================================
Program: BlueBerry Platform
Language: C++
Date: $Date: 2009-10-23 02:59:36 +0200 (Fri, 23 Oct 2009) $
Version: $Revision$
Copyright (c) German Cancer Research Center, Division of Medical and
Biological Informatics. All rights reserved.
See MITKCopyright.txt or http://www.mitk.org/copyright.html for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#include "QmitkDiffusionImagingAppWorkbenchAdvisor.h"
#include "internal/mitkPluginActivator.h"
#include
#include
#include
#include
#include
#include
const std::string QmitkDiffusionImagingAppWorkbenchAdvisor::WELCOME_PERSPECTIVE_ID = "org.mitk.diffusionimagingapp.perspectives.welcome";
void
QmitkDiffusionImagingAppWorkbenchAdvisor::Initialize(berry::IWorkbenchConfigurer::Pointer configurer)
{
berry::QtWorkbenchAdvisor::Initialize(configurer);
configurer->SetSaveAndRestore(true);
// TODO This should go into the products plugin_customization.ini file (when
// the product and branding support is finished, see bug 2146).
// This will not work anymore, if bug 2822 is fixed.
berry::IPreferencesService::Pointer prefService = berry::Platform::GetServiceRegistry().GetServiceById(berry::IPreferencesService::ID);
prefService->GetSystemPreferences()->Put(berry::WorkbenchPreferenceConstants::PREFERRED_SASH_LAYOUT, berry::WorkbenchPreferenceConstants::RIGHT);
QString collectionFile = mitkPluginActivator::GetDefault()->GetQtHelpCollectionFile();
if (!collectionFile.isEmpty())
{
// berry::QtAssistantUtil::SetHelpCollectionFile(collectionFile);
// berry::QtAssistantUtil::SetDefaultHelpUrl("qthelp://org.mitk.gui.qt.diffusionimagingapp/bundle/index.html");
typedef std::vector BundleContainer;
BundleContainer bundles = berry::Platform::GetBundles();
berry::QtAssistantUtil::RegisterQCHFiles(bundles);
}
}
berry::WorkbenchWindowAdvisor*
QmitkDiffusionImagingAppWorkbenchAdvisor::CreateWorkbenchWindowAdvisor(
berry::IWorkbenchWindowConfigurer::Pointer configurer)
{
std::vector perspExcludeList;
perspExcludeList.push_back( std::string("org.blueberry.uitest.util.EmptyPerspective") );
perspExcludeList.push_back( std::string("org.blueberry.uitest.util.EmptyPerspective2") );
perspExcludeList.push_back( std::string("org.mitk.coreapp.defaultperspective") );
perspExcludeList.push_back( std::string("org.mitk.extapp.defaultperspective") );
perspExcludeList.push_back( std::string("org.mitk.perspectives.publicdiffusionimaging") );
perspExcludeList.push_back( std::string("org.mitk.perspectives.diffusionimaginginternal") );
std::vector viewExcludeList;
// viewExcludeList.push_back( std::string("org.mitk.views.partialvolumeanalysis") );
// viewExcludeList.push_back( std::string("org.mitk.views.globalfibertracking") );
// viewExcludeList.push_back( std::string("org.mitk.views.tractbasedspatialstatistics") );
// viewExcludeList.push_back( std::string("org.mitk.views.fibertracking") );
// viewExcludeList.push_back( std::string("org.mitk.views.ivim") );
// viewExcludeList.push_back( std::string("org.mitk.views.qballreconstruction") );
// viewExcludeList.push_back( std::string("org.mitk.views.diffusiondicomimport") );
// viewExcludeList.push_back( std::string("org.mitk.views.diffusionpreprocessing") );
// viewExcludeList.push_back( std::string("org.mitk.views.diffusionquantification") );
// viewExcludeList.push_back( std::string("org.mitk.views.tensorreconstruction") );
// viewExcludeList.push_back( std::string("org.mitk.views.perspectiveswitcher") );
// viewExcludeList.push_back( std::string("org.mitk.views.basicimageprocessing") );
-// viewExcludeList.push_back( std::string("org.mitk.views.fiberbundleoperations") );
+// viewExcludeList.push_back( std::string("org.mitk.views.fiberprocessing") );
// viewExcludeList.push_back( std::string("org.mitk.views.measurement") );
// viewExcludeList.push_back( std::string("org.mitk.views.moviemaker") );
// viewExcludeList.push_back( std::string("org.mitk.views.odfdetails") );
// viewExcludeList.push_back( std::string("org.mitk.views.propertylistview") );
// viewExcludeList.push_back( std::string("org.mitk.views.screenshotmaker") );
// viewExcludeList.push_back( std::string("org.mitk.views.segmentation") );
// viewExcludeList.push_back( std::string("org.mitk.views.imagestatistics") );
// viewExcludeList.push_back( std::string("org.mitk.views.controlvisualizationpropertiesview") );
// viewExcludeList.push_back( std::string("org.mitk.views.volumevisualization") );
// viewExcludeList.push_back( std::string("org.mitk.views.simplemeasurement") );
configurer->SetInitialSize(berry::Point(1000,770));
QmitkExtWorkbenchWindowAdvisor* advisor = new QmitkExtWorkbenchWindowAdvisor(this, configurer);
advisor->ShowViewMenuItem(false);
advisor->ShowNewWindowMenuItem(false);
advisor->ShowClosePerspectiveMenuItem(false);
advisor->SetPerspectiveExcludeList(perspExcludeList);
advisor->SetViewExcludeList(viewExcludeList);
advisor->ShowViewToolbar(false);
advisor->ShowPerspectiveToolbar(true);
advisor->ShowVersionInfo(false);
advisor->ShowMitkVersionInfo(false);
advisor->SetProductName("MITK Diffusion");
advisor->SetWindowIcon(":/org.mitk.gui.qt.diffusionimagingapp/app-icon.png");
return advisor;
}
std::string QmitkDiffusionImagingAppWorkbenchAdvisor::GetInitialWindowPerspectiveId()
{
return WELCOME_PERSPECTIVE_ID;
}
diff --git a/Modules/Bundles/org.mitk.gui.qt.diffusionimagingapp/src/internal/QmitkDIAppFiberTractographyPerspective.cpp b/Modules/Bundles/org.mitk.gui.qt.diffusionimagingapp/src/internal/QmitkDIAppFiberTractographyPerspective.cpp
index 60834cff22..98e3dcafe8 100644
--- a/Modules/Bundles/org.mitk.gui.qt.diffusionimagingapp/src/internal/QmitkDIAppFiberTractographyPerspective.cpp
+++ b/Modules/Bundles/org.mitk.gui.qt.diffusionimagingapp/src/internal/QmitkDIAppFiberTractographyPerspective.cpp
@@ -1,57 +1,57 @@
/*=========================================================================
Program: BlueBerry Platform
Language: C++
Date: $Date: 2009-10-23 02:59:36 +0200 (Fr, 23 Okt 2009) $
Version: $Revision: 19652 $
Copyright (c) German Cancer Research Center, Division of Medical and
Biological Informatics. All rights reserved.
See MITKCopyright.txt or http://www.mitk.org/copyright.html for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#include "QmitkDIAppFiberTractographyPerspective.h"
#include "berryIViewLayout.h"
void QmitkDIAppFiberTractographyPerspective::CreateInitialLayout(berry::IPageLayout::Pointer layout)
{
/////////////////////////////////////////////////////
// all di-app perspectives should have the following:
/////////////////////////////////////////////////////
std::string editorArea = layout->GetEditorArea();
layout->AddStandaloneView("org.mitk.views.datamanager",
false, berry::IPageLayout::LEFT, 0.3f, editorArea);
layout->AddStandaloneView("org.mitk.views.controlvisualizationpropertiesview",
false, berry::IPageLayout::BOTTOM, .2f, "org.mitk.views.datamanager");
berry::IFolderLayout::Pointer left =
layout->CreateFolder("org.mitk.diffusionimaginginternal.leftcontrols",
berry::IPageLayout::BOTTOM, 0.15f, "org.mitk.views.controlvisualizationpropertiesview");
layout->AddStandaloneView("org.mitk.views.imagenavigator",
false, berry::IPageLayout::BOTTOM, .4f, "org.mitk.diffusionimaginginternal.leftcontrols");
/////////////////////////////////////////////
// here goes the perspective specific stuff
/////////////////////////////////////////////
left->AddView("org.mitk.views.gibbstracking");
berry::IViewLayout::Pointer lo = layout->GetViewLayout("org.mitk.views.gibbstracking");
lo->SetCloseable(false);
left->AddView("org.mitk.views.fibertracking");
lo = layout->GetViewLayout("org.mitk.views.fibertracking");
lo->SetCloseable(false);
- left->AddView("org.mitk.views.fiberbundleoperations");
- lo = layout->GetViewLayout("org.mitk.views.fiberbundleoperations");
+ left->AddView("org.mitk.views.fiberprocessing");
+ lo = layout->GetViewLayout("org.mitk.views.fiberprocessing");
lo->SetCloseable(false);
}