private void calculateAndWriteVertex( int sizeX, int sizeY, GraphicLayoutInfo graphicLayoutInfo, GraphVertex vertex) { Position position = graphicLayoutInfo.mapToOriginal(vertex.getPosition()); // Determine color for vertex. Color color = vertex.getColor(); if (options.getOption(OptionsEnum.depDegreeColor).getBool()) { float redValue = vertex.getDegreeOut() / graph.getMaxOutdegree(); color = new Color(redValue, 1 - redValue, 0); } if (vertex.getShape() == Shape.FIXED_SIZE_BOX) { int radius = 2; writeVertex(vertex, (int) position.x, (int) position.y, (int) position.z, radius, color); } else if (vertex.getShape() == Shape.FILLER_RECT) { int width = Math.max(1, Math.round(sizeX / graphicLayoutInfo.getWidth())); int height = Math.max(1, Math.round(sizeY / graphicLayoutInfo.getHeight())); writeVertex( vertex, (int) position.x, (int) position.y, (int) position.z, width, height, color); } else { int radius = calculateVertexRadius(vertex.getDegree()); writeVertex(vertex, (int) position.x, (int) position.y, (int) position.z, radius, color); } }
public void writeGraphicsLayout( List<GraphVertex> vertices, List<GraphEdge> edges, Dimension size) { GraphicLayoutInfo graphicLayoutInfo = calculateOffsetAndScale(size); int sizeX = (int) size.getWidth(); int sizeY = (int) size.getHeight(); // Draw the edges. for (GraphEdge edge : edges) { if (options.getOption(OptionsEnum.showEdges).getBool() || edge.showEdge()) { // Only draw the edge if it and both of its incident vertices are visible if ((edge.getSource().isShowVertex() || edge.getTarget().isShowVertex()) && !edge.isAuxiliaryEdge()) { Position sourcePos = graphicLayoutInfo.mapToOriginal(edge.getSource().getPosition()); Position targetPos = graphicLayoutInfo.mapToOriginal(edge.getTarget().getPosition()); writeEdge( edge, (int) sourcePos.x, (int) sourcePos.y, (int) sourcePos.z, (int) targetPos.x, (int) targetPos.y, (int) targetPos.z); } } } // Draw the vertices. // First draw the vertices that are not annotated (put them to background). for (GraphVertex vertex : vertices) { if (vertex.isShowVertex() && !(options.getOption(OptionsEnum.hideSource).getBool() && vertex.isSource()) && !vertex.isAuxiliary() && !vertex.isShowName()) { calculateAndWriteVertex(sizeX, sizeY, graphicLayoutInfo, vertex); } } // Draw the annotated vertices. // Second draw the annotated vertices (put them to foreground). for (GraphVertex vertex : vertices) { if (vertex.isShowVertex() && !(options.getOption(OptionsEnum.hideSource).getBool() && vertex.isSource()) && !vertex.isAuxiliary() && vertex.isShowName()) { calculateAndWriteVertex(sizeX, sizeY, graphicLayoutInfo, vertex); } } }