VTK
vtkPolyDataConnectivityFilter.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkPolyDataConnectivityFilter.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 =========================================================================*/
50 #ifndef vtkPolyDataConnectivityFilter_h
51 #define vtkPolyDataConnectivityFilter_h
52 
53 #include "vtkFiltersCoreModule.h" // For export macro
54 #include "vtkPolyDataAlgorithm.h"
55 
56 #define VTK_EXTRACT_POINT_SEEDED_REGIONS 1
57 #define VTK_EXTRACT_CELL_SEEDED_REGIONS 2
58 #define VTK_EXTRACT_SPECIFIED_REGIONS 3
59 #define VTK_EXTRACT_LARGEST_REGION 4
60 #define VTK_EXTRACT_ALL_REGIONS 5
61 #define VTK_EXTRACT_CLOSEST_POINT_REGION 6
62 
63 class vtkDataArray;
64 class vtkIdList;
65 class vtkIdTypeArray;
66 
67 class VTKFILTERSCORE_EXPORT vtkPolyDataConnectivityFilter : public vtkPolyDataAlgorithm
68 {
69 public:
71  void PrintSelf(ostream& os, vtkIndent indent) override;
72 
74 
78  vtkGetObjectMacro(RegionSizes,vtkIdTypeArray);
80 
85 
87 
92  vtkSetMacro(ScalarConnectivity,vtkTypeBool);
93  vtkGetMacro(ScalarConnectivity,vtkTypeBool);
94  vtkBooleanMacro(ScalarConnectivity,vtkTypeBool);
96 
98 
107  vtkSetMacro(FullScalarConnectivity,vtkTypeBool);
108  vtkGetMacro(FullScalarConnectivity,vtkTypeBool);
109  vtkBooleanMacro(FullScalarConnectivity,vtkTypeBool);
111 
113 
116  vtkSetVector2Macro(ScalarRange,double);
117  vtkGetVector2Macro(ScalarRange,double);
119 
121 
124  vtkSetClampMacro(ExtractionMode,int,
127  vtkGetMacro(ExtractionMode,int);
129  {this->SetExtractionMode(VTK_EXTRACT_POINT_SEEDED_REGIONS);};
131  {this->SetExtractionMode(VTK_EXTRACT_CELL_SEEDED_REGIONS);};
133  {this->SetExtractionMode(VTK_EXTRACT_LARGEST_REGION);};
135  {this->SetExtractionMode(VTK_EXTRACT_SPECIFIED_REGIONS);};
137  {this->SetExtractionMode(VTK_EXTRACT_CLOSEST_POINT_REGION);};
139  {this->SetExtractionMode(VTK_EXTRACT_ALL_REGIONS);};
140  const char *GetExtractionModeAsString();
142 
146  void InitializeSeedList();
147 
151  void AddSeed(int id);
152 
156  void DeleteSeed(int id);
157 
161  void InitializeSpecifiedRegionList();
162 
166  void AddSpecifiedRegion(int id);
167 
171  void DeleteSpecifiedRegion(int id);
172 
174 
178  vtkSetVector3Macro(ClosestPoint,double);
179  vtkGetVectorMacro(ClosestPoint,double,3);
181 
185  int GetNumberOfExtractedRegions();
186 
188 
191  vtkSetMacro(ColorRegions,vtkTypeBool);
192  vtkGetMacro(ColorRegions,vtkTypeBool);
193  vtkBooleanMacro(ColorRegions,vtkTypeBool);
195 
197 
201  vtkSetMacro( MarkVisitedPointIds, vtkTypeBool );
202  vtkGetMacro( MarkVisitedPointIds, vtkTypeBool );
203  vtkBooleanMacro( MarkVisitedPointIds, vtkTypeBool );
205 
207 
211  vtkGetObjectMacro( VisitedPointIds, vtkIdList );
213 
215 
220  vtkSetMacro(OutputPointsPrecision,int);
221  vtkGetMacro(OutputPointsPrecision,int);
223 
224 protected:
226  ~vtkPolyDataConnectivityFilter() override;
227 
228  // Usual data generation method
230 
231  vtkTypeBool ColorRegions; //boolean turns on/off scalar gen for separate regions
232  int ExtractionMode; //how to extract regions
233  vtkIdList *Seeds; //id's of points or cells used to seed regions
234  vtkIdList *SpecifiedRegionIds; //regions specified for extraction
235  vtkIdTypeArray *RegionSizes; //size (in cells) of each region extracted
236 
237  double ClosestPoint[3];
238 
241 
242  // Does this cell qualify as being scalar connected ?
243  int IsScalarConnected( vtkIdType cellId );
244 
245  double ScalarRange[2];
246 
247  void TraverseAndMark();
248 
249  // used to support algorithm execution
260  std::vector<vtkIdType> Wave;
261  std::vector<vtkIdType> Wave2;
265 
268 
269 private:
271  void operator=(const vtkPolyDataConnectivityFilter&) = delete;
272 };
273 
275 
279 {
281  {
282  return "ExtractPointSeededRegions";
283  }
285  {
286  return "ExtractCellSeededRegions";
287  }
288  else if ( this->ExtractionMode == VTK_EXTRACT_SPECIFIED_REGIONS )
289  {
290  return "ExtractSpecifiedRegions";
291  }
292  else if ( this->ExtractionMode == VTK_EXTRACT_ALL_REGIONS )
293  {
294  return "ExtractAllRegions";
295  }
297  {
298  return "ExtractClosestPointRegion";
299  }
300  else
301  {
302  return "ExtractLargestRegion";
303  }
304 }
306 
307 
308 #endif
vtkPolyDataConnectivityFilter::RegionNumber
vtkIdType RegionNumber
Definition: vtkPolyDataConnectivityFilter.h:255
vtkPolyDataConnectivityFilter::SetExtractionModeToSpecifiedRegions
void SetExtractionModeToSpecifiedRegions()
Definition: vtkPolyDataConnectivityFilter.h:134
vtkPolyDataConnectivityFilter::FullScalarConnectivity
vtkTypeBool FullScalarConnectivity
Definition: vtkPolyDataConnectivityFilter.h:240
vtkPolyDataConnectivityFilter::OutputPointsPrecision
int OutputPointsPrecision
Definition: vtkPolyDataConnectivityFilter.h:267
vtkIdType
int vtkIdType
Definition: vtkType.h:347
vtkPolyDataConnectivityFilter::Wave
std::vector< vtkIdType > Wave
Definition: vtkPolyDataConnectivityFilter.h:260
vtkInformationVector
Store zero or more vtkInformation instances.
Definition: vtkInformationVector.h:35
vtkPolyDataConnectivityFilter
extract polygonal data based on geometric connectivity
Definition: vtkPolyDataConnectivityFilter.h:67
vtkPolyDataConnectivityFilter::NeighborCellPointIds
vtkIdList * NeighborCellPointIds
Definition: vtkPolyDataConnectivityFilter.h:251
vtkDataArray
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:48
vtkPolyDataConnectivityFilter::Wave2
std::vector< vtkIdType > Wave2
Definition: vtkPolyDataConnectivityFilter.h:261
vtkPolyDataAlgorithm::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkPolyDataConnectivityFilter::GetExtractionModeAsString
const char * GetExtractionModeAsString()
Return the method of extraction as a string.
Definition: vtkPolyDataConnectivityFilter.h:278
VTK_EXTRACT_CLOSEST_POINT_REGION
#define VTK_EXTRACT_CLOSEST_POINT_REGION
Definition: vtkPolyDataConnectivityFilter.h:61
vtkPolyDataConnectivityFilter::RegionSizes
vtkIdTypeArray * RegionSizes
Definition: vtkPolyDataConnectivityFilter.h:235
vtkPolyDataAlgorithm.h
VTK_EXTRACT_LARGEST_REGION
#define VTK_EXTRACT_LARGEST_REGION
Definition: vtkPolyDataConnectivityFilter.h:59
vtkPolyDataConnectivityFilter::InScalars
vtkDataArray * InScalars
Definition: vtkPolyDataConnectivityFilter.h:258
vtkPolyDataConnectivityFilter::SetExtractionModeToClosestPointRegion
void SetExtractionModeToClosestPointRegion()
Definition: vtkPolyDataConnectivityFilter.h:136
vtkPolyDataConnectivityFilter::SetExtractionModeToPointSeededRegions
void SetExtractionModeToPointSeededRegions()
Definition: vtkPolyDataConnectivityFilter.h:128
vtkPolyDataConnectivityFilter::ExtractionMode
int ExtractionMode
Definition: vtkPolyDataConnectivityFilter.h:232
vtkPolyDataConnectivityFilter::PointIds
vtkIdList * PointIds
Definition: vtkPolyDataConnectivityFilter.h:262
vtkPolyDataConnectivityFilter::VisitedPointIds
vtkIdList * VisitedPointIds
Definition: vtkPolyDataConnectivityFilter.h:264
vtkPolyDataAlgorithm::RequestData
virtual int RequestData(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
This is called by the superclass.
vtkPolyDataConnectivityFilter::NewScalars
vtkDataArray * NewScalars
Definition: vtkPolyDataConnectivityFilter.h:254
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:33
vtkIdList
list of point or cell ids
Definition: vtkIdList.h:30
vtkPolyDataConnectivityFilter::Mesh
vtkPolyData * Mesh
Definition: vtkPolyDataConnectivityFilter.h:259
vtkPolyDataConnectivityFilter::ColorRegions
vtkTypeBool ColorRegions
Definition: vtkPolyDataConnectivityFilter.h:231
vtkPolyDataConnectivityFilter::MarkVisitedPointIds
vtkTypeBool MarkVisitedPointIds
Definition: vtkPolyDataConnectivityFilter.h:266
vtkPolyDataConnectivityFilter::CellScalars
vtkDataArray * CellScalars
Definition: vtkPolyDataConnectivityFilter.h:250
vtkPolyDataConnectivityFilter::PointNumber
vtkIdType PointNumber
Definition: vtkPolyDataConnectivityFilter.h:256
vtkPolyDataConnectivityFilter::SetExtractionModeToLargestRegion
void SetExtractionModeToLargestRegion()
Definition: vtkPolyDataConnectivityFilter.h:132
vtkInformation
Store vtkAlgorithm input/output information.
Definition: vtkInformation.h:80
VTK_EXTRACT_ALL_REGIONS
#define VTK_EXTRACT_ALL_REGIONS
Definition: vtkPolyDataConnectivityFilter.h:60
vtkIdTypeArray
dynamic, self-adjusting array of vtkIdType
Definition: vtkIdTypeArray.h:35
VTK_EXTRACT_POINT_SEEDED_REGIONS
#define VTK_EXTRACT_POINT_SEEDED_REGIONS
Definition: vtkPolyDataConnectivityFilter.h:56
vtkPolyDataConnectivityFilter::CellIds
vtkIdList * CellIds
Definition: vtkPolyDataConnectivityFilter.h:263
vtkPolyDataConnectivityFilter::ScalarConnectivity
vtkTypeBool ScalarConnectivity
Definition: vtkPolyDataConnectivityFilter.h:239
vtkPolyDataConnectivityFilter::Seeds
vtkIdList * Seeds
Definition: vtkPolyDataConnectivityFilter.h:233
vtkPolyData
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:79
vtkPolyDataConnectivityFilter::Visited
vtkIdType * Visited
Definition: vtkPolyDataConnectivityFilter.h:252
vtkPolyDataConnectivityFilter::NumCellsInRegion
vtkIdType NumCellsInRegion
Definition: vtkPolyDataConnectivityFilter.h:257
vtkPolyDataConnectivityFilter::SetExtractionModeToAllRegions
void SetExtractionModeToAllRegions()
Definition: vtkPolyDataConnectivityFilter.h:138
VTK_EXTRACT_SPECIFIED_REGIONS
#define VTK_EXTRACT_SPECIFIED_REGIONS
Definition: vtkPolyDataConnectivityFilter.h:58
vtkPolyDataConnectivityFilter::SpecifiedRegionIds
vtkIdList * SpecifiedRegionIds
Definition: vtkPolyDataConnectivityFilter.h:234
VTK_EXTRACT_CELL_SEEDED_REGIONS
#define VTK_EXTRACT_CELL_SEEDED_REGIONS
Definition: vtkPolyDataConnectivityFilter.h:57
vtkPolyDataConnectivityFilter::PointMap
vtkIdType * PointMap
Definition: vtkPolyDataConnectivityFilter.h:253
vtkTypeBool
int vtkTypeBool
Definition: vtkABI.h:69
vtkPolyDataAlgorithm::New
static vtkPolyDataAlgorithm * New()
vtkPolyDataConnectivityFilter::SetExtractionModeToCellSeededRegions
void SetExtractionModeToCellSeededRegions()
Definition: vtkPolyDataConnectivityFilter.h:130
vtkPolyDataAlgorithm
Superclass for algorithms that produce only polydata as output.
Definition: vtkPolyDataAlgorithm.h:41