Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members | Related Pages

vtkDataWriter.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkDataWriter.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 =========================================================================*/
00032 #ifndef __vtkDataWriter_h
00033 #define __vtkDataWriter_h
00034 
00035 #include "vtkWriter.h"
00036 
00037 class vtkDataSet;
00038 class vtkPoints;
00039 class vtkCellArray;
00040 class vtkDataArray;
00041 class vtkFieldData;
00042 
00043 class VTK_IO_EXPORT vtkDataWriter : public vtkWriter
00044 {
00045 public:
00046   vtkTypeRevisionMacro(vtkDataWriter,vtkWriter);
00047   void PrintSelf(ostream& os, vtkIndent indent);
00048 
00051   static vtkDataWriter *New();
00052 
00054 
00055   vtkSetStringMacro(FileName);
00056   vtkGetStringMacro(FileName);
00058 
00060 
00061   vtkSetMacro(WriteToOutputString,int);
00062   vtkGetMacro(WriteToOutputString,int);
00063   vtkBooleanMacro(WriteToOutputString,int);
00065 
00067 
00070   vtkGetMacro(OutputStringLength, int);  
00071   vtkGetStringMacro(OutputString);
00072   unsigned char *GetBinaryOutputString() {
00073       return (unsigned char *)this->OutputString;};
00075       
00079   char *RegisterAndGetOutputString();
00080   
00082 
00083   vtkSetStringMacro(Header);
00084   vtkGetStringMacro(Header);
00086 
00088 
00089   vtkSetClampMacro(FileType,int,VTK_ASCII,VTK_BINARY);
00090   vtkGetMacro(FileType,int);
00091   void SetFileTypeToASCII() {this->SetFileType(VTK_ASCII);};
00092   void SetFileTypeToBinary() {this->SetFileType(VTK_BINARY);};
00094 
00096 
00098   vtkSetStringMacro(ScalarsName);
00099   vtkGetStringMacro(ScalarsName);
00101 
00103 
00105   vtkSetStringMacro(VectorsName);
00106   vtkGetStringMacro(VectorsName);
00108 
00110 
00112   vtkSetStringMacro(TensorsName);
00113   vtkGetStringMacro(TensorsName);
00115 
00117 
00119   vtkSetStringMacro(NormalsName);
00120   vtkGetStringMacro(NormalsName);
00122 
00124 
00126   vtkSetStringMacro(TCoordsName);
00127   vtkGetStringMacro(TCoordsName);
00129 
00131 
00133   vtkSetStringMacro(LookupTableName);
00134   vtkGetStringMacro(LookupTableName);
00136 
00138 
00140   vtkSetStringMacro(FieldDataName);
00141   vtkGetStringMacro(FieldDataName);
00143 
00145   virtual ostream *OpenVTKFile();
00146 
00148   int WriteHeader(ostream *fp);
00149 
00151   int WritePoints(ostream *fp, vtkPoints *p);
00152 
00154   int WriteCoordinates(ostream *fp, vtkDataArray *coords, int axes);
00155 
00157   int WriteCells(ostream *fp, vtkCellArray *cells, const char *label);
00158 
00161   int WriteCellData(ostream *fp, vtkDataSet *ds);
00162 
00165   int WritePointData(ostream *fp, vtkDataSet *ds);
00166 
00168   int WriteFieldData(ostream *fp, vtkFieldData *f);
00169 
00173   int WriteDataSetData(ostream *fp, vtkDataSet *ds);
00174 
00176   void CloseVTKFile(ostream *fp);
00177 
00178 
00179 protected:
00180   vtkDataWriter();
00181   ~vtkDataWriter();
00182 
00183   int WriteToOutputString;
00184   char *OutputString;
00185   int OutputStringLength;
00186   int OutputStringAllocatedLength;
00187   
00188   void WriteData(); //dummy method to allow this class to be instantiated and delegated to
00189 
00190   char *FileName;
00191   char *Header;
00192   int FileType;
00193 
00194   char *ScalarsName;
00195   char *VectorsName;
00196   char *TensorsName;
00197   char *TCoordsName;
00198   char *NormalsName;
00199   char *LookupTableName;
00200   char *FieldDataName;
00201 
00202   int WriteArray(ostream *fp, int dataType, vtkDataArray *data, const char *format, 
00203                  int num, int numComp);
00204   int WriteScalarData(ostream *fp, vtkDataArray *s, int num);
00205   int WriteVectorData(ostream *fp, vtkDataArray *v, int num);
00206   int WriteNormalData(ostream *fp, vtkDataArray *n, int num);
00207   int WriteTCoordData(ostream *fp, vtkDataArray *tc, int num);
00208   int WriteTensorData(ostream *fp, vtkDataArray *t, int num);
00209 
00210 private:
00211   vtkDataWriter(const vtkDataWriter&);  // Not implemented.
00212   void operator=(const vtkDataWriter&);  // Not implemented.
00213 };
00214 
00215 #endif
00216 
00217