You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
114 lines
3.6 KiB
114 lines
3.6 KiB
/*=========================================================================
|
|
|
|
Program: Visualization Toolkit
|
|
Module: $RCSfile: vtkXMLPDataReader.h,v $
|
|
|
|
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
|
|
All rights reserved.
|
|
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
|
|
|
|
This software is distributed WITHOUT ANY WARRANTY; without even
|
|
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
PURPOSE. See the above copyright notice for more information.
|
|
|
|
=========================================================================*/
|
|
// .NAME vtkXMLPDataReader - Superclass for PVTK XML file readers.
|
|
// .SECTION Description
|
|
// vtkXMLPDataReader provides functionality common to all PVTK XML
|
|
// file readers. Concrete subclasses call upon this functionality
|
|
// when needed.
|
|
|
|
// .SECTION See Also
|
|
// vtkXMLDataReader
|
|
|
|
#ifndef __vtkXMLPDataReader_h
|
|
#define __vtkXMLPDataReader_h
|
|
|
|
#include "vtkXMLReader.h"
|
|
|
|
class vtkDataArray;
|
|
class vtkDataSet;
|
|
class vtkXMLDataReader;
|
|
|
|
class VTK_IO_EXPORT vtkXMLPDataReader : public vtkXMLReader
|
|
{
|
|
public:
|
|
vtkTypeRevisionMacro(vtkXMLPDataReader,vtkXMLReader);
|
|
void PrintSelf(ostream& os, vtkIndent indent);
|
|
|
|
// Description:
|
|
// Get the number of pieces from the summary file being read.
|
|
vtkGetMacro(NumberOfPieces, int);
|
|
|
|
// For the specified port, copy the information this reader sets up in
|
|
// SetupOutputInformation to outInfo
|
|
virtual void CopyOutputInformation(vtkInformation *outInfo, int port);
|
|
|
|
protected:
|
|
vtkXMLPDataReader();
|
|
~vtkXMLPDataReader();
|
|
|
|
// Pipeline execute information driver. Called by vtkXMLReader.
|
|
int ReadXMLInformation();
|
|
virtual void SetupOutputInformation(vtkInformation *outInfo);
|
|
|
|
int ReadPrimaryElement(vtkXMLDataElement* ePrimary);
|
|
|
|
vtkDataSet* GetPieceInputAsDataSet(int piece);
|
|
void SetupOutputData();
|
|
|
|
virtual vtkXMLDataReader* CreatePieceReader()=0;
|
|
virtual vtkIdType GetNumberOfPoints()=0;
|
|
virtual vtkIdType GetNumberOfCells()=0;
|
|
virtual void CopyArrayForPoints(vtkDataArray* inArray,
|
|
vtkDataArray* outArray)=0;
|
|
virtual void CopyArrayForCells(vtkDataArray* inArray,
|
|
vtkDataArray* outArray)=0;
|
|
|
|
virtual void SetupPieces(int numPieces);
|
|
virtual void DestroyPieces();
|
|
int ReadPiece(vtkXMLDataElement* ePiece, int index);
|
|
virtual int ReadPiece(vtkXMLDataElement* ePiece);
|
|
int ReadPieceData(int index);
|
|
virtual int ReadPieceData();
|
|
int CanReadPiece(int index);
|
|
|
|
char* CreatePieceFileName(const char* fileName);
|
|
void SplitFileName();
|
|
|
|
// Callback registered with the PieceProgressObserver.
|
|
static void PieceProgressCallbackFunction(vtkObject*, unsigned long, void*,
|
|
void*);
|
|
virtual void PieceProgressCallback();
|
|
|
|
// Pieces from the input summary file.
|
|
int NumberOfPieces;
|
|
|
|
// The ghost level available on each input piece.
|
|
int GhostLevel;
|
|
|
|
// The piece currently being read.
|
|
int Piece;
|
|
|
|
// The path to the input file without the file name.
|
|
char* PathName;
|
|
|
|
// Information per-piece.
|
|
vtkXMLDataElement** PieceElements;
|
|
vtkXMLDataReader** PieceReaders;
|
|
int* CanReadPieceFlag;
|
|
|
|
// The PPointData and PCellData element representations.
|
|
vtkXMLDataElement* PPointDataElement;
|
|
vtkXMLDataElement* PCellDataElement;
|
|
|
|
// The observer to report progress from reading serial data in each
|
|
// piece.
|
|
vtkCallbackCommand* PieceProgressObserver;
|
|
|
|
private:
|
|
vtkXMLPDataReader(const vtkXMLPDataReader&); // Not implemented.
|
|
void operator=(const vtkXMLPDataReader&); // Not implemented.
|
|
};
|
|
|
|
#endif
|
|
|