// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen // SPDX-License-Identifier: BSD-3-Clause // VTK_DEPRECATED_IN_9_5_0() #define VTK_DEPRECATION_LEVEL 0 #include "vtkGenericDataObjectWriter.h" #include "vtkCompositeDataSet.h" #include "vtkCompositeDataWriter.h" #include "vtkDataObject.h" #include "vtkErrorCode.h" #include "vtkGraph.h" #include "vtkGraphWriter.h" #include "vtkImageData.h" #include "vtkInformation.h" #include "vtkLegacyCellGridWriter.h" #include "vtkLegacyStatisticalModelWriter.h" #include "vtkObjectFactory.h" #include "vtkPolyData.h" #include "vtkPolyDataWriter.h" #include "vtkRectilinearGrid.h" #include "vtkRectilinearGridWriter.h" #include "vtkStatisticalModel.h" #include "vtkStructuredGrid.h" #include "vtkStructuredGridWriter.h" #include "vtkStructuredPoints.h" #include "vtkStructuredPointsWriter.h" #include "vtkTable.h" #include "vtkTableWriter.h" #include "vtkTree.h" #include "vtkTreeWriter.h" #include "vtkUnstructuredGrid.h" #include "vtkUnstructuredGridWriter.h" VTK_ABI_NAMESPACE_BEGIN vtkStandardNewMacro(vtkGenericDataObjectWriter); template vtkDataWriter* CreateWriter(vtkAlgorithmOutput* input) { WriterT* const writer = WriterT::New(); writer->SetInputConnection(input); return writer; } vtkGenericDataObjectWriter::vtkGenericDataObjectWriter() = default; vtkGenericDataObjectWriter::~vtkGenericDataObjectWriter() = default; void vtkGenericDataObjectWriter::WriteData() { vtkDebugMacro(<< "Writing vtk data object ..."); vtkDataWriter* writer = nullptr; vtkAlgorithmOutput* input = this->GetInputConnection(0, 0); switch (this->GetInput()->GetDataObjectType()) { case VTK_COMPOSITE_DATA_SET: vtkErrorMacro(<< "Cannot write composite data set"); return; case VTK_CELL_GRID: writer = CreateWriter(input); break; case VTK_DATA_OBJECT: vtkErrorMacro(<< "Cannot write data object"); return; case VTK_DATA_SET: vtkErrorMacro(<< "Cannot write data set"); return; case VTK_GENERIC_DATA_SET: vtkErrorMacro(<< "Cannot write generic data set"); return; case VTK_DIRECTED_GRAPH: case VTK_UNDIRECTED_GRAPH: case VTK_MOLECULE: writer = CreateWriter(input); break; case VTK_HIERARCHICAL_DATA_SET: vtkErrorMacro(<< "Cannot write hierarchical data set"); return; case VTK_HYPER_OCTREE: vtkErrorMacro(<< "Cannot write hyper octree"); return; case VTK_IMAGE_DATA: case VTK_UNIFORM_GRID: writer = CreateWriter(input); break; case VTK_MULTIBLOCK_DATA_SET: case VTK_HIERARCHICAL_BOX_DATA_SET: case VTK_MULTIPIECE_DATA_SET: case VTK_OVERLAPPING_AMR: case VTK_NON_OVERLAPPING_AMR: case VTK_PARTITIONED_DATA_SET: case VTK_PARTITIONED_DATA_SET_COLLECTION: writer = CreateWriter(input); break; case VTK_MULTIGROUP_DATA_SET: vtkErrorMacro(<< "Cannot write multigroup data set"); return; case VTK_PIECEWISE_FUNCTION: vtkErrorMacro(<< "Cannot write piecewise function"); return; case VTK_POINT_SET: vtkErrorMacro(<< "Cannot write point set"); return; case VTK_POLY_DATA: writer = CreateWriter(input); break; case VTK_RECTILINEAR_GRID: writer = CreateWriter(input); break; case VTK_STATISTICAL_MODEL: writer = CreateWriter(input); break; case VTK_STRUCTURED_GRID: writer = CreateWriter(input); break; case VTK_STRUCTURED_POINTS: writer = CreateWriter(input); break; case VTK_TABLE: writer = CreateWriter(input); break; case VTK_TREE: writer = CreateWriter(input); break; case VTK_TEMPORAL_DATA_SET: vtkErrorMacro(<< "Cannot write temporal data set"); return; case VTK_UNSTRUCTURED_GRID_BASE: case VTK_UNSTRUCTURED_GRID: writer = CreateWriter(input); break; } if (!writer) { vtkErrorMacro(<< "null data object writer"); 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->SetFileVersion(this->FileVersion); writer->SetDebug(this->Debug); writer->SetWriteToOutputString(this->WriteToOutputString); writer->Write(); if (writer->GetErrorCode() == vtkErrorCode::OutOfDiskSpaceError) { this->SetErrorCode(vtkErrorCode::OutOfDiskSpaceError); } if (this->WriteToOutputString) { delete[] this->OutputString; this->OutputStringLength = writer->GetOutputStringLength(); this->OutputString = writer->RegisterAndGetOutputString(); } writer->Delete(); } int vtkGenericDataObjectWriter::FillInputPortInformation(int, vtkInformation* info) { info->Set(vtkAlgorithm::INPUT_REQUIRED_DATA_TYPE(), "vtkDataObject"); return 1; } void vtkGenericDataObjectWriter::PrintSelf(ostream& os, vtkIndent indent) { this->Superclass::PrintSelf(os, indent); } VTK_ABI_NAMESPACE_END