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.
145 lines
3.7 KiB
C
145 lines
3.7 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 that read vtkDataSets.
|
||
|
*
|
||
|
* vtkXMLPDataReader provides functionality common to all PVTK XML
|
||
|
* file readers that read vtkDataSets. Concrete subclasses call upon
|
||
|
* this functionality when needed.
|
||
|
*
|
||
|
* @sa
|
||
|
* vtkXMLDataReader
|
||
|
*/
|
||
|
|
||
|
#ifndef vtkXMLPDataReader_h
|
||
|
#define vtkXMLPDataReader_h
|
||
|
|
||
|
#include "vtkIOXMLModule.h" // For export macro
|
||
|
#include "vtkXMLPDataObjectReader.h"
|
||
|
|
||
|
class vtkDataArray;
|
||
|
class vtkDataSet;
|
||
|
class vtkXMLDataReader;
|
||
|
|
||
|
class VTKIOXML_EXPORT vtkXMLPDataReader : public vtkXMLPDataObjectReader
|
||
|
{
|
||
|
public:
|
||
|
vtkTypeMacro(vtkXMLPDataReader, vtkXMLPDataObjectReader);
|
||
|
void PrintSelf(ostream& os, vtkIndent indent) override;
|
||
|
|
||
|
/**
|
||
|
* For the specified port, copy the information this reader sets up in
|
||
|
* SetupOutputInformation to outInfo
|
||
|
*/
|
||
|
void CopyOutputInformation(vtkInformation* outInfo, int port) override;
|
||
|
|
||
|
protected:
|
||
|
vtkXMLPDataReader();
|
||
|
~vtkXMLPDataReader() override;
|
||
|
|
||
|
// Re-use any superclass signatures that we don't override.
|
||
|
using vtkXMLPDataObjectReader::ReadPiece;
|
||
|
|
||
|
/**
|
||
|
* Delete all piece readers and related information
|
||
|
*/
|
||
|
void DestroyPieces() override;
|
||
|
|
||
|
virtual vtkIdType GetNumberOfPoints() = 0;
|
||
|
|
||
|
virtual vtkIdType GetNumberOfCells() = 0;
|
||
|
|
||
|
/**
|
||
|
* Get a given piece input as a dataset, return nullptr if there is none.
|
||
|
*/
|
||
|
vtkDataSet* GetPieceInputAsDataSet(int piece);
|
||
|
|
||
|
/**
|
||
|
* Initialize the output data
|
||
|
*/
|
||
|
void SetupOutputData() override;
|
||
|
|
||
|
/**
|
||
|
* Pipeline execute information driver. Called by vtkXMLReader.
|
||
|
*/
|
||
|
void SetupOutputInformation(vtkInformation* outInfo) override;
|
||
|
|
||
|
/**
|
||
|
* Setup the number of pieces to be read and allocate space accordingly
|
||
|
*/
|
||
|
void SetupPieces(int numPieces) override;
|
||
|
|
||
|
/**
|
||
|
* Whether or not the current reader can read the current piece
|
||
|
*/
|
||
|
int CanReadPiece(int index) override;
|
||
|
|
||
|
/**
|
||
|
* Create a reader according to the data to read. It needs to be overridden by subclass.
|
||
|
*/
|
||
|
virtual vtkXMLDataReader* CreatePieceReader() = 0;
|
||
|
|
||
|
/**
|
||
|
* Setup the current piece reader
|
||
|
*/
|
||
|
int ReadPiece(vtkXMLDataElement* ePiece) override;
|
||
|
|
||
|
/**
|
||
|
* Actually read the piece at the given index data
|
||
|
*/
|
||
|
int ReadPieceData(int index);
|
||
|
|
||
|
/**
|
||
|
* Actually read the current piece data
|
||
|
*/
|
||
|
virtual int ReadPieceData();
|
||
|
|
||
|
/**
|
||
|
* Read the information relative to the dataset and allocate the needed structures according to it
|
||
|
*/
|
||
|
int ReadPrimaryElement(vtkXMLDataElement* ePrimary) override;
|
||
|
|
||
|
virtual void CopyArrayForPoints(vtkDataArray* inArray, vtkDataArray* outArray) = 0;
|
||
|
virtual void CopyArrayForCells(vtkDataArray* inArray, vtkDataArray* outArray) = 0;
|
||
|
|
||
|
/**
|
||
|
* Callback registered with the PieceProgressObserver.
|
||
|
*/
|
||
|
void PieceProgressCallback() override;
|
||
|
|
||
|
/**
|
||
|
* The ghost level available on each input piece.
|
||
|
*/
|
||
|
int GhostLevel;
|
||
|
|
||
|
/**
|
||
|
* Information per-piece.
|
||
|
*/
|
||
|
vtkXMLDataReader** PieceReaders;
|
||
|
|
||
|
/**
|
||
|
* The PPointData and PCellData element representations.
|
||
|
*/
|
||
|
vtkXMLDataElement* PPointDataElement;
|
||
|
vtkXMLDataElement* PCellDataElement;
|
||
|
|
||
|
private:
|
||
|
vtkXMLPDataReader(const vtkXMLPDataReader&) = delete;
|
||
|
void operator=(const vtkXMLPDataReader&) = delete;
|
||
|
};
|
||
|
|
||
|
#endif
|