47
47
#include "igenericfiltertemplate.h"
50
iProbeFilter* iProbeFilter::New(iViewObject *vo)
52
return new iProbeFilter(vo);
56
iProbeFilter::iProbeFilter(iViewObject *vo) : iViewObjectComponent(vo)
63
iProbeFilter::~iProbeFilter()
65
if(mSource != 0) mSource->UnRegister(this);
69
void iProbeFilter::SyncWithData(int, void *)
75
void iProbeFilter::SetActive(bool s)
78
if(s) this->SetNthInput(1,mSource); else this->SetNthInput(1,0);
83
void iProbeFilter::SetSource(vtkImageData *input)
85
if(mSource != 0) mSource->UnRegister(this);
87
if(input != 0) input->Register(this);
88
this->SetActive(mActive);
92
void iProbeFilter::ProduceOutput(vtkPolyData *input, vtkPolyData *output)
95
// Adopted in part from vtkProbeFilter
97
vtkImageData *source = this->GetSource();
50
iProbeFilter::iProbeFilter(iViewSubject *vo) : iGenericFilter<vtkProbeFilter,vtkDataSet,vtkDataSet>(vo,1,true,true)
55
void iProbeFilter::ProduceOutput()
57
vtkDataObject *input = this->GetInput();
58
vtkDataSet *output = this->GetOutput();
59
vtkDataObject *source = this->GetSource();
61
if(source->IsA("vtkImageData") && input->IsA("vtkPointSet") && output->IsA("vtkPointSet"))
63
this->ProduceOutputForImageData(vtkPointSet::SafeDownCast(input),vtkPointSet::SafeDownCast(output),vtkImageData::SafeDownCast(source));
68
this->vtkProbeFilter::ExecuteData(output);
70
output->ShallowCopy(input); // Probe does not copy normals...
71
this->vtkProbeFilter::Probe(vtkDataSet::SafeDownCast(input),vtkDataSet::SafeDownCast(source),output);
77
void iProbeFilter::ProduceOutputForImageData(vtkPointSet *input, vtkPointSet *output, vtkImageData *source)
99
79
output->ShallowCopy(input);
102
// If not active, just pass the data.
111
vtkErrorMacro("Source is not set.");
115
81
vtkPoints *inpts = input->GetPoints();
116
82
if(inpts == 0) return;
147
113
inpts->GetPoint(l,x);
149
115
// Find the cell that contains xyz and get it
150
iGridDataSubject::GetCICInterpolation(per,dims,org,spa,x,ijk1,ijk2,d1,d2);
116
iUniformGridDataSubject::GetCICInterpolation(per,dims,org,spa,x,ijk1,ijk2,d1,d2);
151
117
loff111 = wScalarDimIn*(ijk1[0]+dims[0]*(ijk1[1]+(vtkIdType)dims[1]*ijk1[2]));
152
118
loff112 = wScalarDimIn*(ijk1[0]+dims[0]*(ijk1[1]+(vtkIdType)dims[1]*ijk2[2]));
153
119
loff121 = wScalarDimIn*(ijk1[0]+dims[0]*(ijk2[1]+(vtkIdType)dims[1]*ijk1[2]));