+//------------------------------------------------------------------------------
+void vvToolProfile::DisplayLine()
+{
+ if (!mPoint1Selected && !mPoint2Selected)
+ return;
+
+ if(mCurrentSlicerManager) {
+ if(mCurrentSlicerManager->GetSelectedSlicer() != -1) {
+ double *pos;
+ pos = new double [4];
+ pos[0] = pos[1] = pos[2] = pos[3] = 0;
+
+ int i(0);
+ while (i<3) {
+ pos[i] = mCurrentSlicerManager->GetSlicer(mCurrentSlicerManager->GetSelectedSlicer())->GetCursorPosition()[i];
+ ++i;
+ }
+ if (mCurrentSlicerManager->GetImage()->GetNumberOfDimensions() == 4) {
+ pos[3] = mCurrentSlicerManager->GetSlicer(mCurrentSlicerManager->GetSelectedSlicer())->GetTSlice();
+ }
+
+ /*double p0[4];
+ if (mPoint1Selected) {
+ p0[0] = mPoint1[0]*mCurrentSlicerManager->GetSlicer(mCurrentSlicerManager->GetSelectedSlicer())->GetInput()->GetSpacing()[0] + mCurrentSlicerManager->GetSlicer(mCurrentSlicerManager->GetSelectedSlicer())->GetInput()->GetOrigin()[0];
+ p0[1] = mPoint1[1]*mCurrentSlicerManager->GetSlicer(mCurrentSlicerManager->GetSelectedSlicer())->GetInput()->GetSpacing()[1] + mCurrentSlicerManager->GetSlicer(mCurrentSlicerManager->GetSelectedSlicer())->GetInput()->GetOrigin()[1];
+ p0[2] = mPoint1[2]*mCurrentSlicerManager->GetSlicer(mCurrentSlicerManager->GetSelectedSlicer())->GetInput()->GetSpacing()[2] + mCurrentSlicerManager->GetSlicer(mCurrentSlicerManager->GetSelectedSlicer())->GetInput()->GetOrigin()[2];
+ p0[3] = mPoint1[3];
+ }
+ else {
+ p0[0] = mPoint2[0]*mCurrentSlicerManager->GetSlicer(mCurrentSlicerManager->GetSelectedSlicer())->GetInput()->GetSpacing()[0] + mCurrentSlicerManager->GetSlicer(mCurrentSlicerManager->GetSelectedSlicer())->GetInput()->GetOrigin()[0];
+ p0[1] = mPoint2[1]*mCurrentSlicerManager->GetSlicer(mCurrentSlicerManager->GetSelectedSlicer())->GetInput()->GetSpacing()[1] + mCurrentSlicerManager->GetSlicer(mCurrentSlicerManager->GetSelectedSlicer())->GetInput()->GetOrigin()[1];
+ p0[2] = mPoint2[2]*mCurrentSlicerManager->GetSlicer(mCurrentSlicerManager->GetSelectedSlicer())->GetInput()->GetSpacing()[2] + mCurrentSlicerManager->GetSlicer(mCurrentSlicerManager->GetSelectedSlicer())->GetInput()->GetOrigin()[2];
+ p0[3] = mPoint2[3];
+ }
+ vtkSmartPointer<vtkPoints> pts = vtkSmartPointer<vtkPoints>::New();
+ pts->InsertNextPoint(p0);
+ pts->InsertNextPoint(pos);
+
+ vtkSmartPointer<vtkPolyData> linesPolyData = vtkSmartPointer<vtkPolyData>::New();
+ linesPolyData->SetPoints(pts);
+
+ vtkSmartPointer<vtkLine> line = vtkSmartPointer<vtkLine>::New();
+ line->GetPointIds()->SetId(0, 0); // the second 0 is the index of the Origin in linesPolyData's points
+ line->GetPointIds()->SetId(1, 1); // the second 1 is the index of P0 in linesPolyData's points
+
+ vtkSmartPointer<vtkCellArray> lines = vtkSmartPointer<vtkCellArray>::New();
+ lines->InsertNextCell(line);
+
+ linesPolyData->SetLines(lines);
+
+ unsigned char red[3] = { 255, 0, 0 };
+
+ vtkSmartPointer<vtkUnsignedCharArray> colors = vtkSmartPointer<vtkUnsignedCharArray>::New();
+ colors->SetNumberOfComponents(3);
+ colors->InsertNextTupleValue(red);
+
+ linesPolyData->GetCellData()->SetScalars(colors);
+
+
+ vtkSmartPointer<vtkPolyDataMapper> lineMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
+#if VTK_MAJOR_VERSION <= 5
+ lineMapper->SetInput(linesPolyData);
+#else
+ lineMapper->SetInputData(linesPolyData);
+#endif
+ vtkSmartPointer<vtkActor> lineActor = vtkSmartPointer<vtkActor>::New();
+ lineActor->SetMapper(lineMapper);
+ lineActor->GetProperty()->SetOpacity(0.995);
+
+ for(int i=0;i<mCurrentSlicerManager->GetNumberOfSlicers(); i++) {
+ mCurrentSlicerManager->GetSlicer(i)->GetRenderer()->AddActor(lineActor);
+ }*/
+
+ mOverlayActors.clear();
+ for(int i=0;i<mCurrentSlicerManager->GetNumberOfSlicers(); i++) {
+ mOverlayActors.push_back(vvBinaryImageOverlayActor::New());
+ mOverlayActors[i]->SetImage(mImageLine, 0);
+ mOverlayActors[i]->SetColor(1,0,0);
+ mOverlayActors[i]->SetOpacity(0.995);
+ mOverlayActors[i]->SetSlicer(mCurrentSlicerManager->GetSlicer(i));
+ mOverlayActors[i]->Initialize(true);
+ mOverlayActors[i]->SetDepth(1);
+ mOverlayActors[i]->ShowActors();
+ mOverlayActors[i]->UpdateSlice(i, mCurrentSlicerManager->GetSlicer(i)->GetSlice(), false);
+ }
+ }
+ }
+ mCurrentSlicerManager->Render();