00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00041 #ifndef __vtkConvertSelection_h
00042 #define __vtkConvertSelection_h
00043
00044 #include "vtkSelectionAlgorithm.h"
00045
00046 class vtkCompositeDataSet;
00047 class vtkGraph;
00048 class vtkIdTypeArray;
00049 class vtkSelection;
00050 class vtkSelectionNode;
00051 class vtkStringArray;
00052 class vtkTable;
00053
00054 class VTK_GRAPHICS_EXPORT vtkConvertSelection : public vtkSelectionAlgorithm
00055 {
00056 public:
00057 static vtkConvertSelection *New();
00058 vtkTypeMacro(vtkConvertSelection, vtkSelectionAlgorithm);
00059 void PrintSelf(ostream& os, vtkIndent indent);
00060
00063 void SetDataObjectConnection(vtkAlgorithmOutput* in);
00064
00066
00070 vtkSetMacro(InputFieldType, int);
00071 vtkGetMacro(InputFieldType, int);
00073
00075
00077 vtkSetMacro(OutputType, int);
00078 vtkGetMacro(OutputType, int);
00080
00082
00083 virtual void SetArrayName(const char*);
00084 virtual const char* GetArrayName();
00086
00088
00089 virtual void SetArrayNames(vtkStringArray*);
00090 vtkGetObjectMacro(ArrayNames, vtkStringArray);
00092
00094
00095 void AddArrayName(const char*);
00096 void ClearArrayNames();
00098
00100
00102 vtkSetMacro(MatchAnyValues, bool);
00103 vtkGetMacro(MatchAnyValues, bool);
00104 vtkBooleanMacro(MatchAnyValues, bool);
00106
00108
00111 static vtkSelection* ToIndexSelection(
00112 vtkSelection* input,
00113 vtkDataObject* data);
00114 static vtkSelection* ToGlobalIdSelection(
00115 vtkSelection* input,
00116 vtkDataObject* data);
00117 static vtkSelection* ToPedigreeIdSelection(
00118 vtkSelection* input,
00119 vtkDataObject* data);
00120 static vtkSelection* ToValueSelection(
00121 vtkSelection* input,
00122 vtkDataObject* data,
00123 const char* arrayName);
00124 static vtkSelection* ToValueSelection(
00125 vtkSelection* input,
00126 vtkDataObject* data,
00127 vtkStringArray* arrayNames);
00129
00131
00134 static void GetSelectedItems(
00135 vtkSelection* input,
00136 vtkDataObject* data,
00137 int fieldType,
00138 vtkIdTypeArray* indices);
00140
00142
00144 static void GetSelectedVertices(
00145 vtkSelection* input,
00146 vtkGraph* data,
00147 vtkIdTypeArray* indices);
00148 static void GetSelectedEdges(
00149 vtkSelection* input,
00150 vtkGraph* data,
00151 vtkIdTypeArray* indices);
00152 static void GetSelectedPoints(
00153 vtkSelection* input,
00154 vtkDataSet* data,
00155 vtkIdTypeArray* indices);
00156 static void GetSelectedCells(
00157 vtkSelection* input,
00158 vtkDataSet* data,
00159 vtkIdTypeArray* indices);
00160 static void GetSelectedRows(
00161 vtkSelection* input,
00162 vtkTable* data,
00163 vtkIdTypeArray* indices);
00165
00167
00169 static vtkSelection* ToSelectionType(
00170 vtkSelection* input,
00171 vtkDataObject* data,
00172 int type,
00173 vtkStringArray* arrayNames = 0,
00174 int inputFieldType = -1);
00176
00177 protected:
00178 vtkConvertSelection();
00179 ~vtkConvertSelection();
00180
00181 virtual int RequestData(
00182 vtkInformation *,
00183 vtkInformationVector **,
00184 vtkInformationVector *);
00185
00186 int Convert(
00187 vtkSelection* input,
00188 vtkDataObject* data,
00189 vtkSelection* output);
00190
00191 int ConvertCompositeDataSet(
00192 vtkSelection* input,
00193 vtkCompositeDataSet* data,
00194 vtkSelection* output);
00195
00196 int ConvertToIndexSelection(
00197 vtkSelectionNode* input,
00198 vtkDataSet* data,
00199 vtkSelectionNode* output);
00200
00201 int SelectTableFromTable(
00202 vtkTable* selTable,
00203 vtkTable* dataTable,
00204 vtkIdTypeArray* indices);
00205
00206 int ConvertToBlockSelection(
00207 vtkSelection* input, vtkCompositeDataSet* data, vtkSelection* output);
00208
00209 virtual int FillInputPortInformation(
00210 int port, vtkInformation* info);
00211
00212 int OutputType;
00213 int InputFieldType;
00214 vtkStringArray* ArrayNames;
00215 bool MatchAnyValues;
00216
00217 private:
00218 vtkConvertSelection(const vtkConvertSelection&);
00219 void operator=(const vtkConvertSelection&);
00220 };
00221
00222 #endif