Thanks David, that was the missing piece! I will reach out to you if I find there is something I want to do that doesn't work with the API for this class.
Best, Jason On Sun, Jul 26, 2020 at 3:48 PM David Cosgrove <davidacosgrov...@gmail.com> wrote: > Hi Jason, > The original design was set up to make it relatively straightforward to > make your own drawing class, so it's disappointing you aren't finding it > so. I guess we've become focussed on getting Cairo and SVG pictures to > work, and have forgotten to keep this in mind. > A good place to start might be overriding the virtual functions > getDrawCoords() and getAtomCoords(). These transform from atom coordinates > to draw coordinates and vice versa. You will need to override both, and > make sure they are consistent. For reasons that demonstrate that the whole > drawing system needs re-factoring, the code for setting the scales switches > between the two coordinate systems in ways that are impossible to defend. > It's a bit like the human eye - it's where we've ended up, but not how > you'd design it if you were starting from scratch. The other thing might > be to override the non-virtual calculateScale() functions. There is a > class data member needs_scale_ which would probably be exactly what you > want except that it's private so you won't be able to see or alter it in > your derived class. That's something we could think about making access > functions for. > I hope this helps. If not, please do get back to me either privately or > via the list. It would be useful for future development to find out how > you get on and what would have made it easier for you. > > Best, > Dave > > > > > On Sun, Jul 26, 2020 at 8:37 PM Jason Biggs <jasondbi...@gmail.com> wrote: > >> I'm trying to use the MolDraw2D class in C++ to generate all the graphics >> primitives for a molecule, which I then pass into my own graphics engine to >> make an image. I'm doing this by making a new class that is a subclass of >> MolDraw2D, similar to MolDraw2DSVG, and overriding the drawXXX methods. >> >> But I find that when I call drawMolecule on a molecule that already has >> 2D coordinates, the lines that get drawn have all been rescaled and >> translated. I need to turn off this, I need for the coordinates used to >> make the lines match the existing conformer. I know this is somehow >> related to the width and height used in the MolDraw2D constructor, and I >> see that there are options fixedBondLength, fixedScale, as well as a >> setScale method. But I'm not clear on what values to set in these to set >> the rescaling to 1 and translation to 0. >> >> Thanks >> Jason Biggs >> >> _______________________________________________ >> Rdkit-discuss mailing list >> Rdkit-discuss@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/rdkit-discuss >> > > > -- > David Cosgrove > Freelance computational chemistry and chemoinformatics developer > http://cozchemix.co.uk > >
_______________________________________________ Rdkit-discuss mailing list Rdkit-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rdkit-discuss