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

# Graphics/vtkSplitField.h

Go to the documentation of this file.

    00001 /*=========================================================================
    00002
    00003   Program:   Visualization Toolkit
    00004   Module:    $RCSfile: vtkSplitField.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 =========================================================================*/
    00071 #ifndef __vtkSplitField_h
    00072 #define __vtkSplitField_h
    00073
    00074 #include "vtkDataSetToDataSetFilter.h"
    00075
    00076 #include "vtkDataSetAttributes.h" // Needed for NUM_ATTRIBUTES
    00077
    00078 class vtkFieldData;
    00079
    00080 class VTK_GRAPHICS_EXPORT vtkSplitField : public vtkDataSetToDataSetFilter
    00081 {
    00082 public:
    00083   vtkTypeRevisionMacro(vtkSplitField,vtkDataSetToDataSetFilter);
    00084   void PrintSelf(ostream& os, vtkIndent indent);
    00085
    00087   static vtkSplitField *New();
    00088
    00091   void SetInputField(int attributeType, int fieldLoc);
    00092
    00095   void SetInputField(const char* name, int fieldLoc);
    00096
    00099   void SetInputField(const char* name, const char* fieldLoc);
    00100
    00102   void Split(int component, const char* arrayName);
    00103
    00104 //BTX
    00105   enum FieldLocations
    00106   {
    00107     DATA_OBJECT=0,
    00108     POINT_DATA=1,
    00109     CELL_DATA=2
    00110   };
    00111 //ETX
    00112
    00113 //BTX
    00114   struct Component
    00115   {
    00116     int Index;
    00117     char* FieldName;
    00118     Component* Next;   // linked list
    00119     void SetName(const char* name)
    00120       {
    00121         delete[] this->FieldName;
    00122         this->FieldName = 0;
    00123         if (name)
    00124           {
    00125           this->FieldName = new char[strlen(name)+1];
    00126           strcpy(this->FieldName, name);
    00127           }
    00128       }
    00129     Component() { FieldName = 0; }
    00130     ~Component() { delete[] FieldName; }
    00131   };
    00132 //ETX
    00133
    00134 protected:
    00135
    00136 //BTX
    00137   enum FieldTypes
    00138   {
    00139     NAME,
    00140     ATTRIBUTE
    00141   };
    00142 //ETX
    00143
    00144   vtkSplitField();
    00145   virtual ~vtkSplitField();
    00146
    00147   void Execute();
    00148
    00149   char* FieldName;
    00150   int FieldType;
    00151   int AttributeType;
    00152   int FieldLocation;
    00153
    00154   static char FieldLocationNames[3][12];
    00155   static char AttributeNames[vtkDataSetAttributes::NUM_ATTRIBUTES][10];
    00156
    00157   vtkDataArray* SplitArray(vtkDataArray* da, int component);
    00158
    00159
    00160   // Components are stored as a linked list.
    00161   Component* Head;
    00162   Component* Tail;
    00163
    00164   // Methods to browse/modify the linked list.
    00165   Component* GetNextComponent(Component* op)
    00166     { return op->Next; }
    00167   Component* GetFirst()
    00168     { return this->Head; }
    00169   void AddComponent(Component* op);
    00170   Component* FindComponent(int index);
    00171   void DeleteAllComponents();
    00172
    00173   void PrintComponent(Component* op, ostream& os, vtkIndent indent);
    00174   void PrintAllComponents(ostream& os, vtkIndent indent);
    00175 private:
    00176   vtkSplitField(const vtkSplitField&);  // Not implemented.
    00177   void operator=(const vtkSplitField&);  // Not implemented.
    00178 };
    00179
    00180 #endif
    00181
    00182