VTK  9.7.1
vtkProbeFilter.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-License-Identifier: BSD-3-Clause
56 #ifndef vtkProbeFilter_h
57 #define vtkProbeFilter_h
58 
59 #include "vtkDataSetAlgorithm.h"
60 #include "vtkDataSetAttributes.h" // needed for vtkDataSetAttributes::FieldList
61 #include "vtkDeprecation.h" // For VTK_DEPRECATED_IN_9_7_0
62 #include "vtkFiltersCoreModule.h" // For export macro
63 #include "vtkWrappingHints.h" // For VTK_MARSHALAUTO
64 
65 #include <vector> // For std::vector
66 
67 VTK_ABI_NAMESPACE_BEGIN
69 class vtkCharArray;
70 class vtkGenericCell;
71 class vtkIdTypeArray;
72 class vtkImageData;
73 class vtkPointData;
75 
76 class VTKFILTERSCORE_EXPORT VTK_MARSHALAUTO vtkProbeFilter : public vtkDataSetAlgorithm
77 {
78 public:
79  static vtkProbeFilter* New();
81  void PrintSelf(ostream& os, vtkIndent indent) override;
82 
84 
90  void SetSourceData(vtkDataObject* source);
91  vtkDataObject* GetSource();
93 
100  void SetSourceConnection(vtkAlgorithmOutput* algOutput);
101 
103 
110  vtkSetMacro(CategoricalData, vtkTypeBool);
111  vtkGetMacro(CategoricalData, vtkTypeBool);
112  vtkBooleanMacro(CategoricalData, vtkTypeBool);
114 
116 
127  vtkSetMacro(SpatialMatch, vtkTypeBool);
128  vtkGetMacro(SpatialMatch, vtkTypeBool);
129  vtkBooleanMacro(SpatialMatch, vtkTypeBool);
131 
133 
137  vtkIdTypeArray* GetValidPoints();
139 
141 
146  vtkSetStringMacro(ValidPointMaskArrayName);
147  vtkGetStringMacro(ValidPointMaskArrayName);
149 
151 
156  vtkSetMacro(PassCellArrays, vtkTypeBool);
157  vtkBooleanMacro(PassCellArrays, vtkTypeBool);
158  vtkGetMacro(PassCellArrays, vtkTypeBool);
160 
162 
167  vtkSetMacro(PassPointArrays, vtkTypeBool);
168  vtkBooleanMacro(PassPointArrays, vtkTypeBool);
169  vtkGetMacro(PassPointArrays, vtkTypeBool);
171 
173 
179  vtkSetMacro(PassFieldArrays, vtkTypeBool);
180  vtkBooleanMacro(PassFieldArrays, vtkTypeBool);
181  vtkGetMacro(PassFieldArrays, vtkTypeBool);
183 
185 
193  vtkSetMacro(Tolerance, double);
194  vtkGetMacro(Tolerance, double);
196 
198 
206  vtkSetMacro(SnapToCellWithClosestPoint, bool);
207  vtkBooleanMacro(SnapToCellWithClosestPoint, bool);
208  vtkGetMacro(SnapToCellWithClosestPoint, bool);
210 
212 
219  vtkSetMacro(SnappingRadius, double);
220  vtkGetMacro(SnappingRadius, double);
222 
224 
232  vtkSetMacro(ComputeTolerance, bool);
233  vtkBooleanMacro(ComputeTolerance, bool);
234  vtkGetMacro(ComputeTolerance, bool);
236 
238 
244  VTK_DEPRECATED_IN_9_7_0("Use SetCellLocator() instead.")
245  virtual void SetFindCellStrategy(vtkFindCellStrategy*);
247  "GetFindCellStrategy() always returns nullptr. Use GetCellLocator() instead.")
248  vtkFindCellStrategy* GetFindCellStrategy() { return nullptr; }
250 
252 
257  virtual void SetCellLocator(vtkAbstractCellLocator*);
258  vtkGetObjectMacro(CellLocator, vtkAbstractCellLocator);
260 
262 
270  VTK_DEPRECATED_IN_9_7_0("Use SetCellLocator() instead.")
271  virtual void SetCellLocatorPrototype(vtkAbstractCellLocator* cellLocator)
272  {
273  this->SetCellLocator(cellLocator);
274  }
275  VTK_DEPRECATED_IN_9_7_0("Use GetCellLocator() instead.")
276  virtual vtkAbstractCellLocator* GetCellLocatorPrototype() { return this->GetCellLocator(); }
278 
279 protected:
280  vtkProbeFilter();
281  ~vtkProbeFilter() override;
282 
283  void ReportReferences(vtkGarbageCollector*) override;
284 
288 
293  void PassAttributeData(vtkDataSet* input, vtkDataObject* source, vtkDataSet* output);
294 
298  void Probe(vtkDataSet* input, vtkDataSet* source, vtkDataSet* output);
299 
304  void BuildFieldList(vtkDataSet* source);
305 
309  virtual void InitializeForProbing(vtkDataSet* input, vtkDataSet* output);
310  virtual void InitializeSourceArrays(vtkDataSet* source);
311  virtual void InitializeOutputArrays(vtkPointData* outPD, vtkIdType numPts);
312 
317  void DoProbing(vtkDataSet* input, int srcIdx, vtkDataSet* source, vtkDataSet* output);
318 
320 
324 
326 
327  double Tolerance;
329 
333 
334  // support the FindCell() operation for vtkPointSet
336 
339 
340 private:
341  vtkProbeFilter(const vtkProbeFilter&) = delete;
342  void operator=(const vtkProbeFilter&) = delete;
343 
344  // Probe only those points that are marked as not-probed by the MaskPoints
345  // array.
346  void ProbeEmptyPoints(vtkDataSet* input, int srcIdx, vtkDataSet* source, vtkDataSet* output);
347 
348  // A faster implementation for vtkImageData input.
349  void ProbePointsImageData(
350  vtkImageData* input, int srcIdx, vtkDataSet* source, vtkImageData* output);
351  void ProbeImagePointsInCell(vtkGenericCell* cell, vtkIdType cellId, vtkDataSet* source,
352  int srcBlockId, vtkImageData* input, vtkPointData* outPD, char* maskArray, double* wtsBuff);
353 
354  class ProbeImageDataWorklet;
355 
356  // A faster implementation for vtkImageData source.
357  void ProbeImageDataPoints(
358  vtkDataSet* input, int srcIdx, vtkImageData* sourceImage, vtkDataSet* output);
359  void ProbeImageDataPointsSMP(vtkDataSet* input, vtkImageData* source, int srcIdx,
360  vtkPointData* outPD, char* maskArray, vtkIdList* pointIds, vtkIdType startId, vtkIdType endId,
361  bool baseThread);
362 
363  class ProbeImageDataPointsWorklet;
364 
365  class ProbeEmptyPointsWorklet;
366 
367  std::vector<vtkDataArray*> InputCellArrays;
368  std::vector<vtkDataArray*> SourceCellArrays;
369 
370  bool SnapToCellWithClosestPoint;
371  double SnappingRadius;
372 };
373 
374 VTK_ABI_NAMESPACE_END
375 #endif
sample data values at specified point locations
vtkDataSetAttributes::FieldList * CellList
represent and manipulate point attribute data
Definition: vtkPointData.h:30
vtkTypeBool PassPointArrays
Store vtkAlgorithm input/output information.
abstract class to specify dataset behavior
Definition: vtkDataSet.h:56
helps manage arrays from multiple vtkDataSetAttributes.
void ReportReferences(vtkGarbageCollector *) override
an abstract base class for locators which find cells
dynamic, self-adjusting array of vtkIdType
int vtkIdType
Definition: vtkType.h:363
vtkCharArray * MaskPoints
Detect and break reference loops.
provides thread-safe access to cells
vtkTypeBool PassFieldArrays
Proxy object to connect input/output ports.
helper class to manage the vtkPointSet::FindCell() method
int vtkTypeBool
Definition: vtkABI.h:64
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
dynamic, self-adjusting array of char
Definition: vtkCharArray.h:44
a simple class to control print indentation
Definition: vtkIndent.h:28
topologically and geometrically regular array of data
Definition: vtkImageData.h:45
list of point or cell ids
Definition: vtkIdList.h:25
vtkTypeBool SpatialMatch
char * ValidPointMaskArrayName
const std::string pointIds
vtkTypeBool CategoricalData
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called within ProcessRequest when a request asks the algorithm to do its work.
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
vtkTypeBool PassCellArrays
virtual int RequestUpdateExtent(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called within ProcessRequest when each filter in the pipeline decides what portion of its inp...
virtual int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called within ProcessRequest when a request asks for Information.
vtkIdTypeArray * ValidPoints
vtkDataSetAttributes::FieldList * PointList
Store zero or more vtkInformation instances.
#define VTK_MARSHALAUTO
Superclass for algorithms that produce output of the same type as input.
general representation of visualization data
Definition: vtkDataObject.h:55
static vtkDataSetAlgorithm * New()
vtkAbstractCellLocator * CellLocator
#define VTK_DEPRECATED_IN_9_7_0(reason)