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){};
88 virtual void drawMolecule(
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);
93 virtual void drawMolecule(
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);
99 virtual void drawMolecule(
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);
106 virtual void drawMolecule(
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);
122 virtual Point2D getDrawCoords(
int at_num)
const;
123 virtual Point2D getAtomCoords(
const std::pair<int, int> &screen_cds)
const;
125 const std::pair<double, double> &screen_cds)
const;
126 virtual Point2D getAtomCoords(
int at_num)
const;
128 virtual int width()
const {
return width_; }
129 virtual int height()
const {
return height_; }
131 virtual double scale()
const {
return scale_; }
132 virtual void calculateScale();
134 virtual double fontSize()
const {
return font_size_; }
137 virtual void setFontSize(
double new_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_; }
152 bool setStringDrawMode(
const std::string &instring, TextDrawType &draw_mode,
155 virtual void clearDrawing() = 0;
165 virtual void getStringSize(
const std::string &label,
double &label_width,
166 double &label_height)
const = 0;
168 virtual void drawString(
const std::string &str,
const Point2D &cds);
171 virtual void drawPolygon(
const std::vector<Point2D> &cds) = 0;
172 virtual void drawTriangle(
const Point2D &cds1,
const Point2D &cds2,
174 virtual void drawEllipse(
const Point2D &cds1,
const Point2D &cds2);
176 virtual void drawAttachmentLine(
const Point2D &cds1,
const Point2D &cds2,
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,
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 setColour(const DrawColour &col)
virtual int lineWidth() const
virtual void setLineWidth(int width)
boost::shared_ptr< Bond > BOND_SPTR
virtual double fontSize() const
std::pair< std::string, OrientType > getAtomSymbolAndOrientation(const Atom &atom, RDGeom::Point2D nbrSum)
virtual int height() const
std::vector< unsigned int > DashPattern
virtual void setDash(const DashPattern &patt)
const std::vector< Point2D > & atomCoords() const
virtual void setFillPolys(bool val)
virtual DrawColour colour() const
virtual bool fillPolys() const
pulls in the core RDKit functionality
ROMol is a molecule class that is intended to have a fixed topology.
MolDrawOptions & drawOptions()
DrawColour backgroundColour
const MolDrawOptions & drawOptions() const
Includes a bunch of functionality for handling Atom and Bond queries.
#define RDUNUSED_PARAM(x)
bool dummiesAreAttachments
virtual double scale() const
virtual const DashPattern & dash() const
double multipleBondOffset
virtual int width() const
std::map< int, std::string > atomLabels
std::vector< std::vector< int > > atomRegions
DrawColour highlightColour
int flagCloseContactsDist
The class for representing atoms.
const std::vector< std::pair< std::string, OrientType > > & atomSyms() const
boost::tuple< float, float, float > DrawColour
void drawLine(std::vector< ElementType > &res, int atnum1, int atnum2, int lineWidth, int dashed, double x1, double y1, double x2, double y2)
virtual void tagAtoms(const ROMol &mol)