VTK
dox/IO/vtkDataWriter.h
Go to the documentation of this file.
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