/*========================================================================= Program: Visualization Toolkit Module: vtkMoleculeReaderBase.h 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. =========================================================================*/ /** * @class vtkMoleculeReaderBase * @brief read Molecular Data files * * vtkMoleculeReaderBase is a source object that reads Molecule files * The FileName must be specified * * @par Thanks: * Dr. Jean M. Favre who developed and contributed this class */ #ifndef vtkMoleculeReaderBase_h #define vtkMoleculeReaderBase_h #include "vtkIOGeometryModule.h" // For export macro #include "vtkPolyDataAlgorithm.h" class vtkCellArray; class vtkFloatArray; class vtkDataArray; class vtkIdTypeArray; class vtkUnsignedCharArray; class vtkPoints; class vtkStringArray; class vtkMolecule; class VTKIOGEOMETRY_EXPORT vtkMoleculeReaderBase : public vtkPolyDataAlgorithm { public: vtkTypeMacro(vtkMoleculeReaderBase, vtkPolyDataAlgorithm); void PrintSelf(ostream& os, vtkIndent indent) override; vtkSetStringMacro(FileName); vtkGetStringMacro(FileName); //@{ /** * A scaling factor to compute bonds between non-hydrogen atoms */ vtkSetMacro(BScale, double); vtkGetMacro(BScale, double); //@} //@{ /** * A scaling factor to compute bonds with hydrogen atoms. */ vtkSetMacro(HBScale, double); vtkGetMacro(HBScale, double); //@} vtkGetMacro(NumberOfAtoms, int); protected: vtkMoleculeReaderBase(); ~vtkMoleculeReaderBase() override; char* FileName; double BScale; double HBScale; int NumberOfAtoms; int FillOutputPortInformation(int, vtkInformation*) override; int RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override; int ReadMolecule(FILE* fp, vtkPolyData* output); int MakeAtomType(const char* atype); int MakeBonds(vtkPoints*, vtkIdTypeArray*, vtkCellArray*); vtkMolecule* Molecule; vtkPoints* Points; vtkUnsignedCharArray* RGB; vtkFloatArray* Radii; vtkIdTypeArray* AtomType; vtkStringArray* AtomTypeStrings; vtkIdTypeArray* Residue; vtkUnsignedCharArray* Chain; vtkUnsignedCharArray* SecondaryStructures; vtkUnsignedCharArray* SecondaryStructuresBegin; vtkUnsignedCharArray* SecondaryStructuresEnd; vtkUnsignedCharArray* IsHetatm; virtual void ReadSpecificMolecule(FILE* fp) = 0; private: vtkMoleculeReaderBase(const vtkMoleculeReaderBase&) = delete; void operator=(const vtkMoleculeReaderBase&) = delete; }; #endif