00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00074 #ifndef __vtkFieldDataToAttributeDataFilter_h
00075 #define __vtkFieldDataToAttributeDataFilter_h
00076
00077 #include "vtkDataSetToDataSetFilter.h"
00078
00079 #define VTK_DATA_OBJECT_FIELD 0
00080 #define VTK_POINT_DATA_FIELD 1
00081 #define VTK_CELL_DATA_FIELD 2
00082
00083 #define VTK_CELL_DATA 0
00084 #define VTK_POINT_DATA 1
00085
00086 class vtkDataArray;
00087 class vtkDataSetAttributes;
00088 class vtkFieldData;
00089
00090 class VTK_GRAPHICS_EXPORT vtkFieldDataToAttributeDataFilter : public vtkDataSetToDataSetFilter
00091 {
00092 public:
00093 void PrintSelf(ostream& os, vtkIndent indent);
00094 vtkTypeRevisionMacro(vtkFieldDataToAttributeDataFilter,vtkDataSetToDataSetFilter);
00095
00098 static vtkFieldDataToAttributeDataFilter *New();
00099
00101
00105 vtkSetMacro(InputField,int);
00106 vtkGetMacro(InputField,int);
00107 void SetInputFieldToDataObjectField()
00108 {this->SetInputField(VTK_DATA_OBJECT_FIELD);};
00109 void SetInputFieldToPointDataField()
00110 {this->SetInputField(VTK_POINT_DATA_FIELD);};
00111 void SetInputFieldToCellDataField()
00112 {this->SetInputField(VTK_CELL_DATA_FIELD);};
00114
00116
00118 vtkSetMacro(OutputAttributeData,int);
00119 vtkGetMacro(OutputAttributeData,int);
00120 void SetOutputAttributeDataToCellData()
00121 {this->SetOutputAttributeData(VTK_CELL_DATA);};
00122 void SetOutputAttributeDataToPointData()
00123 {this->SetOutputAttributeData(VTK_POINT_DATA);};
00125
00127
00132 void SetScalarComponent(int comp, const char *arrayName, int arrayComp,
00133 int min, int max, int normalize);
00134 void SetScalarComponent(int comp, const char *arrayName, int arrayComp)
00135 {this->SetScalarComponent(comp, arrayName, arrayComp, -1, -1, this->DefaultNormalize);};
00136 const char *GetScalarComponentArrayName(int comp);
00137 int GetScalarComponentArrayComponent(int comp);
00138 int GetScalarComponentMinRange(int comp);
00139 int GetScalarComponentMaxRange(int comp);
00140 int GetScalarComponentNormalizeFlag(int comp);
00142
00144
00149 void SetVectorComponent(int comp, const char *arrayName, int arrayComp,
00150 int min, int max, int normalize);
00151 void SetVectorComponent(int comp, const char *arrayName, int arrayComp)
00152 {this->SetVectorComponent(comp, arrayName, arrayComp, -1, -1, this->DefaultNormalize);};
00153 const char *GetVectorComponentArrayName(int comp);
00154 int GetVectorComponentArrayComponent(int comp);
00155 int GetVectorComponentMinRange(int comp);
00156 int GetVectorComponentMaxRange(int comp);
00157 int GetVectorComponentNormalizeFlag(int comp);
00159
00161
00166 void SetNormalComponent(int comp, const char *arrayName, int arrayComp,
00167 int min, int max, int normalize);
00168 void SetNormalComponent(int comp, const char *arrayName, int arrayComp)
00169 {this->SetNormalComponent(comp, arrayName, arrayComp, -1, -1, this->DefaultNormalize);};
00170 const char *GetNormalComponentArrayName(int comp);
00171 int GetNormalComponentArrayComponent(int comp);
00172 int GetNormalComponentMinRange(int comp);
00173 int GetNormalComponentMaxRange(int comp);
00174 int GetNormalComponentNormalizeFlag(int comp);
00176
00178
00183 void SetTensorComponent(int comp, const char *arrayName, int arrayComp,
00184 int min, int max, int normalize);
00185 void SetTensorComponent(int comp, const char *arrayName, int arrayComp)
00186 {this->SetTensorComponent(comp, arrayName, arrayComp, -1, -1, this->DefaultNormalize);};
00187 const char *GetTensorComponentArrayName(int comp);
00188 int GetTensorComponentArrayComponent(int comp);
00189 int GetTensorComponentMinRange(int comp);
00190 int GetTensorComponentMaxRange(int comp);
00191 int GetTensorComponentNormalizeFlag(int comp);
00193
00195
00200 void SetTCoordComponent(int comp, const char *arrayName, int arrayComp,
00201 int min, int max, int normalize);
00202 void SetTCoordComponent(int comp, const char *arrayName, int arrayComp)
00203 {this->SetTCoordComponent(comp, arrayName, arrayComp, -1, -1, this->DefaultNormalize);};
00204 const char *GetTCoordComponentArrayName(int comp);
00205 int GetTCoordComponentArrayComponent(int comp);
00206 int GetTCoordComponentMinRange(int comp);
00207 int GetTCoordComponentMaxRange(int comp);
00208 int GetTCoordComponentNormalizeFlag(int comp);
00210
00212
00214 vtkSetMacro(DefaultNormalize,int);
00215 vtkGetMacro(DefaultNormalize,int);
00216 vtkBooleanMacro(DefaultNormalize,int);
00218
00219
00220
00224 static int GetComponentsType(int numComp, vtkDataArray **arrays);
00225
00227
00231 static int ConstructArray(vtkDataArray *da, int comp, vtkDataArray *frray,
00232 int fieldComp, vtkIdType min, vtkIdType max,
00233 int normalize);
00235
00238 static vtkDataArray *GetFieldArray(vtkFieldData *fd, char *name, int comp);
00239
00241 static void SetArrayName(vtkObject *self, char* &name, const char *newName);
00242
00243
00246 static int UpdateComponentRange(vtkDataArray *da, vtkIdType compRange[2]);
00247
00248
00250 virtual void ComputeInputUpdateExtents( vtkDataObject *output );
00251
00252 protected:
00253 vtkFieldDataToAttributeDataFilter();
00254 ~vtkFieldDataToAttributeDataFilter();
00255
00256 void Execute();
00257
00258 int InputField;
00259 int OutputAttributeData;
00260
00261 int NumberOfScalarComponents;
00262 char *ScalarArrays[4];
00263 int ScalarArrayComponents[4];
00264 vtkIdType ScalarComponentRange[4][2];
00265 int ScalarNormalize[4];
00266
00267 char *VectorArrays[3];
00268 int VectorArrayComponents[3];
00269 vtkIdType VectorComponentRange[3][2];
00270 int VectorNormalize[3];
00271
00272 char *GhostLevelArray;
00273 int GhostLevelArrayComponent;
00274 vtkIdType GhostLevelComponentRange[2];
00275 int GhostLevelNormalize;
00276
00277 char *NormalArrays[3];
00278 int NormalArrayComponents[3];
00279 vtkIdType NormalComponentRange[3][2];
00280 int NormalNormalize[3];
00281
00282 char *TensorArrays[9];
00283 int TensorArrayComponents[9];
00284 vtkIdType TensorComponentRange[9][2];
00285 int TensorNormalize[9];
00286
00287 int NumberOfTCoordComponents;
00288 char *TCoordArrays[3];
00289 int TCoordArrayComponents[3];
00290 vtkIdType TCoordComponentRange[3][2];
00291 int TCoordNormalize[3];
00292
00293 int DefaultNormalize;
00294
00295 void ConstructScalars(int num, vtkFieldData *fd, vtkDataSetAttributes *attr,
00296 vtkIdType componentRange[4][2], char *arrays[4],
00297 int arrayComponents[4], int normalize[4], int numComp);
00298 void ConstructVectors(int num, vtkFieldData *fd, vtkDataSetAttributes *attr,
00299 vtkIdType componentRange[3][2], char *arrays[3],
00300 int arrayComponents[3], int normalize[3]);
00301 void ConstructGhostLevels(int num, vtkFieldData *fd,
00302 vtkDataSetAttributes *attr,
00303 vtkIdType componentRange[2],
00304 char *array, int arrayComponent, int normalize);
00305 void ConstructNormals(int num, vtkFieldData *fd, vtkDataSetAttributes *attr,
00306 vtkIdType componentRange[3][2], char *arrays[3],
00307 int arrayComponents[3], int normalize[3]);
00308 void ConstructTCoords(int num, vtkFieldData *fd, vtkDataSetAttributes *attr,
00309 vtkIdType componentRange[3][2], char *arrays[3],
00310 int arrayComponents[3], int normalize[3], int numComp);
00311 void ConstructTensors(int num, vtkFieldData *fd, vtkDataSetAttributes *attr,
00312 vtkIdType componentRange[9][2], char *arrays[9],
00313 int arrayComponents[9], int normalize[9]);
00314 void ConstructFieldData(int num, vtkDataSetAttributes *attr);
00315
00316 private:
00317 vtkFieldDataToAttributeDataFilter(const vtkFieldDataToAttributeDataFilter&);
00318 void operator=(const vtkFieldDataToAttributeDataFilter&);
00319 };
00320
00321 #endif
00322
00323