Skip to content

Instantly share code, notes, and snippets.

@johnmay
Created August 21, 2012 15:29
Show Gist options
  • Save johnmay/3416581 to your computer and use it in GitHub Desktop.
Save johnmay/3416581 to your computer and use it in GitHub Desktop.
CDK Highlight
public void generateImageWithBondsHighlighted() throws Exception {
IAtomContainer molecule = MoleculeFactory.makeAdenine();
IAtomContainer selectionMolecule = molecule.getBuilder().newInstance(IAtomContainer.class);
for (int i = 0; i < 3; i++) {
selectionMolecule.addBond(molecule.getBond(i));
}
AtomContainerManipulator.percieveAtomTypesAndConfigureAtoms(molecule);
StructureDiagramGenerator structureDiagramGenerator = new StructureDiagramGenerator();
structureDiagramGenerator.setMolecule(molecule);
structureDiagramGenerator.generateCoordinates();
IAtomContainer moleculeWithCoordinates = structureDiagramGenerator.getMolecule();
IRenderer chemicalMoleculeRenderer = new AtomContainerRenderer(Arrays.asList(new BasicSceneGenerator(),
new ExternalHighlightGenerator(),
new BasicBondGenerator(),
new BasicAtomGenerator()),
new AWTFontManager());
RendererModel renderer2DModel = chemicalMoleculeRenderer.getRenderer2DModel();
renderer2DModel.set(ExternalHighlightGenerator.ExternalHighlightDistance.class, (double) 12);
renderer2DModel.set(RendererModel.ExternalHighlightColor.class, Color.ORANGE);
renderer2DModel.setExternalSelectedPart(selectionMolecule);
BufferedImage image = new BufferedImage(186, 186, BufferedImage.TYPE_INT_ARGB);
Rectangle2D bounds = new Rectangle2D.Double(0, 0,
image.getWidth(),
image.getHeight());
Graphics2D g2 = (Graphics2D) image.createGraphics();
g2.setBackground(Color.WHITE);
g2.clearRect(0, 0, 186, 186);
AWTDrawVisitor awtDrawVisitor = new AWTDrawVisitor(g2);
System.out.println("Atom count - " + moleculeWithCoordinates.getAtomCount());
chemicalMoleculeRenderer.paint(moleculeWithCoordinates, awtDrawVisitor, bounds, true);
g2.dispose();
ImageIO.write((RenderedImage) image, "PNG", new File("/Users/kalai/adenine.png"));
System.out.println("Finished rendering");
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment