22 #ifndef RDKITMOLDRAW2D_H 23 #define RDKITMOLDRAW2D_H 30 #include <boost/tuple/tuple.hpp> 51 dummiesAreAttachments(false),
53 highlightColour(1,.5,.5),
54 continuousHighlight(true),
55 flagCloseContactsDist(3),
56 includeAtomTags(false)
68 virtual void drawMolecule(
const ROMol &mol ,
69 const std::vector<int> *highlight_atoms = NULL,
70 const std::map<int,DrawColour> *highlight_map = NULL,
71 const std::map<int,double> *highlight_radii = NULL,
74 virtual void drawMolecule(
const ROMol &mol ,
75 const std::vector<int> *highlight_atoms,
76 const std::vector<int> *highlight_bonds,
77 const std::map<int,DrawColour> *highlight_atom_map = NULL,
78 const std::map<int,DrawColour> *highlight_bond_map = NULL,
79 const std::map<int,double> *highlight_radii = NULL,
89 virtual Point2D getDrawCoords(
int at_num )
const;
90 virtual Point2D getAtomCoords(
const std::pair<int,int> &screen_cds )
const;
91 virtual Point2D getAtomCoords(
int at_num )
const;
94 virtual int width()
const {
return width_; }
95 virtual int height()
const {
return height_; }
97 virtual double scale()
const {
return scale_; }
98 virtual void calculateScale();
100 virtual double fontSize()
const {
return font_size_; }
103 virtual void setFontSize(
double new_size );
105 virtual void setColour(
const DrawColour &col ) { curr_colour_ = col; }
106 virtual DrawColour
colour()
const {
return curr_colour_; }
108 virtual void setDash(
const DashPattern &patt ) { curr_dash_ = patt; }
109 virtual const DashPattern &
dash()
const {
return curr_dash_; }
112 virtual const int lineWidth()
const {
return curr_width_; }
117 bool setStringDrawMode(
const std::string &instring ,
int &draw_mode ,
120 virtual void clearDrawing() = 0;
129 virtual void getStringSize(
const std::string &label ,
double &label_width ,
130 double &label_height )
const = 0;
132 virtual void drawString(
const std::string &str ,
136 virtual void drawPolygon(
const std::vector<Point2D > &cds ) = 0;
137 virtual void drawTriangle(
const Point2D &cds1 ,
140 virtual void drawEllipse(
const Point2D &cds1 ,
142 virtual void drawRect(
const Point2D &cds1 ,
144 virtual void drawAttachmentLine(
const Point2D &cds1 ,
146 const DrawColour &col,
148 unsigned int nSegments=8 );
159 const std::vector<Point2D > &
atomCoords()
const {
return at_cds_; };
160 const std::vector<std::pair<std::string,OrientType> > &
atomSyms()
const {
return atom_syms_; };
162 int width_ , height_;
164 double x_min_ , y_min_ , x_range_ , y_range_;
165 double x_trans_ , y_trans_;
171 DrawColour curr_colour_;
172 DashPattern curr_dash_;
175 std::vector<Point2D > at_cds_;
176 std::vector<int> atomic_nums_;
177 std::vector<std::pair<std::string,OrientType> > atom_syms_;
180 virtual void drawChar(
char c ,
const Point2D &cds ) = 0;
184 DrawColour getColour(
int atom_idx ,
185 const std::vector<int> *highlight_atoms=NULL ,
186 const std::map<int,DrawColour> *highlight_map=NULL );
187 DrawColour getColourByAtomicNum(
int atomic_num );
189 void extractAtomCoords(
const ROMol &mol,
int confId );
190 void extractAtomSymbols(
const ROMol &mol );
194 const DrawColour &col1 ,
195 const DrawColour &col2 );
197 int at1_idx ,
int at2_idx ,
198 const std::vector<int> *highlight_atoms=NULL ,
199 const std::map<int,DrawColour> *highlight_atom_map=NULL,
200 const std::vector<int> *highlight_bonds=NULL ,
201 const std::map<int,DrawColour> *highlight_bond_map=NULL );
202 void drawWedgedBond(
const Point2D &cds1 ,
204 bool draw_dashed ,
const DrawColour &col1 ,
205 const DrawColour &col2 );
206 void drawAtomLabel(
int atom_num ,
207 const std::vector<int> *highlight_atoms=NULL ,
208 const std::map<int,DrawColour> *highlight_map=NULL );
229 void adjustBondEndForLabel(
int atnum ,
const Point2D &nbr_cds ,
236 virtual void doContinuousHighlighting(
const ROMol &mol ,
237 const std::vector<int> *highlight_atoms,
238 const std::vector<int> *highlight_bonds,
239 const std::map<int,DrawColour> *highlight_atom_map,
240 const std::map<int,DrawColour> *highlight_bond_map,
241 const std::map<int,double> *highlight_radii );
243 virtual void highlightCloseContacts();
249 #endif // RDKITMOLDRAW2D_H virtual void setColour(const DrawColour &col)
virtual void setLineWidth(int width)
boost::shared_ptr< Bond > BOND_SPTR
virtual int height() const
virtual DrawColour colour() const
std::vector< unsigned int > DashPattern
virtual void setDash(const DashPattern &patt)
virtual void setFillPolys(bool val)
boost::tuple< float, float, float > DrawColour
const std::vector< std::pair< std::string, OrientType > > & atomSyms() const
virtual const DashPattern & dash() const
pulls in the core RDKit functionality
ROMol is a molecule class that is intended to have a fixed topology.
const std::vector< Point2D > & atomCoords() const
MolDrawOptions & drawOptions()
std::map< int, std::string > atomLabels
virtual bool fillPolys() const
const MolDrawOptions & drawOptions() const
Includes a bunch of functionality for handling Atom and Bond queries.
std::pair< std::string, OrientType > getAtomSymbolAndOrientation(const Atom &atom, RDGeom::Point2D nbrSum)
virtual int width() const
virtual double scale() const
bool dummiesAreAttachments
virtual const int lineWidth() const
std::vector< std::vector< int > > atomRegions
DrawColour highlightColour
virtual double fontSize() const
int flagCloseContactsDist
The class for representing atoms.
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)