22 #ifndef RDKITMOLDRAW2D_H
23 #define RDKITMOLDRAW2D_H
30 #include <boost/tuple/tuple.hpp>
63 : dummiesAreAttachments(false),
65 highlightColour(1, .5, .5),
66 continuousHighlight(true),
67 flagCloseContactsDist(3),
68 includeAtomTags(false),
69 clearBackground(true),
72 legendColour(0, 0, 0),
73 multipleBondOffset(0.15){};
89 const ROMol &mol,
const std::vector<int> *highlight_atoms = NULL,
90 const std::map<int, DrawColour> *highlight_map = NULL,
91 const std::map<int, double> *highlight_radii = NULL,
int confId = -1);
94 const ROMol &mol,
const std::string &legend,
95 const std::vector<int> *highlight_atoms = NULL,
96 const std::map<int, DrawColour> *highlight_map = NULL,
97 const std::map<int, double> *highlight_radii = NULL,
int confId = -1);
100 const ROMol &mol,
const std::vector<int> *highlight_atoms,
101 const std::vector<int> *highlight_bonds,
102 const std::map<int, DrawColour> *highlight_atom_map = NULL,
103 const std::map<int, DrawColour> *highlight_bond_map = NULL,
104 const std::map<int, double> *highlight_radii = NULL,
int confId = -1);
107 const ROMol &mol,
const std::string &legend,
108 const std::vector<int> *highlight_atoms,
109 const std::vector<int> *highlight_bonds,
110 const std::map<int, DrawColour> *highlight_atom_map = NULL,
111 const std::map<int, DrawColour> *highlight_bond_map = NULL,
112 const std::map<int, double> *highlight_radii = NULL,
int confId = -1);
125 const std::pair<double, double> &screen_cds)
const;
128 virtual int width()
const {
return width_; }
129 virtual int height()
const {
return height_; }
131 virtual double scale()
const {
return scale_; }
134 virtual double fontSize()
const {
return font_size_; }
139 virtual void setColour(
const DrawColour &col) { curr_colour_ = col; }
140 virtual DrawColour
colour()
const {
return curr_colour_; }
142 virtual void setDash(
const DashPattern &patt) { curr_dash_ = patt; }
143 virtual const DashPattern &
dash()
const {
return curr_dash_; }
165 virtual void getStringSize(
const std::string &label,
double &label_width,
166 double &label_height)
const = 0;
171 virtual void drawPolygon(
const std::vector<Point2D> &cds) = 0;
177 const DrawColour &col,
double len = 1.0,
178 unsigned int nSegments = 8);
188 const std::vector<Point2D> &
atomCoords()
const {
return at_cds_; };
189 const std::vector<std::pair<std::string, OrientType> > &
atomSyms()
const {
196 double x_min_, y_min_, x_range_, y_range_;
197 double x_trans_, y_trans_;
203 DrawColour curr_colour_;
204 DashPattern curr_dash_;
207 std::vector<Point2D> at_cds_;
208 std::vector<int> atomic_nums_;
209 std::vector<std::pair<std::string, OrientType> > atom_syms_;
213 virtual void drawChar(
char c,
const Point2D &cds) = 0;
217 DrawColour getColour(
int atom_idx,
218 const std::vector<int> *highlight_atoms = NULL,
219 const std::map<int, DrawColour> *highlight_map = NULL);
220 DrawColour getColourByAtomicNum(
int atomic_num);
222 void extractAtomCoords(
const ROMol &mol,
int confId);
223 void extractAtomSymbols(
const ROMol &mol);
226 const DrawColour &col1,
const DrawColour &col2);
227 void drawBond(
const ROMol &mol,
const BOND_SPTR &bond,
int at1_idx,
228 int at2_idx,
const std::vector<int> *highlight_atoms = NULL,
229 const std::map<int, DrawColour> *highlight_atom_map = NULL,
230 const std::vector<int> *highlight_bonds = NULL,
231 const std::map<int, DrawColour> *highlight_bond_map = NULL);
233 bool draw_dashed,
const DrawColour &col1,
234 const DrawColour &col2);
235 void drawAtomLabel(
int atom_num,
236 const std::vector<int> *highlight_atoms = NULL,
237 const std::map<int, DrawColour> *highlight_map = NULL);
258 void adjustBondEndForLabel(
int atnum,
const Point2D &nbr_cds,
262 std::pair<std::string, OrientType> getAtomSymbolAndOrientation(
265 virtual void doContinuousHighlighting(
266 const ROMol &mol,
const std::vector<int> *highlight_atoms,
267 const std::vector<int> *highlight_bonds,
268 const std::map<int, DrawColour> *highlight_atom_map,
269 const std::map<int, DrawColour> *highlight_bond_map,
270 const std::map<int, double> *highlight_radii);
272 virtual void highlightCloseContacts();
276 #endif // RDKITMOLDRAW2D_H
virtual void drawString(const std::string &str, const Point2D &cds)
virtual void setColour(const DrawColour &col)
virtual void setLineWidth(int width)
boost::shared_ptr< Bond > BOND_SPTR
virtual int height() const
MolDraw2D(int width, int height)
virtual DrawColour colour() const
std::vector< unsigned int > DashPattern
virtual void calculateScale()
virtual void setDash(const DashPattern &patt)
virtual void setFillPolys(bool val)
virtual void clearDrawing()=0
virtual void drawRect(const Point2D &cds1, const Point2D &cds2)
virtual void drawAttachmentLine(const Point2D &cds1, const Point2D &cds2, const DrawColour &col, double len=1.0, unsigned int nSegments=8)
virtual void drawPolygon(const std::vector< Point2D > &cds)=0
virtual const DashPattern & dash() const
virtual Point2D getDrawCoords(const Point2D &mol_cds) const
pulls in the core RDKit functionality
ROMol is a molecule class that is intended to have a fixed topology.
MolDrawOptions & drawOptions()
DrawColour backgroundColour
virtual void drawMolecule(const ROMol &mol, const std::vector< int > *highlight_atoms=NULL, const std::map< int, DrawColour > *highlight_map=NULL, const std::map< int, double > *highlight_radii=NULL, int confId=-1)
virtual void drawLine(const Point2D &cds1, const Point2D &cds2)=0
bool setStringDrawMode(const std::string &instring, TextDrawType &draw_mode, int &i) const
virtual void drawEllipse(const Point2D &cds1, const Point2D &cds2)
virtual void setFontSize(double new_size)
virtual bool fillPolys() const
const MolDrawOptions & drawOptions() const
virtual int lineWidth() const
Includes a bunch of functionality for handling Atom and Bond queries.
virtual Point2D getAtomCoords(const std::pair< int, int > &screen_cds) const
virtual int width() const
virtual double scale() const
#define RDUNUSED_PARAM(x)
bool dummiesAreAttachments
double multipleBondOffset
virtual void drawTriangle(const Point2D &cds1, const Point2D &cds2, const Point2D &cds3)
std::map< int, std::string > atomLabels
std::vector< std::vector< int > > atomRegions
virtual void getStringSize(const std::string &label, double &label_width, double &label_height) const =0
DrawColour highlightColour
virtual double fontSize() const
const std::vector< std::pair< std::string, OrientType > > & atomSyms() const
const std::vector< Point2D > & atomCoords() const
int flagCloseContactsDist
The class for representing atoms.
boost::tuple< float, float, float > DrawColour
virtual void tagAtoms(const ROMol &mol)