/*========================================================================= Program: Visualization Toolkit Module: $RCSfile: vtkStructuredGridWriter.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 "vtkStructuredGridWriter.h" #include "vtkInformation.h" #include "vtkObjectFactory.h" #include "vtkStructuredGrid.h" #include "vtkUnsignedCharArray.h" #if !defined(_WIN32) || defined(__CYGWIN__) # include /* unlink */ #else # include /* unlink */ #endif vtkCxxRevisionMacro(vtkStructuredGridWriter, "$Revision: 1.40 $"); vtkStandardNewMacro(vtkStructuredGridWriter); void vtkStructuredGridWriter::WriteData() { ostream *fp; vtkStructuredGrid *input= vtkStructuredGrid::SafeDownCast(this->GetInput()); int dim[3]; vtkDebugMacro(<<"Writing vtk structured grid..."); if ( !(fp=this->OpenVTKFile()) || !this->WriteHeader(fp) ) { if (fp) { vtkErrorMacro("Ran out of disk space; deleting file: " << this->FileName); this->CloseVTKFile(fp); unlink(this->FileName); } return; } // Write structured grid specific stuff // *fp << "DATASET STRUCTURED_GRID\n"; // Write data owned by the dataset if (!this->WriteDataSetData(fp, input)) { vtkErrorMacro("Ran out of disk space; deleting file: " << this->FileName); this->CloseVTKFile(fp); unlink(this->FileName); return; } input->GetDimensions(dim); *fp << "DIMENSIONS " << dim[0] << " " << dim[1] << " " << dim[2] << "\n"; if (!this->WritePoints(fp, input->GetPoints())) { vtkErrorMacro("Ran out of disk space; deleting file: " << this->FileName); this->CloseVTKFile(fp); unlink(this->FileName); return; } // If blanking, write that information out if ( input->GetPointBlanking() ) { if (!this->WriteBlanking(fp, input)) { vtkErrorMacro("Ran out of disk space; deleting file: " << this->FileName); this->CloseVTKFile(fp); unlink(this->FileName); return; } } if (!this->WriteCellData(fp, input)) { vtkErrorMacro("Ran out of disk space; deleting file: " << this->FileName); this->CloseVTKFile(fp); unlink(this->FileName); return; } if (!this->WritePointData(fp, input)) { vtkErrorMacro("Ran out of disk space; deleting file: " << this->FileName); this->CloseVTKFile(fp); unlink(this->FileName); return; } this->CloseVTKFile(fp); } int vtkStructuredGridWriter::WriteBlanking(ostream *fp, vtkStructuredGrid *grid) { vtkUnsignedCharArray *blanking=grid->GetPointVisibilityArray(); int numPts = grid->GetNumberOfPoints(); *fp << "BLANKING " << numPts; return this->WriteArray(fp, VTK_UNSIGNED_CHAR, blanking, " %s\n", numPts, 1); } int vtkStructuredGridWriter::FillInputPortInformation(int, vtkInformation *info) { info->Set(vtkAlgorithm::INPUT_REQUIRED_DATA_TYPE(), "vtkStructuredGrid"); return 1; } vtkStructuredGrid* vtkStructuredGridWriter::GetInput() { return vtkStructuredGrid::SafeDownCast(this->Superclass::GetInput()); } vtkStructuredGrid* vtkStructuredGridWriter::GetInput(int port) { return vtkStructuredGrid::SafeDownCast(this->Superclass::GetInput(port)); } void vtkStructuredGridWriter::PrintSelf(ostream& os, vtkIndent indent) { this->Superclass::PrintSelf(os,indent); }