~ubuntu-branches/ubuntu/saucy/ifrit/saucy

« back to all changes in this revision

Viewing changes to core/iprobefilter.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Mark Hymers
  • Date: 2006-10-28 15:06:32 UTC
  • mfrom: (1.1.4 upstream) (2.1.1 etch)
  • Revision ID: james.westby@ubuntu.com-20061028150632-hyvuhvsv6zpmf5ev
Tags: 3.0.5-1
New upstream version. 

Show diffs side-by-side

added added

removed removed

Lines of Context:
47
47
#include "igenericfiltertemplate.h"
48
48
 
49
49
 
50
 
iProbeFilter* iProbeFilter::New(iViewObject *vo)
51
 
{
52
 
        return new iProbeFilter(vo);
53
 
}
54
 
 
55
 
 
56
 
iProbeFilter::iProbeFilter(iViewObject *vo) : iViewObjectComponent(vo)
57
 
{
58
 
        mActive = true;
59
 
        mSource = 0;
60
 
}
61
 
 
62
 
 
63
 
iProbeFilter::~iProbeFilter()
64
 
{
65
 
        if(mSource != 0) mSource->UnRegister(this);
66
 
}
67
 
 
68
 
 
69
 
void iProbeFilter::SyncWithData(int, void *)
70
 
{
71
 
        this->Modified();
72
 
}
73
 
 
74
 
 
75
 
void iProbeFilter::SetActive(bool s)
76
 
{
77
 
        mActive = s;
78
 
        if(s) this->SetNthInput(1,mSource); else this->SetNthInput(1,0);
79
 
        this->Modified();
80
 
}
81
 
 
82
 
 
83
 
void iProbeFilter::SetSource(vtkImageData *input)
84
 
{
85
 
        if(mSource != 0) mSource->UnRegister(this);
86
 
        mSource = input;
87
 
        if(input != 0) input->Register(this);
88
 
        this->SetActive(mActive);
89
 
}
90
 
 
91
 
 
92
 
void iProbeFilter::ProduceOutput(vtkPolyData *input, vtkPolyData *output)
93
 
{
94
 
        //
95
 
        //  Adopted in part from vtkProbeFilter
96
 
        //
97
 
        vtkImageData *source = this->GetSource();
98
 
 
 
50
iProbeFilter::iProbeFilter(iViewSubject *vo) : iGenericFilter<vtkProbeFilter,vtkDataSet,vtkDataSet>(vo,1,true,true)
 
51
{
 
52
}
 
53
 
 
54
 
 
55
void iProbeFilter::ProduceOutput()
 
56
{
 
57
        vtkDataObject *input = this->GetInput();
 
58
        vtkDataSet *output = this->GetOutput();
 
59
        vtkDataObject *source = this->GetSource();
 
60
 
 
61
        if(source->IsA("vtkImageData") && input->IsA("vtkPointSet") && output->IsA("vtkPointSet"))
 
62
        {
 
63
                this->ProduceOutputForImageData(vtkPointSet::SafeDownCast(input),vtkPointSet::SafeDownCast(output),vtkImageData::SafeDownCast(source));
 
64
        }
 
65
        else
 
66
        {
 
67
#ifdef IVTK_4
 
68
                this->vtkProbeFilter::ExecuteData(output);
 
69
#else
 
70
                output->ShallowCopy(input); // Probe does not copy normals...
 
71
                this->vtkProbeFilter::Probe(vtkDataSet::SafeDownCast(input),vtkDataSet::SafeDownCast(source),output);
 
72
#endif
 
73
        }
 
74
}
 
75
 
 
76
 
 
77
void iProbeFilter::ProduceOutputForImageData(vtkPointSet *input, vtkPointSet *output, vtkImageData *source)
 
78
{
99
79
        output->ShallowCopy(input);
100
80
 
101
 
        //
102
 
        //  If not active, just pass the data.
103
 
        //
104
 
        if(!mActive)
105
 
        {
106
 
                return;
107
 
        }
108
 
 
109
 
        if(source == 0)
110
 
    {
111
 
                vtkErrorMacro("Source is not set.");
112
 
                return;
113
 
    }
114
 
 
115
81
        vtkPoints *inpts = input->GetPoints();
116
82
        if(inpts == 0) return;
117
83
 
147
113
                inpts->GetPoint(l,x);
148
114
 
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]));