package tw.com.pictures.dot; import java.util.LinkedList; import java.util.List; public class Graph extends NodesAndEdges implements Renders { private static final int DIAGRAM_TITLE_FONT_SIZE = 36; private List<SubGraph> subs = new LinkedList<SubGraph>(); public Graph() { addCompound(); } public SubGraph createSubGraph(String id) { SubGraph subGraph = new SubGraph(id); subs.add(subGraph); return subGraph; } public SubGraph createDiagramCluster(String id, String label, int fontSize) { SubGraph subDiagram = this.createSubGraph("cluster_"+id); subDiagram.addLabel(label); subDiagram.fontSize(fontSize); return subDiagram; } @Override public void render(Recorder recorder) { recorder.writeline("digraph G { "); renderNodesAndEdges(recorder, true); for(SubGraph sub : subs) { sub.render(recorder); } recorder.write("}"); } public void addTitle(String title) { addLabel(title); fontSize(DIAGRAM_TITLE_FONT_SIZE); } }