Chemical Data Processing Library C++ API - Version 1.1.1
Public Types | Public Member Functions | Friends | List of all members
CDPL::Vis::StructureView2D Class Reference

Implements the 2D visualization of chemical structures. More...

#include <StructureView2D.hpp>

+ Inheritance diagram for CDPL::Vis::StructureView2D:

Public Types

typedef std::shared_ptr< StructureView2DSharedPointer
 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...
 
FontMetricsgetFontMetrics () 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::MolecularGraphgetStructure () 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 AnygetParameter (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 ControlParameterContainergetParent () 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 ControlParameterContainergetParameters () 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...
 
ControlParameterContaineroperator= (const ControlParameterContainer &cntnr)
 Assignment operator. More...
 

Detailed Description

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

Member Typedef Documentation

◆ SharedPointer

A reference-counted smart pointer [SHPTR] for dynamically allocated StructureView2D instances.

Constructor & Destructor Documentation

◆ StructureView2D()

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.

Parameters
molgraphA pointer to the Chem::MolecularGraph object to visualize.

◆ ~StructureView2D()

CDPL::Vis::StructureView2D::~StructureView2D ( )

Destructor.

Member Function Documentation

◆ render()

void CDPL::Vis::StructureView2D::render ( Renderer2D renderer)
virtual

Renders the visual representation of the model using the specified Vis::Renderer2D instance.

Parameters
rendererThe Renderer2D instance.

Implements CDPL::Vis::View2D.

◆ setFontMetrics()

void CDPL::Vis::StructureView2D::setFontMetrics ( FontMetrics font_metrics)
virtual

Specifies a font metrics object that will be used to measure the dimension of text labels.

Parameters
font_metricsA pointer to the font metrics object or null.

Implements CDPL::Vis::View2D.

◆ getFontMetrics()

FontMetrics* CDPL::Vis::StructureView2D::getFontMetrics ( ) const

Returns a pointer to the used font metrics object.

Returns
A pointer to the used font metrics object, or null if none was specified.

◆ setStructure()

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.

Parameters
molgraphA pointer to the Chem::MolecularGraph object to visualize, or null.

◆ getStructure()

const Chem::MolecularGraph* CDPL::Vis::StructureView2D::getStructure ( ) const

Returns a pointer to the visualized chemical structure.

Returns
A pointer to the visualized Chem::MolecularGraph object, or null if none was specified.

◆ getModelBounds()

void CDPL::Vis::StructureView2D::getModelBounds ( Rectangle2D bounds)
virtual

Calculates the bounds of the rendered structure in output space.

Parameters
boundsThe object storing the calculated bounding box.

Implements CDPL::Vis::View2D.

Friends And Related Function Documentation

◆ ReactionView2D

friend class ReactionView2D
friend

The documentation for this class was generated from the following file: