VTK  9.1.0
vtkConnectivityFilter.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkConnectivityFilter.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
116 #ifndef vtkConnectivityFilter_h
117 #define vtkConnectivityFilter_h
118 
119 #include "vtkFiltersCoreModule.h" // For export macro
120 #include "vtkPointSetAlgorithm.h"
121 
122 #define VTK_EXTRACT_POINT_SEEDED_REGIONS 1
123 #define VTK_EXTRACT_CELL_SEEDED_REGIONS 2
124 #define VTK_EXTRACT_SPECIFIED_REGIONS 3
125 #define VTK_EXTRACT_LARGEST_REGION 4
126 #define VTK_EXTRACT_ALL_REGIONS 5
127 #define VTK_EXTRACT_CLOSEST_POINT_REGION 6
128 
129 class vtkDataArray;
130 class vtkDataSet;
131 class vtkFloatArray;
132 class vtkIdList;
133 class vtkIdTypeArray;
134 class vtkIntArray;
135 class vtkPolyData;
136 
137 class VTKFILTERSCORE_EXPORT vtkConnectivityFilter : public vtkPointSetAlgorithm
138 {
139 public:
141  void PrintSelf(ostream& os, vtkIndent indent) override;
142 
147 
149 
154  vtkSetMacro(ScalarConnectivity, vtkTypeBool);
155  vtkGetMacro(ScalarConnectivity, vtkTypeBool);
156  vtkBooleanMacro(ScalarConnectivity, vtkTypeBool);
158 
160 
163  vtkSetVector2Macro(ScalarRange, double);
164  vtkGetVector2Macro(ScalarRange, double);
166 
168 
171  vtkSetClampMacro(
173  vtkGetMacro(ExtractionMode, int);
175  {
176  this->SetExtractionMode(VTK_EXTRACT_POINT_SEEDED_REGIONS);
177  }
179  {
180  this->SetExtractionMode(VTK_EXTRACT_CELL_SEEDED_REGIONS);
181  }
184  {
185  this->SetExtractionMode(VTK_EXTRACT_SPECIFIED_REGIONS);
186  }
188  {
189  this->SetExtractionMode(VTK_EXTRACT_CLOSEST_POINT_REGION);
190  }
191  void SetExtractionModeToAllRegions() { this->SetExtractionMode(VTK_EXTRACT_ALL_REGIONS); }
192  const char* GetExtractionModeAsString();
194 
199 
203  void AddSeed(vtkIdType id);
204 
209 
214 
218  void AddSpecifiedRegion(int id);
219 
223  void DeleteSpecifiedRegion(int id);
224 
226 
230  vtkSetVector3Macro(ClosestPoint, double);
231  vtkGetVectorMacro(ClosestPoint, double, 3);
233 
238 
240 
243  vtkSetMacro(ColorRegions, vtkTypeBool);
244  vtkGetMacro(ColorRegions, vtkTypeBool);
245  vtkBooleanMacro(ColorRegions, vtkTypeBool);
247 
253  {
256  CELL_COUNT_ASCENDING
257  };
258 
260 
263  vtkSetMacro(RegionIdAssignmentMode, int);
265  vtkGetMacro(RegionIdAssignmentMode, int);
266 
268 
273  vtkSetMacro(OutputPointsPrecision, int);
274  vtkGetMacro(OutputPointsPrecision, int);
276 
277 protected:
280 
283 
284  // Usual data generation method
286  vtkInformationVector* outputVector) override;
289  int FillOutputPortInformation(int vtkNotUsed(port), vtkInformation* info) override;
290 
291  vtkTypeBool ColorRegions; // boolean turns on/off scalar gen for separate regions
292  int ExtractionMode; // how to extract regions
294  vtkIdList* Seeds; // id's of points or cells used to seed regions
295  vtkIdList* SpecifiedRegionIds; // regions specified for extraction
296  vtkIdTypeArray* RegionSizes; // size (in cells) of each region extracted
297 
298  double ClosestPoint[3];
299 
301  double ScalarRange[2];
302 
304 
306 
307  void OrderRegionIds(vtkIdTypeArray* pointRegionIds, vtkIdTypeArray* cellRegionIds);
308 
309 private:
310  // used to support algorithm execution
311  vtkFloatArray* CellScalars;
312  vtkIdList* NeighborCellPointIds;
313  vtkIdType* Visited;
314  vtkIdType* PointMap;
315  vtkIdTypeArray* NewScalars;
316  vtkIdTypeArray* NewCellScalars;
317  vtkIdType RegionNumber;
318  vtkIdType PointNumber;
319  vtkIdType NumCellsInRegion;
320  vtkDataArray* InScalars;
321  vtkIdList* Wave;
322  vtkIdList* Wave2;
323  vtkIdList* PointIds;
324  vtkIdList* CellIds;
325 
326 private:
328  void operator=(const vtkConnectivityFilter&) = delete;
329 };
330 
335 {
337  {
338  return "ExtractPointSeededRegions";
339  }
341  {
342  return "ExtractCellSeededRegions";
343  }
345  {
346  return "ExtractSpecifiedRegions";
347  }
348  else if (this->ExtractionMode == VTK_EXTRACT_ALL_REGIONS)
349  {
350  return "ExtractAllRegions";
351  }
353  {
354  return "ExtractClosestPointRegion";
355  }
356  else
357  {
358  return "ExtractLargestRegion";
359  }
360 }
361 
362 #endif
vtkConnectivityFilter::GetExtractionModeAsString
const char * GetExtractionModeAsString()
Return the method of extraction as a string.
Definition: vtkConnectivityFilter.h:334
vtkConnectivityFilter::RegionSizes
vtkIdTypeArray * RegionSizes
Definition: vtkConnectivityFilter.h:296
vtkConnectivityFilter::FillInputPortInformation
int FillInputPortInformation(int port, vtkInformation *info) override
Fill the input port information objects for this algorithm.
vtkConnectivityFilter::SpecifiedRegionIds
vtkIdList * SpecifiedRegionIds
Definition: vtkConnectivityFilter.h:295
vtkConnectivityFilter::ProcessRequest
vtkTypeBool ProcessRequest(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
see vtkAlgorithm for details
vtkPointSetAlgorithm
Superclass for algorithms that produce output of the same type as input.
Definition: vtkPointSetAlgorithm.h:44
vtkConnectivityFilter::RequestDataObject
int RequestDataObject(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector) override
This is called by the superclass.
vtkConnectivityFilter::New
static vtkConnectivityFilter * New()
Construct with default extraction mode to extract largest regions.
vtkIdType
int vtkIdType
Definition: vtkType.h:332
vtkFloatArray
dynamic, self-adjusting array of float
Definition: vtkFloatArray.h:145
vtkInformationVector
Store zero or more vtkInformation instances.
Definition: vtkInformationVector.h:145
vtkConnectivityFilter
extract data based on geometric connectivity
Definition: vtkConnectivityFilter.h:138
VTK_EXTRACT_LARGEST_REGION
#define VTK_EXTRACT_LARGEST_REGION
Definition: vtkConnectivityFilter.h:125
vtkPointSetAlgorithm.h
vtkConnectivityFilter::RequestData
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called by the superclass.
vtkConnectivityFilter::SetExtractionModeToCellSeededRegions
void SetExtractionModeToCellSeededRegions()
Control the extraction of connected surfaces.
Definition: vtkConnectivityFilter.h:178
vtkDataArray
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:159
VTK_EXTRACT_SPECIFIED_REGIONS
#define VTK_EXTRACT_SPECIFIED_REGIONS
Definition: vtkConnectivityFilter.h:124
vtkConnectivityFilter::ScalarConnectivity
vtkTypeBool ScalarConnectivity
Definition: vtkConnectivityFilter.h:300
vtkConnectivityFilter::ColorRegions
vtkTypeBool ColorRegions
Definition: vtkConnectivityFilter.h:291
vtkConnectivityFilter::UNSPECIFIED
@ UNSPECIFIED
Definition: vtkConnectivityFilter.h:254
vtkConnectivityFilter::ExtractionMode
int ExtractionMode
Definition: vtkConnectivityFilter.h:292
vtkX3D::port
@ port
Definition: vtkX3D.h:453
vtkConnectivityFilter::OutputPointsPrecision
int OutputPointsPrecision
Definition: vtkConnectivityFilter.h:293
VTK_EXTRACT_CLOSEST_POINT_REGION
#define VTK_EXTRACT_CLOSEST_POINT_REGION
Definition: vtkConnectivityFilter.h:127
vtkConnectivityFilter::RegionIdAssignment
RegionIdAssignment
Enumeration of the various ways to assign RegionIds when the ColorRegions option is on.
Definition: vtkConnectivityFilter.h:253
VTK_EXTRACT_CELL_SEEDED_REGIONS
#define VTK_EXTRACT_CELL_SEEDED_REGIONS
Definition: vtkConnectivityFilter.h:123
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:113
vtkIntArray
dynamic, self-adjusting array of int
Definition: vtkIntArray.h:149
vtkConnectivityFilter::TraverseAndMark
void TraverseAndMark(vtkDataSet *input)
vtkConnectivityFilter::DeleteSpecifiedRegion
void DeleteSpecifiedRegion(int id)
Delete a region id to extract.
vtkIdList
list of point or cell ids
Definition: vtkIdList.h:140
vtkConnectivityFilter::CELL_COUNT_DESCENDING
@ CELL_COUNT_DESCENDING
Definition: vtkConnectivityFilter.h:255
vtkConnectivityFilter::OrderRegionIds
void OrderRegionIds(vtkIdTypeArray *pointRegionIds, vtkIdTypeArray *cellRegionIds)
vtkConnectivityFilter::RegionIdAssignmentMode
int RegionIdAssignmentMode
Definition: vtkConnectivityFilter.h:303
vtkConnectivityFilter::InitializeSeedList
void InitializeSeedList()
Initialize list of point ids/cell ids used to seed regions.
vtkConnectivityFilter::SetExtractionModeToSpecifiedRegions
void SetExtractionModeToSpecifiedRegions()
Control the extraction of connected surfaces.
Definition: vtkConnectivityFilter.h:183
vtkConnectivityFilter::AddSeed
void AddSeed(vtkIdType id)
Add a seed id (point or cell id).
vtkConnectivityFilter::DeleteSeed
void DeleteSeed(vtkIdType id)
Delete a seed id (point or cell id).
VTK_EXTRACT_POINT_SEEDED_REGIONS
#define VTK_EXTRACT_POINT_SEEDED_REGIONS
Definition: vtkConnectivityFilter.h:122
vtkDataSet
abstract class to specify dataset behavior
Definition: vtkDataSet.h:166
vtkConnectivityFilter::Seeds
vtkIdList * Seeds
Definition: vtkConnectivityFilter.h:294
vtkInformation
Store vtkAlgorithm input/output information.
Definition: vtkInformation.h:183
vtkConnectivityFilter::FillOutputPortInformation
int FillOutputPortInformation(int vtkNotUsed(port), vtkInformation *info) override
vtkX3D::info
@ info
Definition: vtkX3D.h:382
vtkIdTypeArray
dynamic, self-adjusting array of vtkIdType
Definition: vtkIdTypeArray.h:145
vtkConnectivityFilter::SetExtractionModeToAllRegions
void SetExtractionModeToAllRegions()
Control the extraction of connected surfaces.
Definition: vtkConnectivityFilter.h:191
vtkConnectivityFilter::SetExtractionModeToClosestPointRegion
void SetExtractionModeToClosestPointRegion()
Control the extraction of connected surfaces.
Definition: vtkConnectivityFilter.h:187
vtkPolyData
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:195
vtkConnectivityFilter::GetNumberOfExtractedRegions
int GetNumberOfExtractedRegions()
Obtain the number of connected regions.
VTK_EXTRACT_ALL_REGIONS
#define VTK_EXTRACT_ALL_REGIONS
Definition: vtkConnectivityFilter.h:126
vtkConnectivityFilter::vtkConnectivityFilter
vtkConnectivityFilter()
vtkConnectivityFilter::SetExtractionModeToLargestRegion
void SetExtractionModeToLargestRegion()
Control the extraction of connected surfaces.
Definition: vtkConnectivityFilter.h:182
vtkConnectivityFilter::InitializeSpecifiedRegionList
void InitializeSpecifiedRegionList()
Initialize list of region ids to extract.
vtkConnectivityFilter::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkConnectivityFilter::~vtkConnectivityFilter
~vtkConnectivityFilter() override
vtkTypeBool
int vtkTypeBool
Definition: vtkABI.h:69
vtkConnectivityFilter::SetExtractionModeToPointSeededRegions
void SetExtractionModeToPointSeededRegions()
Control the extraction of connected surfaces.
Definition: vtkConnectivityFilter.h:174
vtkConnectivityFilter::AddSpecifiedRegion
void AddSpecifiedRegion(int id)
Add a region id to extract.