OpenGL-based mapper to display Lines. More...
#include <mitkLineMapper2D.h>
Public Types | |
typedef LineMapper2D | Self |
typedef PointSetGLMapper2D | Superclass |
typedef itk::SmartPointer< Self > | Pointer |
typedef itk::SmartPointer < const Self > | ConstPointer |
Public Member Functions | |
virtual const char * | GetClassName () const |
const PointSet * | GetInput (void) |
Get the PointDataList to map. | |
virtual void | Paint (mitk::BaseRenderer *renderer) |
Do the painting into the renderer. | |
Static Public Member Functions | |
static Pointer | New () |
Protected Member Functions | |
LineMapper2D () | |
virtual | ~LineMapper2D () |
OpenGL-based mapper to display Lines.
uses the information from the PointSet to build up the lines. Only lines in 2D in one Slice are drawn, not between slices!
Definition at line 37 of file mitkLineMapper2D.h.
typedef itk::SmartPointer<const Self> mitk::LineMapper2D::ConstPointer |
Reimplemented from mitk::PointSetGLMapper2D.
Definition at line 40 of file mitkLineMapper2D.h.
typedef itk::SmartPointer<Self> mitk::LineMapper2D::Pointer |
Reimplemented from mitk::PointSetGLMapper2D.
Definition at line 40 of file mitkLineMapper2D.h.
typedef LineMapper2D mitk::LineMapper2D::Self |
Reimplemented from mitk::PointSetGLMapper2D.
Definition at line 40 of file mitkLineMapper2D.h.
Reimplemented from mitk::PointSetGLMapper2D.
Definition at line 40 of file mitkLineMapper2D.h.
mitk::LineMapper2D::LineMapper2D | ( | ) | [protected] |
Definition at line 29 of file mitkLineMapper2D.cpp.
: mitk::PointSetGLMapper2D() { }
mitk::LineMapper2D::~LineMapper2D | ( | ) | [protected, virtual] |
Definition at line 35 of file mitkLineMapper2D.cpp.
{ }
virtual const char* mitk::LineMapper2D::GetClassName | ( | ) | const [virtual] |
Reimplemented from mitk::PointSetGLMapper2D.
const mitk::PointSet * mitk::LineMapper2D::GetInput | ( | void | ) | [virtual] |
Get the PointDataList to map.
Reimplemented from mitk::PointSetGLMapper2D.
Definition at line 39 of file mitkLineMapper2D.cpp.
{ return static_cast<const mitk::PointSet * > ( GetData() ); }
static Pointer mitk::LineMapper2D::New | ( | ) | [static] |
Reimplemented from mitk::PointSetGLMapper2D.
Referenced by mitkDataNodeExtTestClass::TestMapperSetting().
void mitk::LineMapper2D::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 44 of file mitkLineMapper2D.cpp.
References mitk::BaseRenderer::GetDisplayGeometry(), GL_LINES, glBegin(), glEnd(), glVertex2f(), and mitk::PointSetGLMapper2D::Paint().
{ if(IsVisible(renderer)==false) return; bool updateNeccesary = true; if (updateNeccesary) { mitk::PointSet::Pointer input = const_cast<mitk::PointSet*>(this->GetInput()); mitk::DisplayGeometry::Pointer displayGeometry = renderer->GetDisplayGeometry(); assert(displayGeometry.IsNotNull()); //apply color and opacity read from the PropertyList ApplyProperties(renderer); vtkLinearTransform* transform = GetDataNode()->GetVtkTransform(); //List of the Points PointSet::DataType::PointsContainerConstIterator it, end; it = input->GetPointSet()->GetPoints()->Begin(); end = input->GetPointSet()->GetPoints()->End();//the last before end, because lines from n to n+1 if (end!=it) // otherwise PointSet is empty end--; //bool list for the selection of the points PointSet::DataType::PointDataContainerIterator selIt, selItNext; selIt=input->GetPointSet()->GetPointData()->Begin(); int j=0; while(it!=end) { mitk::Point3D p, q, projected_p, projected_q; float vtkp[3]; itk2vtk(it->Value(), vtkp); transform->TransformPoint(vtkp, vtkp); vtk2itk(vtkp,p); //next point n+1 it++; itk2vtk(it->Value(), vtkp); transform->TransformPoint(vtkp, vtkp); vtk2itk(vtkp,q); it--; displayGeometry->Project(p, projected_p); displayGeometry->Project(q, projected_q); Vector3D diffp=p-projected_p, diffq=q-projected_q; if((diffp.GetSquaredNorm()<4.0) && (diffq.GetSquaredNorm()<4.0)) { Point2D p2d, q2d, tmp; displayGeometry->Map(projected_p, p2d); displayGeometry->WorldToDisplay(p2d, p2d); displayGeometry->Map(projected_q, q2d); displayGeometry->WorldToDisplay(q2d, q2d); //outlined, cause iterators behave strange and multiple points can't be selected anyway by now! //selItNext = selIt++;//Iterator to the next Element, cause only when the two points ar selected, then the Line is Selected //if (selIt->Value() && selItNext->Value())//selected //{ // float colorSel[]={1.0,0.0,0.6}; //for selected! // //current color for changing to a diferent color if selected // float currCol[4]; // glGetFloatv(GL_CURRENT_COLOR,currCol); // glColor3f(colorSel[0],colorSel[1],colorSel[2]);//red // glBegin (GL_LINES); // glVertex2f(p2d[0], p2d[1]); // glVertex2f(q2d[0], q2d[1]); // glEnd (); // glColor3f(currCol[0],currCol[1],currCol[2]);//the color before changing to select! //} //else //{ glBegin (GL_LINES); glVertex2f(p2d[0], p2d[1]); glVertex2f(q2d[0], q2d[1]); glEnd (); //} } ++it; ++selIt; j++; } //drawing the points PointSetGLMapper2D::Paint(renderer); } }