Refine search
private CubicCurve2D secedgeCurve(VerticalOrientation verticalOrientation, Rectangle2D sourceRect, Rectangle2D targetRect) { Pair<RectangleSide> sidePair = findBestConnection(sourceRect, targetRect); Point2D startPoint = sideMidPoint(sourceRect, sidePair.getFirst()); Point2D endPoint = sideMidPoint(targetRect, sidePair.getSecond()); double middleX = (startPoint.getX() + endPoint.getX()) / 2.0; double middleY = 50 * -verticalOrientation.value + (startPoint.getY() + endPoint.getY()) / 2; return new CubicCurve2D.Double( startPoint.getX(), startPoint.getY(), middleX, middleY, middleX, middleY, endPoint.getX(), endPoint.getY()); }
public void actionPerformed(ActionEvent e) { Collection picked = vv.getPickedVertexState().getPicked(); if(picked.size() == 2) { Pair pair = new Pair(picked); Graph graph = layout.getGraph(); Collection edges = new HashSet(graph.getIncidentEdges(pair.getFirst())); edges.retainAll(graph.getIncidentEdges(pair.getSecond())); exclusions.addAll(edges); vv.repaint(); } }});
public boolean evaluate(Context<Graph<V,E>,E> context) { Pair<V> endpoints = context.graph.getEndpoints(context.element); return endpoints.getFirst().equals(endpoints.getSecond()); } }
private void checkEdge(E e) { Pair<V> endpoints = graph.getEndpoints(e); V v1 = endpoints.getFirst(); V v2 = endpoints.getSecond(); p1 = rc.getMultiLayerTransformer().transform(Layer.LAYOUT, p1); p2 = rc.getMultiLayerTransformer().transform(Layer.LAYOUT, p2); float x1 = (float) p1.getX(); float y1 = (float) p1.getY(); float x2 = (float) p2.getX(); float y2 = (float) p2.getY(); Shape s2 = rc.getVertexShapeTransformer().apply(v2); Shape edgeShape = rc.getEdgeShapeTransformer().apply(e);
protected void relaxEdges() { try { for(E e : getGraph().getEdges()) { Pair<V> endpoints = getGraph().getEndpoints(e); V v1 = endpoints.getFirst(); V v2 = endpoints.getSecond(); double vx = p1.getX() - p2.getX(); double vy = p1.getY() - p2.getY(); double len = Math.sqrt(vx * vx + vy * vy); f = f * Math.pow(stretch, (getGraph().degree(v1) + getGraph().degree(v2) - 2));
protected void calcAttraction(E e) { Pair<V> endpoints = getGraph().getEndpoints(e); V v1 = endpoints.getFirst(); V v2 = endpoints.getSecond(); boolean v1_locked = isLocked(v1); boolean v2_locked = isLocked(v2); Point2D p2 = apply(v2); if(p1 == null || p2 == null) return; double xDelta = p1.getX() - p2.getX(); double yDelta = p1.getY() - p2.getY(); double deltaLength = Math.max(EPSILON, p1.distance(p2));
for(E e : graph.getEdges()) { Pair<V> endpoints = graph.getEndpoints(e); V v1 = endpoints.getFirst(); V v2 = endpoints.getSecond(); Point2D p1 = layout.apply(v1); Point2D p2 = layout.apply(v2); float x1 = (float)p1.getX(); float y1 = (float)p1.getY(); float x2 = (float)p2.getX(); float y2 = (float)p2.getY(); Shape s2 = rc.getVertexShapeTransformer().apply(v2); Shape edgeShape = rc.getEdgeShapeTransformer().apply(e); for(V v : graph.getVertices()) { Shape shape = rc.getVertexShapeTransformer().apply(v); Point2D p = layout.apply(v);
for(String vertex : picked) { Point2D p = clusteringLayout.apply(vertex); x += p.getX(); y += p.getY(); center.setLocation(x,y); subGraph = graph.getClass().newInstance(); for(String vertex : picked) { subGraph.addVertex(vertex); Collection<Number> incidentEdges = graph.getIncidentEdges(vertex); for(Number edge : incidentEdges) { Pair<String> endpoints = graph.getEndpoints(edge); if(picked.containsAll(endpoints)) { subGraph.addEdge(edge, endpoints.getFirst(), endpoints.getSecond());
Pair<V> endpoints = graph.getEndpoints(e); V v1 = endpoints.getFirst(); V v2 = endpoints.getSecond(); if (!rc.getEdgeIncludePredicate().apply(Context.<Graph<V,E>,E>getInstance(graph,e))) return; if (!rc.getVertexIncludePredicate().apply(Context.<Graph<V,E>,V>getInstance(graph,v1)) || !rc.getVertexIncludePredicate().apply(Context.<Graph<V,E>,V>getInstance(graph,v2))) return; p1 = rc.getMultiLayerTransformer().transform(Layer.LAYOUT, p1); p2 = rc.getMultiLayerTransformer().transform(Layer.LAYOUT, p2); float x1 = (float) p1.getX(); float y1 = (float) p1.getY(); float x2 = (float) p2.getX(); float y2 = (float) p2.getY();
for (E e : getGraph().getEdges()) { Pair<V> endPoints = getGraph().getEndpoints(e); VertexData srcVertexData = getVertexData(endPoints.getFirst()); VertexData targetVertexData = getVertexData(endPoints.getSecond()); double centerY = getSize().getHeight() / 2; for (V v : getGraph().getVertices()) { VertexData vData = getVertexData(v); vData.offset((centerX - vData.getX()) * currentForce, (centerY - vData.getY()) * currentForce); double tempX = vData.getX(); double tempY = vData.getY(); double x = vData.getX() + (vData.getPrevious().getX() - vData.getX())*getFriction(); double y = vData.getY() + (vData.getPrevious().getY() - vData.getY())*getFriction(); vData.setLocation(x, y); vData.setPrevious(tempX, tempY); Point2D location = transform(v); location.setLocation(vData.getX(), vData.getY());
final Pair<Node> endpoints = graph.getEndpoints(e); final Node v1 = endpoints.getFirst(); final Node v2 = endpoints.getSecond(); if (!rc.getEdgeIncludePredicate().evaluate(Context.<Graph<Node, Edge>, Edge>getInstance(graph, e))) { return; if (!rc.getVertexIncludePredicate().evaluate(Context.<Graph<Node, Edge>, Node>getInstance(graph, v1)) || !rc.getVertexIncludePredicate().evaluate(Context.<Graph<Node, Edge>, Node>getInstance(graph, v2))) { return; final FontMetrics fm = g.getFontMetrics(); int w = fm.stringWidth(e.text); double p = Math.max(0, p1.getX() + p2.getX() - w); xform.translate(Math.min(layout.getSize().width - w, p / 2), (p1.getY() + p2.getY() - fm.getHeight()) / 2); g.setTransform(xform); g.draw(component, rc.getRendererPane(), 0, 0, d.width, d.height, true);
TransformingGraphics g = (TransformingGraphics)rc.getGraphicsContext(); Graph<V,E> graph = layout.getGraph(); Pair<V> endpoints = graph.getEndpoints(e); V v1 = endpoints.getFirst(); V v2 = endpoints.getSecond(); Point2D p1 = layout.apply(v1); Point2D p2 = layout.apply(v2); p1 = rc.getMultiLayerTransformer().transform(Layer.LAYOUT, p1); p2 = rc.getMultiLayerTransformer().transform(Layer.LAYOUT, p2); float x1 = (float) p1.getX(); float y1 = (float) p1.getY(); float x2 = (float) p2.getX(); float y2 = (float) p2.getY(); rc.getVertexShapeTransformer().apply(graph.getEndpoints(e).getSecond()); g.draw(arrow); if (graph.getEdgeType(e) == EdgeType.UNDIRECTED) { Shape vertexShape = rc.getVertexShapeTransformer().apply(graph.getEndpoints(e).getFirst()); xf = AffineTransform.getTranslateInstance(x1, y1); vertexShape = xf.createTransformedShape(vertexShape);
private Pair<RectangleSide> findBestConnection(Rectangle2D sourceRect, Rectangle2D targetRect) { Pair<RectangleSide> result = null; double minDist = Float.MAX_VALUE; for (RectangleSide orig: RectangleSide.values()) { for (RectangleSide target: RectangleSide.values()) { Point2D o = sideMidPoint(sourceRect, orig); Point2D t = sideMidPoint(targetRect, target); double dist = Math.hypot(o.getX() - t.getX(), t.getY() - t.getY()); if (dist < minDist) { result = new Pair<RectangleSide>(orig, target); minDist = dist; } } } return result; }
boolean isLoop = loop[0]; GraphicsDecorator g = rc.getGraphicsContext(); Graph<V,E> graph = layout.getGraph(); boolean edgeHit = true; boolean arrowHit = true; Rectangle deviceRectangle = null; JComponent vv = rc.getScreenDevice(); if(vv != null) { Dimension d = vv.getSize(); deviceRectangle = new Rectangle(0,0,d.width,d.height); MutableTransformer vt = rc.getMultiLayerTransformer().getTransformer(Layer.VIEW); if(vt instanceof LensTransformer) { vt = ((LensTransformer)vt).getDelegate(); rc.getVertexShapeTransformer().apply(graph.getEndpoints(e).getSecond()); g.draw(arrow); if (graph.getEdgeType(e) == EdgeType.UNDIRECTED) { Shape vertexShape = rc.getVertexShapeTransformer().apply(graph.getEndpoints(e).getFirst()); xf = AffineTransform.getTranslateInstance(x1, y1); vertexShape = xf.createTransformedShape(vertexShape);
public void paint(Graphics g) { if(mPred == null) return; // for all edges, paint edges that are in shortest path for (Number e : layout.getGraph().getEdges()) { if(isBlessed(e)) { String v1 = mGraph.getEndpoints(e).getFirst(); String v2 = mGraph.getEndpoints(e).getSecond(); Point2D p1 = layout.apply(v1); Point2D p2 = layout.apply(v2); p1 = vv.getRenderContext().getMultiLayerTransformer().transform(Layer.LAYOUT, p1); p2 = vv.getRenderContext().getMultiLayerTransformer().transform(Layer.LAYOUT, p2); Renderer<String,Number> renderer = vv.getRenderer(); renderer.renderEdge( vv.getRenderContext(), layout, e); } } } });
public void paintEdge(RenderContext<V,E> rc, Layout<V, E> layout, E e) { GraphicsDecorator g2d = rc.getGraphicsContext(); Graph<V,E> graph = layout.getGraph(); if (!rc.getEdgeIncludePredicate().apply(Context.<Graph<V,E>,E>getInstance(graph,e))) return; // don't draw edge if either incident vertex is not drawn Pair<V> endpoints = graph.getEndpoints(e); V v1 = endpoints.getFirst(); V v2 = endpoints.getSecond(); if (!rc.getVertexIncludePredicate().apply(Context.<Graph<V,E>,V>getInstance(graph,v1)) || !rc.getVertexIncludePredicate().apply(Context.<Graph<V,E>,V>getInstance(graph,v2))) return; Stroke new_stroke = rc.getEdgeStrokeTransformer().apply(e); Stroke old_stroke = g2d.getStroke(); if (new_stroke != null) g2d.setStroke(new_stroke); drawSimpleEdge(rc, layout, e); // restore paint and stroke if (new_stroke != null) g2d.setStroke(old_stroke); }
/** * Returns <code>true</code> if this edge and its endpoints * in this graph are all included in the collections of * elements to be rendered, and <code>false</code> otherwise. * @param context the edge and graph to be queried * @return <code>true</code> if this edge and its endpoints are all * included in the collections of elements to be rendered, <code>false</code> * otherwise. */ protected boolean isEdgeRendered(Context<Graph<V,E>,E> context) { Predicate<Context<Graph<V,E>,V>> vertexIncludePredicate = vv.getRenderContext().getVertexIncludePredicate(); Predicate<Context<Graph<V,E>,E>> edgeIncludePredicate = vv.getRenderContext().getEdgeIncludePredicate(); Graph<V,E> g = context.graph; E e = context.element; boolean edgeTest = edgeIncludePredicate == null || edgeIncludePredicate.apply(context); Pair<V> endpoints = g.getEndpoints(e); V v1 = endpoints.getFirst(); V v2 = endpoints.getSecond(); boolean endpointsTest = vertexIncludePredicate == null || (vertexIncludePredicate.apply(Context.<Graph<V,E>,V>getInstance(g,v1)) && vertexIncludePredicate.apply(Context.<Graph<V,E>,V>getInstance(g,v2))); return edgeTest && endpointsTest; }