Chemical Data Processing Library C++ API - Version 1.1.1
|
Implements the 2D visualization of chemical structures. More...
#include <StructureView2D.hpp>
Public Types | |
typedef std::shared_ptr< StructureView2D > | SharedPointer |
A reference-counted smart pointer [SHPTR] for dynamically allocated StructureView2D instances. More... | |
Public Types inherited from CDPL::Base::ControlParameterContainer | |
typedef ParameterMap::value_type | ParameterEntry |
A Base::LookupKey / Base::Any pair used to store the control-parameter values and associated keys. More... | |
typedef ParameterMap::const_iterator | ConstParameterIterator |
A constant iterator used to iterate over the control-parameter entries. More... | |
typedef std::function< void(const LookupKey &, const Any &)> | ParameterChangedCallbackFunction |
A functor class that wraps callback target functions which get invoked when the value of a control-parameter has changed. More... | |
typedef std::function< void(const LookupKey &)> | ParameterRemovedCallbackFunction |
A functor class that wraps callback target functions which get invoked when a control-parameter entry has been removed. More... | |
typedef std::function< void()> | ParentChangedCallbackFunction |
A functor class that wraps callback target functions which get invoked when the parent container has been changed or was detached. More... | |
Public Member Functions | |
StructureView2D (const Chem::MolecularGraph *molgraph=0) | |
Constructs and initializes a StructureView2D instance for the visualization of the chemical structure specified by molgraph. More... | |
~StructureView2D () | |
Destructor. More... | |
void | render (Renderer2D &renderer) |
Renders the visual representation of the model using the specified Vis::Renderer2D instance. More... | |
void | setFontMetrics (FontMetrics *font_metrics) |
Specifies a font metrics object that will be used to measure the dimension of text labels. More... | |
FontMetrics * | getFontMetrics () const |
Returns a pointer to the used font metrics object. More... | |
void | setStructure (const Chem::MolecularGraph *molgraph) |
Specifies the chemical structure to visualize. More... | |
const Chem::MolecularGraph * | getStructure () const |
Returns a pointer to the visualized chemical structure. More... | |
void | getModelBounds (Rectangle2D &bounds) |
Calculates the bounds of the rendered structure in output space. More... | |
Public Member Functions inherited from CDPL::Vis::View2D | |
virtual | ~View2D () |
Virtual destructor. More... | |
Public Member Functions inherited from CDPL::Base::ControlParameterContainer | |
std::size_t | getNumParameters () const |
Returns the number of container entries. More... | |
template<typename T > | |
void | setParameter (const LookupKey &key, T &&val) |
Sets the value of the control-parameter specified by key to val. More... | |
const Any & | getParameter (const LookupKey &key, bool throw_=false, bool local=false) const |
Returns the value of the control-parameter specified by key. More... | |
template<typename T > | |
const T & | getParameter (const LookupKey &key, bool local=false) const |
Returns the value of the control-parameter specified by key as a const reference to an object of type T. More... | |
template<typename T > | |
const T & | getParameterOrDefault (const LookupKey &key, const T &def_val, bool local=false) const |
Returns the value of the control-parameter specified by key as a const reference to an object of type T, or the default value def_val if a stored value does not exist. More... | |
bool | removeParameter (const LookupKey &key) |
Removes the entry for the control-parameter specified by key. More... | |
void | clearParameters () |
Erases all container entries. More... | |
bool | isParameterSet (const LookupKey &key, bool local=false) const |
Tells whether or not a value has been assigned to the control-parameter specified by key. More... | |
void | addParameters (const ControlParameterContainer &cntnr) |
Adds the control-parameter value entries in the ControlParameterContainer instance cntnr. More... | |
void | copyParameters (const ControlParameterContainer &cntnr) |
Replaces the current set of properties by a copy of the entries in cntnr. More... | |
ConstParameterIterator | getParametersBegin () const |
Returns a constant iterator pointing to the beginning of the entries. More... | |
ConstParameterIterator | getParametersEnd () const |
Returns a constant iterator pointing to the end of the entries. More... | |
ConstParameterIterator | begin () const |
Returns a constant iterator pointing to the beginning of the entries. More... | |
ConstParameterIterator | end () const |
Returns a constant iterator pointing to the end of the entries. More... | |
void | setParent (const ControlParameterContainer *cntnr) |
Sets or removes the parent control-parameter container used to resolve requests for missing entries. More... | |
const ControlParameterContainer * | getParent () const |
Returns a pointer to the parent control-parameter container. More... | |
std::size_t | registerParameterChangedCallback (const ParameterChangedCallbackFunction &func) |
Registers a callback target function that gets invoked when the value of a control-parameter has changed. More... | |
void | unregisterParameterChangedCallback (std::size_t id) |
Unregisters the callback specified by id. More... | |
std::size_t | registerParameterRemovedCallback (const ParameterRemovedCallbackFunction &func) |
Registers a callback target function that gets invoked when a control-parameter entry has been removed. More... | |
void | unregisterParameterRemovedCallback (std::size_t id) |
Unregisters the callback specified by id. More... | |
std::size_t | registerParentChangedCallback (const ParentChangedCallbackFunction &func) |
Registers a callback target function that gets invoked when the parent container has been changed or was detached. More... | |
void | unregisterParentChangedCallback (std::size_t id) |
Unregisters the callback specified by id. More... | |
const ControlParameterContainer & | getParameters () const |
Returns a const reference to itself. More... | |
Friends | |
class | ReactionView2D |
Additional Inherited Members | |
Protected Member Functions inherited from CDPL::Base::ControlParameterContainer | |
ControlParameterContainer () | |
Constructs an empty ControlParameterContainer instance. More... | |
ControlParameterContainer (const ControlParameterContainer &cntnr) | |
Constructs a copy of the ControlParameterContainer instance cntnr. More... | |
virtual | ~ControlParameterContainer () |
Destructor. More... | |
ControlParameterContainer & | operator= (const ControlParameterContainer &cntnr) |
Assignment operator. More... | |
Implements the 2D visualization of chemical structures.
StructureView2D
visualizes chemical structures in the form of 2D structure diagrams (also known as skeletal formulas [WSKF] or structural formulas [WSTF]) that allow for an easy perception of important chemical characteristics like constitution, connectivity and stereochemistry.
Graphical details of the generated structure diagrams (colors, fonts, line-widths etc.) are configurable on a StructureView2D
instance level by control-parameters and on a visualized data object level by setting appropriate Chem::Atom, Chem::Bond or Chem::MolecularGraph properties. Properties of the visualized data objects have a higher priority than equivalent control-parameters of the StructureView2D
instance and properties of Chem::Atom or Chem::Bond objects override corresponding properties of the parent Chem::MolecularGraph instance.
StructureView2D
supports the following control-parameters:
Control-Parameter | Description |
---|---|
Vis::ControlParameter::VIEWPORT | Specifies a rectangular viewport area which constrains the location and size of the generated structure diagram |
Vis::ControlParameter::SIZE_ADJUSTMENT | Specifies how to adjust the size of the structure diagram relative to the available viewport area |
Vis::ControlParameter::ALIGNMENT | Specifies the alignment of the structure diagram within the viewport area |
Vis::ControlParameter::BACKGROUND_COLOR | Specifies the backround color of the structure diagram |
Vis::ControlParameter::ATOM_COLOR | Specifies the color of atom labels |
Vis::ControlParameter::ATOM_COLOR_TABLE | Specifies a lookup table for the atom type dependent coloring of atom labels |
Vis::ControlParameter::USE_CALCULATED_ATOM_COORDINATES | Specifies whether or not to use calculated atom coordinates |
Vis::ControlParameter::ATOM_LABEL_FONT | Specifies the font for atom element and query match expression labels |
Vis::ControlParameter::ATOM_LABEL_SIZE | Specifies the size of atom element and query match expression labels |
Vis::ControlParameter::SECONDARY_ATOM_LABEL_FONT | Specifies the font for text labels that show the value of various atomic properties |
Vis::ControlParameter::SECONDARY_ATOM_LABEL_SIZE | Specifies the size of text labels that show the value of various atomic properties |
Vis::ControlParameter::ATOM_CONFIGURATION_LABEL_FONT | Specifies the font for atom configuration labels |
Vis::ControlParameter::ATOM_CONFIGURATION_LABEL_SIZE | Specifies the size of atom confiiguration labels |
Vis::ControlParameter::ATOM_LABEL_MARGIN | Specifies the margin of free space around atom labels |
Vis::ControlParameter::RADICAL_ELECTRON_DOT_SIZE | Specifies the size of radical electron dots |
Vis::ControlParameter::SHOW_EXPLICIT_HYDROGENS | Specifies whether or not to show explicit hydrogen atoms |
Vis::ControlParameter::SHOW_CARBONS | Specifies whether or not to show the element label of carbon atoms |
Vis::ControlParameter::SHOW_CHARGES | Specifies whether or not to show the formal charge of atoms |
Vis::ControlParameter::SHOW_ISOTOPES | Specifies whether or not to show the isotopic mass of atoms |
Vis::ControlParameter::SHOW_HYDROGEN_COUNTS | Specifies whether or not to show the implicit hydrogen count of connected atoms |
Vis::ControlParameter::SHOW_NON_CARBON_HYDROGEN_COUNTS | Specifies whether or not to show the implicit hydrogen count of connected non-carbon atoms |
Vis::ControlParameter::SHOW_ATOM_QUERY_INFOS | Specifies whether or not to show query atom match expressions |
Vis::ControlParameter::SHOW_ATOM_REACTION_INFOS | Specifies whether or not to show reaction atom-atom mapping numbers |
Vis::ControlParameter::SHOW_RADICAL_ELECTRONS | Specifies whether or not to draw radical electron dots |
Vis::ControlParameter::SHOW_ATOM_CONFIGURATION_LABELS | Specifies whether or not to show atom confiuration labels |
Vis::ControlParameter::BOND_LENGTH | Specifies the desired average bond length |
Vis::ControlParameter::BOND_COLOR | Specifies the color of bonds |
Vis::ControlParameter::BOND_LINE_WIDTH | Specifies the width of bond lines |
Vis::ControlParameter::BOND_LINE_SPACING | Specifies the distance between the lines of double and triple bonds |
Vis::ControlParameter::STEREO_BOND_WEDGE_WIDTH | Specifies the width of wedge-shaped stereo bonds |
Vis::ControlParameter::STEREO_BOND_HASH_SPACING | Specifies the distance between the hashes of down stereo bonds |
Vis::ControlParameter::REACTION_CENTER_LINE_LENGTH | Specifies the length of the lines in reaction center marks |
Vis::ControlParameter::REACTION_CENTER_LINE_SPACING | Specifies the distance between lines in reaction center marks |
Vis::ControlParameter::DOUBLE_BOND_TRIM_LENGTH | Specifies the amount by which the non-central lines of asymmetric double bonds have to be trimmed at each line end |
Vis::ControlParameter::TRIPLE_BOND_TRIM_LENGTH | Specifies the amount by which the non-central lines of triple bonds have to be trimmed at each line end |
Vis::ControlParameter::BOND_LABEL_FONT | Specifies the font for bond labels |
Vis::ControlParameter::BOND_LABEL_SIZE | Specifies the size of bond labels |
Vis::ControlParameter::BOND_CONFIGURATION_LABEL_FONT | Specifies the font for bond configuration labels |
Vis::ControlParameter::BOND_CONFIGURATION_LABEL_SIZE | Specifies the size of bond confiiguration labels |
Vis::ControlParameter::BOND_LABEL_MARGIN | Specifies the margin of free space around bond labels |
Vis::ControlParameter::SHOW_BOND_REACTION_INFOS | Specifies whether or not to draw reaction center marks |
Vis::ControlParameter::SHOW_BOND_QUERY_INFOS | Specifies whether or not to show query bond match expressions |
Vis::ControlParameter::SHOW_STEREO_BONDS | Specifies whether or not to draw stereo bonds |
Vis::ControlParameter::SHOW_BOND_CONFIGURATION_LABELS | Specifies whether or not to show bond confiuration labels |
Default values for most of the control-parameters are defined in namespace Vis::ControlParameterDefault.
Supported Chem::MolecularGraph properties:
Chem::MolecularGraph Property | Description |
---|---|
Vis::MolecularGraphProperty::ATOM_COLOR_TABLE | Specifies a lookup table for the atom type dependent coloring of atom labels |
Vis::MolecularGraphProperty::ATOM_COLOR | Specifies the color of atom labels |
Vis::MolecularGraphProperty::ATOM_LABEL_FONT | Specifies the font for atom element and query match expression labels |
Vis::MolecularGraphProperty::ATOM_LABEL_SIZE | Specifies the size of atom element and query match expression labels |
Vis::MolecularGraphProperty::SECONDARY_ATOM_LABEL_FONT | Specifies the font for text labels that show the value of various atomic properties |
Vis::MolecularGraphProperty::SECONDARY_ATOM_LABEL_SIZE | Specifies the size of text labels that show the value of various atomic properties |
Vis::MolecularGraphProperty::ATOM_CONFIGURATION_LABEL_FONT | Specifies the font for atom configuration labels |
Vis::MolecularGraphProperty::ATOM_CONFIGURATION_LABEL_SIZE | Specifies the size of atom configuration labels |
Vis::MolecularGraphProperty::ATOM_LABEL_MARGIN | Specifies the margin of free space around atom labels |
Vis::MolecularGraphProperty::RADICAL_ELECTRON_DOT_SIZE | Specifies the size of radical electron dots |
Vis::MolecularGraphProperty::BOND_COLOR | Specifies the color of bonds |
Vis::MolecularGraphProperty::BOND_LINE_WIDTH | Specifies the width of bond lines |
Vis::MolecularGraphProperty::BOND_LINE_SPACING | Specifies the distance between the lines of double and triple bonds |
Vis::MolecularGraphProperty::STEREO_BOND_WEDGE_WIDTH | Specifies the width of wedge-shaped stereo bonds |
Vis::MolecularGraphProperty::STEREO_BOND_HASH_SPACING | Specifies the distance between the hashes of down stereo bonds |
Vis::MolecularGraphProperty::REACTION_CENTER_LINE_LENGTH | Specifies the length of the lines in reaction center marks |
Vis::MolecularGraphProperty::REACTION_CENTER_LINE_SPACING | Specifies the distance between the lines in reaction center marks |
Vis::MolecularGraphProperty::DOUBLE_BOND_TRIM_LENGTH | Specifies the amount by which the non-central lines of asymmetric double bonds have to be trimmed at each line end |
Vis::MolecularGraphProperty::TRIPLE_BOND_TRIM_LENGTH | Specifies the amount by which the non-central lines of triple bonds have to be trimmed at each line end |
Vis::MolecularGraphProperty::BOND_LABEL_FONT | Specifies the font for bond labels |
Vis::MolecularGraphProperty::BOND_LABEL_SIZE | Specifies the size of bond labels |
Vis::MolecularGraphProperty::BOND_CONFIGURATION_LABEL_FONT | Specifies the font for bond configuration labels |
Vis::MolecularGraphProperty::BOND_CONFIGURATION_LABEL_SIZE | Specifies the size of bond configuration labels |
Vis::MolecularGraphProperty::BOND_LABEL_MARGIN | Specifies the margin of free space around bond labels |
Supported Chem::Atom properties:
Chem::Atom Property | Description |
---|---|
Vis::AtomProperty::COLOR | Specifies the color of text labels |
Vis::AtomProperty::LABEL_FONT | Specifies the font for atom element and query match expression labels |
Vis::AtomProperty::LABEL_SIZE | Specifies the size of atom element and query match expression labels |
Vis::AtomProperty::CONFIGURATION_LABEL_FONT | Specifies the font for atom configuration labels |
Vis::AtomProperty::CONFIGURATION_LABEL_SIZE | Specifies the size of atom configuration labels |
Vis::AtomProperty::SECONDARY_LABEL_FONT | Specifies the font for text labels that show the value of various atomic properties |
Vis::AtomProperty::SECONDARY_LABEL_SIZE | Specifies the size of text labels that show the value of various atomic properties |
Vis::AtomProperty::LABEL_MARGIN | Specifies the margin of free space around atom labels |
Vis::AtomProperty::RADICAL_ELECTRON_DOT_SIZE | Specifies the size of radical electron dots |
Supported Chem::Bond properties:
Chem::Bond Property | Description |
---|---|
Vis::BondProperty::COLOR | Specifies the color of the bond |
Vis::BondProperty::LINE_WIDTH | Specifies the width of bond lines |
Vis::BondProperty::LINE_SPACING | Specifies the distance between the lines of double and triple bonds |
Vis::BondProperty::STEREO_BOND_WEDGE_WIDTH | Specifies the width of wedge-shaped stereo bonds |
Vis::BondProperty::STEREO_BOND_HASH_SPACING | Specifies the distance between the hashes of down stereo bonds |
Vis::BondProperty::REACTION_CENTER_LINE_LENGTH | Specifies the length of the lines in reaction center marks |
Vis::BondProperty::REACTION_CENTER_LINE_SPACING | Specifies the distance between the lines in reaction center marks |
Vis::BondProperty::DOUBLE_BOND_TRIM_LENGTH | Specifies the amount by which the non-central lines of asymmetric double bonds have to be trimmed at each line end |
Vis::BondProperty::TRIPLE_BOND_TRIM_LENGTH | Specifies the amount by which the non-central lines of triple bonds have to be trimmed at each line end |
Vis::BondProperty::LABEL_FONT | Specifies the font for bond labels |
Vis::BondProperty::LABEL_SIZE | Specifies the size of bond labels |
Vis::BondProperty::CONFIGURATION_LABEL_FONT | Specifies the font for bond configuration labels |
Vis::BondProperty::CONFIGURATION_LABEL_SIZE | Specifies the size of bond configuration labels |
Vis::BondProperty::LABEL_MARGIN | Specifies the margin of free space around bond labels |
typedef std::shared_ptr<StructureView2D> CDPL::Vis::StructureView2D::SharedPointer |
A reference-counted smart pointer [SHPTR] for dynamically allocated StructureView2D
instances.
CDPL::Vis::StructureView2D::StructureView2D | ( | const Chem::MolecularGraph * | molgraph = 0 | ) |
Constructs and initializes a StructureView2D
instance for the visualization of the chemical structure specified by molgraph.
molgraph | A pointer to the Chem::MolecularGraph object to visualize. |
CDPL::Vis::StructureView2D::~StructureView2D | ( | ) |
Destructor.
|
virtual |
Renders the visual representation of the model using the specified Vis::Renderer2D instance.
renderer | The Renderer2D instance. |
Implements CDPL::Vis::View2D.
|
virtual |
Specifies a font metrics object that will be used to measure the dimension of text labels.
font_metrics | A pointer to the font metrics object or null. |
Implements CDPL::Vis::View2D.
FontMetrics* CDPL::Vis::StructureView2D::getFontMetrics | ( | ) | const |
Returns a pointer to the used font metrics object.
void CDPL::Vis::StructureView2D::setStructure | ( | const Chem::MolecularGraph * | molgraph | ) |
Specifies the chemical structure to visualize.
If the chemical structure or a property has changed after this method has been called for a Chem::MolecularGraph object, the method needs to be called again for the object to make the changes visible.
molgraph | A pointer to the Chem::MolecularGraph object to visualize, or null. |
const Chem::MolecularGraph* CDPL::Vis::StructureView2D::getStructure | ( | ) | const |
Returns a pointer to the visualized chemical structure.
|
virtual |
Calculates the bounds of the rendered structure in output space.
bounds | The object storing the calculated bounding box. |
Implements CDPL::Vis::View2D.
|
friend |