You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
122 lines
3.6 KiB
C
122 lines
3.6 KiB
C
|
3 weeks ago
|
/*=========================================================================
|
||
|
|
|
||
|
|
Program: Visualization Toolkit
|
||
|
|
Module: vtkXMLPDataReader.h
|
||
|
|
|
||
|
|
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.
|
||
|
|
|
||
|
|
=========================================================================*/
|
||
|
|
/**
|
||
|
|
* @class vtkXMLPDataReader
|
||
|
|
* @brief Superclass for PVTK XML file readers.
|
||
|
|
*
|
||
|
|
* vtkXMLPDataReader provides functionality common to all PVTK XML
|
||
|
|
* file readers. Concrete subclasses call upon this functionality
|
||
|
|
* when needed.
|
||
|
|
*
|
||
|
|
* @sa
|
||
|
|
* vtkXMLDataReader
|
||
|
|
*/
|
||
|
|
|
||
|
|
#ifndef vtkXMLPDataReader_h
|
||
|
|
#define vtkXMLPDataReader_h
|
||
|
|
|
||
|
|
#include "vtkIOXMLModule.h" // For export macro
|
||
|
|
#include "vtkXMLReader.h"
|
||
|
|
|
||
|
|
class vtkDataArray;
|
||
|
|
class vtkDataSet;
|
||
|
|
class vtkXMLDataReader;
|
||
|
|
|
||
|
|
class VTKIOXML_EXPORT vtkXMLPDataReader : public vtkXMLReader
|
||
|
|
{
|
||
|
|
public:
|
||
|
|
vtkTypeMacro(vtkXMLPDataReader,vtkXMLReader);
|
||
|
|
void PrintSelf(ostream& os, vtkIndent indent);
|
||
|
|
|
||
|
|
//@{
|
||
|
|
/**
|
||
|
|
* 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&) VTK_DELETE_FUNCTION;
|
||
|
|
void operator=(const vtkXMLPDataReader&) VTK_DELETE_FUNCTION;
|
||
|
|
};
|
||
|
|
|
||
|
|
#endif
|