00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00085 #ifndef __vtkFieldDataToAttributeDataFilter_h
00086 #define __vtkFieldDataToAttributeDataFilter_h
00087
00088 #include "vtkDataSetToDataSetFilter.h"
00089
00090 #define VTK_DATA_OBJECT_FIELD 0
00091 #define VTK_POINT_DATA_FIELD 1
00092 #define VTK_CELL_DATA_FIELD 2
00093
00094 #define VTK_CELL_DATA 0
00095 #define VTK_POINT_DATA 1
00096
00097 class VTK_GRAPHICS_EXPORT vtkFieldDataToAttributeDataFilter : public vtkDataSetToDataSetFilter
00098 {
00099 public:
00100 void PrintSelf(ostream& os, vtkIndent indent);
00101 vtkTypeMacro(vtkFieldDataToAttributeDataFilter,vtkDataSetToDataSetFilter);
00102
00105 static vtkFieldDataToAttributeDataFilter *New();
00106
00108
00112 vtkSetMacro(InputField,int);
00113 vtkGetMacro(InputField,int);
00114 void SetInputFieldToDataObjectField()
00115 {this->SetInputField(VTK_DATA_OBJECT_FIELD);};
00116 void SetInputFieldToPointDataField()
00117 {this->SetInputField(VTK_POINT_DATA_FIELD);};
00118 void SetInputFieldToCellDataField()
00119 {this->SetInputField(VTK_CELL_DATA_FIELD);};
00121
00123
00125 vtkSetMacro(OutputAttributeData,int);
00126 vtkGetMacro(OutputAttributeData,int);
00127 void SetOutputAttributeDataToCellData()
00128 {this->SetOutputAttributeData(VTK_CELL_DATA);};
00129 void SetOutputAttributeDataToPointData()
00130 {this->SetOutputAttributeData(VTK_POINT_DATA);};
00132
00134
00139 void SetScalarComponent(int comp, const char *arrayName, int arrayComp,
00140 int min, int max, int normalize);
00141 void SetScalarComponent(int comp, const char *arrayName, int arrayComp)
00142 {this->SetScalarComponent(comp, arrayName, arrayComp, -1, -1, this->DefaultNormalize);};
00143 const char *GetScalarComponentArrayName(int comp);
00144 int GetScalarComponentArrayComponent(int comp);
00145 int GetScalarComponentMinRange(int comp);
00146 int GetScalarComponentMaxRange(int comp);
00147 int GetScalarComponentNormalizeFlag(int comp);
00149
00151
00156 void SetVectorComponent(int comp, const char *arrayName, int arrayComp,
00157 int min, int max, int normalize);
00158 void SetVectorComponent(int comp, const char *arrayName, int arrayComp)
00159 {this->SetVectorComponent(comp, arrayName, arrayComp, -1, -1, this->DefaultNormalize);};
00160 const char *GetVectorComponentArrayName(int comp);
00161 int GetVectorComponentArrayComponent(int comp);
00162 int GetVectorComponentMinRange(int comp);
00163 int GetVectorComponentMaxRange(int comp);
00164 int GetVectorComponentNormalizeFlag(int comp);
00166
00168
00173 void SetNormalComponent(int comp, const char *arrayName, int arrayComp,
00174 int min, int max, int normalize);
00175 void SetNormalComponent(int comp, const char *arrayName, int arrayComp)
00176 {this->SetNormalComponent(comp, arrayName, arrayComp, -1, -1, this->DefaultNormalize);};
00177 const char *GetNormalComponentArrayName(int comp);
00178 int GetNormalComponentArrayComponent(int comp);
00179 int GetNormalComponentMinRange(int comp);
00180 int GetNormalComponentMaxRange(int comp);
00181 int GetNormalComponentNormalizeFlag(int comp);
00183
00185
00190 void SetTensorComponent(int comp, const char *arrayName, int arrayComp,
00191 int min, int max, int normalize);
00192 void SetTensorComponent(int comp, const char *arrayName, int arrayComp)
00193 {this->SetTensorComponent(comp, arrayName, arrayComp, -1, -1, this->DefaultNormalize);};
00194 const char *GetTensorComponentArrayName(int comp);
00195 int GetTensorComponentArrayComponent(int comp);
00196 int GetTensorComponentMinRange(int comp);
00197 int GetTensorComponentMaxRange(int comp);
00198 int GetTensorComponentNormalizeFlag(int comp);
00200
00202
00207 void SetTCoordComponent(int comp, const char *arrayName, int arrayComp,
00208 int min, int max, int normalize);
00209 void SetTCoordComponent(int comp, const char *arrayName, int arrayComp)
00210 {this->SetTCoordComponent(comp, arrayName, arrayComp, -1, -1, this->DefaultNormalize);};
00211 const char *GetTCoordComponentArrayName(int comp);
00212 int GetTCoordComponentArrayComponent(int comp);
00213 int GetTCoordComponentMinRange(int comp);
00214 int GetTCoordComponentMaxRange(int comp);
00215 int GetTCoordComponentNormalizeFlag(int comp);
00217
00219
00221 vtkSetMacro(DefaultNormalize,int);
00222 vtkGetMacro(DefaultNormalize,int);
00223 vtkBooleanMacro(DefaultNormalize,int);
00225
00226
00227
00231 static int GetComponentsType(int numComp, vtkDataArray **arrays);
00232
00234
00238 static int ConstructArray(vtkDataArray *da, int comp, vtkDataArray *frray,
00239 int fieldComp, vtkIdType min, vtkIdType max,
00240 int normalize);
00242
00245 static vtkDataArray *GetFieldArray(vtkFieldData *fd, char *name, int comp);
00246
00248 static void SetArrayName(vtkObject *self, char* &name, const char *newName);
00249
00250
00253 static int UpdateComponentRange(vtkDataArray *da, vtkIdType compRange[2]);
00254
00255
00257 virtual void ComputeInputUpdateExtents( vtkDataObject *output );
00258
00259 protected:
00260 vtkFieldDataToAttributeDataFilter();
00261 ~vtkFieldDataToAttributeDataFilter();
00262
00263 void Execute();
00264
00265 int InputField;
00266 int OutputAttributeData;
00267
00268 int NumberOfScalarComponents;
00269 char *ScalarArrays[4];
00270 int ScalarArrayComponents[4];
00271 vtkIdType ScalarComponentRange[4][2];
00272 int ScalarNormalize[4];
00273
00274 char *VectorArrays[3];
00275 int VectorArrayComponents[3];
00276 vtkIdType VectorComponentRange[3][2];
00277 int VectorNormalize[3];
00278
00279 char *GhostLevelArray;
00280 int GhostLevelArrayComponent;
00281 vtkIdType GhostLevelComponentRange[2];
00282 int GhostLevelNormalize;
00283
00284 char *NormalArrays[3];
00285 int NormalArrayComponents[3];
00286 vtkIdType NormalComponentRange[3][2];
00287 int NormalNormalize[3];
00288
00289 char *TensorArrays[9];
00290 int TensorArrayComponents[9];
00291 vtkIdType TensorComponentRange[9][2];
00292 int TensorNormalize[9];
00293
00294 int NumberOfTCoordComponents;
00295 char *TCoordArrays[3];
00296 int TCoordArrayComponents[3];
00297 vtkIdType TCoordComponentRange[3][2];
00298 int TCoordNormalize[3];
00299
00300 int DefaultNormalize;
00301
00302 void ConstructScalars(int num, vtkFieldData *fd, vtkDataSetAttributes *attr,
00303 vtkIdType componentRange[4][2], char *arrays[4],
00304 int arrayComponents[4], int normalize[4], int numComp);
00305 void ConstructVectors(int num, vtkFieldData *fd, vtkDataSetAttributes *attr,
00306 vtkIdType componentRange[3][2], char *arrays[3],
00307 int arrayComponents[3], int normalize[3]);
00308 void ConstructGhostLevels(int num, vtkFieldData *fd,
00309 vtkDataSetAttributes *attr,
00310 vtkIdType componentRange[2],
00311 char *array, int arrayComponent, int normalize);
00312 void ConstructNormals(int num, vtkFieldData *fd, vtkDataSetAttributes *attr,
00313 vtkIdType componentRange[3][2], char *arrays[3],
00314 int arrayComponents[3], int normalize[3]);
00315 void ConstructTCoords(int num, vtkFieldData *fd, vtkDataSetAttributes *attr,
00316 vtkIdType componentRange[3][2], char *arrays[3],
00317 int arrayComponents[3], int normalize[3], int numComp);
00318 void ConstructTensors(int num, vtkFieldData *fd, vtkDataSetAttributes *attr,
00319 vtkIdType componentRange[9][2], char *arrays[9],
00320 int arrayComponents[9], int normalize[9]);
00321 void ConstructFieldData(int num, vtkDataSetAttributes *attr);
00322
00323 private:
00324 vtkFieldDataToAttributeDataFilter(const vtkFieldDataToAttributeDataFilter&);
00325 void operator=(const vtkFieldDataToAttributeDataFilter&);
00326 };
00327
00328 #endif
00329
00330