Improved bounding box accuracy around atom symbols.
Use a rounded rectangle instead of a square to fill in the background of the atom symbol (i.e. obscuring bonds).
Draw lines using double precission coordinates - the graphics context will decided best how to interpret into pixels.
Correct scaling of line thickness - we need consider the ZoomFactor and Scale. Both of these are included in the affine transform.
Smoother joins between lines - could be a parameter.
Improved stroke caching - we store sub pixels strokes so the graphics context can decide how best to handle.
Store winding rule in general path element.
Aligning java 2D and cdk rendering element path data types to use arrays.
More flexible GeneralPath element - allow filled shapes and stroke width specification. Utilities are provided to convert from Java2D API.
Move bond length parameter from BasicBondGenerator to BasicSceneGenerator. From the changes it is easy to see the bond length is used in relation to scaling compounds - this isn’t really a parameter to change but instead is for normalising coordinate systems.
Don’t set the scale parameter at the same time as the affine transform. The scale needs to be set before generation but the transform can be set after (required for improved bounding).
A new rendering element (Bounds) that the renderer will pick up and use to fit the diagram to the required size. A generator can optionally produce a bounds object for the space it requires - when multiple bounds are present the min/max coordinates of all bounds are used.
Compute scaling for disconnected structures - this is required to avoid adjunct label collisions when there is > 1 isolated atom.
Do not leave hydrogen counts unset - also load isotope information.