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.
136 lines
4.0 KiB
136 lines
4.0 KiB
2 years ago
|
/*=========================================================================
|
||
|
|
||
|
Program: Visualization Toolkit
|
||
|
Module: $RCSfile: vtkDataSetWriter.cxx,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.
|
||
|
|
||
|
=========================================================================*/
|
||
|
#include "vtkDataSetWriter.h"
|
||
|
|
||
|
#include "vtkDataSet.h"
|
||
|
#include "vtkErrorCode.h"
|
||
|
#include "vtkImageData.h"
|
||
|
#include "vtkInformation.h"
|
||
|
#include "vtkObjectFactory.h"
|
||
|
#include "vtkPolyData.h"
|
||
|
#include "vtkPolyDataWriter.h"
|
||
|
#include "vtkRectilinearGrid.h"
|
||
|
#include "vtkRectilinearGridWriter.h"
|
||
|
#include "vtkStructuredGrid.h"
|
||
|
#include "vtkStructuredGridWriter.h"
|
||
|
#include "vtkStructuredPointsWriter.h"
|
||
|
#include "vtkUnstructuredGrid.h"
|
||
|
#include "vtkUnstructuredGridWriter.h"
|
||
|
|
||
|
vtkCxxRevisionMacro(vtkDataSetWriter, "$Revision: 1.40 $");
|
||
|
vtkStandardNewMacro(vtkDataSetWriter);
|
||
|
|
||
|
void vtkDataSetWriter::WriteData()
|
||
|
{
|
||
|
int type;
|
||
|
vtkDataWriter *writer;
|
||
|
vtkDataSet *input = vtkDataSet::SafeDownCast(this->GetInput());
|
||
|
|
||
|
vtkDebugMacro(<<"Writing vtk dataset...");
|
||
|
|
||
|
type = input->GetDataObjectType();
|
||
|
if ( type == VTK_POLY_DATA )
|
||
|
{
|
||
|
vtkPolyDataWriter *pwriter = vtkPolyDataWriter::New();
|
||
|
pwriter->SetInput(static_cast<vtkPolyData*>(input));
|
||
|
writer = pwriter;
|
||
|
}
|
||
|
|
||
|
else if ( type == VTK_STRUCTURED_POINTS || type == VTK_IMAGE_DATA)
|
||
|
{
|
||
|
vtkStructuredPointsWriter *spwriter = vtkStructuredPointsWriter::New();
|
||
|
spwriter->SetInput(static_cast<vtkImageData*>(input));
|
||
|
writer = spwriter;
|
||
|
}
|
||
|
|
||
|
else if ( type == VTK_STRUCTURED_GRID )
|
||
|
{
|
||
|
vtkStructuredGridWriter *sgwriter = vtkStructuredGridWriter::New();
|
||
|
sgwriter->SetInput(static_cast<vtkStructuredGrid*>(input));
|
||
|
writer = sgwriter;
|
||
|
}
|
||
|
|
||
|
else if ( type == VTK_UNSTRUCTURED_GRID )
|
||
|
{
|
||
|
vtkUnstructuredGridWriter *ugwriter = vtkUnstructuredGridWriter::New();
|
||
|
ugwriter->SetInput(static_cast<vtkUnstructuredGrid*>(input));
|
||
|
writer = ugwriter;
|
||
|
}
|
||
|
|
||
|
else if ( type == VTK_RECTILINEAR_GRID )
|
||
|
{
|
||
|
vtkRectilinearGridWriter *rgwriter = vtkRectilinearGridWriter::New();
|
||
|
rgwriter->SetInput(static_cast<vtkRectilinearGrid*>(input));
|
||
|
writer = rgwriter;
|
||
|
}
|
||
|
|
||
|
else
|
||
|
{
|
||
|
vtkErrorMacro(<< "Cannot write dataset type: " << type);
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
writer->SetFileName(this->FileName);
|
||
|
writer->SetScalarsName(this->ScalarsName);
|
||
|
writer->SetVectorsName(this->VectorsName);
|
||
|
writer->SetNormalsName(this->NormalsName);
|
||
|
writer->SetTensorsName(this->TensorsName);
|
||
|
writer->SetTCoordsName(this->TCoordsName);
|
||
|
writer->SetHeader(this->Header);
|
||
|
writer->SetLookupTableName(this->LookupTableName);
|
||
|
writer->SetFieldDataName(this->FieldDataName);
|
||
|
writer->SetFileType(this->FileType);
|
||
|
writer->SetDebug(this->Debug);
|
||
|
writer->SetWriteToOutputString(this->WriteToOutputString);
|
||
|
writer->Write();
|
||
|
if (writer->GetErrorCode() == vtkErrorCode::OutOfDiskSpaceError)
|
||
|
{
|
||
|
this->SetErrorCode(vtkErrorCode::OutOfDiskSpaceError);
|
||
|
}
|
||
|
if (this->WriteToOutputString)
|
||
|
{
|
||
|
if (this->OutputString)
|
||
|
{
|
||
|
delete [] this->OutputString;
|
||
|
}
|
||
|
this->OutputStringLength = writer->GetOutputStringLength();
|
||
|
// should fill something here.
|
||
|
this->OutputStringAllocatedLength = this->OutputStringLength;
|
||
|
this->OutputString = writer->RegisterAndGetOutputString();
|
||
|
}
|
||
|
writer->Delete();
|
||
|
}
|
||
|
|
||
|
int vtkDataSetWriter::FillInputPortInformation(int, vtkInformation *info)
|
||
|
{
|
||
|
info->Set(vtkAlgorithm::INPUT_REQUIRED_DATA_TYPE(), "vtkDataSet");
|
||
|
return 1;
|
||
|
}
|
||
|
|
||
|
vtkDataSet* vtkDataSetWriter::GetInput()
|
||
|
{
|
||
|
return vtkDataSet::SafeDownCast(this->Superclass::GetInput());
|
||
|
}
|
||
|
|
||
|
vtkDataSet* vtkDataSetWriter::GetInput(int port)
|
||
|
{
|
||
|
return vtkDataSet::SafeDownCast(this->Superclass::GetInput(port));
|
||
|
}
|
||
|
|
||
|
void vtkDataSetWriter::PrintSelf(ostream& os, vtkIndent indent)
|
||
|
{
|
||
|
this->Superclass::PrintSelf(os,indent);
|
||
|
}
|