You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

125 lines
3.2 KiB
C++

/*=========================================================================
Program: Visualization Toolkit
Module: vtkPeriodicTable.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 vtkPeriodicTable
* @brief Access to information about the elements.
*
*
* Sourced from the Blue Obelisk Data Repository
*
* @sa
* vtkBlueObeliskData vtkBlueObeliskDataParser
*/
#ifndef vtkPeriodicTable_h
#define vtkPeriodicTable_h
#include "vtkDomainsChemistryModule.h" // For export macro
#include "vtkNew.h" // Needed for the static data member
#include "vtkObject.h"
class vtkBlueObeliskData;
class vtkColor3f;
class vtkLookupTable;
class vtkStdString;
class VTKDOMAINSCHEMISTRY_EXPORT vtkPeriodicTable : public vtkObject
{
public:
vtkTypeMacro(vtkPeriodicTable, vtkObject);
void PrintSelf(ostream& os, vtkIndent indent) override;
static vtkPeriodicTable* New();
//@{
/**
* Access the static vtkBlueObeliskData object for raw access to
* BODR data.
*/
vtkGetNewMacro(BlueObeliskData, vtkBlueObeliskData);
//@}
/**
* Returns the number of elements in the periodic table.
*/
unsigned short GetNumberOfElements();
/**
* Given an atomic number, returns the symbol associated with the
* element
*/
const char* GetSymbol(unsigned short atomicNum);
/**
* Given an atomic number, returns the name of the element
*/
const char* GetElementName(unsigned short atomicNum);
//@{
/**
* Given a case-insensitive string that contains the symbol or name
* of an element, return the corresponding atomic number.
*/
unsigned short GetAtomicNumber(const vtkStdString& str);
unsigned short GetAtomicNumber(const char* str);
//@}
/**
* Given an atomic number, return the covalent radius of the atom
*/
float GetCovalentRadius(unsigned short atomicNum);
/**
* Given an atomic number, returns the van der Waals radius of the
* atom
*/
float GetVDWRadius(unsigned short atomicNum);
/**
* Given an atomic number, returns the van der Waals radius of the
* atom
*/
float GetMaxVDWRadius();
/**
* Fill the given vtkLookupTable to map atomic numbers to the
* familiar RGB tuples provided by the Blue Obelisk Data Repository
*/
void GetDefaultLUT(vtkLookupTable*);
/**
* Given an atomic number, return the familiar RGB tuple provided by
* the Blue Obelisk Data Repository
*/
void GetDefaultRGBTuple(unsigned short atomicNum, float rgb[3]);
/**
* Given an atomic number, return the familiar RGB tuple provided by
* the Blue Obelisk Data Repository
*/
vtkColor3f GetDefaultRGBTuple(unsigned short atomicNum);
protected:
vtkPeriodicTable();
~vtkPeriodicTable() override;
static vtkNew<vtkBlueObeliskData> BlueObeliskData;
private:
vtkPeriodicTable(const vtkPeriodicTable&) = delete;
void operator=(const vtkPeriodicTable&) = delete;
};
#endif