* break out the LinkNode processing code
* initial version of linknode rendering
* add another test and fix a minor issue
* boost::format
* fix a bad merge
* first basic pass at molecule notes
FIX problem with updating bounding box based on non-centered annotations
* add chiral flags and simplified stereo annotations
* tests
* molecule annotations are the same font size as atom labels
* Qt drawing works with freetype.
needs polish and testing
non-freetype drawing doesn't work still
* make the Qt rendering anti-aliased
* non-freetype fonts work in Qt
With the giant caveat that you need a QGuiApplication to use fonts. We try to detect that
* cleanup
* changes in response to review
* add qt support to CI builds
* fix VS build problem
* try resolving a linux link error
* Update linux_build.yml
* Update linux_build.yml
* another attempt to get the linux CI builds working
* getting closer?
* Update linux_build.yml
* disable the qt CI builds on windows
* backup
* further progress
* backup
* refactor handling of atom/bond annotations
move to a single annotation list to make it easier to add new annotation
types
* backup, doesn't actually work
* not unhappy with how the bracket rendering now works
still need to do bracket annotations
* backup
* commit first pass at brackets annotations
* add a bit more flexibility to how we handle annotations
Stll needs to be elaborated a bit, but the tests currently pass
* cleanup
* support comic mode with brackets
moves the handdrawnLine code to MolDraw2D_detail, which is a better place for it
* updates in response to review
* works
* auto download of comic-neue font
* support it in the python layer
* getting ready for a PR
* tone down the wobbly line effect a bit
* add end-point shifts
tone the wiggles down a bit
* 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>
* Fixed poor position of + charge in S NH2+ group. Also made it say Cu2+ rather than Cu+2.
* Fixed bug where H of [NH+](C)(C)C sometimes went on top of bond.
Co-authored-by: David Cosgrove <david@cozchemix.co.uk>
Pull point of arrow back because the arrowhead goes beyond the end of the plain line.
Changed/simplified way ends of bonds are adjusted for atoms labels.
Co-authored-by: David Cosgrove <david@cozchemix.co.uk>
* Several things here
1) move "atomNote" and "bondNote" to common_properties
2) move addStereoAnnotation to the MolDraw2DUtils namespace
3) add addAtomIndices and addBondIndices
4) initialize MolDrawOptions members directly instead of via the ctor
5) add tests for all that
6) the usual reformatting
* Move the annotations functions to MolDraw2DDetails,
no need for them to be in the public API
Remove MolDraw2DDetails.h from the installed headers.
* turn off redundant prepareMolsForDrawing in _moltoimg
* 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
* add a C++ test to confirm that copying the drawOptions object works
* add SetDrawOptions() to python API
* add a drawOptions object to IPythonConsole
This allows global drawing settings to be more easily changed
* backup: move arrow drawing out
* add a drawArrow() method
draw dative bonds using an arrow
* backup, need to rebase
* add test/demo
get two of the calls properly working
* update expected test results
* update documentation
* 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 clickable atoms when tagAtoms() is called
* add python tests
* add class tags for atoms and bonds
* add marker to allow easy insertion of extra text