From: <gil...@us...> - 2008-11-28 16:14:04
|
Revision: 13372 http://cdk.svn.sourceforge.net/cdk/?rev=13372&view=rev Author: gilleain Date: 2008-11-28 16:14:00 +0000 (Fri, 28 Nov 2008) Log Message: ----------- Moving towards Arvid's list-of-generators method. Modified Paths: -------------- cdk/branches/jchempaint-primary/src/main/org/openscience/cdk/renderer/IntermediateRenderer.java Modified: cdk/branches/jchempaint-primary/src/main/org/openscience/cdk/renderer/IntermediateRenderer.java =================================================================== --- cdk/branches/jchempaint-primary/src/main/org/openscience/cdk/renderer/IntermediateRenderer.java 2008-11-28 15:50:10 UTC (rev 13371) +++ cdk/branches/jchempaint-primary/src/main/org/openscience/cdk/renderer/IntermediateRenderer.java 2008-11-28 16:14:00 UTC (rev 13372) @@ -27,6 +27,7 @@ import java.awt.geom.AffineTransform; import java.awt.geom.NoninvertibleTransformException; import java.awt.geom.Rectangle2D; +import java.util.ArrayList; import javax.vecmath.Point2d; @@ -36,8 +37,10 @@ import org.openscience.cdk.interfaces.IMoleculeSet; import org.openscience.cdk.renderer.elements.ElementGroup; import org.openscience.cdk.renderer.elements.IRenderingElement; -import org.openscience.cdk.renderer.generators.BasicGenerator; +import org.openscience.cdk.renderer.generators.BasicAtomGenerator; +import org.openscience.cdk.renderer.generators.BasicBondGenerator; import org.openscience.cdk.renderer.generators.HighlightGenerator; +import org.openscience.cdk.renderer.generators.IGenerator; import org.openscience.cdk.renderer.visitor.TransformingDrawVisitor; /** @@ -47,8 +50,7 @@ private AWTFontManager fontManager; private Renderer2DModel rendererModel; - private BasicGenerator generator; - private HighlightGenerator highlightGenerator; + private ArrayList<IGenerator> generators; private Stroke stroke; private AffineTransform transform; @@ -63,8 +65,9 @@ public IntermediateRenderer() { this.rendererModel = new Renderer2DModel(); this.rendererModel.setHighlightRadiusModel(3.5); - this.generator = new BasicGenerator(this.rendererModel); - this.highlightGenerator = new HighlightGenerator(this.rendererModel); + this.generators.add(new BasicBondGenerator(this.rendererModel)); + this.generators.add(new BasicAtomGenerator(this.rendererModel)); + this.generators.add(new HighlightGenerator(this.rendererModel)); this.stroke = new BasicStroke(2); this.fontManager = new AWTFontManager(); this.transform = new AffineTransform(); @@ -95,14 +98,21 @@ ElementGroup diagram = new ElementGroup(); for (int i = 0; i < moleculeSet.getAtomContainerCount(); i++) { IAtomContainer ac = moleculeSet.getAtomContainer(i); - IRenderingElement subDiagram = this.generator.generate(ac); - diagram.add(subDiagram); - IRenderingElement highlights = this.highlightGenerator.generate(ac); - diagram.add(highlights); + for (IGenerator generator : this.generators) { + diagram.add(generator.generate(ac)); + } } return diagram; } + private IRenderingElement generateDiagram(IAtomContainer ac) { + ElementGroup diagram = new ElementGroup(); + for (IGenerator generator : this.generators) { + diagram.add(generator.generate(ac)); + } + return diagram; + } + private Rectangle2D calculateBounds(IMoleculeSet moleculeSet) { Rectangle2D totalBounds = new Rectangle2D.Double(); for (int i = 0; i < moleculeSet.getAtomContainerCount(); i++) { @@ -139,17 +149,15 @@ this.paint(g, diagram, bounds); } - public void paintMolecule(IAtomContainer atomCon, Graphics2D g) { + public void paintMolecule(IAtomContainer ac, Graphics2D g) { } - public void paintMolecule(IAtomContainer atomCon, Graphics2D g, Rectangle2D bounds, + public void paintMolecule(IAtomContainer ac, Graphics2D g, Rectangle2D bounds, boolean resetCenter) { - if (atomCon.getAtomCount() == 0) return; // XXX - Rectangle2D atomicBounds = this.calculateBounds(atomCon); + if (ac.getAtomCount() == 0) return; // XXX - IRenderingElement diagram = this.generator.generate(atomCon); - IRenderingElement highlights = this.highlightGenerator.generate(atomCon); - ((ElementGroup) diagram).add(highlights); + Rectangle2D atomicBounds = this.calculateBounds(ac); + IRenderingElement diagram = this.generateDiagram(ac); this.setDrawCenter(bounds.getCenterX(), bounds.getCenterY()); this.setScale(bounds, atomicBounds); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |