/*========================================================================= Program: Visualization Toolkit Module: vtkAbstractVolumeMapper.cxx 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 "vtkAbstractVolumeMapper.h" #include "vtkDataSet.h" #include "vtkExecutive.h" #include "vtkInformation.h" #include "vtkMath.h" // Construct a vtkAbstractVolumeMapper vtkAbstractVolumeMapper::vtkAbstractVolumeMapper() { vtkMath::UninitializeBounds(this->Bounds); this->Center[0] = this->Center[1] = this->Center[2] = 0.0; this->ScalarMode = VTK_SCALAR_MODE_DEFAULT; this->ArrayName = new char[1]; this->ArrayName[0] = '\0'; this->ArrayId = -1; this->ArrayAccessMode = VTK_GET_ARRAY_BY_ID; } vtkAbstractVolumeMapper::~vtkAbstractVolumeMapper() { delete[] this->ArrayName; } // Get the bounds for the input of this mapper as // (Xmin,Xmax,Ymin,Ymax,Zmin,Zmax). double *vtkAbstractVolumeMapper::GetBounds() { if ( ! this->GetDataSetInput() ) { vtkMath::UninitializeBounds(this->Bounds); return this->Bounds; } else { this->Update(); this->GetDataSetInput()->GetBounds(this->Bounds); return this->Bounds; } } vtkDataObject *vtkAbstractVolumeMapper::GetDataObjectInput() { if (this->GetNumberOfInputConnections(0) < 1) { return nullptr; } return this->GetInputDataObject(0, 0); } vtkDataSet *vtkAbstractVolumeMapper::GetDataSetInput() { if (this->GetNumberOfInputConnections(0) < 1) { return nullptr; } return vtkDataSet::SafeDownCast(this->GetInputDataObject(0, 0)); } //---------------------------------------------------------------------------- int vtkAbstractVolumeMapper::FillInputPortInformation( int vtkNotUsed(port), vtkInformation* info) { info->Set(vtkAlgorithm::INPUT_REQUIRED_DATA_TYPE(), "vtkDataSet"); return 1; } void vtkAbstractVolumeMapper::SelectScalarArray(int arrayNum) { if ( (this->ArrayId == arrayNum) && (this->ArrayAccessMode == VTK_GET_ARRAY_BY_ID) ) { return; } this->Modified(); this->ArrayId = arrayNum; this->ArrayAccessMode = VTK_GET_ARRAY_BY_ID; } void vtkAbstractVolumeMapper::SelectScalarArray(const char *arrayName) { if ( !arrayName || ( (strcmp(this->ArrayName, arrayName) == 0) && (this->ArrayAccessMode == VTK_GET_ARRAY_BY_NAME) ) ) { return; } this->Modified(); delete[] this->ArrayName; this->ArrayName = new char[strlen(arrayName) + 1]; strcpy(this->ArrayName, arrayName); this->ArrayAccessMode = VTK_GET_ARRAY_BY_NAME; } // Return the method for obtaining scalar data. const char *vtkAbstractVolumeMapper::GetScalarModeAsString(void) { if ( this->ScalarMode == VTK_SCALAR_MODE_USE_CELL_DATA ) { return "UseCellData"; } else if ( this->ScalarMode == VTK_SCALAR_MODE_USE_POINT_DATA ) { return "UsePointData"; } else if ( this->ScalarMode == VTK_SCALAR_MODE_USE_POINT_FIELD_DATA ) { return "UsePointFieldData"; } else if ( this->ScalarMode == VTK_SCALAR_MODE_USE_CELL_FIELD_DATA ) { return "UseCellFieldData"; } else { return "Default"; } } // Print the vtkAbstractVolumeMapper void vtkAbstractVolumeMapper::PrintSelf(ostream& os, vtkIndent indent) { this->Superclass::PrintSelf(os,indent); os << indent << "ScalarMode: " << this->GetScalarModeAsString() << endl; if ( this->ScalarMode == VTK_SCALAR_MODE_USE_POINT_FIELD_DATA || this->ScalarMode == VTK_SCALAR_MODE_USE_CELL_FIELD_DATA ) { if (this->ArrayAccessMode == VTK_GET_ARRAY_BY_ID) { os << indent << "ArrayId: " << this->ArrayId << endl; } else { os << indent << "ArrayName: " << this->ArrayName << endl; } } }