vtkMergeFields.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00051 #ifndef __vtkMergeFields_h
00052 #define __vtkMergeFields_h
00053
00054 #include "vtkDataSetToDataSetFilter.h"
00055
00056 class vtkDataArray;
00057 class vtkFieldData;
00058
00059 class VTK_GRAPHICS_EXPORT vtkMergeFields : public vtkDataSetToDataSetFilter
00060 {
00061 public:
00062 vtkTypeRevisionMacro(vtkMergeFields,vtkDataSetToDataSetFilter);
00063 void PrintSelf(ostream& os, vtkIndent indent);
00064
00066 static vtkMergeFields *New();
00067
00070 void SetOutputField(const char* name, int fieldLoc);
00071
00075 void SetOutputField(const char* name, const char* fieldLoc);
00076
00078 void Merge(int component, const char* arrayName, int sourceComp);
00079
00081
00083 vtkSetMacro(NumberOfComponents, int);
00085
00086
00087 enum FieldLocations
00088 {
00089 DATA_OBJECT=0,
00090 POINT_DATA=1,
00091 CELL_DATA=2
00092 };
00093
00094
00095
00096 struct Component
00097 {
00098 int Index;
00099 int SourceIndex;
00100 char* FieldName;
00101 Component* Next;
00102 void SetName(const char* name)
00103 {
00104 delete[] this->FieldName;
00105 this->FieldName = 0;
00106 if (name)
00107 {
00108 this->FieldName = new char[strlen(name)+1];
00109 strcpy(this->FieldName, name);
00110 }
00111 }
00112 Component() { FieldName = 0; }
00113 ~Component() { delete[] FieldName; }
00114 };
00115
00116
00117 protected:
00118
00119
00120 enum FieldType
00121 {
00122 NAME,
00123 ATTRIBUTE
00124 };
00125
00126
00127 vtkMergeFields();
00128 virtual ~vtkMergeFields();
00129
00130 void Execute();
00131
00132 char* FieldName;
00133 int FieldLocation;
00134 int NumberOfComponents;
00135 int OutputDataType;
00136
00137 static char FieldLocationNames[3][12];
00138
00139
00140 int MergeArray(vtkDataArray* in, vtkDataArray* out, int inComp, int outComp);
00141
00142
00143 Component* Head;
00144 Component* Tail;
00145
00146
00147 Component* GetNextComponent(Component* op)
00148 { return op->Next; }
00149 Component* GetFirst()
00150 { return this->Head; }
00151 void AddComponent(Component* op);
00152 Component* FindComponent(int index);
00153 void DeleteAllComponents();
00154
00155 void PrintComponent(Component* op, ostream& os, vtkIndent indent);
00156 void PrintAllComponents(ostream& os, vtkIndent indent);
00157 private:
00158 vtkMergeFields(const vtkMergeFields&);
00159 void operator=(const vtkMergeFields&);
00160 };
00161
00162 #endif
00163
00164