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.

130 lines
3.3 KiB
C++

/*=========================================================================
Program: Visualization Toolkit
Module: vtkXMLTableWriter.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 vtkXMLTableWriter
* @brief Write VTK XML Table files.
*
* vtkXMLTableWriter provides a functionality for writing vtTable as
* XML .vtt files.
*/
#ifndef vtkXMLTableWriter_h
#define vtkXMLTableWriter_h
#include "vtkIOXMLModule.h" // For export macro
#include "vtkXMLWriter.h"
class vtkTable;
class VTKIOXML_EXPORT vtkXMLTableWriter : public vtkXMLWriter
{
public:
vtkTypeMacro(vtkXMLTableWriter, vtkXMLWriter);
void PrintSelf(ostream& os, vtkIndent indent) override;
static vtkXMLTableWriter* New();
//@{
/**
* Get/Set the number of pieces used to stream the table through the
* pipeline while writing to the file.
*/
vtkSetMacro(NumberOfPieces, int);
vtkGetMacro(NumberOfPieces, int);
//@}
//@{
/**
* Get/Set the piece to write to the file. If this is
* negative or equal to the NumberOfPieces, all pieces will be written.
*/
vtkSetMacro(WritePiece, int);
vtkGetMacro(WritePiece, int);
//@}
/**
* See the vtkAlgorithm for a description of what these do
*/
vtkTypeBool ProcessRequest(
vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;
protected:
vtkXMLTableWriter();
~vtkXMLTableWriter() override;
int FillInputPortInformation(int port, vtkInformation* info) override;
vtkTable* GetInputAsTable();
const char* GetDataSetName() override; // vtkTable isn't a DataSet but it's used by vtkXMLWriter
/**
* Get the default file extension for files written by this writer.
*/
const char* GetDefaultFileExtension() override;
void SetInputUpdateExtent(int piece, int numPieces);
int WriteHeader();
int WriteAPiece();
int WriteFooter();
void AllocatePositionArrays();
void DeletePositionArrays();
int WriteInlineMode(vtkIndent indent);
void WriteInlinePieceAttributes();
void WriteInlinePiece(vtkIndent indent);
void WriteAppendedPieceAttributes(int index);
void WriteAppendedPiece(int index, vtkIndent indent);
void WriteAppendedPieceData(int index);
void WriteRowDataAppended(
vtkDataSetAttributes* ds, vtkIndent indent, OffsetsManagerGroup* dsManager);
void WriteRowDataAppendedData(
vtkDataSetAttributes* ds, int timestep, OffsetsManagerGroup* pdManager);
void WriteRowDataInline(vtkDataSetAttributes* ds, vtkIndent indent);
/**
* Number of pieces used for streaming.
*/
int NumberOfPieces;
/**
* Which piece to write, if not all.
*/
int WritePiece;
/**
* Positions of attributes for each piece.
*/
vtkTypeInt64* NumberOfColsPositions;
vtkTypeInt64* NumberOfRowsPositions;
/**
* For TimeStep support
*/
OffsetsManagerArray* RowsOM;
int CurrentPiece;
private:
vtkXMLTableWriter(const vtkXMLTableWriter&) = delete;
void operator=(const vtkXMLTableWriter&) = delete;
};
#endif