Hi, I have started to use Standard Generator for depicting structures, (described in: https://github.com/cdk/cdk/wiki/Standard-Generator).
The generated depictions are nicer before, but I have found some structures that make StandardGenerator fail. Following the part to the code used to create the depiction: [...] final DOMImplementation domImplementation = GenericDOMImplementation.getDOMImplementation(); final Document document = domImplementation.createDocument(" http://www.w3.org/2000/svg", "svg", null); final SVGGeneratorContext context = SVGGeneratorContext.createDefault(document); final SVGGraphics2D svgGraphics2D = new SVGGraphics2D(context, true); final List<IGenerator<IAtomContainer>> listOfGenerators = new ArrayList<IGenerator<IAtomContainer>>(); listOfGenerators.add(new BasicSceneGenerator()); listOfGenerators.add(new StandardGenerator(new Font("Verdana", Font.PLAIN, 18))); final AtomContainerRenderer atomContainerRenderer = new AtomContainerRenderer(listOfGenerators, new AWTFontManager()); final RendererModel rendererModel = atomContainerRenderer.getRenderer2DModel(); rendererModel.set(StandardGenerator.Visibility.class, SymbolVisibility.iupacRecommendations()); rendererModel.set(StandardGenerator.AtomColor.class, new CDK2DAtomColors()); try { atomContainerRenderer.paint(pIAtomContainer, new AWTDrawVisitor(svgGraphics2D), new Rectangle(0, 0, width, height), true); } catch (final Exception e) { throw new CDKException("Error during image depiction.", e); } final StringWriter stringWriter = new StringWriter(); final Element root = svgGraphics2D.getRoot(); root.setAttributeNS(null, SVGConstants.SVG_VIEW_BOX_ATTRIBUTE, "0 0 " + (width) + " " + height); svgGraphics2D.stream(root, stringWriter); [...] With some structures the following exception is raised: Caused by: java.lang.ArrayIndexOutOfBoundsException: 34 at org.openscience.cdk.renderer.generators.standard.StandardBondGenerator$RingBondOffsetComparator.countLightElements(StandardBondGenerator.java:1303) at org.openscience.cdk.renderer.generators.standard.StandardBondGenerator$RingBondOffsetComparator.compare(StandardBondGenerator.java:1248) at org.openscience.cdk.renderer.generators.standard.StandardBondGenerator$RingBondOffsetComparator.compare(StandardBondGenerator.java:1214) at java.util.TimSort.countRunAndMakeAscending(Unknown Source) at java.util.TimSort.sort(Unknown Source) at java.util.TimSort.sort(Unknown Source) at java.util.Arrays.sort(Unknown Source) at java.util.Collections.sort(Unknown Source) at org.openscience.cdk.renderer.generators.standard.StandardBondGenerator.ringPreferenceMap(StandardBondGenerator.java:1143) at org.openscience.cdk.renderer.generators.standard.StandardBondGenerator.<init>(StandardBondGenerator.java:146) at org.openscience.cdk.renderer.generators.standard.StandardBondGenerator.generateBonds(StandardBondGenerator.java:181) at org.openscience.cdk.renderer.generators.standard.StandardGenerator.generate(StandardGenerator.java:197) at org.openscience.cdk.renderer.generators.standard.StandardGenerator.generate(StandardGenerator.java:82) at org.openscience.cdk.renderer.AbstractRenderer.generateDiagram(AbstractRenderer.java:120) at org.openscience.cdk.renderer.AtomContainerRenderer.paint(AtomContainerRenderer.java:235) Attached to this mail you will find an structure (.SDF format) which produces the error. Has anybody experienced similar behavior ? Is there any workaround ? Thanks in advance. Oscar
EXAMPLE.sdf
Description: Binary data
------------------------------------------------------------------------------ Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server from Actuate! Instantly Supercharge Your Business Reports and Dashboards with Interactivity, Sharing, Native Excel Exports, App Integration & more Get technology previously reserved for billion-dollar corporations, FREE http://pubads.g.doubleclick.net/gampad/clk?id=157005751&iu=/4140/ostg.clktrk
_______________________________________________ Cdk-user mailing list Cdk-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/cdk-user