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 "vtkIOLegacyModule.h" // For export macro 00032 #include "vtkWriter.h" 00033 00034 class vtkCellArray; 00035 class vtkDataArray; 00036 class vtkDataSet; 00037 class vtkFieldData; 00038 class vtkGraph; 00039 class vtkPoints; 00040 class vtkTable; 00041 00042 class VTKIOLEGACY_EXPORT vtkDataWriter : public vtkWriter 00043 { 00044 public: 00045 vtkTypeMacro(vtkDataWriter,vtkWriter); 00046 void PrintSelf(ostream& os, vtkIndent indent); 00047 00050 static vtkDataWriter *New(); 00051 00053 00054 vtkSetStringMacro(FileName); 00055 vtkGetStringMacro(FileName); 00057 00059 00060 vtkSetMacro(WriteToOutputString,int); 00061 vtkGetMacro(WriteToOutputString,int); 00062 vtkBooleanMacro(WriteToOutputString,int); 00064 00066 00069 vtkGetMacro(OutputStringLength, int); 00070 vtkGetStringMacro(OutputString); 00071 unsigned char *GetBinaryOutputString() 00072 { 00073 return reinterpret_cast<unsigned char *>(this->OutputString); 00074 } 00076 00079 vtkStdString GetOutputStdString(); 00080 00084 char *RegisterAndGetOutputString(); 00085 00087 00088 vtkSetStringMacro(Header); 00089 vtkGetStringMacro(Header); 00091 00093 00094 vtkSetClampMacro(FileType,int,VTK_ASCII,VTK_BINARY); 00095 vtkGetMacro(FileType,int); 00096 void SetFileTypeToASCII() {this->SetFileType(VTK_ASCII);}; 00097 void SetFileTypeToBinary() {this->SetFileType(VTK_BINARY);}; 00099 00101 00103 vtkSetStringMacro(ScalarsName); 00104 vtkGetStringMacro(ScalarsName); 00106 00108 00110 vtkSetStringMacro(VectorsName); 00111 vtkGetStringMacro(VectorsName); 00113 00115 00117 vtkSetStringMacro(TensorsName); 00118 vtkGetStringMacro(TensorsName); 00120 00122 00124 vtkSetStringMacro(NormalsName); 00125 vtkGetStringMacro(NormalsName); 00127 00129 00131 vtkSetStringMacro(TCoordsName); 00132 vtkGetStringMacro(TCoordsName); 00134 00136 00138 vtkSetStringMacro(GlobalIdsName); 00139 vtkGetStringMacro(GlobalIdsName); 00141 00143 00145 vtkSetStringMacro(PedigreeIdsName); 00146 vtkGetStringMacro(PedigreeIdsName); 00148 00150 00152 vtkSetStringMacro(EdgeFlagsName); 00153 vtkGetStringMacro(EdgeFlagsName); 00155 00157 00159 vtkSetStringMacro(LookupTableName); 00160 vtkGetStringMacro(LookupTableName); 00162 00164 00166 vtkSetStringMacro(FieldDataName); 00167 vtkGetStringMacro(FieldDataName); 00169 00171 virtual ostream *OpenVTKFile(); 00172 00174 int WriteHeader(ostream *fp); 00175 00177 int WritePoints(ostream *fp, vtkPoints *p); 00178 00180 int WriteCoordinates(ostream *fp, vtkDataArray *coords, int axes); 00181 00183 int WriteCells(ostream *fp, vtkCellArray *cells, const char *label); 00184 00187 int WriteCellData(ostream *fp, vtkDataSet *ds); 00188 00191 int WritePointData(ostream *fp, vtkDataSet *ds); 00192 00195 int WriteEdgeData(ostream *fp, vtkGraph *g); 00196 00199 int WriteVertexData(ostream *fp, vtkGraph *g); 00200 00203 int WriteRowData(ostream *fp, vtkTable *g); 00204 00206 int WriteFieldData(ostream *fp, vtkFieldData *f); 00207 00211 int WriteDataSetData(ostream *fp, vtkDataSet *ds); 00212 00214 void CloseVTKFile(ostream *fp); 00215 00216 00217 protected: 00218 vtkDataWriter(); 00219 ~vtkDataWriter(); 00220 00221 int WriteToOutputString; 00222 char *OutputString; 00223 int OutputStringLength; 00224 00225 void WriteData(); //dummy method to allow this class to be instantiated and delegated to 00226 00227 char *FileName; 00228 char *Header; 00229 int FileType; 00230 00231 char *ScalarsName; 00232 char *VectorsName; 00233 char *TensorsName; 00234 char *TCoordsName; 00235 char *NormalsName; 00236 char *LookupTableName; 00237 char *FieldDataName; 00238 char* GlobalIdsName; 00239 char* PedigreeIdsName; 00240 char* EdgeFlagsName; 00241 00242 int WriteArray(ostream *fp, int dataType, vtkAbstractArray *data, const char *format, 00243 int num, int numComp); 00244 int WriteScalarData(ostream *fp, vtkDataArray *s, int num); 00245 int WriteVectorData(ostream *fp, vtkDataArray *v, int num); 00246 int WriteNormalData(ostream *fp, vtkDataArray *n, int num); 00247 int WriteTCoordData(ostream *fp, vtkDataArray *tc, int num); 00248 int WriteTensorData(ostream *fp, vtkDataArray *t, int num); 00249 int WriteGlobalIdData(ostream *fp, vtkDataArray *g, int num); 00250 int WritePedigreeIdData(ostream *fp, vtkAbstractArray *p, int num); 00251 int WriteEdgeFlagsData(ostream *fp, vtkDataArray *edgeFlags, int num); 00252 00253 private: 00254 vtkDataWriter(const vtkDataWriter&); // Not implemented. 00255 void operator=(const vtkDataWriter&); // Not implemented. 00256 }; 00257 00258 #endif