* fix build
* recheck
* install DrawTextQt.h
* Some additional cleanup and merge to the current state of master (#8)
* silence warnings in MSVC compliatons (#5044)
* enable the multithreaded LeaderPicker on linux (#5043)
* enable the multithreaded leaderpicker on linux
* response to review
* AtomSymbol needs to have a virtual destructor (#5045)
* AtomSymbol needs to have a virtual destructor
* additional cleanup of virtual functions
* typo fix
Co-authored-by: greg landrum <greg.landrum@gmail.com>
* Expose MolzipParams::atomSymbols to python (#5054)
* [WIP] Clean up the warning landscape (#5048)
* suppress a bunch of warnings from third-party code
get rid of one warning in RDKit code
* corrections
* fix the maeparser flags
* remove some more inchi warnings with clang
* Further cleanup of the public interface.
Get all the DrawText bits out of the header files used by client code.
Co-authored-by: Brian Kelley <fustigator@gmail.com>
Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
Co-authored-by: Brian Kelley <fustigator@gmail.com>
* MolDraw2D refactoring
- rename setupMoleculeDraw->initMoleculeDraw
- track whether or not initDrawing() has been called
- centralize calls to initDrawing() and clearDrawing() into initMoleculeDraw()
- update svg hashes in tests
* update some expected test results
* support changing font scale and default scale
add reaction test
* does not work... this is hard
* all tests pass
* do something about legends
* docs
* more tests
* more docs
* cleanup
* going around in circles...
hopefully converging
* cleanup
* Single bond skeleton works.
* Simple bond drawing seems to be working.
* Initial addition of atom symbols.
* Stash of not-quite-working atom symbols prior to major surgery.
* Atom symbols seem to be working. Major surgery not required, just inverted Y coords at the outset.
* Add classes to atom labels.
* Renamed AtomLabel AtomSymbol.
* Add highlights.
* Fix bug from PR4839.
* Molecule note.
* Added atom notes.
* Added bond notes.
* Extract radicals.
* Annotation via new DrawAnnotation class.
* Add brackets.
* Add linknodes.
* Add close contacts.
* Add attachment points. Fix wavy lines.
* Draw molecules in grid.
* Tidy.
* Fix radicals when font has hit maxFontSize.
Make getDrawCoords work.
* Draw primitives take atom or draw coords.
* Fix legends.
* More fixing for tests. DrawMol::setScale now takes font scale as well.
* tidy debug writes
* Variable fraction of panel for legend.
* Better legend positioning.
* Fix sub- and super-script spacing.
Added spaces to Freetype strings.
* Basic reaction drawing.
* Reaction highlighting.
* Minor tweak to reacctions.
* Tweaked reaction DrawMol widths.
* Fix atomTags.
* Fix catch tests except contours.
* Contouring working in catch_tests.cpp.
* Fix catch tests.
* AtomSymbol and DrawAnnotation into MolDraw2D_detail.
* DrawMol and DrawShape into MolDraw2D_detail.
* DrawText inot MolDraw2D_detail.
* Machete out.
* DrawText goes private.
* Move some stuff about, such as StringRect to its own header.
* Python wrapper compiles (but crashes when Draw imported).
* More tidying. Python DrawArrow failing.
* Linux changes.
* Fixed error in DrawShapeArrow spotted by valgrind.
Fixed some warnings from gcc.
* Maybe fixed DrawArrow.
* Added basic argparse interface.
* Added newlines.
* Changes in response to review.
Non-const args in move constructors and operator=.
Added missing classes to MolDraw2D_detail.
Deleted move operator= where it had been forgotten.
Fixed copyright dates.
* Deleted all default c'tors in derived classes.
* Changes in response to review:
Wedge widths now a proportion of mean bond length in draw coords..
Add padding below legend when positioning it.
* Fix tests.
* Fix the private/protected mess of the new classes.
* Moved doesLineIntersect etc.
* Reinstate original alignString for non-FT drawings.
* More faffing about with reaction layouts.
* Fix font sizes in testGitHub3391.
* Fix atom notes fitting inside fat wedges.
* Fix molecule annotation font size.
* More fixes of rectangle/triangle collision detection.
* Test for highlight linewidth multiplier.
* Use push_back not emplace_back.
* Attempt at better Freetype char spacing.
* Option to turn off TEST_ASSERT. Currently off.
* Fixed embarrassing maths to do with wedge fatness.
* More tidying post-review.
* Document highlight_linewidth_multipliers.
* Expose baseFontSize to Python.
* Changes in response to review.
* Allow DrawMolecules molecules to be drawn to different scales.
* Fix bond sneaking between C:8 in, for example, reactions.
* Fix bad re-factoring.
* Fix globbing.
* Changes in response to review.
* Add invariant check.
* Add draw option to fix font size.
* suggested changes
* Update catch test results.
* Fix expected freetype results.
* Fix non-freetype drawers.
* Fin non-freetype test results.
* get the Qt drawer working too
* Fix disappearing reaction highlights.
* Changes as result of review.
* Fixed non-FreeType hash codes for reaction SVGs. Extra comment in catch_tests.
* reactant highlighting was clearning properties
* Fix for failing contour python test.
* fix a non-freetype problem
* swig wrappers working
* Bump timeouts in test.
Co-authored-by: greg landrum <greg.landrum@gmail.com>
Co-authored-by: David Cosgrove <david@cozchemix.co.uk>
* MolDraw2D refactoring
- rename setupMoleculeDraw->initMoleculeDraw
- track whether or not initDrawing() has been called
- centralize calls to initDrawing() and clearDrawing() into initMoleculeDraw()
- update svg hashes in tests
* update some expected test results
* support changing font scale and default scale
add reaction test
* does not work... this is hard
* all tests pass
* do something about legends
* docs
* more tests
* more docs
* cleanup
* going around in circles...
hopefully converging
* cleanup
* response to review
along with a bit of cleanup
* use alpha values in the MolDraw2D classes
* fully support alpha from python too
* debugging print
* ensure tests work on nodeps system
* update expectations
* fixes#3852
- width should not be implicitly cast to unsigned int
- coordinates should not be rounded ahead of using them in context, as the context will do that with interpolation/antialiasing when generating the bitmap
* - removed another occurrence of std::round
- fixed test that was expecting an integer value which should instead be float
Co-authored-by: Paolo Tosco <paolo.tosco@novartis.com>
* Fixed expected test results.
* Implements Github 3305.
Line widths don't scale by default. Line widths are now floats rather than ints.
* Suggestion that testGithub565 be removed.
* Corrected comment.
* Fixed test case.
* Added scaleBondWidth to Python wrappers.
* Fixed expected test values.
* Removed testGithub5.
* Added draw option to scale highlighted bond width.
* Put all the tests back in.
* Tweaked tests to allow for difference in scale between Freetype/No-Freetype images.
* Extra write for CI error.
* Extra write for CI error.
* removed extra write for CI error.
* update expected results
remove debugging output
* Fixed stroke-width to 1 decimal place in SVG files. Altered tests to cope.
* update expected results for python tests
Co-authored-by: David Cosgrove <david@cozchemix.co.uk>
Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
* reader stub. Navigates the file successfullly
* works
* works
* read out all metadata, not just ours
* first pass at reading out molecules
* support mol blocks too
* add python wrapper for parser
* add direct writer
* get rid of multiple definitions in PNParser.h
* update from code review
* robustification
* handle reading compressed metadata
* support compressing metadata too
* reorder arguments to make this more consistent
* add writers to python wrappers
* forgotten file
* add pickle support
* explicit zlib dependency
* get windows builds working
at least with conda boost+zlib
* switch to using boost::iostreams to do the compression/decompression
* switch to using a vector of string pairs to store the metadata
need this so that we can contain "duplicate" keys
* add metadata output to MolDraw2DCairo
still need python test
* add a python test
* initial work at reading/writing reactions from PNGs
refactor the ReactionParser.h header a bit
* cleanup debug messages
* reaction PNG support -> python
* ReactionPickler no longer includes all ProductTemplate props
* handle metadata at the MolDraw2D level
Currently only supported by MolDraw2DCairo, it's worth extending this to SVG too
* support reading multiple molecules from a png
* support multiple molecules from files and in python
* stop duplicating tags with multiple molecules
* update to get windll builds working
this change should be propagated to more cmakelists.txt files
* make sure the metadata ends up in the notebook
* make sure PNGs in the notebook also have metadata
efficiency improvements for some notebook bits (i.e stop going PNG->Image->PNG)
* no need to pretend that we might be using PIL anymore
* documentation
* update docs to show new functionality
* not sure why the doctests failed on linux
* still trying to diagnose those failures
* protect doctests in case python interpreters are being re-used
* switch tags
* the wrapped functions to read png data from files weren't working
* <sigh>... windows dlls
* First working version with DrawText classes, original functionality only. No font scaling.
* Added font scaling.
* Added atom colours.
* First stab at freetype text drawing. A stash prior to major surgery.
* Freetype seems to be working. On to whack-a-mole.
* Added class flag to atom labels and annotations.
* Another intermim commit whilst re-factoring all string drawing code from MolDraw2D.
* Fixed scaling and implemented max font size.
* Fixed bugs in non-FT Cairo and SVG drawing.
* More re-factoring of drawStrings - now creates StringRwct for each char in all strings.
* More re-factoring of string drawing - all mentions removed from MolDraw2D, I think..
* Working native Cairo, simple tests.
* Working native Cairo, simple tests.
* Padding roumd rectangles.
* Working FT Cairo, FT SVG, native SVG, simple tests.
* Two line labels mostly sorted. Native SVG wrong.
* Two line SVG labels sorted.
* Two line SVG labels sorted.
* Tidied out debug writes.
* Tweaked merge.
* Annotations working, radicals now failing.
* Fixed radicals crash.
* All tests passed for freetype drawings. Grid drawings not right.
* Fixed bug in grid drawings.
* Better font size.
* Fixed legends in grids.
* Fixed rect intersection bug.
* Tidied up font sizes.
* moldraw2DTest1 all passing.
* All catch tests pass.
* Few rixes, and reactions look ok.
* Added minimum font size.
* Fixed radical drawing when max/min font size hit.
* Interim cmmmit, most test1.cpp working.
* Fixed uninitialised min_font_size_ in DrawText. Took out use of MolDraw2D::setFontSize() which probably needs to go back in at some point.
* More test1.cpp passing.
* test1.cpp all pass, freetype and non-freetype
* Fixed superscripts hitting min font size in test860. Made superscripts and subscripts same size.
* testc.pp all pass.
* Fixed bug in freetype text. All testt1.cpp pass.
* All tests passed.d
* Added option for different font.
* Added option for explicit terminal methyls.
* Added option to explicitly not use Freetype in drawers. Used same in catch_tests.cpp.
* Got sense of NO_FREETYPE wrong in catch_tests.cpp. D'oh!
* Fixed Python draw tests.
* Added new options to JSON interpreter.
* Fixed scale of text in contoured plots.
* Added optional molecule to grid drawer to help set scale.
* Fixed Python wrappers for drawing 2D grids .
* Added Greg's CMakeLists.txt
* Moved fonts out of code tree.
Improved handling of font files not found, including logging to rdWarningLog.
* Interim commit.
* Tidied up some namespace std issues.
* Reverted to previous version.
Took out 'using namespace std;'
* update expected java results
* Added multi-line legends. Also carves out a reserved bit for the legend, and sets the font size so the legend will fit.
* enable annotations on windows with freetype
* Removed stray font file.
* Removed stray font file.
* Re-instanted fontSize() and setFontSize(), though with change of units.
* Added RDK_BUILD_FREETYPE_SUPPORT to cmake.
* re-expose the fontsize controls to python.
document API change w.r.t. font size
* Update ReleaseNotes.md
Co-authored-by: David Cosgrove <david@cozchemix.co.uk>
Co-authored-by: greg landrum <greg.landrum@gmail.com>
* Commit of 2D draw annotation.
* update expected psql results
* First pass at improved radical drawing.
* Fix?
* Fixed different string draw behaviour.
* Removed vestiges of previous radical handling.
* Fixed bug with annnotation placement and added fallback postion.
* Removed unused var.
* update expected reaction svg
* Added option for always having circular highlights.
* Updated JSON to drawOptionns.
* Fixed bug in scale calculation. Centres drawn molecule with option not to.
* Tidied up scale calculation.
* Changed atomHighlightCircles to atomHighlightsAreCircles.
Used shared_ptr for StringRect as VS barfed on unique_ptr.
* Fixed bug with reaction cruft not following now-centred molecules.
* temporary stash
* Stepped back centring of molecule by drawMolecule and fixes to drawReaction prompted by it.
* allow annotations to be disabled at the class level.
disable them for MolDraw2DCairo on win32 (where they just don't work)
* some test cleanup
Co-authored-by: David Cosgrove <david@cozchemix.co.uk>
Co-authored-by: greg landrum <greg.landrum@gmail.com>
* First pass of fixing layout of OH/NH type drawing.
* Fixed scale for N/S NH type groups.
* Fixed bond end points with new display of heteroatoms.
* Fixed case where it drew aromatic dashed bonds in wrong ring for morphine.
* Minor edit.
* Fixed non-drawing of chiral bonds.
* Removed use of boost for_each.
* Modern atom traversal.
* Put in fixed scale for drawings.
Made drawMolecule() take note of prepareMolsBeforeDrawing.
Updated more iterators to modern idiom.
* Added fixed bond length for drawing.
* Fixed drawing of CH4, NH3 etc.
* Stash of working but ugly, prior to re-work.
* Better, simpler splitting of atom symbols.
* Took clang-tidy's advice about use of override.
* Tidied up drawing of text strings.
* Tweaked what is classed as vertical bond in drawing.
* fixedBondLength now down-scales if it would overflow the draw window.
* Some tidying.
* Tests for new parameters in JSON.
Fixed some existing tests where, for example, scale on picture is now different.
* Added option to rotate 2D draw coords before drawing.
* First pass at highlighting atoms in multiple colours. Circles only at the moment.
* Line width scales if big enough.
* Tweaked SVG text drawing.
* Added highlighting with more than 1 colour on an atom. C++ only.
* Fixed some issues with widths of highlights in a frustrating game of whackamole.
Updated some tests accordingly.
* Added Python wrapper for new drawing code.
* Removed debugging writes.
* Added C++ test for multi-coloured highlights.
* Added python test for multi-coloured highlights.
* Attempt to show radicals.
* Tidied up radicals in drawing, including a bullet instead of full stop in SVG.
* Fixed catch_tests.cpp for MolDraw2D.
* Fixed crash in Python wrappers on OSX.
* Fixed test5_2.svg bug (trailing </tspan>).
Made wavy line width scale as other lines do.
* Improved placing of charges.
* We're already in the future.
* Fixed a number of bugs that made drawMolecules not set the scales properly.
* Fixed Cairo wavy line width.
* Fixed non-closure of collision boxes.
* Added maximum font size for text, with tests.
* Addressed all Greg's first PR change requests.
* Fixed crash in extractAtomsymbols.
* stop using coordgen and adjust tests to reflect that
there's a bit of reformatting in here too
* Fixed layout of reactions.
* Fiddled with moldraw2DTest1 tests again.
* Fiddled with catch test.
* Fixed istope postion in W atom labels.
* Minor tweak to cairo,
* update expected results
Co-authored-by: David Cosgrove <david@cozchemix.co.uk>
Co-authored-by: Greg Landrum <greg.landrum@gmail.com>
* run clang-tidy with readability-braces-around-statements
clang-format the results
clean up all the parts that clang-tidy-8 broke
* fix problem on windows
* basic conrec integration
* basic conrec integration
* add molecule contouring
* update
* add an alpha channel to the color
* allow filling the grid
* cleanup
* remove some debugging output
* first pass at getting similarity maps to actually work
* updates
* add another test
explicitly set linewidth to 1
* some SVG cleanup
* add option for extra padding
* update expected test results
* efficiency
* at least something of a test
* forgot an import
* fix SWIG wrappers
* cleanups in response to review
* allow calling the functions without providing levels
* allow contouring numpy grids
* Add an initial version of wavy bonds
Used for attachment points and unknown stereochem
This is not a perfect implementation, but is a decent place to start
Currently only supports SVG and Cairo canvases.
* code review cleanup