OSDN Git Service

FIRST REPOSITORY
[eos/hostdependOTHERS.git] / I686LINUX / util / I686LINUX / include / vtk / vtkXMLPStructuredDataReader.h
1 /*=========================================================================
2
3   Program:   Visualization Toolkit
4   Module:    $RCSfile: vtkXMLPStructuredDataReader.h,v $
5   Language:  C++
6   Date:      $Date: 2002/10/23 15:49:47 $
7   Version:   $Revision: 1.2 $
8
9   Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 
10   All rights reserved.
11   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
12
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.
16
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.
22
23 // .SECTION See Also
24 // vtkXMLPImageDataReader vtkXMLPStructuredGridReader
25 // vtkXMLPRectilinearGridReader
26
27 #ifndef __vtkXMLPStructuredDataReader_h
28 #define __vtkXMLPStructuredDataReader_h
29
30 #include "vtkXMLPDataReader.h"
31
32 class vtkExtentTranslator;
33 class vtkTableExtentTranslator;
34 class vtkXMLStructuredDataReader;
35
36 class VTK_IO_EXPORT vtkXMLPStructuredDataReader : public vtkXMLPDataReader
37 {
38 public:
39   vtkTypeRevisionMacro(vtkXMLPStructuredDataReader,vtkXMLPDataReader);
40   void PrintSelf(ostream& os, vtkIndent indent);
41   
42   // Description:
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
47   // called.
48   virtual vtkExtentTranslator* GetExtentTranslator();
49   
50 protected:
51   vtkXMLPStructuredDataReader();
52   ~vtkXMLPStructuredDataReader();
53   
54   vtkIdType GetNumberOfPoints();
55   vtkIdType GetNumberOfCells();
56   void CopyArrayForPoints(vtkDataArray* inArray, vtkDataArray* outArray);
57   void CopyArrayForCells(vtkDataArray* inArray, vtkDataArray* outArray);
58   
59   virtual void SetOutputExtent(int* extent)=0;
60   virtual void GetPieceInputExtent(int index, int* extent)=0;
61   
62   // Pipeline execute data driver.  Called by vtkXMLReader.
63   void ReadXMLData();
64   int ReadPrimaryElement(vtkXMLDataElement* ePrimary);
65   
66   void SetupEmptyOutput();
67   void SetupPieces(int numPieces);
68   void DestroyPieces();
69   int ReadPiece(vtkXMLDataElement* ePiece);
70   int ReadPieceData();
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);
75   
76   vtkTableExtentTranslator* ExtentTranslator;
77   
78   // The extent to be updated in the output.
79   int UpdateExtent[6];
80   int PointDimensions[3];
81   int PointIncrements[3];
82   int CellDimensions[3];
83   int CellIncrements[3];
84   
85   // The extent currently being read from a piece.
86   int SubExtent[6];
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];
94   
95   // Information per-piece.
96   int* PieceExtents;
97   
98 private:
99   vtkXMLPStructuredDataReader(const vtkXMLPStructuredDataReader&);  // Not implemented.
100   void operator=(const vtkXMLPStructuredDataReader&);  // Not implemented.
101 };
102
103 #endif