Main Page Class Hierarchy Alphabetical List Compound List File List Compound Members File Members Related Pages
Graphics/vtkPolyDataConnectivityFilter.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00062 #ifndef __vtkPolyDataConnectivityFilter_h
00063 #define __vtkPolyDataConnectivityFilter_h
00064
00065 #include "vtkPolyDataToPolyDataFilter.h"
00066
00067 #define VTK_EXTRACT_POINT_SEEDED_REGIONS 1
00068 #define VTK_EXTRACT_CELL_SEEDED_REGIONS 2
00069 #define VTK_EXTRACT_SPECIFIED_REGIONS 3
00070 #define VTK_EXTRACT_LARGEST_REGION 4
00071 #define VTK_EXTRACT_ALL_REGIONS 5
00072 #define VTK_EXTRACT_CLOSEST_POINT_REGION 6
00073
00074 class vtkDataArray;
00075 class vtkIdList;
00076 class vtkIdTypeArray;
00077
00078 class VTK_GRAPHICS_EXPORT vtkPolyDataConnectivityFilter : public vtkPolyDataToPolyDataFilter
00079 {
00080 public:
00081 vtkTypeRevisionMacro(vtkPolyDataConnectivityFilter,vtkPolyDataToPolyDataFilter);
00082 void PrintSelf(ostream& os, vtkIndent indent);
00083
00085 static vtkPolyDataConnectivityFilter *New();
00086
00088
00091 vtkSetMacro(ScalarConnectivity,int);
00092 vtkGetMacro(ScalarConnectivity,int);
00093 vtkBooleanMacro(ScalarConnectivity,int);
00095
00097
00099 vtkSetVectorMacro(ScalarRange,float,2);
00100 vtkGetVectorMacro(ScalarRange,float,2);
00102
00104
00105 vtkSetClampMacro(ExtractionMode,int,
00106 VTK_EXTRACT_POINT_SEEDED_REGIONS,
00107 VTK_EXTRACT_CLOSEST_POINT_REGION);
00108 vtkGetMacro(ExtractionMode,int);
00109 void SetExtractionModeToPointSeededRegions()
00110 {this->SetExtractionMode(VTK_EXTRACT_POINT_SEEDED_REGIONS);};
00111 void SetExtractionModeToCellSeededRegions()
00112 {this->SetExtractionMode(VTK_EXTRACT_CELL_SEEDED_REGIONS);};
00113 void SetExtractionModeToLargestRegion()
00114 {this->SetExtractionMode(VTK_EXTRACT_LARGEST_REGION);};
00115 void SetExtractionModeToSpecifiedRegions()
00116 {this->SetExtractionMode(VTK_EXTRACT_SPECIFIED_REGIONS);};
00117 void SetExtractionModeToClosestPointRegion()
00118 {this->SetExtractionMode(VTK_EXTRACT_CLOSEST_POINT_REGION);};
00119 void SetExtractionModeToAllRegions()
00120 {this->SetExtractionMode(VTK_EXTRACT_ALL_REGIONS);};
00121 const char *GetExtractionModeAsString();
00123
00125 void InitializeSeedList();
00126
00128 void AddSeed(int id);
00129
00131 void DeleteSeed(int id);
00132
00134 void InitializeSpecifiedRegionList();
00135
00137 void AddSpecifiedRegion(int id);
00138
00140 void DeleteSpecifiedRegion(int id);
00141
00143
00145 vtkSetVector3Macro(ClosestPoint,float);
00146 vtkGetVectorMacro(ClosestPoint,float,3);
00148
00150 int GetNumberOfExtractedRegions();
00151
00153
00154 vtkSetMacro(ColorRegions,int);
00155 vtkGetMacro(ColorRegions,int);
00156 vtkBooleanMacro(ColorRegions,int);
00158
00159 protected:
00160 vtkPolyDataConnectivityFilter();
00161 ~vtkPolyDataConnectivityFilter();
00162
00163
00164 void Execute();
00165
00166 int ColorRegions;
00167 int ExtractionMode;
00168 vtkIdList *Seeds;
00169 vtkIdList *SpecifiedRegionIds;
00170 vtkIdTypeArray *RegionSizes;
00171
00172 float ClosestPoint[3];
00173
00174 int ScalarConnectivity;
00175 float ScalarRange[2];
00176
00177 void TraverseAndMark();
00178
00179 private:
00180
00181 vtkDataArray *CellScalars;
00182 vtkIdList *NeighborCellPointIds;
00183 int *Visited;
00184 vtkIdType *PointMap;
00185 vtkDataArray *NewScalars;
00186 int RegionNumber;
00187 vtkIdType PointNumber;
00188 vtkIdType NumCellsInRegion;
00189 vtkDataArray *InScalars;
00190 vtkPolyData *Mesh;
00191 vtkIdList *Wave;
00192 vtkIdList *Wave2;
00193 vtkIdList *PointIds;
00194 vtkIdList *CellIds;
00195 private:
00196 vtkPolyDataConnectivityFilter(const vtkPolyDataConnectivityFilter&);
00197 void operator=(const vtkPolyDataConnectivityFilter&);
00198 };
00199
00201 inline const char *vtkPolyDataConnectivityFilter::GetExtractionModeAsString(void)
00202 {
00203 if ( this->ExtractionMode == VTK_EXTRACT_POINT_SEEDED_REGIONS )
00204 {
00205 return "ExtractPointSeededRegions";
00206 }
00207 else if ( this->ExtractionMode == VTK_EXTRACT_CELL_SEEDED_REGIONS )
00208 {
00209 return "ExtractCellSeededRegions";
00210 }
00211 else if ( this->ExtractionMode == VTK_EXTRACT_SPECIFIED_REGIONS )
00212 {
00213 return "ExtractSpecifiedRegions";
00214 }
00215 else if ( this->ExtractionMode == VTK_EXTRACT_ALL_REGIONS )
00216 {
00217 return "ExtractAllRegions";
00218 }
00219 else if ( this->ExtractionMode == VTK_EXTRACT_CLOSEST_POINT_REGION )
00220 {
00221 return "ExtractClosestPointRegion";
00222 }
00223 else
00224 {
00225 return "ExtractLargestRegion";
00226 }
00227 }
00228
00229
00230 #endif