Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

dox/Graphics/vtkPolyDataConnectivityFilter.h

Go to the documentation of this file.
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkPolyDataConnectivityFilter.h,v $ 00005 Language: C++ 00006 00007 Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 00008 All rights reserved. 00009 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00010 00011 This software is distributed WITHOUT ANY WARRANTY; without even 00012 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00013 PURPOSE. See the above copyright notice for more information. 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 // Usual data generation method 00152 void Execute(); 00153 00154 int ColorRegions; //boolean turns on/off scalar gen for separate regions 00155 int ExtractionMode; //how to extract regions 00156 vtkIdList *Seeds; //id's of points or cells used to seed regions 00157 vtkIdList *SpecifiedRegionIds; //regions specified for extraction 00158 vtkIdTypeArray *RegionSizes; //size (in cells) of each region extracted 00159 00160 float ClosestPoint[3]; 00161 00162 int ScalarConnectivity; 00163 float ScalarRange[2]; 00164 00165 void TraverseAndMark(); 00166 00167 private: 00168 // used to support algorithm execution 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&); // Not implemented. 00185 void operator=(const vtkPolyDataConnectivityFilter&); // Not implemented. 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