00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00025 #ifndef __vtkXMLCompositeDataWriter_h
00026 #define __vtkXMLCompositeDataWriter_h
00027
00028 #include "vtkXMLWriter.h"
00029 #include "vtkStdString.h"
00030
00031 class vtkCallbackCommand;
00032 class vtkCompositeDataSet;
00033 class vtkXMLDataElement;
00034 class vtkXMLCompositeDataWriterInternals;
00035
00036 class VTK_IO_EXPORT vtkXMLCompositeDataWriter : public vtkXMLWriter
00037 {
00038 public:
00039 vtkTypeRevisionMacro(vtkXMLCompositeDataWriter,vtkXMLWriter);
00040 void PrintSelf(ostream& os, vtkIndent indent);
00041
00043 virtual const char* GetDefaultFileExtension();
00044
00046
00048 vtkGetMacro(Piece, int);
00049 vtkSetMacro(Piece, int);
00051
00053
00054 vtkGetMacro(NumberOfPieces, int);
00055 vtkSetMacro(NumberOfPieces, int);
00057
00059
00060 vtkGetMacro(GhostLevel, int);
00061 vtkSetMacro(GhostLevel, int);
00063
00065
00066 vtkGetMacro(WriteMetaFile, int);
00067 virtual void SetWriteMetaFile(int flag);
00069
00070
00071 int ProcessRequest(vtkInformation*,
00072 vtkInformationVector**,
00073 vtkInformationVector*);
00074
00075 protected:
00076 vtkXMLCompositeDataWriter();
00077 ~vtkXMLCompositeDataWriter();
00078
00079
00080
00081
00082 virtual int GetDataSetMajorVersion() { return 1; }
00083 virtual int GetDataSetMinorVersion() { return 0; }
00084
00085
00086 vtkStdString CreatePieceFileName(int index);
00087
00088
00089 virtual int FillInputPortInformation(int port, vtkInformation* info);
00090
00091 int RequestData(
00092 vtkInformation* , vtkInformationVector** , vtkInformationVector*);
00093 int RequestUpdateExtent(
00094 vtkInformation* , vtkInformationVector** , vtkInformationVector*);
00095
00096 virtual int WriteData();
00097 virtual const char* GetDataSetName();
00098
00099
00100 virtual vtkExecutive* CreateDefaultExecutive();
00101
00102 vtkInformation* InputInformation;
00103
00105 virtual void FillDataTypes(vtkCompositeDataSet*);
00106
00107 unsigned int GetNumberOfDataTypes();
00108 int* GetDataTypesPointer();
00109
00110
00111 void CreateWriters(vtkCompositeDataSet*);
00112 vtkXMLWriter* GetWriter(int index);
00113
00114
00115 void SplitFileName();
00116 const char* GetFilePrefix();
00117 const char* GetFilePath();
00118
00122 int WriteMetaFileIfRequested();
00123
00124
00125 void MakeDirectory(const char* name);
00126
00127
00128 void RemoveADirectory(const char* name);
00129
00130
00131 vtkXMLCompositeDataWriterInternals* Internal;
00132
00133
00134 int Piece;
00135
00136
00137 int NumberOfPieces;
00138
00139
00140 int GhostLevel;
00141
00142
00143 int WriteMetaFile;
00144 int WriteMetaFileInitialized;
00145
00146
00147 static void ProgressCallbackFunction(vtkObject*, unsigned long, void*,
00148 void*);
00149
00150 virtual void ProgressCallback(vtkAlgorithm* w);
00151
00152
00153 vtkCallbackCommand* ProgressObserver;
00154
00155
00156 virtual void ReportReferences(vtkGarbageCollector*);
00157
00158
00159
00160 virtual int WriteComposite(vtkCompositeDataSet* compositeData,
00161 vtkXMLDataElement* element, int &writerIdx)=0;
00162
00163
00164 virtual int WriteNonCompositeData(vtkDataObject* dObj,
00165 vtkXMLDataElement* element, int& writerIdx);
00166 private:
00167 vtkXMLCompositeDataWriter(const vtkXMLCompositeDataWriter&);
00168 void operator=(const vtkXMLCompositeDataWriter&);
00169 };
00170
00171 #endif