1 /*=========================================================================
3 Program: Visualization Toolkit
4 Module: $RCSfile: vtkXMLPStructuredDataReader.h,v $
6 Date: $Date: 2002/10/23 15:49:47 $
7 Version: $Revision: 1.2 $
9 Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen
11 See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
13 This software is distributed WITHOUT ANY WARRANTY; without even
14 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 PURPOSE. See the above copyright notice for more information.
17 =========================================================================*/
18 // .NAME vtkXMLPStructuredDataReader - Superclass for parallel structured data XML readers.
19 // .SECTION Description
20 // vtkXMLPStructuredDataReader provides functionality common to all
21 // parallel structured data format readers.
24 // vtkXMLPImageDataReader vtkXMLPStructuredGridReader
25 // vtkXMLPRectilinearGridReader
27 #ifndef __vtkXMLPStructuredDataReader_h
28 #define __vtkXMLPStructuredDataReader_h
30 #include "vtkXMLPDataReader.h"
32 class vtkExtentTranslator;
33 class vtkTableExtentTranslator;
34 class vtkXMLStructuredDataReader;
36 class VTK_IO_EXPORT vtkXMLPStructuredDataReader : public vtkXMLPDataReader
39 vtkTypeRevisionMacro(vtkXMLPStructuredDataReader,vtkXMLPDataReader);
40 void PrintSelf(ostream& os, vtkIndent indent);
43 // Get an extent translator that will create pieces matching the
44 // input file's piece breakdown. This can be used further down the
45 // pipeline to prevent reading from outside this process's piece.
46 // The translator is only valid after an UpdateInformation has been
48 virtual vtkExtentTranslator* GetExtentTranslator();
51 vtkXMLPStructuredDataReader();
52 ~vtkXMLPStructuredDataReader();
54 vtkIdType GetNumberOfPoints();
55 vtkIdType GetNumberOfCells();
56 void CopyArrayForPoints(vtkDataArray* inArray, vtkDataArray* outArray);
57 void CopyArrayForCells(vtkDataArray* inArray, vtkDataArray* outArray);
59 virtual void SetOutputExtent(int* extent)=0;
60 virtual void GetPieceInputExtent(int index, int* extent)=0;
62 // Pipeline execute data driver. Called by vtkXMLReader.
64 int ReadPrimaryElement(vtkXMLDataElement* ePrimary);
66 void SetupEmptyOutput();
67 void SetupPieces(int numPieces);
69 int ReadPiece(vtkXMLDataElement* ePiece);
71 void CopySubExtent(int* inExtent, int* inDimensions, int* inIncrements,
72 int* outExtent, int* outDimensions, int* outIncrements,
73 int* subExtent, int* subDimensions,
74 vtkDataArray* inArray, vtkDataArray* outArray);
76 vtkTableExtentTranslator* ExtentTranslator;
78 // The extent to be updated in the output.
80 int PointDimensions[3];
81 int PointIncrements[3];
82 int CellDimensions[3];
83 int CellIncrements[3];
85 // The extent currently being read from a piece.
87 int SubPointDimensions[3];
88 int SubCellDimensions[3];
89 int SubPieceExtent[6];
90 int SubPiecePointDimensions[3];
91 int SubPiecePointIncrements[3];
92 int SubPieceCellDimensions[3];
93 int SubPieceCellIncrements[3];
95 // Information per-piece.
99 vtkXMLPStructuredDataReader(const vtkXMLPStructuredDataReader&); // Not implemented.
100 void operator=(const vtkXMLPStructuredDataReader&); // Not implemented.