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.
151 lines
4.7 KiB
C
151 lines
4.7 KiB
C
3 weeks ago
|
/*=========================================================================
|
||
|
|
||
|
Program: Visualization Toolkit
|
||
|
Module: vtkArrayDataWriter.h
|
||
|
|
||
|
-------------------------------------------------------------------------
|
||
|
Copyright 2008 Sandia Corporation.
|
||
|
Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
|
||
|
the U.S. Government retains certain rights in this software.
|
||
|
-------------------------------------------------------------------------
|
||
|
|
||
|
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 vtkArrayDataWriter
|
||
|
* @brief Serialize vtkArrayData to a file or stream.
|
||
|
*
|
||
|
*
|
||
|
* vtkArrayDataWriter serializes vtkArrayData using a text-based
|
||
|
* format that is human-readable and easily parsed (default option). The
|
||
|
* WriteBinary array option can be used to serialize the vtkArrayData
|
||
|
* using a binary format that is optimized for rapid throughput.
|
||
|
*
|
||
|
* vtkArrayDataWriter can be used in two distinct ways: first, it can be used as a
|
||
|
* normal pipeline filter, which writes its inputs to a file. Alternatively, static
|
||
|
* methods are provided for writing vtkArrayData instances to files or arbitrary c++
|
||
|
* streams.
|
||
|
*
|
||
|
* Inputs:
|
||
|
* Input port 0: (required) vtkArrayData object.
|
||
|
*
|
||
|
* Output Format:
|
||
|
* See http://www.kitware.com/InfovisWiki/index.php/N-Way_Array_File_Formats for
|
||
|
* details on how vtkArrayDataWriter encodes data.
|
||
|
*
|
||
|
* @sa
|
||
|
* vtkArrayDataReader
|
||
|
*
|
||
|
* @par Thanks:
|
||
|
* Developed by Timothy M. Shead (tshead@sandia.gov) at Sandia National Laboratories.
|
||
|
*/
|
||
|
|
||
|
#ifndef vtkArrayDataWriter_h
|
||
|
#define vtkArrayDataWriter_h
|
||
|
|
||
|
#include "vtkIOCoreModule.h" // For export macro
|
||
|
#include "vtkStdString.h" // For string API
|
||
|
#include "vtkWriter.h"
|
||
|
|
||
|
class vtkArrayData;
|
||
|
|
||
|
class VTKIOCORE_EXPORT vtkArrayDataWriter : public vtkWriter
|
||
|
{
|
||
|
public:
|
||
|
static vtkArrayDataWriter* New();
|
||
|
vtkTypeMacro(vtkArrayDataWriter, vtkWriter);
|
||
|
void PrintSelf(ostream& os, vtkIndent indent) override;
|
||
|
|
||
|
//@{
|
||
|
/**
|
||
|
* Get / set the filename where data will be stored (when used as a filter).
|
||
|
*/
|
||
|
vtkSetStringMacro(FileName);
|
||
|
vtkGetStringMacro(FileName);
|
||
|
//@}
|
||
|
|
||
|
//@{
|
||
|
/**
|
||
|
* Get / set whether data will be written in binary format (when used as a filter).
|
||
|
*/
|
||
|
vtkSetMacro(Binary, vtkTypeBool);
|
||
|
vtkGetMacro(Binary, vtkTypeBool);
|
||
|
vtkBooleanMacro(Binary, vtkTypeBool);
|
||
|
//@}
|
||
|
|
||
|
/**
|
||
|
* The output string. This is only set when WriteToOutputString is set.
|
||
|
*/
|
||
|
virtual vtkStdString GetOutputString() { return this->OutputString; }
|
||
|
|
||
|
//@{
|
||
|
/**
|
||
|
* Whether to output to a string instead of to a file, which is the default.
|
||
|
*/
|
||
|
vtkSetMacro(WriteToOutputString, bool);
|
||
|
vtkGetMacro(WriteToOutputString, bool);
|
||
|
vtkBooleanMacro(WriteToOutputString, bool);
|
||
|
//@}
|
||
|
|
||
|
int Write() override; // This is necessary to get Write() wrapped for scripting languages.
|
||
|
|
||
|
/**
|
||
|
* Writes input port 0 data to a file, using an arbitrary filename and binary flag.
|
||
|
*/
|
||
|
bool Write(const vtkStdString& FileName, bool WriteBinary = false);
|
||
|
|
||
|
/**
|
||
|
* Write an arbitrary array to a file, without using the pipeline.
|
||
|
*/
|
||
|
static bool Write(vtkArrayData* array, const vtkStdString& file_name, bool WriteBinary = false);
|
||
|
|
||
|
/**
|
||
|
* Write input port 0 data to an arbitrary stream. Note: streams should always be opened in
|
||
|
* binary mode, to prevent problems reading files on Windows.
|
||
|
*/
|
||
|
bool Write(ostream& stream, bool WriteBinary = false);
|
||
|
|
||
|
/**
|
||
|
* Write arbitrary data to a stream without using the pipeline. Note: streams should always
|
||
|
* be opened in binary mode, to prevent problems reading files on Windows.
|
||
|
*/
|
||
|
static bool Write(vtkArrayData* array, ostream& stream, bool WriteBinary = false);
|
||
|
|
||
|
/**
|
||
|
* Write input port 0 data to a string. Note that the WriteBinary argument is not
|
||
|
* optional in order to not clash with the inherited Write() method.
|
||
|
*/
|
||
|
vtkStdString Write(bool WriteBinary);
|
||
|
|
||
|
/**
|
||
|
* Write arbitrary data to a string without using the pipeline.
|
||
|
*/
|
||
|
static vtkStdString Write(vtkArrayData* array, bool WriteBinary = false);
|
||
|
|
||
|
protected:
|
||
|
vtkArrayDataWriter();
|
||
|
~vtkArrayDataWriter() override;
|
||
|
|
||
|
int FillInputPortInformation(int port, vtkInformation* info) override;
|
||
|
void WriteData() override;
|
||
|
|
||
|
char* FileName;
|
||
|
vtkTypeBool Binary;
|
||
|
bool WriteToOutputString;
|
||
|
vtkStdString OutputString;
|
||
|
|
||
|
private:
|
||
|
vtkArrayDataWriter(const vtkArrayDataWriter&) = delete;
|
||
|
void operator=(const vtkArrayDataWriter&) = delete;
|
||
|
};
|
||
|
|
||
|
#endif
|