23 #ifndef RDKITMOLDRAW2D_H 24 #define RDKITMOLDRAW2D_H 32 #include <boost/tuple/tuple.hpp> 47 palette[1] = palette[6] =
DrawColour(0.0, 0.0, 0.0);
101 : atomLabelDeuteriumTritium(false),
102 dummiesAreAttachments(false),
104 highlightColour(1, .5, .5),
105 continuousHighlight(true),
106 fillHighlights(true),
107 flagCloseContactsDist(3),
108 includeAtomTags(false),
109 clearBackground(true),
110 backgroundColour(1, 1, 1),
112 legendColour(0, 0, 0),
113 multipleBondOffset(0.15),
115 additionalAtomLabelPadding(0.0),
116 symbolColour(0, 0, 0) {
117 highlightColourPalette.push_back(
119 highlightColourPalette.push_back(
DrawColour(1., .8, .6));
120 highlightColourPalette.push_back(
DrawColour(1., .71, .76));
121 highlightColourPalette.push_back(
DrawColour(.8, 1., .8));
122 highlightColourPalette.push_back(
DrawColour(.87, .63, .87));
123 highlightColourPalette.push_back(
DrawColour(.76, .94, .96));
124 highlightColourPalette.push_back(
DrawColour(.67, .67, 1.));
125 highlightColourPalette.push_back(
DrawColour(.64, .76, .34));
126 highlightColourPalette.push_back(
DrawColour(.56, .93, .56));
127 highlightColourPalette.push_back(
DrawColour(.20, .63, .79));
153 MolDraw2D(
int width,
int height,
int panelWidth = -1,
int panelHeight = -1);
176 virtual void drawMolecule(
177 const ROMol &mol,
const std::string &legend,
178 const std::vector<int> *highlight_atoms,
179 const std::vector<int> *highlight_bonds,
180 const std::map<int, DrawColour> *highlight_atom_map = NULL,
181 const std::map<int, DrawColour> *highlight_bond_map = NULL,
182 const std::map<int, double> *highlight_radii = NULL,
int confId = -1);
185 virtual void drawMolecule(
186 const ROMol &mol,
const std::vector<int> *highlight_atoms = NULL,
187 const std::map<int, DrawColour> *highlight_map = NULL,
188 const std::map<int, double> *highlight_radii = NULL,
int confId = -1);
191 virtual void drawMolecule(
192 const ROMol &mol,
const std::string &legend,
193 const std::vector<int> *highlight_atoms = NULL,
194 const std::map<int, DrawColour> *highlight_map = NULL,
195 const std::map<int, double> *highlight_radii = NULL,
int confId = -1);
198 virtual void drawMolecule(
199 const ROMol &mol,
const std::vector<int> *highlight_atoms,
200 const std::vector<int> *highlight_bonds,
201 const std::map<int, DrawColour> *highlight_atom_map = NULL,
202 const std::map<int, DrawColour> *highlight_bond_map = NULL,
203 const std::map<int, double> *highlight_radii = NULL,
int confId = -1);
231 virtual void drawMolecules(
232 const std::vector<ROMol *> &mols,
233 const std::vector<std::string> *legends = NULL,
234 const std::vector<std::vector<int> > *highlight_atoms = NULL,
235 const std::vector<std::vector<int> > *highlight_bonds = NULL,
236 const std::vector<std::map<int, DrawColour> > *highlight_atom_maps = NULL,
237 const std::vector<std::map<int, DrawColour> > *highlight_bond_maps = NULL,
238 const std::vector<std::map<int, double> > *highlight_radii = NULL,
239 const std::vector<int> *confIds = NULL);
253 virtual void drawReaction(
255 const std::vector<DrawColour> *highlightColorsReactants = NULL,
256 const std::vector<int> *confIds = NULL);
272 virtual Point2D getDrawCoords(
int at_num)
const;
273 virtual Point2D getAtomCoords(
const std::pair<int, int> &screen_cds)
const;
277 const std::pair<double, double> &screen_cds)
const;
279 virtual Point2D getAtomCoords(
int at_num)
const;
283 virtual int width()
const {
return width_; }
285 virtual int height()
const {
return height_; }
293 double scale()
const {
return scale_; }
296 void calculateScale(
int width,
int height);
300 void setScale(
int width,
int height,
const Point2D &minv,
310 virtual double fontSize()
const {
return font_size_; }
313 virtual void setFontSize(
double new_size);
316 virtual void setColour(
const DrawColour &col) { curr_colour_ = col; }
318 virtual DrawColour
colour()
const {
return curr_colour_; }
320 virtual void setDash(
const DashPattern &patt) { curr_dash_ = patt; }
322 virtual const DashPattern &
dash()
const {
return curr_dash_; }
333 bool setStringDrawMode(
const std::string &instring, TextDrawType &draw_mode,
336 virtual void clearDrawing() = 0;
338 virtual void drawLine(
const Point2D &cds1,
const Point2D &cds2) = 0;
347 virtual void getStringSize(
const std::string &label,
double &label_width,
348 double &label_height)
const = 0;
350 virtual void drawString(
const std::string &str,
const Point2D &cds);
353 virtual void drawPolygon(
const std::vector<Point2D> &cds) = 0;
355 virtual void drawTriangle(
const Point2D &cds1,
const Point2D &cds2,
358 virtual void drawEllipse(
const Point2D &cds1,
const Point2D &cds2);
363 virtual void drawAttachmentLine(
const Point2D &cds1,
const Point2D &cds2,
364 const DrawColour &col,
double len = 1.0,
365 unsigned int nSegments = 16);
367 virtual void drawWavyLine(
const Point2D &cds1,
const Point2D &cds2,
368 const DrawColour &col1,
const DrawColour &col2,
369 unsigned int nSegments = 16,
370 double vertOffset = 0.05);
388 return at_cds_[activeMolIdx_];
391 const std::vector<std::pair<std::string, OrientType> > &
atomSyms()
const {
393 return atom_syms_[activeMolIdx_];
398 int width_, height_, panel_width_, panel_height_;
400 double x_min_, y_min_, x_range_, y_range_;
401 double x_trans_, y_trans_;
402 int x_offset_, y_offset_;
410 DrawColour curr_colour_;
411 DashPattern curr_dash_;
414 std::vector<std::vector<Point2D> > at_cds_;
415 std::vector<std::vector<int> > atomic_nums_;
416 std::vector<std::vector<std::pair<std::string, OrientType> > > atom_syms_;
420 virtual void drawChar(
char c,
const Point2D &cds) = 0;
424 DrawColour getColour(
int atom_idx,
425 const std::vector<int> *highlight_atoms = NULL,
426 const std::map<int, DrawColour> *highlight_map = NULL);
427 DrawColour getColourByAtomicNum(
int atomic_num);
429 void extractAtomCoords(
const ROMol &mol,
int confId,
bool updateBBox);
430 void extractAtomSymbols(
const ROMol &mol);
433 const DrawColour &col1,
const DrawColour &col2);
434 void drawBond(
const ROMol &mol,
const Bond* bond,
int at1_idx,
435 int at2_idx,
const std::vector<int> *highlight_atoms = NULL,
436 const std::map<int, DrawColour> *highlight_atom_map = NULL,
437 const std::vector<int> *highlight_bonds = NULL,
438 const std::map<int, DrawColour> *highlight_bond_map = NULL);
440 bool draw_dashed,
const DrawColour &col1,
441 const DrawColour &col2);
442 void drawAtomLabel(
int atom_num,
443 const std::vector<int> *highlight_atoms = NULL,
444 const std::map<int, DrawColour> *highlight_map = NULL);
463 void adjustBondEndForLabel(
int atnum,
const Point2D &nbr_cds,
467 std::pair<std::string, OrientType> getAtomSymbolAndOrientation(
471 virtual void doContinuousHighlighting(
472 const ROMol &mol,
const std::vector<int> *highlight_atoms,
473 const std::vector<int> *highlight_bonds,
474 const std::map<int, DrawColour> *highlight_atom_map,
475 const std::map<int, DrawColour> *highlight_bond_map,
476 const std::map<int, double> *highlight_radii);
478 virtual void highlightCloseContacts();
485 #endif // RDKITMOLDRAW2D_H virtual void setColour(const DrawColour &col)
sets the current draw color
virtual int lineWidth() const
returns the current line width
virtual void setLineWidth(int width)
sets the current line width
virtual double fontSize() const
returns the font size (in nolecule units)
virtual int height() const
return the height of the drawing area.
std::vector< unsigned int > DashPattern
virtual int panelWidth() const
return the width of the drawing panels.
virtual void setDash(const DashPattern &patt)
sets the current dash pattern
const std::vector< Point2D > & atomCoords() const
virtual void setFillPolys(bool val)
returns ehther or not polygons should be filled
virtual DrawColour colour() const
returns the current draw color
void assignBWPalette(ColourPalette &palette)
virtual bool fillPolys() const
set whether or not polygons are being filled
This is a class for storing and applying general chemical reactions.
pulls in the core RDKit functionality
void setOffset(int x, int y)
sets the drawing offset (in drawing coords)
MolDrawOptions & drawOptions()
returns our current drawing options
DrawColour backgroundColour
const MolDrawOptions & drawOptions() const
virtual int panelHeight() const
return the height of the drawing panels.
double additionalAtomLabelPadding
void assignDefaultPalette(ColourPalette &palette)
class for representing a bond
#define RDUNUSED_PARAM(x)
bool dummiesAreAttachments
double scale() const
returns the drawing scale (conversion from molecular coords -> drawing
virtual const DashPattern & dash() const
returns the current dash pattern
MolDraw2D is the base class for doing 2D renderings of molecules.
double multipleBondOffset
ColourPalette atomColourPalette
virtual int width() const
return the width of the drawing area.
#define PRECONDITION(expr, mess)
std::map< int, std::string > atomLabels
std::map< int, DrawColour > ColourPalette
std::vector< std::vector< int > > atomRegions
DrawColour highlightColour
#define RDKIT_MOLDRAW2D_EXPORT
std::vector< DrawColour > highlightColourPalette
int flagCloseContactsDist
Point2D offset()
returns the drawing offset (in drawing coords)
The class for representing atoms.
const std::vector< std::pair< std::string, OrientType > > & atomSyms() const
returns the atomic symbols of the current molecule
boost::tuple< float, float, float > DrawColour
bool atomLabelDeuteriumTritium
virtual void tagAtoms(const ROMol &mol)