OEDrawSVGHoverText

bool OEDrawSVGHoverText(OE2DMolDisplay &disp, OE2DAtomDisplay *adisp,
                        const std::string &text, const OEFont &font)

bool OEDrawSVGHoverText(OE2DMolDisplay &disp, OE2DBondDisplay *bdisp,
                        const std::string &text, const OEFont &font)

Creates and interactive effect in .svg images. The given text will appear when the mouse is hovering over the position defined by the given atom / bond display.

Note

This functionality is only available for .svg image format. In other image formats it has no effect.

The generated svg image should be included into and HTML page with the SVG MIME type.

<object data="<imagename>.svg" type="image/svg+xml"></object>
disp

The OE2DMolDisplay object that holds the data necessary to depict the molecule with which it is initialized.

adisp

The OE2DAtomDisplay object that defines where the text will appear.

bdisp

The OE2DBondDisplay object that defines where the text will appear.

text

The text that appears when the cursor is hovered over the given position.

font

The graphical properties of the font used to draw the text.

width, height = 400, 200
image = oedepict.OEImage(width, height)

mol = oechem.OEGraphMol()
smiles = "Cc1cccnc1/C=C/[C@H](C(=O)O)O"
oechem.OESmilesToMol(mol, smiles)
oedepict.OEPrepareDepiction(mol)

opts = oedepict.OE2DMolDisplayOptions(width, height, oedepict.OEScale_AutoScale)
opts.SetMargins(10)
disp = oedepict.OE2DMolDisplay(mol, opts)

font = oedepict.OEFont(oedepict.OEFontFamily_Default, oedepict.OEFontStyle_Default, 12,
                       oedepict.OEAlignment_Center, oechem.OEDarkRed)

for adisp in disp.GetAtomDisplays():
    atom = adisp.GetAtom()
    hovertext = "atom idx=%s" % atom.GetIdx()
    oedepict.OEDrawSVGHoverText(disp, adisp, hovertext, font)

oedepict.OERenderMolecule("HoverAtomText.svg", disp)

Download code

HoverAtomText.py

hover mouse over any atoms

Example of using the OEDrawSVGHoverText function for atom positions

../../_images/HoverAtomText.svg

width, height = 400, 200
image = oedepict.OEImage(width, height)

mol = oechem.OEGraphMol()
smiles = "Cc1cccnc1/C=C/[C@H](C(=O)O)O"
oechem.OESmilesToMol(mol, smiles)
oedepict.OEPrepareDepiction(mol)

opts = oedepict.OE2DMolDisplayOptions(width, height, oedepict.OEScale_AutoScale)
opts.SetMargins(10)
disp = oedepict.OE2DMolDisplay(mol, opts)

font = oedepict.OEFont(oedepict.OEFontFamily_Default, oedepict.OEFontStyle_Default, 12,
                       oedepict.OEAlignment_Center, oechem.OEDarkRed)

for bdisp in disp.GetBondDisplays():
    bond = bdisp.GetBond()
    hovertext = "bond idx=%s" % bond.GetIdx()
    oedepict.OEDrawSVGHoverText(disp, bdisp, hovertext, font)

oedepict.OERenderMolecule("HoverBondText.svg", disp)

Download code

HoverBondText.py

hover mouse over the middle of any bonds

Example of using the OEDrawSVGHoverText function for bond positions

../../_images/HoverBondText.svg

See also