Cloned library of VTK-5.0.0 with extra build files for internal package management.
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.
 
 
 
 
 
 

135 lines
4.0 KiB

/*=========================================================================
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);
}