#include "vtkLimitFibersToVOI.h" #include #include #include #include #include #include vtkCxxRevisionMacro(vtkLimitFibersToVOI, "$Revision: 1.3 $"); vtkStandardNewMacro(vtkLimitFibersToVOI); vtkLimitFibersToVOI::vtkLimitFibersToVOI() { m_XMin = 0; m_XMax = -1; m_YMin = 0; m_YMax = -1; m_ZMin = 0; m_ZMax = -1; } void vtkLimitFibersToVOI::SetVOI (const int &xmin, const int &xmax, const int &ymin, const int &ymax, const int &zmin, const int &zmax) { m_XMin = xmin; m_XMax = xmax; m_YMin = ymin; m_YMax = ymax; m_ZMin = zmin; m_ZMax = zmax; this->Modified(); } int vtkLimitFibersToVOI::RequestData (vtkInformation *vtkNotUsed(request), vtkInformationVector **inputVector, vtkInformationVector *outputVector) { // get the info objects vtkInformation *inInfo = inputVector[0]->GetInformationObject(0); vtkInformation *outInfo = outputVector->GetInformationObject(0); // get the input and ouptut vtkPolyData *input = vtkPolyData::SafeDownCast(inInfo->Get(vtkDataObject::DATA_OBJECT())); vtkPolyData *output = vtkPolyData::SafeDownCast(outInfo->Get(vtkDataObject::DATA_OBJECT())); output->Initialize(); output->Allocate(); vtkPoints* points = input->GetPoints(); output->SetPoints ( points ); output->GetPointData()->SetScalars ( input->GetPointData()->GetScalars() ); vtkCellArray* lines = input->GetLines(); if( lines==0 ) return 0; lines->InitTraversal(); int npt, *pto; int test = lines->GetNextCell (npt, pto); while( test!=0 ) { for( int i=0; iGetPoint (pto[i]); if( pt[0]>m_XMin && pt[0]m_YMin && pt[1]m_ZMin && pt[2]InsertNextCell (VTK_POLY_LINE, npt, pto); break; } for(int j=0;j<2;j++) i++; } test = lines->GetNextCell (npt, pto); } return 1; }