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);
103 : atomLabelDeuteriumTritium(false),
104 dummiesAreAttachments(false),
106 highlightColour(1, .5, .5),
107 continuousHighlight(true),
108 fillHighlights(true),
109 flagCloseContactsDist(3),
110 includeAtomTags(false),
111 clearBackground(true),
112 backgroundColour(1, 1, 1),
114 legendColour(0, 0, 0),
115 multipleBondOffset(0.15),
117 additionalAtomLabelPadding(0.0),
118 symbolColour(0, 0, 0),
120 highlightColourPalette.push_back(
122 highlightColourPalette.push_back(
DrawColour(1., .8, .6));
123 highlightColourPalette.push_back(
DrawColour(1., .71, .76));
124 highlightColourPalette.push_back(
DrawColour(.8, 1., .8));
125 highlightColourPalette.push_back(
DrawColour(.87, .63, .87));
126 highlightColourPalette.push_back(
DrawColour(.76, .94, .96));
127 highlightColourPalette.push_back(
DrawColour(.67, .67, 1.));
128 highlightColourPalette.push_back(
DrawColour(.64, .76, .34));
129 highlightColourPalette.push_back(
DrawColour(.56, .93, .56));
130 highlightColourPalette.push_back(
DrawColour(.20, .63, .79));
156 MolDraw2D(
int width,
int height,
int panelWidth,
int panelHeight)
157 : needs_scale_(true),
160 panel_width_(panelWidth > 0 ? panelWidth : width),
161 panel_height_(panelHeight > 0 ? panelHeight : height),
193 virtual void drawMolecule(
194 const ROMol &mol,
const std::string &legend,
195 const std::vector<int> *highlight_atoms,
196 const std::vector<int> *highlight_bonds,
197 const std::map<int, DrawColour> *highlight_atom_map =
nullptr,
198 const std::map<int, DrawColour> *highlight_bond_map =
nullptr,
199 const std::map<int, double> *highlight_radii =
nullptr,
int confId = -1);
202 virtual void drawMolecule(
203 const ROMol &mol,
const std::vector<int> *highlight_atoms =
nullptr,
204 const std::map<int, DrawColour> *highlight_map =
nullptr,
205 const std::map<int, double> *highlight_radii =
nullptr,
int confId = -1);
208 virtual void drawMolecule(
209 const ROMol &mol,
const std::string &legend,
210 const std::vector<int> *highlight_atoms =
nullptr,
211 const std::map<int, DrawColour> *highlight_map =
nullptr,
212 const std::map<int, double> *highlight_radii =
nullptr,
int confId = -1);
215 virtual void drawMolecule(
216 const ROMol &mol,
const std::vector<int> *highlight_atoms,
217 const std::vector<int> *highlight_bonds,
218 const std::map<int, DrawColour> *highlight_atom_map =
nullptr,
219 const std::map<int, DrawColour> *highlight_bond_map =
nullptr,
220 const std::map<int, double> *highlight_radii =
nullptr,
int confId = -1);
248 virtual void drawMolecules(
249 const std::vector<ROMol *> &mols,
250 const std::vector<std::string> *legends =
nullptr,
251 const std::vector<std::vector<int>> *highlight_atoms =
nullptr,
252 const std::vector<std::vector<int>> *highlight_bonds =
nullptr,
253 const std::vector<std::map<int, DrawColour>> *highlight_atom_maps =
255 const std::vector<std::map<int, DrawColour>> *highlight_bond_maps =
257 const std::vector<std::map<int, double>> *highlight_radii =
nullptr,
258 const std::vector<int> *confIds =
nullptr);
272 virtual void drawReaction(
274 const std::vector<DrawColour> *highlightColorsReactants =
nullptr,
275 const std::vector<int> *confIds =
nullptr);
291 virtual Point2D getDrawCoords(
int at_num)
const;
292 virtual Point2D getAtomCoords(
const std::pair<int, int> &screen_cds)
const;
296 const std::pair<double, double> &screen_cds)
const;
298 virtual Point2D getAtomCoords(
int at_num)
const;
302 virtual int width()
const {
return width_; }
304 virtual int height()
const {
return height_; }
312 double scale()
const {
return scale_; }
315 void calculateScale(
int width,
int height);
319 void setScale(
int width,
int height,
const Point2D &minv,
329 virtual double fontSize()
const {
return font_size_; }
332 virtual void setFontSize(
double new_size);
335 virtual void setColour(
const DrawColour &col) { curr_colour_ = col; }
337 virtual DrawColour
colour()
const {
return curr_colour_; }
339 virtual void setDash(
const DashPattern &patt) { curr_dash_ = patt; }
341 virtual const DashPattern &
dash()
const {
return curr_dash_; }
352 bool setStringDrawMode(
const std::string &instring, TextDrawType &draw_mode,
355 virtual void clearDrawing() = 0;
357 virtual void drawLine(
const Point2D &cds1,
const Point2D &cds2) = 0;
366 virtual void getStringSize(
const std::string &label,
double &label_width,
367 double &label_height)
const = 0;
369 virtual void drawString(
const std::string &str,
const Point2D &cds);
372 virtual void drawPolygon(
const std::vector<Point2D> &cds) = 0;
374 virtual void drawTriangle(
const Point2D &cds1,
const Point2D &cds2,
377 virtual void drawEllipse(
const Point2D &cds1,
const Point2D &cds2);
382 virtual void drawAttachmentLine(
const Point2D &cds1,
const Point2D &cds2,
383 const DrawColour &col,
double len = 1.0,
384 unsigned int nSegments = 16);
386 virtual void drawWavyLine(
const Point2D &cds1,
const Point2D &cds2,
387 const DrawColour &col1,
const DrawColour &col2,
388 unsigned int nSegments = 16,
389 double vertOffset = 0.05);
407 return at_cds_[activeMolIdx_];
410 const std::vector<std::pair<std::string, OrientType>> &
atomSyms()
const {
412 return atom_syms_[activeMolIdx_];
417 int width_, height_, panel_width_, panel_height_;
419 double x_min_, y_min_, x_range_, y_range_;
420 double x_trans_, y_trans_;
421 int x_offset_, y_offset_;
429 DrawColour curr_colour_;
430 DashPattern curr_dash_;
433 std::vector<std::vector<Point2D>> at_cds_;
434 std::vector<std::vector<int>> atomic_nums_;
435 std::vector<std::vector<std::pair<std::string, OrientType>>> atom_syms_;
439 virtual void drawChar(
char c,
const Point2D &cds) = 0;
443 DrawColour getColour(
444 int atom_idx,
const std::vector<int> *highlight_atoms =
nullptr,
445 const std::map<int, DrawColour> *highlight_map =
nullptr);
446 DrawColour getColourByAtomicNum(
int atomic_num);
448 void extractAtomCoords(
const ROMol &mol,
int confId,
bool updateBBox);
449 void extractAtomSymbols(
const ROMol &mol);
452 const DrawColour &col1,
const DrawColour &col2);
454 bool draw_dashed,
const DrawColour &col1,
455 const DrawColour &col2);
456 void drawAtomLabel(
int atom_num,
457 const std::vector<int> *highlight_atoms =
nullptr,
458 const std::map<int, DrawColour> *highlight_map =
nullptr);
477 void adjustBondEndForLabel(
int atnum,
const Point2D &nbr_cds,
481 std::pair<std::string, OrientType> getAtomSymbolAndOrientation(
485 virtual void doContinuousHighlighting(
486 const ROMol &mol,
const std::vector<int> *highlight_atoms,
487 const std::vector<int> *highlight_bonds,
488 const std::map<int, DrawColour> *highlight_atom_map,
489 const std::map<int, DrawColour> *highlight_bond_map,
490 const std::map<int, double> *highlight_radii);
492 virtual void highlightCloseContacts();
493 virtual void drawBond(
494 const ROMol &mol,
const Bond *bond,
int at1_idx,
int at2_idx,
495 const std::vector<int> *highlight_atoms =
nullptr,
496 const std::map<int, DrawColour> *highlight_atom_map =
nullptr,
497 const std::vector<int> *highlight_bonds =
nullptr,
498 const std::map<int, DrawColour> *highlight_bond_map =
nullptr);
505 #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)
boost::tuple< float, float, float > DrawColour
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)
MolDraw2D(int width, int height, int panelWidth, int panelHeight)
constructor for a particular size
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
bool atomLabelDeuteriumTritium
virtual void tagAtoms(const ROMol &mol)