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