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
00030 class vtkCallbackCommand;
00031 class vtkCompositeDataSet;
00032 class vtkXMLDataElement;
00033 class vtkXMLCompositeDataWriterInternals;
00034
00035 class VTK_IO_EXPORT vtkXMLCompositeDataWriter : public vtkXMLWriter
00036 {
00037 public:
00038 vtkTypeRevisionMacro(vtkXMLCompositeDataWriter,vtkXMLWriter);
00039 void PrintSelf(ostream& os, vtkIndent indent);
00040
00042 virtual const char* GetDefaultFileExtension();
00043
00045
00047 vtkGetMacro(Piece, int);
00048 vtkSetMacro(Piece, int);
00050
00052
00053 vtkGetMacro(NumberOfPieces, int);
00054 vtkSetMacro(NumberOfPieces, int);
00056
00058
00059 vtkGetMacro(GhostLevel, int);
00060 vtkSetMacro(GhostLevel, int);
00062
00064
00065 vtkGetMacro(WriteMetaFile, int);
00066 virtual void SetWriteMetaFile(int flag);
00068
00069
00070 int ProcessRequest(vtkInformation*,
00071 vtkInformationVector**,
00072 vtkInformationVector*);
00073
00074 protected:
00075 vtkXMLCompositeDataWriter();
00076 ~vtkXMLCompositeDataWriter();
00077
00078
00079
00080
00081 virtual int GetDataSetMajorVersion() { return 1; }
00082 virtual int GetDataSetMinorVersion() { return 0; }
00083
00084
00085 virtual int FillInputPortInformation(int port, vtkInformation* info);
00086
00087 int RequestData(
00088 vtkInformation* , vtkInformationVector** , vtkInformationVector*);
00089 int RequestUpdateExtent(
00090 vtkInformation* , vtkInformationVector** , vtkInformationVector*);
00091
00092 virtual int WriteData();
00093 virtual const char* GetDataSetName();
00094
00095
00096 virtual vtkExecutive* CreateDefaultExecutive();
00097
00098 vtkInformation* InputInformation;
00099
00100 virtual void FillDataTypes(vtkCompositeDataSet*);
00101
00102 unsigned int GetNumberOfDataTypes();
00103 int* GetDataTypesPointer();
00104
00105
00106 void CreateWriters(vtkCompositeDataSet*);
00107 vtkXMLWriter* GetWriter(int index);
00108
00109
00110 void SplitFileName();
00111 const char* GetFilePrefix();
00112 const char* GetFilePath();
00113
00114
00115 int WriteMetaFileIfRequested();
00116
00117
00118 void MakeDirectory(const char* name);
00119
00120
00121 void RemoveADirectory(const char* name);
00122
00123
00124 vtkXMLCompositeDataWriterInternals* Internal;
00125
00126
00127 int Piece;
00128
00129
00130 int NumberOfPieces;
00131
00132
00133 int GhostLevel;
00134
00135
00136 int WriteMetaFile;
00137 int WriteMetaFileInitialized;
00138
00139
00140 static void ProgressCallbackFunction(vtkObject*, unsigned long, void*,
00141 void*);
00142
00143 virtual void ProgressCallback(vtkAlgorithm* w);
00144
00145
00146 vtkCallbackCommand* ProgressObserver;
00147
00148
00149 virtual void ReportReferences(vtkGarbageCollector*);
00150
00151
00152
00153 virtual int WriteComposite(vtkCompositeDataSet* compositeData,
00154 vtkXMLDataElement* element, int &writerIdx)=0;
00155
00156
00157 virtual int WriteNonCompositeData(vtkDataObject* dObj,
00158 vtkXMLDataElement* element, int& writerIdx);
00159 private:
00160 vtkXMLCompositeDataWriter(const vtkXMLCompositeDataWriter&);
00161 void operator=(const vtkXMLCompositeDataWriter&);
00162 };
00163
00164 #endif