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
00050 #ifndef __vtkPolyDataConnectivityFilter_h
00051 #define __vtkPolyDataConnectivityFilter_h
00052
00053 #include "vtkPolyDataToPolyDataFilter.h"
00054
00055 #define VTK_EXTRACT_POINT_SEEDED_REGIONS 1
00056 #define VTK_EXTRACT_CELL_SEEDED_REGIONS 2
00057 #define VTK_EXTRACT_SPECIFIED_REGIONS 3
00058 #define VTK_EXTRACT_LARGEST_REGION 4
00059 #define VTK_EXTRACT_ALL_REGIONS 5
00060 #define VTK_EXTRACT_CLOSEST_POINT_REGION 6
00061
00062 class vtkDataArray;
00063 class vtkIdList;
00064 class vtkIdTypeArray;
00065
00066 class VTK_GRAPHICS_EXPORT vtkPolyDataConnectivityFilter : public vtkPolyDataToPolyDataFilter
00067 {
00068 public:
00069 vtkTypeRevisionMacro(vtkPolyDataConnectivityFilter,vtkPolyDataToPolyDataFilter);
00070 void PrintSelf(ostream& os, vtkIndent indent);
00071
00073 static vtkPolyDataConnectivityFilter *New();
00074
00076
00079 vtkSetMacro(ScalarConnectivity,int);
00080 vtkGetMacro(ScalarConnectivity,int);
00081 vtkBooleanMacro(ScalarConnectivity,int);
00083
00085
00087 vtkSetVectorMacro(ScalarRange,float,2);
00088 vtkGetVectorMacro(ScalarRange,float,2);
00090
00092
00093 vtkSetClampMacro(ExtractionMode,int,
00094 VTK_EXTRACT_POINT_SEEDED_REGIONS,
00095 VTK_EXTRACT_CLOSEST_POINT_REGION);
00096 vtkGetMacro(ExtractionMode,int);
00097 void SetExtractionModeToPointSeededRegions()
00098 {this->SetExtractionMode(VTK_EXTRACT_POINT_SEEDED_REGIONS);};
00099 void SetExtractionModeToCellSeededRegions()
00100 {this->SetExtractionMode(VTK_EXTRACT_CELL_SEEDED_REGIONS);};
00101 void SetExtractionModeToLargestRegion()
00102 {this->SetExtractionMode(VTK_EXTRACT_LARGEST_REGION);};
00103 void SetExtractionModeToSpecifiedRegions()
00104 {this->SetExtractionMode(VTK_EXTRACT_SPECIFIED_REGIONS);};
00105 void SetExtractionModeToClosestPointRegion()
00106 {this->SetExtractionMode(VTK_EXTRACT_CLOSEST_POINT_REGION);};
00107 void SetExtractionModeToAllRegions()
00108 {this->SetExtractionMode(VTK_EXTRACT_ALL_REGIONS);};
00109 const char *GetExtractionModeAsString();
00111
00113 void InitializeSeedList();
00114
00116 void AddSeed(int id);
00117
00119 void DeleteSeed(int id);
00120
00122 void InitializeSpecifiedRegionList();
00123
00125 void AddSpecifiedRegion(int id);
00126
00128 void DeleteSpecifiedRegion(int id);
00129
00131
00133 vtkSetVector3Macro(ClosestPoint,float);
00134 vtkGetVectorMacro(ClosestPoint,float,3);
00136
00138 int GetNumberOfExtractedRegions();
00139
00141
00142 vtkSetMacro(ColorRegions,int);
00143 vtkGetMacro(ColorRegions,int);
00144 vtkBooleanMacro(ColorRegions,int);
00146
00147 protected:
00148 vtkPolyDataConnectivityFilter();
00149 ~vtkPolyDataConnectivityFilter();
00150
00151
00152 void Execute();
00153
00154 int ColorRegions;
00155 int ExtractionMode;
00156 vtkIdList *Seeds;
00157 vtkIdList *SpecifiedRegionIds;
00158 vtkIdTypeArray *RegionSizes;
00159
00160 float ClosestPoint[3];
00161
00162 int ScalarConnectivity;
00163 float ScalarRange[2];
00164
00165 void TraverseAndMark();
00166
00167 private:
00168
00169 vtkDataArray *CellScalars;
00170 vtkIdList *NeighborCellPointIds;
00171 int *Visited;
00172 vtkIdType *PointMap;
00173 vtkDataArray *NewScalars;
00174 int RegionNumber;
00175 vtkIdType PointNumber;
00176 vtkIdType NumCellsInRegion;
00177 vtkDataArray *InScalars;
00178 vtkPolyData *Mesh;
00179 vtkIdList *Wave;
00180 vtkIdList *Wave2;
00181 vtkIdList *PointIds;
00182 vtkIdList *CellIds;
00183 private:
00184 vtkPolyDataConnectivityFilter(const vtkPolyDataConnectivityFilter&);
00185 void operator=(const vtkPolyDataConnectivityFilter&);
00186 };
00187
00189 inline const char *vtkPolyDataConnectivityFilter::GetExtractionModeAsString(void)
00190 {
00191 if ( this->ExtractionMode == VTK_EXTRACT_POINT_SEEDED_REGIONS )
00192 {
00193 return "ExtractPointSeededRegions";
00194 }
00195 else if ( this->ExtractionMode == VTK_EXTRACT_CELL_SEEDED_REGIONS )
00196 {
00197 return "ExtractCellSeededRegions";
00198 }
00199 else if ( this->ExtractionMode == VTK_EXTRACT_SPECIFIED_REGIONS )
00200 {
00201 return "ExtractSpecifiedRegions";
00202 }
00203 else if ( this->ExtractionMode == VTK_EXTRACT_ALL_REGIONS )
00204 {
00205 return "ExtractAllRegions";
00206 }
00207 else if ( this->ExtractionMode == VTK_EXTRACT_CLOSEST_POINT_REGION )
00208 {
00209 return "ExtractClosestPointRegion";
00210 }
00211 else
00212 {
00213 return "ExtractLargestRegion";
00214 }
00215 }
00216
00217
00218 #endif