00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00030 #ifndef _vtkXdmfWriter_h
00031 #define _vtkXdmfWriter_h
00032
00033 #include "vtkProcessObject.h"
00034
00035 class vtkDataSet;
00036 class vtkPoints;
00037 class vtkCellArray;
00038 class vtkDataArray;
00039 class vtkDataSetCollection;
00040
00041 class VTK_EXPORT vtkXdmfWriter : public vtkProcessObject
00042 {
00043 public:
00044 static vtkXdmfWriter *New();
00045 vtkTypeRevisionMacro(vtkXdmfWriter,vtkProcessObject);
00046 void PrintSelf(ostream& os, vtkIndent indent);
00047
00049
00051 vtkSetClampMacro(AllLight, int, 0, 1);
00052 vtkBooleanMacro(AllLight, int);
00053 vtkGetMacro(AllLight, int);
00055
00057
00058 vtkSetClampMacro(AllHeavy, int, 0, 1);
00059 vtkBooleanMacro(AllHeavy, int);
00060 vtkGetMacro(AllHeavy, int);
00062
00064
00065 virtual void SetFileName(const char* fname);
00066 virtual const char* GetFileName();
00068
00070
00071 vtkSetStringMacro(GridName);
00072 vtkGetStringMacro(GridName);
00074
00076
00077 vtkSetStringMacro(DomainName);
00078 vtkGetStringMacro(DomainName);
00080
00082
00083 vtkSetStringMacro(CollectionName);
00084 vtkGetStringMacro(CollectionName);
00086
00088
00090 vtkSetClampMacro(GridOnly, int, 0, 1);
00091 vtkBooleanMacro(GridOnly, int);
00092 vtkGetMacro(GridOnly, int);
00094
00096
00097 virtual void SetHeavyDataSetName( const char *name);
00098 virtual const char* GetHeavyDataSetName();
00100
00102 virtual void SetInput(vtkDataSet* ds);
00103
00105 void Write();
00106
00108 void AddInput(vtkDataObject *in);
00109
00111
00112 vtkDataObject *GetInput(int idx);
00113 vtkDataObject *GetInput()
00114 {return this->GetInput( 0 );}
00116
00118 void RemoveInput(vtkDataObject *in);
00119
00122 vtkDataSetCollection *GetInputList();
00123
00125
00126 void Indent(ostream& ost);
00127 void IncrementIndent() { this->CurrIndent ++; }
00128 void DecrementIndent() { this->CurrIndent --; }
00130
00132 const char* GenerateHDF5ArrayName(const char* gridName, const char* arrayName);
00133
00134 protected:
00135 vtkXdmfWriter();
00136 ~vtkXdmfWriter();
00137
00138 void WriteAttributes( ostream& ost, vtkDataSet* ds, const char* gridName );
00139 void StartTopology( ostream& ost, int cellType, vtkIdType numVert, vtkIdType numCells );
00140 void StartTopology( ostream& ost, const char* toptype, int rank, int *dims );
00141 void EndTopology( ostream& ost );
00142 void StartGeometry( ostream& ost, const char* type );
00143 void EndGeometry( ostream& ost );
00144 virtual int WriteHead( ostream& ost );
00145 virtual int WriteTail( ostream& ost );
00146 virtual int WriteGrid( ostream& ost, const char* name, vtkDataSet* ds,
00147 void* mapofcells = 0, const void *celltype = 0 );
00148 virtual int WriteCellArray( ostream& ost, vtkDataSet* Cells, const char* gridName,
00149 void* mapofcells, const void *celltype );
00150 virtual int WritePoints( ostream& ost, vtkPoints *Points, vtkDataSet* dataSet, const char* gridName );
00151 virtual int WriteDataArray( ostream& ost, vtkDataArray* array, vtkDataSet* ds,
00152 int dims[3], const char* Name, const char* Center, int type, const char* gridName,
00153 int active, int cellData = 0 );
00154 virtual int WriteVTKArray( ostream& ost, vtkDataArray* array, vtkDataSet* dataSet,
00155 int dims[3], int *extents, const char* name, const char* dataName, const char* gridName, int alllight,
00156 int cellData = 0);
00157
00158 vtkSetStringMacro(HeavyDataSetNameString);
00159 char *HeavyDataSetNameString;
00160
00161 vtkSetStringMacro(FileNameString);
00162 char *FileNameString;
00163 char *GridName;
00164 char *DomainName;
00165 char *CollectionName;
00166
00167 int AllLight;
00168 int AllHeavy;
00169
00170 int CurrIndent;
00171
00172 int GridOnly;
00173
00174 vtkSetStringMacro(HDF5ArrayName);
00175 char* HDF5ArrayName;
00176
00177
00178
00179 vtkDataSetCollection *InputList;
00180
00181 private:
00182 vtkXdmfWriter(const vtkXdmfWriter&);
00183 void operator=(const vtkXdmfWriter&);
00184 };
00185
00186 #endif