VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkDataWriter.h 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 00013 00014 =========================================================================*/ 00028 #ifndef __vtkDataWriter_h 00029 #define __vtkDataWriter_h 00030 00031 #include "vtkWriter.h" 00032 00033 class vtkCellArray; 00034 class vtkDataArray; 00035 class vtkDataSet; 00036 class vtkFieldData; 00037 class vtkGraph; 00038 class vtkPoints; 00039 class vtkTable; 00040 00041 class VTK_IO_EXPORT vtkDataWriter : public vtkWriter 00042 { 00043 public: 00044 vtkTypeMacro(vtkDataWriter,vtkWriter); 00045 void PrintSelf(ostream& os, vtkIndent indent); 00046 00049 static vtkDataWriter *New(); 00050 00052 00053 vtkSetStringMacro(FileName); 00054 vtkGetStringMacro(FileName); 00056 00058 00059 vtkSetMacro(WriteToOutputString,int); 00060 vtkGetMacro(WriteToOutputString,int); 00061 vtkBooleanMacro(WriteToOutputString,int); 00063 00065 00068 vtkGetMacro(OutputStringLength, int); 00069 vtkGetStringMacro(OutputString); 00070 unsigned char *GetBinaryOutputString() 00071 { 00072 return reinterpret_cast<unsigned char *>(this->OutputString); 00073 } 00075 00078 vtkStdString GetOutputStdString(); 00079 00083 char *RegisterAndGetOutputString(); 00084 00086 00087 vtkSetStringMacro(Header); 00088 vtkGetStringMacro(Header); 00090 00092 00093 vtkSetClampMacro(FileType,int,VTK_ASCII,VTK_BINARY); 00094 vtkGetMacro(FileType,int); 00095 void SetFileTypeToASCII() {this->SetFileType(VTK_ASCII);}; 00096 void SetFileTypeToBinary() {this->SetFileType(VTK_BINARY);}; 00098 00100 00102 vtkSetStringMacro(ScalarsName); 00103 vtkGetStringMacro(ScalarsName); 00105 00107 00109 vtkSetStringMacro(VectorsName); 00110 vtkGetStringMacro(VectorsName); 00112 00114 00116 vtkSetStringMacro(TensorsName); 00117 vtkGetStringMacro(TensorsName); 00119 00121 00123 vtkSetStringMacro(NormalsName); 00124 vtkGetStringMacro(NormalsName); 00126 00128 00130 vtkSetStringMacro(TCoordsName); 00131 vtkGetStringMacro(TCoordsName); 00133 00135 00137 vtkSetStringMacro(GlobalIdsName); 00138 vtkGetStringMacro(GlobalIdsName); 00140 00142 00144 vtkSetStringMacro(PedigreeIdsName); 00145 vtkGetStringMacro(PedigreeIdsName); 00147 00149 00151 vtkSetStringMacro(LookupTableName); 00152 vtkGetStringMacro(LookupTableName); 00154 00156 00158 vtkSetStringMacro(FieldDataName); 00159 vtkGetStringMacro(FieldDataName); 00161 00163 virtual ostream *OpenVTKFile(); 00164 00166 int WriteHeader(ostream *fp); 00167 00169 int WritePoints(ostream *fp, vtkPoints *p); 00170 00172 int WriteCoordinates(ostream *fp, vtkDataArray *coords, int axes); 00173 00175 int WriteCells(ostream *fp, vtkCellArray *cells, const char *label); 00176 00179 int WriteCellData(ostream *fp, vtkDataSet *ds); 00180 00183 int WritePointData(ostream *fp, vtkDataSet *ds); 00184 00187 int WriteEdgeData(ostream *fp, vtkGraph *g); 00188 00191 int WriteVertexData(ostream *fp, vtkGraph *g); 00192 00195 int WriteRowData(ostream *fp, vtkTable *g); 00196 00198 int WriteFieldData(ostream *fp, vtkFieldData *f); 00199 00203 int WriteDataSetData(ostream *fp, vtkDataSet *ds); 00204 00206 void CloseVTKFile(ostream *fp); 00207 00208 00209 protected: 00210 vtkDataWriter(); 00211 ~vtkDataWriter(); 00212 00213 int WriteToOutputString; 00214 char *OutputString; 00215 int OutputStringLength; 00216 00217 void WriteData(); //dummy method to allow this class to be instantiated and delegated to 00218 00219 char *FileName; 00220 char *Header; 00221 int FileType; 00222 00223 char *ScalarsName; 00224 char *VectorsName; 00225 char *TensorsName; 00226 char *TCoordsName; 00227 char *NormalsName; 00228 char *LookupTableName; 00229 char *FieldDataName; 00230 char* GlobalIdsName; 00231 char* PedigreeIdsName; 00232 00233 int WriteArray(ostream *fp, int dataType, vtkAbstractArray *data, const char *format, 00234 int num, int numComp); 00235 int WriteScalarData(ostream *fp, vtkDataArray *s, int num); 00236 int WriteVectorData(ostream *fp, vtkDataArray *v, int num); 00237 int WriteNormalData(ostream *fp, vtkDataArray *n, int num); 00238 int WriteTCoordData(ostream *fp, vtkDataArray *tc, int num); 00239 int WriteTensorData(ostream *fp, vtkDataArray *t, int num); 00240 int WriteGlobalIdData(ostream *fp, vtkDataArray *g, int num); 00241 int WritePedigreeIdData(ostream *fp, vtkAbstractArray *p, int num); 00242 00243 private: 00244 vtkDataWriter(const vtkDataWriter&); // Not implemented. 00245 void operator=(const vtkDataWriter&); // Not implemented. 00246 }; 00247 00248 #endif