VTK  9.4.20241217
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
168#ifndef vtkProbeFilter_h
169#define vtkProbeFilter_h
170
171#include "vtkDataSetAlgorithm.h"
172#include "vtkDataSetAttributes.h" // needed for vtkDataSetAttributes::FieldList
173#include "vtkFiltersCoreModule.h" // For export macro
174
175#include <vector> // For std::vector
176
177VTK_ABI_NAMESPACE_BEGIN
179class vtkCharArray;
180class vtkGenericCell;
181class vtkIdTypeArray;
182class vtkImageData;
183class vtkPointData;
185
186class VTKFILTERSCORE_EXPORT vtkProbeFilter : public vtkDataSetAlgorithm
187{
188public:
191 void PrintSelf(ostream& os, vtkIndent indent) override;
192
194
203
211
213
218 vtkSetMacro(CategoricalData, vtkTypeBool);
219 vtkGetMacro(CategoricalData, vtkTypeBool);
220 vtkBooleanMacro(CategoricalData, vtkTypeBool);
222
224
234 vtkSetMacro(SpatialMatch, vtkTypeBool);
235 vtkGetMacro(SpatialMatch, vtkTypeBool);
236 vtkBooleanMacro(SpatialMatch, vtkTypeBool);
238
240
246
248
253 vtkSetStringMacro(ValidPointMaskArrayName);
254 vtkGetStringMacro(ValidPointMaskArrayName);
256
258
262 vtkSetMacro(PassCellArrays, vtkTypeBool);
263 vtkBooleanMacro(PassCellArrays, vtkTypeBool);
264 vtkGetMacro(PassCellArrays, vtkTypeBool);
267
271 vtkSetMacro(PassPointArrays, vtkTypeBool);
272 vtkBooleanMacro(PassPointArrays, vtkTypeBool);
273 vtkGetMacro(PassPointArrays, vtkTypeBool);
275
277
281 vtkSetMacro(PassFieldArrays, vtkTypeBool);
282 vtkBooleanMacro(PassFieldArrays, vtkTypeBool);
283 vtkGetMacro(PassFieldArrays, vtkTypeBool);
285
287
292 vtkSetMacro(Tolerance, double);
293 vtkGetMacro(Tolerance, double);
295
297
305 vtkSetMacro(SnapToCellWithClosestPoint, bool);
306 vtkBooleanMacro(SnapToCellWithClosestPoint, bool);
307 vtkGetMacro(SnapToCellWithClosestPoint, bool);
309
311
316 vtkSetMacro(ComputeTolerance, bool);
317 vtkBooleanMacro(ComputeTolerance, bool);
318 vtkGetMacro(ComputeTolerance, bool);
320
322
329 vtkGetObjectMacro(FindCellStrategy, vtkFindCellStrategy);
331
333
342 vtkGetObjectMacro(CellLocatorPrototype, vtkAbstractCellLocator);
344
345protected:
347 ~vtkProbeFilter() override;
348
352
358
362 void Probe(vtkDataSet* input, vtkDataSet* source, vtkDataSet* output);
363
369
373 virtual void InitializeForProbing(vtkDataSet* input, vtkDataSet* output);
375 virtual void InitializeOutputArrays(vtkPointData* outPD, vtkIdType numPts);
376
381 void DoProbing(vtkDataSet* input, int srcIdx, vtkDataSet* source, vtkDataSet* output);
382
384
388
390
391 double Tolerance;
394
398
399 // Support various methods to support the FindCell() operation
402
405
406private:
407 vtkProbeFilter(const vtkProbeFilter&) = delete;
408 void operator=(const vtkProbeFilter&) = delete;
409
410 // Probe only those points that are marked as not-probed by the MaskPoints
411 // array.
412 void ProbeEmptyPoints(vtkDataSet* input, int srcIdx, vtkDataSet* source, vtkDataSet* output);
413
414 // A faster implementation for vtkImageData input.
415 void ProbePointsImageData(
416 vtkImageData* input, int srcIdx, vtkDataSet* source, vtkImageData* output);
417 void ProbeImagePointsInCell(vtkGenericCell* cell, vtkIdType cellId, vtkDataSet* source,
418 int srcBlockId, const double start[3], const double spacing[3], const int dim[3],
419 vtkPointData* outPD, char* maskArray, double* wtsBuff);
420
421 class ProbeImageDataWorklet;
422
423 // A faster implementation for vtkImageData source.
424 void ProbeImageDataPoints(
425 vtkDataSet* input, int srcIdx, vtkImageData* sourceImage, vtkDataSet* output);
426 void ProbeImageDataPointsSMP(vtkDataSet* input, vtkImageData* source, int srcIdx,
427 vtkPointData* outPD, char* maskArray, vtkIdList* pointIds, vtkIdType startId, vtkIdType endId,
428 bool baseThread);
429
430 class ProbeImageDataPointsWorklet;
431
432 class ProbeEmptyPointsWorklet;
433
434 std::vector<vtkDataArray*> InputCellArrays;
435 std::vector<vtkDataArray*> SourceCellArrays;
436};
437
438VTK_ABI_NAMESPACE_END
439#endif
an abstract base class for locators which find cells
Proxy object to connect input/output ports.
dynamic, self-adjusting array of char
general representation of visualization data
Superclass for algorithms that produce output of the same type as input.
helps manage arrays from multiple vtkDataSetAttributes.
abstract class to specify dataset behavior
Definition vtkDataSet.h:165
helper class to manage the vtkPointSet::FindCell() method
provides thread-safe access to cells
list of point or cell ids
Definition vtkIdList.h:133
dynamic, self-adjusting array of vtkIdType
topologically and geometrically regular array of data
a simple class to control print indentation
Definition vtkIndent.h:108
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
represent and manipulate point attribute data
sample data values at specified point locations
virtual void InitializeForProbing(vtkDataSet *input, vtkDataSet *output)
Initializes output and various arrays which keep track for probing status.
void SetSourceData(vtkDataObject *source)
Specify the data set that will be probed at the input points.
vtkFindCellStrategy * FindCellStrategy
vtkIdTypeArray * ValidPoints
virtual void SetCellLocatorPrototype(vtkAbstractCellLocator *)
Set/Get the prototype cell locator to perform the FindCell() operation.
virtual void SetFindCellStrategy(vtkFindCellStrategy *)
Set / get the strategy used to perform the FindCell() operation.
virtual void InitializeOutputArrays(vtkPointData *outPD, vtkIdType numPts)
vtkTypeBool CategoricalData
void Probe(vtkDataSet *input, vtkDataSet *source, vtkDataSet *output)
Equivalent to calling BuildFieldList(); InitializeForProbing(); DoProbing().
~vtkProbeFilter() override
int RequestUpdateExtent(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called within ProcessRequest when each filter in the pipeline decides what portion of its inp...
vtkCharArray * MaskPoints
char * ValidPointMaskArrayName
vtkTypeBool SpatialMatch
vtkDataSetAttributes::FieldList * CellList
vtkIdTypeArray * GetValidPoints()
Get the list of point ids in the output that contain attribute data interpolated from the source.
vtkTypeBool PassCellArrays
vtkDataSetAttributes::FieldList * PointList
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void SetSourceConnection(vtkAlgorithmOutput *algOutput)
Specify the data set that will be probed at the input points.
bool SnapToCellWithClosestPoint
void PassAttributeData(vtkDataSet *input, vtkDataObject *source, vtkDataSet *output)
Call at end of RequestData() to pass attribute data respecting the PassCellArrays,...
void BuildFieldList(vtkDataSet *source)
Build the field lists.
vtkAbstractCellLocator * CellLocatorPrototype
int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called within ProcessRequest when a request asks for Information.
static vtkProbeFilter * New()
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called within ProcessRequest when a request asks the algorithm to do its work.
void DoProbing(vtkDataSet *input, int srcIdx, vtkDataSet *source, vtkDataSet *output)
Probe appropriate points srcIdx is the index in the PointList for the given source.
vtkDataObject * GetSource()
Specify the data set that will be probed at the input points.
vtkTypeBool PassPointArrays
vtkTypeBool PassFieldArrays
virtual void InitializeSourceArrays(vtkDataSet *source)
int vtkTypeBool
Definition vtkABI.h:64
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
int vtkIdType
Definition vtkType.h:315