19 #include <vtkMutableUndirectedGraph.h>
20 #include "vtkGraphLayout.h"
21 #include <vtkPoints.h>
22 #include "vtkGraphToPolyData.h"
23 #include <vtkPassThroughLayoutStrategy.h>
24 #include "vtkGlyph3D.h"
25 #include "vtkGlyphSource2D.h"
38 #include <vtkIndent.h>
52 m_NetworkAssembly->Delete();
57 if( this-> GetInput() ==
nullptr )
59 renderer-> GetOverlayManager()-> RemoveOverlay( m_TextOverlay3D.GetPointer() );
63 bool propertiesHaveChanged = this-> PropertiesChanged();
65 if( this-> GetInput()-> GetIsModified() || propertiesHaveChanged )
68 m_NetworkAssembly-> Delete();
72 std::vector< mitk::ConnectomicsNetwork::NetworkNode > vectorOfNodes = this->GetInput()->GetVectorOfAllNodes();
73 std::vector< std::pair<
74 std::pair< mitk::ConnectomicsNetwork::NetworkNode, mitk::ConnectomicsNetwork::NetworkNode >
83 if( ( m_ChosenNodeLabel ==
"" || m_ChosenNodeLabel ==
"-1" ) && m_TextOverlay3D )
85 renderer-> GetOverlayManager()-> RemoveOverlay( m_TextOverlay3D.GetPointer() );
91 std::vector< double > vectorOfNodeRadiusParameterValues;
92 vectorOfNodeRadiusParameterValues.resize( vectorOfNodes.size() );
93 double maxNodeRadiusParameterValue( FillNodeParameterVector( &vectorOfNodeRadiusParameterValues, m_NodeRadiusParameter ) );
95 std::vector< double > vectorOfNodeColorParameterValues;
96 vectorOfNodeColorParameterValues.resize( vectorOfNodes.size() );
97 double maxNodeColorParameterValue( FillNodeParameterVector( &vectorOfNodeColorParameterValues, m_NodeColorParameter ) );
99 std::vector< double > vectorOfEdgeRadiusParameterValues;
100 vectorOfEdgeRadiusParameterValues.resize( vectorOfEdges.size() );
101 double maxEdgeRadiusParameterValue( FillEdgeParameterVector( &vectorOfEdgeRadiusParameterValues, m_EdgeRadiusParameter ) );
103 std::vector< double > vectorOfEdgeColorParameterValues;
104 vectorOfEdgeColorParameterValues.resize( vectorOfEdges.size() );
105 double maxEdgeColorParameterValue( FillEdgeParameterVector( &vectorOfEdgeColorParameterValues, m_EdgeColorParameter ) );
109 std::vector< bool > vectorOfNodeFilterBools( vectorOfNodes.size(), true );
112 FillNodeFilterBoolVector( &vectorOfNodeFilterBools, m_NodeThresholdParameter );
115 std::vector< bool > vectorOfEdgeFilterBools( vectorOfEdges.size(), true );
118 FillEdgeFilterBoolVector( &vectorOfEdgeFilterBools, m_EdgeThresholdParameter );
123 std::stringstream nodeLabelStream;
125 for(
unsigned int i = 0; i < vectorOfNodes.size(); i++)
127 vtkSmartPointer<vtkSphereSource> sphereSource =
130 for(
unsigned int dimension = 0; dimension < 3; dimension++)
132 tempCNFGeometryPoint.SetElement( dimension , vectorOfNodes[i].coordinates[dimension] );
135 GetDataNode()->GetData()->GetGeometry()->IndexToWorld( tempCNFGeometryPoint, tempWorldPoint );
137 sphereSource->SetCenter( tempWorldPoint[0] , tempWorldPoint[1], tempWorldPoint[2] );
140 double radiusFactor = vectorOfNodeRadiusParameterValues[i] / maxNodeRadiusParameterValue;
142 double radius = m_NodeRadiusStart + ( m_NodeRadiusEnd - m_NodeRadiusStart) * radiusFactor;
143 sphereSource->SetRadius( radius );
145 vtkSmartPointer<vtkPolyDataMapper> mapper =
147 mapper->SetInputConnection(sphereSource->GetOutputPort());
149 vtkSmartPointer<vtkActor> actor =
151 actor->SetMapper(mapper);
154 double colorFactor = vectorOfNodeColorParameterValues[i] / maxNodeColorParameterValue;
156 double redStart = m_NodeColorStart.GetElement( 0 );
157 double greenStart = m_NodeColorStart.GetElement( 1 );
158 double blueStart = m_NodeColorStart.GetElement( 2 );
159 double redEnd = m_NodeColorEnd.GetElement( 0 );
160 double greenEnd = m_NodeColorEnd.GetElement( 1 );
161 double blueEnd = m_NodeColorEnd.GetElement( 2 );
163 double red = redStart + ( redEnd - redStart ) * colorFactor;
164 double green = greenStart + ( greenEnd - greenStart ) * colorFactor;
165 double blue = blueStart + ( blueEnd - blueStart ) * colorFactor;
167 actor->GetProperty()->SetColor( red, green, blue);
170 nodeLabelStream << m_Translator->
GetName( std::stoi( vectorOfNodes[i].label ) )
171 <<
": " << vectorOfNodes[i].label <<
",";
173 if( vectorOfNodeFilterBools[i] )
175 if( vectorOfNodes[i].label == m_ChosenNodeLabel )
178 std::stringstream balloonStringstream;
179 balloonStringstream <<
"Node id: " << vectorOfNodes[i].id
180 <<
"\nlabel: " << vectorOfNodes[i].label
182 << m_Translator->
GetName( std::stoi( vectorOfNodes[i].label ) )
184 m_BalloonText = balloonStringstream.str();
189 std::stringstream balloonNodeStatsStream;
190 balloonNodeStatsStream
191 <<
"Coordinates: (" << vectorOfNodes[i].coordinates[0]
192 <<
" ; " << vectorOfNodes[i].coordinates[1]
193 <<
" ; " << vectorOfNodes[i].coordinates[2] <<
" )"
195 << ( this-> GetInput()-> GetDegreeOfNodes() ).at( vectorOfNodes[i].
id )
196 <<
"\nBetweenness centrality: "
197 << ( this->GetInput()->GetNodeBetweennessVector() ).at( vectorOfNodes[i].
id )
198 <<
"\nClustering coefficient: "
199 << ( this->GetInput()->GetLocalClusteringCoefficients()).at( vectorOfNodes[i].
id )
201 m_BalloonNodeStats = balloonNodeStatsStream.str();
208 r[0]= vectorOfNodes[i].coordinates[0];
209 r[1]= vectorOfNodes[i].coordinates[1];
210 r[2]= vectorOfNodes[i].coordinates[2];
213 GetDataNode()->
GetData()-> GetGeometry()-> IndexToWorld( BalloonAnchor, BalloonAnchorWorldCoord );
216 if( m_ChosenNodeLabel !=
"-1" )
218 if (m_TextOverlay3D !=
nullptr)
220 renderer-> GetOverlayManager()-> RemoveOverlay( m_TextOverlay3D.GetPointer() );
223 renderer-> GetOverlayManager()-> AddOverlay( m_TextOverlay3D.GetPointer() );
224 m_TextOverlay3D-> SetFontSize( 2 );
225 m_TextOverlay3D-> SetColor( 0.96, 0.69, 0.01 );
226 m_TextOverlay3D-> SetOpacity( 0.81 );
227 m_TextOverlay3D-> SetPosition3D( BalloonAnchorWorldCoord );
228 m_TextOverlay3D-> SetText(
"...." + m_BalloonText );
229 m_TextOverlay3D-> SetForceInForeground(
true );
230 m_TextOverlay3D-> SetVisibility( GetDataNode()-> IsVisible( renderer ) );
231 renderer-> GetOverlayManager()-> UpdateOverlays( renderer );
233 actor-> GetProperty()-> SetColor( 1.0, 0.69, 0.01);
236 m_NetworkAssembly-> AddPart( actor );
239 m_AllNodeLabels = nodeLabelStream.str();
240 m_AllNodeLabels.erase( m_AllNodeLabels.rfind(
","), 1 );
247 for(
unsigned int i = 0; i < vectorOfEdges.size(); i++)
250 vtkSmartPointer<vtkLineSource> lineSource =
253 for(
unsigned int dimension = 0; dimension < 3; dimension++)
255 tempCNFGeometryPoint[ dimension ] = vectorOfEdges[i].first.first.coordinates[dimension];
258 GetDataNode()->GetData()->GetGeometry()->IndexToWorld( tempCNFGeometryPoint, tempWorldPoint );
260 lineSource->SetPoint1(tempWorldPoint[0], tempWorldPoint[1],tempWorldPoint[2] );
262 for(
unsigned int dimension = 0; dimension < 3; dimension++)
264 tempCNFGeometryPoint[ dimension ] = vectorOfEdges[i].first.second.coordinates[dimension];
267 GetDataNode()->GetData()->GetGeometry()->IndexToWorld( tempCNFGeometryPoint, tempWorldPoint );
269 lineSource->SetPoint2(tempWorldPoint[0], tempWorldPoint[1], tempWorldPoint[2] );
272 tubes->SetInputConnection( lineSource->GetOutputPort() );
273 tubes->SetNumberOfSides( 12 );
276 double radiusFactor = vectorOfEdgeRadiusParameterValues[i] / maxEdgeRadiusParameterValue;
278 double radius = m_EdgeRadiusStart + ( m_EdgeRadiusEnd - m_EdgeRadiusStart) * radiusFactor;
279 tubes->SetRadius( radius );
285 vtkSmartPointer<vtkPolyDataMapper> mapper2 =
287 mapper2->SetInputConnection( tubes->GetOutputPort() );
289 vtkSmartPointer<vtkActor> actor =
291 actor->SetMapper(mapper2);
294 double colorFactor = vectorOfEdgeColorParameterValues[i] / maxEdgeColorParameterValue;
296 double redStart = m_EdgeColorStart.GetElement( 0 );
297 double greenStart = m_EdgeColorStart.GetElement( 1 );
298 double blueStart = m_EdgeColorStart.GetElement( 2 );
299 double redEnd = m_EdgeColorEnd.GetElement( 0 );
300 double greenEnd = m_EdgeColorEnd.GetElement( 1 );
301 double blueEnd = m_EdgeColorEnd.GetElement( 2 );
303 double red = redStart + ( redEnd - redStart ) * colorFactor;
304 double green = greenStart + ( greenEnd - greenStart ) * colorFactor;
305 double blue = blueStart + ( blueEnd - blueStart ) * colorFactor;
307 actor->GetProperty()->SetColor( red, green, blue);
309 if( vectorOfEdgeFilterBools[i] )
311 m_NetworkAssembly->AddPart(actor);
317 vtkSmartPointer<vtkMutableUndirectedGraph> graph =
320 std::vector< vtkIdType > networkToVTKvector;
321 networkToVTKvector.resize(vectorOfNodes.size());
323 for(
unsigned int i = 0; i < vectorOfNodes.size(); i++)
325 networkToVTKvector[vectorOfNodes[i].id] = graph->AddVertex();
328 for(
unsigned int i = 0; i < vectorOfEdges.size(); i++)
330 graph->AddEdge(networkToVTKvector[vectorOfEdges[i].first.first.id],
331 networkToVTKvector[vectorOfEdges[i].first.second.id]);
334 vtkSmartPointer<vtkPoints> points =
336 for(
unsigned int i = 0; i < vectorOfNodes.size(); i++)
338 double x = vectorOfNodes[i].coordinates[0];
339 double y = vectorOfNodes[i].coordinates[1];
340 double z = vectorOfNodes[i].coordinates[2];
341 points->InsertNextPoint( x, y, z);
344 graph->SetPoints(points);
347 layout->SetInputData(graph);
349 layout->SetLayoutStrategy( ptls );
352 graphToPoly->SetInputConnection(layout->GetOutputPort());
357 edgeMapper->SetInputConnection(graphToPoly->GetOutputPort());
359 edgeActor->SetMapper(edgeMapper);
360 edgeActor->GetProperty()->SetColor(0.0, 0.5, 1.0);
365 vertGlyph->SetInputConnection(0, graphToPoly->GetOutputPort());
367 glyphSource->SetGlyphTypeToVertex();
368 vertGlyph->SetInputConnection(1, glyphSource->GetOutputPort());
373 vertMapper->SetInputConnection(vertGlyph->GetOutputPort());
384 vertActor->SetMapper(vertMapper);
385 vertActor->GetProperty()->SetPointSize(5);
386 vertActor->SetPosition(0, 0, 0.001);
389 m_NetworkAssembly->AddPart(edgeActor);
390 m_NetworkAssembly->AddPart(vertActor);
430 connectomicsRenderingScheme, renderer, overwrite );
433 connectomicsRenderingEdgeFiltering, renderer, overwrite );
435 connectomicsRenderingEdgeThresholdParameter, renderer, overwrite );
440 connectomicsRenderingNodeFiltering, renderer, overwrite );
442 connectomicsRenderingNodeThresholdParameter, renderer, overwrite );
451 connectomicsRenderingNodeGradientColorParameter, renderer, overwrite );
458 connectomicsRenderingNodeRadiusParameter, renderer, overwrite );
468 connectomicsRenderingEdgeGradientColorParameter, renderer, overwrite );
475 connectomicsRenderingEdgeRadiusParameter, renderer, overwrite );
478 nullptr, overwrite );
480 Superclass::SetDefaultProperties(node, renderer, overwrite);
485 mapper-> ImmediateModeRenderingOn();
495 return m_NetworkAssembly;
555 m_EdgeThreshold != edgeThreshold->
GetValue() ||
558 m_NodeThreshold != nodeThreshold->
GetValue() ||
560 m_NodeColorStart != nodeColorStart->
GetValue() ||
561 m_NodeColorEnd != nodeColorEnd->
GetValue() ||
562 m_NodeRadiusStart != nodeRadiusStart->
GetValue() ||
563 m_NodeRadiusEnd != nodeRadiusEnd->
GetValue() ||
565 m_EdgeColorStart != edgeColorStart->
GetValue() ||
566 m_EdgeColorEnd != edgeColorEnd->
GetValue() ||
567 m_EdgeRadiusStart != edgeRadiusStart->
GetValue() ||
568 m_EdgeRadiusEnd != edgeRadiusEnd->
GetValue() ||
576 m_EdgeThreshold = edgeThreshold->
GetValue();
579 m_NodeThreshold = nodeThreshold->
GetValue();
581 m_NodeColorStart = nodeColorStart->
GetValue();
582 m_NodeColorEnd = nodeColorEnd->
GetValue();
583 m_NodeRadiusStart = nodeRadiusStart->
GetValue();
584 m_NodeRadiusEnd = nodeRadiusEnd->
GetValue();
586 m_EdgeColorStart = edgeColorStart->
GetValue();
587 m_EdgeColorEnd = edgeColorEnd->
GetValue();
588 m_EdgeRadiusStart = edgeRadiusStart->
GetValue();
589 m_EdgeRadiusEnd = edgeRadiusEnd->
GetValue();
603 int end( parameterVector->size() );
608 for(
int index(0); index < end; index++)
610 parameterVector->at( index ) = 1.0;
615 double maximum( 0.0 );
620 std::vector< int > vectorOfDegree = this->GetInput()->GetDegreeOfNodes();
621 for(
int index(0); index < end; index++)
623 parameterVector->at( index ) = vectorOfDegree[ index ];
625 maximum = *std::max_element( parameterVector->begin(), parameterVector->end() );
631 std::vector< double > vectorOfBetweenness = this->GetInput()->GetNodeBetweennessVector();
632 for(
int index(0); index < end; index++)
634 parameterVector->at( index ) = vectorOfBetweenness[index];
636 maximum = *std::max_element( parameterVector->begin(), parameterVector->end() );
642 const std::vector< double > vectorOfClustering = this->GetInput()->GetLocalClusteringCoefficients();
643 for(
int index(0); index < end; index++)
645 parameterVector->at( index ) = vectorOfClustering[index];
647 maximum = *std::max_element( parameterVector->begin(), parameterVector->end() );
653 bool labelFound( this->GetInput()->CheckForLabel( m_ChosenNodeLabel ) );
657 MITK_WARN <<
"Node chosen for rendering is not valid.";
658 for(
int index(0); index < end; index++)
660 parameterVector->at( index ) = 1.0;
666 const std::vector< double > distanceVector = this->GetInput()->GetShortestDistanceVectorFromLabel( m_ChosenNodeLabel );
667 for(
int index(0); index < end; index++)
669 parameterVector->at( index ) = distanceVector[index];
671 maximum = *std::max_element( parameterVector->begin(), parameterVector->end() );
686 int end( parameterVector->size() );
691 for(
int index(0); index < end; index++)
693 parameterVector->at( index ) = 1.0;
698 double maximum( 0.0 );
703 std::vector< std::pair<
704 std::pair< mitk::ConnectomicsNetwork::NetworkNode, mitk::ConnectomicsNetwork::NetworkNode >
706 for(
int index(0); index < end; index++)
708 parameterVector->at( index ) = vectorOfEdges[ index ].second.weight;
710 maximum = *std::max_element( parameterVector->begin(), parameterVector->end() );
716 const std::vector< double > vectorOfCentrality = this->GetInput()->GetEdgeBetweennessVector();
717 for(
int index(0); index < end; index++)
719 parameterVector->at( index ) = vectorOfCentrality[index];
721 maximum = *std::max_element( parameterVector->begin(), parameterVector->end() );
735 std::vector< double > parameterVector;
736 parameterVector.resize( boolVector->size() );
737 int end( parameterVector.size() );
742 std::vector< int > vectorOfDegree = this->GetInput()->GetDegreeOfNodes();
743 for(
int index(0); index < end; index++)
745 parameterVector.at( index ) = vectorOfDegree[ index ];
752 std::vector< double > vectorOfBetweenness = this->GetInput()->GetNodeBetweennessVector();
753 for(
int index(0); index < end; index++)
755 parameterVector.at( index ) = vectorOfBetweenness[index];
762 const std::vector< double > vectorOfClustering = this->GetInput()->GetLocalClusteringCoefficients();
763 for(
int index(0); index < end; index++)
765 parameterVector.at( index ) = vectorOfClustering[index];
769 for(
int index( 0 ), end( boolVector->size() ); index < end; index++ )
771 if( parameterVector.at( index ) >= m_NodeThreshold )
773 boolVector->at( index ) =
true;
777 boolVector->at( index ) =
false;
785 std::vector< double > parameterVector;
786 parameterVector.resize( boolVector->size() );
787 int end( parameterVector.size() );
793 std::vector< std::pair<
794 std::pair< mitk::ConnectomicsNetwork::NetworkNode, mitk::ConnectomicsNetwork::NetworkNode >
797 for(
int index(0); index < end; index++)
799 parameterVector.at( index ) = vectorOfEdges[ index ].second.weight;
806 const std::vector< double > vectorOfCentrality = this->GetInput()->GetEdgeBetweennessVector();
807 for(
int index(0); index < end; index++)
809 parameterVector.at( index ) = vectorOfCentrality[index];
813 for(
int index( 0 ), end( boolVector->size() ); index < end; index++ )
815 if( parameterVector.at( index ) >= m_EdgeThreshold )
817 boolVector->at( index ) =
true;
821 boolVector->at( index ) =
false;
virtual std::string GetValueAsString() const override
const std::string connectomicsRenderingNodeThresholdingFilter
Only show nodes above a certain parameter threshold.
virtual std::string GetValueAsString() const override
const std::string connectomicsRenderingEdgeGradientStartColorName
Start Color.
const mitk::FloatProperty::Pointer connectomicsRenderingNodeRadiusStartDefault
const std::string connectomicsRenderingEdgeFilteringPropertyName
Edge filter option.
const std::string connectomicsRenderingEdgeRadiusParameterName
Radius parameter.
const std::string connectomicsRenderingEdgeThresholdFilterThresholdName
Threshold.
const std::string connectomicsRenderingNodeRadiusParameterName
Radius parameter.
const std::string connectomicsRenderingNodeParameterBetweenness
Using the node betweenness as parameter.
mitk::FreeSurferParcellationTranslator::Pointer m_Translator
virtual void GenerateDataForRenderer(mitk::BaseRenderer *renderer) override
Generate the data needed for rendering into renderer.
const std::string connectomicsRenderingNodeGradientStartColorName
Start Color.
const std::string connectomicsRenderingEdgeThresholdFilter
Show only edges above a certain parameter threshold.
const std::string connectomicsRenderingSchemePropertyName
Define the rendering scheme to be used.
const mitk::ColorProperty::Pointer connectomicsRenderingNodeGradientStartColorDefault
Organizes the rendering process.
const mitk::ColorProperty::Pointer connectomicsRenderingEdgeGradientEndColorDefault
const mitk::FloatProperty::Pointer connectomicsRenderingEdgeRadiusStartDefault
const std::string connectomicsRenderingEdgeParameterConstant
Constant.
double FillEdgeParameterVector(std::vector< double > *parameterVector, std::string parameterName)
const std::string connectomicsRenderingNodeThresholdFilterParameterName
Parameter to be thresholded.
bool PropertiesChanged()
Returns true if the properties have changed since the last data generation.
const std::string connectomicsRenderingNodeGradientEndColorName
End Color.
const std::string connectomicsRenderingNodeParameterClustering
Using the node clustering coefficient as parameter.
const mitk::FloatProperty::Pointer connectomicsRenderingEdgeThresholdFilterThresholdDefault
void FillNodeFilterBoolVector(std::vector< bool > *boolVector, std::string parameterName)
const std::string connectomicsRenderingNodeGradientColorParameterName
Color parameter.
const mitk::FloatProperty::Pointer connectomicsRenderingNodeThresholdFilterThresholdDefault
T::Pointer GetData(const std::string &name)
const mitk::FloatProperty::Pointer connectomicsRenderingEdgeRadiusEndDefault
This file defines the rendering properties available for connectomics networks in MITK...
The ColorProperty class RGB color property.
const std::string connectomicsRenderingMITKScheme
Slower but with several visualisation options.
const std::string connectomicsRenderingEdgeRadiusEndName
End Radius.
void AddProperty(const char *propertyKey, BaseProperty *property, const mitk::BaseRenderer *renderer=nullptr, bool overwrite=false)
Add the property (instance of BaseProperty) if it does not exist (or always ifoverwrite istrue) with ...
const std::string connectomicsRenderingNodeThresholdFilterThresholdName
Threshold.
const std::string connectomicsRenderingEdgeRadiusStartName
Start Radius.
const std::string connectomicsRenderingEdgeParameterWeight
Using the weight as parameter.
const std::string connectomicsRenderingVTKScheme
Much faster but less features.
static void SetVtkMapperImmediateModeRendering(vtkMapper *mapper)
const std::string connectomicsRenderingBalloonAllNodeLabelsName
const std::string connectomicsRenderingEdgeParameterCentrality
Using the edge centrality as parameter.
const std::string connectomicsRenderingNodeParameterConstant
Constant.
ConnectomicsNetworkMapper3D()
const std::string connectomicsRenderingNodeRadiusEndName
End Radius.
void FillEdgeFilterBoolVector(std::vector< bool > *boolVector, std::string parameterName)
const std::string connectomicsRenderingNodeParameterDegree
Using the node degree as parameter.
const mitk::ColorProperty::Pointer connectomicsRenderingEdgeGradientStartColorDefault
const std::string connectomicsRenderingNodeFilteringPropertyName
Node filter option.
const std::string connectomicsRenderingNodeRadiusStartName
Start Radius.
static void SetDefaultProperties(DataNode *node, BaseRenderer *renderer=nullptr, bool overwrite=false)
double FillNodeParameterVector(std::vector< double > *parameterVector, std::string parameterName)
const std::string connectomicsRenderingEdgeThresholdFilterParameterName
Parameter to be thresholded.
const std::string connectomicsRenderingBalloonNodeStatsName
const std::string connectomicsRenderingNodeChosenNodeName
The chosen node label.
const std::string connectomicsRenderingEdgeGradientEndColorName
End Color.
MITKCORE_EXPORT const ScalarType eps
static std::string GetName(std::string fileName, std::string suffix)
virtual vtkProp * GetVtkProp(mitk::BaseRenderer *renderer) override
vtkPropAssembly * m_NetworkAssembly
const mitk::Color & GetValue() const
const mitk::StringProperty::Pointer connectomicsRenderingNodeChosenNodeDefault
virtual const mitk::ConnectomicsNetwork * GetInput()
Connectomics Network Class.
virtual ~ConnectomicsNetworkMapper3D()
Class for nodes of the DataTree.
const mitk::FloatProperty::Pointer connectomicsRenderingNodeRadiusEndDefault
const std::string connectomicsRenderingBalloonTextName
Balloon controls and content.
const std::string connectomicsRenderingNodeParameterColoringShortestPath
Color nodes by shortest path length to a chosen node.
const std::string connectomicsRenderingEdgeGradientColorParameterName
Color parameter.
virtual T GetValue() const
const mitk::ColorProperty::Pointer connectomicsRenderingNodeGradientEndColorDefault
static itkEventMacro(BoundingShapeInteractionEvent, itk::AnyEvent) class MITKBOUNDINGSHAPE_EXPORT BoundingShapeInteractor Pointer New()
Basic interaction methods for mitk::GeometryData.