OpenGL-based mapper to display a spline based on a mitk::PointSet in a 2D window. More...
#include <mitkSplineMapper2D.h>
Public Types | |
typedef SplineMapper2D | Self |
typedef PointSetGLMapper2D | Superclass |
typedef itk::SmartPointer< Self > | Pointer |
typedef itk::SmartPointer < const Self > | ConstPointer |
Public Member Functions | |
virtual const char * | GetClassName () const |
virtual void | Paint (mitk::BaseRenderer *renderer) |
Do the painting into the renderer. | |
virtual void | ApplyProperties (mitk::BaseRenderer *renderer) |
Apply color and opacity read from the PropertyList. | |
virtual void | SetMaxProjectionDistance (vtkFloatingPointType _arg) |
virtual vtkFloatingPointType | GetMaxProjectionDistance () |
Static Public Member Functions | |
static Pointer | New () |
Protected Member Functions | |
SplineMapper2D () | |
virtual | ~SplineMapper2D () |
Protected Attributes | |
vtkFloatingPointType | m_MaxProjectionDistance |
OpenGL-based mapper to display a spline based on a mitk::PointSet in a 2D window.
This mapper can actually more than just draw a number of points of a mitk::PointSet. If you set the right properties of the mitk::DataNode, which contains the point set, then this mapper will also draw lines connecting the points, and calculate and display distances and angles between adjacent points. Here is a complete list of boolean properties, which might be of interest:
Definition at line 57 of file mitkSplineMapper2D.h.
typedef itk::SmartPointer<const Self> mitk::SplineMapper2D::ConstPointer |
Reimplemented from mitk::PointSetGLMapper2D.
Definition at line 60 of file mitkSplineMapper2D.h.
typedef itk::SmartPointer<Self> mitk::SplineMapper2D::Pointer |
Reimplemented from mitk::PointSetGLMapper2D.
Definition at line 60 of file mitkSplineMapper2D.h.
Reimplemented from mitk::PointSetGLMapper2D.
Definition at line 60 of file mitkSplineMapper2D.h.
Reimplemented from mitk::PointSetGLMapper2D.
Definition at line 60 of file mitkSplineMapper2D.h.
mitk::SplineMapper2D::SplineMapper2D | ( | ) | [protected] |
Definition at line 182 of file mitkSplineMapper2D.cpp.
{ m_MaxProjectionDistance = 1; m_ShowDistantLines = false ; m_LineWidth = 1; }
mitk::SplineMapper2D::~SplineMapper2D | ( | ) | [protected, virtual] |
Definition at line 189 of file mitkSplineMapper2D.cpp.
{}
void mitk::SplineMapper2D::ApplyProperties | ( | mitk::BaseRenderer * | renderer ) | [virtual] |
Apply color and opacity read from the PropertyList.
Reimplemented from mitk::PointSetGLMapper2D.
Definition at line 177 of file mitkSplineMapper2D.cpp.
{ Superclass::ApplyProperties ( renderer ); }
virtual const char* mitk::SplineMapper2D::GetClassName | ( | ) | const [virtual] |
Reimplemented from mitk::PointSetGLMapper2D.
virtual vtkFloatingPointType mitk::SplineMapper2D::GetMaxProjectionDistance | ( | ) | [virtual] |
static Pointer mitk::SplineMapper2D::New | ( | ) | [static] |
Reimplemented from mitk::PointSetGLMapper2D.
Referenced by mitkDataNodeExtTestClass::TestMapperSetting().
void mitk::SplineMapper2D::Paint | ( | mitk::BaseRenderer * | renderer ) | [virtual] |
Do the painting into the renderer.
!define a new ColorProp to be able to pass alpha value
!define a new ColorProp to be able to pass alpha value
Reimplemented from mitk::PointSetGLMapper2D.
Definition at line 30 of file mitkSplineMapper2D.cpp.
References mitk::DataNode::GetColor(), mitk::BaseRenderer::GetCurrentWorldGeometry2D(), mitk::DataNode::GetData(), mitk::Mapper::GetDataNode(), mitk::BaseRenderer::GetDisplayGeometry(), mitk::DataNode::GetMapper(), mitk::BaseData::GetMTime(), mitk::DataNode::GetVtkTransform(), GL_LINE_STRIP, glBegin(), glColor3f(), glEnd(), glLineWidth(), glVertex2f(), mitk::Mapper::IsVisible(), mitk::PointSetGLMapper2D::m_LineWidth, m_MaxProjectionDistance, mitk::PointSetGLMapper2D::Paint(), and mitk::DisplayGeometry::WorldToDisplay().
{ Superclass::Paint ( renderer ); if ( IsVisible ( renderer ) == false ) return; // // get the poly data of the splines in 3D // mitk::SplineVtkMapper3D::Pointer mapper3D = dynamic_cast<mitk::SplineVtkMapper3D*> ( this->GetDataNode()->GetMapper ( 2 ) ); if ( mapper3D.IsNull() ) { itkWarningMacro ( "Mapper used for 3D mapping is not a mitk::SplineVtkMapper3D!" ); return; } // // update the 3D spline, if the accoring mapper has not been updated yet // if ( mapper3D->GetLastUpdateTime() < GetDataNode()->GetData()->GetMTime() ) mapper3D->UpdateSpline(); vtkPolyData* spline3D = NULL; if ( mapper3D->SplinesAreAvailable() ) spline3D = mapper3D->GetSplinesPolyData(); else return; if ( spline3D == NULL ) { itkWarningMacro ( "3D spline is not available!" ); return; } // // get the transform associated with the data tree node // vtkLinearTransform* transform = this->GetDataNode()->GetVtkTransform(); if ( transform == NULL ) { itkWarningMacro("transfrom is NULL"); } // // get the plane geometry of the current renderer // mitk::Geometry2D::ConstPointer worldGeometry = renderer->GetCurrentWorldGeometry2D(); if ( worldGeometry.IsNull() ) { itkWarningMacro("worldGeometry is NULL!"); return; } PlaneGeometry::ConstPointer worldPlaneGeometry = dynamic_cast<const mitk::PlaneGeometry*> ( worldGeometry.GetPointer() ); if ( worldPlaneGeometry.IsNull() ) { itkWarningMacro("worldPlaneGeometry is NULL!"); return; } // // determine color of the spline // float color[3]; this->GetDataNode()->GetColor ( color, renderer ); // // iterate over the points // vtkPoints *vpoints = spline3D->GetPoints(); vtkCellArray *vlines = spline3D->GetLines(); if (vpoints == NULL) { itkWarningMacro("points are NULL!"); return; } if (vlines == NULL) { itkWarningMacro("lines are NULL!"); return; } mitk::Point3D currentPoint3D; mitk::Point2D currentPoint2D; vtkFloatingPointType currentPoint3DVtk[3]; vlines->InitTraversal(); int numberOfLines = vlines->GetNumberOfCells(); vtkFloatingPointType currentPointDistance; for ( int i = 0;i < numberOfLines; ++i ) { bool previousPointOnPlane = false; bool currentPointOnPlane = false; vtkIdType* cell ( NULL ); vtkIdType cellSize ( 0 ); vlines->GetNextCell ( cellSize, cell ); for ( int j = 0 ; j < cellSize; ++j ) { vpoints->GetPoint ( cell[j], currentPoint3DVtk ); // take transformation via vtktransform into account transform->TransformPoint ( currentPoint3DVtk, currentPoint3DVtk ); vtk2itk ( currentPoint3DVtk, currentPoint3D ); // check if the point has a distance to the plane // which is smaller than m_MaxProjectionDistance currentPointDistance = worldPlaneGeometry->DistanceFromPlane ( currentPoint3D ); if ( currentPointDistance < m_MaxProjectionDistance ) { currentPointOnPlane = true; //convert 3D point (in mm) to 2D point on slice (also in mm) worldGeometry->Map ( currentPoint3D, currentPoint2D ); //convert point (until now mm and in worldcoordinates) to display coordinates (units ) renderer->GetDisplayGeometry()->WorldToDisplay ( currentPoint2D, currentPoint2D ); } else currentPointOnPlane = false; // // check if we have to begin or end a GL_LINE // if ( ( previousPointOnPlane == false ) && ( currentPointOnPlane == true ) ) { glLineWidth ( m_LineWidth ); glColor3f ( color[0], color[1], color[2] ); glBegin ( GL_LINE_STRIP ); } else if ( ( previousPointOnPlane == true ) && ( currentPointOnPlane == false ) ) { glEnd (); glLineWidth ( 1.0 ); } // the current ponit is on the plane, add it as point to the // line segment if ( currentPointOnPlane == true ) { glVertex2f ( currentPoint2D[0], currentPoint2D[1] ); } previousPointOnPlane = currentPointOnPlane; } // the last point of the spline segment is on the plane, thus we have to // close the GL_LINE if ( previousPointOnPlane == true ) { glEnd (); glLineWidth ( 1.0 ); } previousPointOnPlane = false; } }
virtual void mitk::SplineMapper2D::SetMaxProjectionDistance | ( | vtkFloatingPointType | _arg ) | [virtual] |
vtkFloatingPointType mitk::SplineMapper2D::m_MaxProjectionDistance [protected] |
Definition at line 77 of file mitkSplineMapper2D.h.
Referenced by Paint().