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

IO/vtkXMLStructuredDataWriter.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkXMLStructuredDataWriter.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 =========================================================================*/
00038 #ifndef __vtkXMLStructuredDataWriter_h
00039 #define __vtkXMLStructuredDataWriter_h
00040 
00041 #include "vtkXMLWriter.h"
00042 
00043 class vtkDataSet;
00044 class vtkPointData;
00045 class vtkExtentTranslator;
00046 class vtkDataArray;
00047 class vtkDataSetAttributes;
00048 
00049 class VTK_IO_EXPORT vtkXMLStructuredDataWriter : public vtkXMLWriter
00050 {
00051 public:
00052   vtkTypeRevisionMacro(vtkXMLStructuredDataWriter,vtkXMLWriter);
00053   void PrintSelf(ostream& os, vtkIndent indent);
00054   
00056 
00058   vtkSetMacro(NumberOfPieces, int);
00059   vtkGetMacro(NumberOfPieces, int);
00061   
00063 
00066   vtkSetVector6Macro(WriteExtent, int);
00067   vtkGetVector6Macro(WriteExtent, int);
00069   
00071 
00072   virtual void SetExtentTranslator(vtkExtentTranslator*);
00073   vtkGetObjectMacro(ExtentTranslator, vtkExtentTranslator);
00075   
00076 protected:
00077   vtkXMLStructuredDataWriter();
00078   ~vtkXMLStructuredDataWriter();  
00079   
00080   // Writing drivers defined by subclasses.
00081   virtual void WritePrimaryElementAttributes();
00082   virtual void WriteAppendedPiece(int index, vtkIndent indent);
00083   virtual void WriteAppendedPieceData(int index);
00084   virtual void WriteInlinePiece(int index, vtkIndent indent);
00085   virtual void GetInputExtent(int* extent)=0;
00086   
00087   // The actual writing driver required by vtkXMLWriter.
00088   int WriteData();
00089   void SetupExtentTranslator();
00090   virtual void WriteAppendedMode(vtkIndent indent);
00091   vtkDataArray* CreateExactExtent(vtkDataArray* array, int* inExtent,
00092                                   int* outExtent, int isPoint);
00093   virtual void WriteInlineMode(vtkIndent indent);
00094   unsigned int GetStartTuple(int* extent, int* increments,
00095                              int i, int j, int k);
00096   
00097   // Define utility methods required by vtkXMLWriter.
00098   vtkDataArray* CreateArrayForPoints(vtkDataArray* inArray);
00099   vtkDataArray* CreateArrayForCells(vtkDataArray* inArray);
00100   
00101   // The extent of the input to write.
00102   int WriteExtent[6];
00103   
00104   // Number of pieces used for streaming.
00105   int NumberOfPieces;
00106   
00107   // Translate piece number to extent.
00108   vtkExtentTranslator* ExtentTranslator;
00109   
00110   // Appended data offsets of point and cell data arrays.
00111   unsigned long** PointDataOffsets;
00112   unsigned long** CellDataOffsets;
00113   
00114 private:
00115   vtkXMLStructuredDataWriter(const vtkXMLStructuredDataWriter&);  // Not implemented.
00116   void operator=(const vtkXMLStructuredDataWriter&);  // Not implemented.
00117 };
00118 
00119 #endif