/** * Quick test to allow optimization of <code>getFilteredEdges()</code>. * * @return <code>true</code> if there is an relaxing edge filtering mechanism for this * visualization, <code>false</code> otherwise */ protected boolean edgesAreFiltered() { Predicate<E> edgeIncludePredicate = vv.getRenderContext().getEdgeIncludePredicate(); return edgeIncludePredicate != null && !edgeIncludePredicate.equals((Predicate<N>) (n -> true)); }
/** * Quick test to allow optimization of <code>getFilteredNodes()</code>. * * @return <code>true</code> if there is an relaxing node filtering mechanism for this * visualization, <code>false</code> otherwise */ protected boolean nodesAreFiltered() { Predicate<N> nodeIncludePredicate = vv.getRenderContext().getNodeIncludePredicate(); return nodeIncludePredicate != null && !nodeIncludePredicate.equals((Predicate<N>) (n -> true)); }
/** * Returns <code>true</code> if this node in this graph is included in the collections of elements * to be rendered, and <code>false</code> otherwise. * * @return <code>true</code> if this node is included in the collections of elements to be * rendered, <code>false</code> otherwise. */ protected boolean isNodeRendered(N node) { Predicate<N> nodeIncludePredicate = vv.getRenderContext().getNodeIncludePredicate(); return nodeIncludePredicate == null || nodeIncludePredicate.test(node); }
/** * Returns <code>true</code> if this vertex in this graph is included * in the collections of elements to be rendered, and <code>false</code> otherwise. * @param context the vertex and graph to be queried * @return <code>true</code> if this vertex is * included in the collections of elements to be rendered, <code>false</code> * otherwise. */ protected boolean isVertexRendered(Context<Graph<V,E>,V> context) { Predicate<Context<Graph<V,E>,V>> vertexIncludePredicate = vv.getRenderContext().getVertexIncludePredicate(); return vertexIncludePredicate == null || vertexIncludePredicate.apply(context); }
/** * Quick test to allow optimization of <code>getFilteredVertices()</code>. * @return <code>true</code> if there is an active vertex filtering * mechanism for this visualization, <code>false</code> otherwise */ protected boolean verticesAreFiltered() { Predicate<Context<Graph<V,E>,V>> vertexIncludePredicate = vv.getRenderContext().getVertexIncludePredicate(); return vertexIncludePredicate != null && vertexIncludePredicate.equals(Predicates.alwaysTrue()) == false; }
/** * Quick test to allow optimization of <code>getFilteredEdges()</code>. * @return <code>true</code> if there is an active edge filtering * mechanism for this visualization, <code>false</code> otherwise */ protected boolean edgesAreFiltered() { Predicate<Context<Graph<V,E>,E>> edgeIncludePredicate = vv.getRenderContext().getEdgeIncludePredicate(); return edgeIncludePredicate != null && edgeIncludePredicate.equals(Predicates.alwaysTrue()) == false; }
/** * Overriden to apply lens effects to the transformation from view to layout coordinates * * @param vv * @param p * @return */ public Point2D inverseTransform(VisualizationServer<N, E> vv, Point2D p) { MultiLayerTransformer multiLayerTransformer = vv.getRenderContext().getMultiLayerTransformer(); return multiLayerTransformer.inverseTransform(p); }
/** * Overriden to perform lens effects when inverse transforming from view to layout. * * @param vv * @param shape * @return */ public Shape inverseTransform(VisualizationServer<N, E> vv, Shape shape) { MultiLayerTransformer multiLayerTransformer = vv.getRenderContext().getMultiLayerTransformer(); return multiLayerTransformer.inverseTransform(shape); } }
/** * Overriden to perform lens effects when transforming from Layout to view. Used when projecting * the selection Lens (the rectangular area drawn with the mouse) back into the view. * * @param vv * @param p * @return */ public Point2D transform(VisualizationServer<N, E> vv, Point2D p) { MultiLayerTransformer multiLayerTransformer = vv.getRenderContext().getMultiLayerTransformer(); return multiLayerTransformer.transform(p); }
/** * Overriden to perform lens effects when transforming from Layout to view. Used when projecting * the selection Lens (the rectangular area drawn with the mouse) back into the view. * * @param vv * @param shape * @return */ public Shape transform(VisualizationServer<N, E> vv, Shape shape) { MultiLayerTransformer multiLayerTransformer = vv.getRenderContext().getMultiLayerTransformer(); return multiLayerTransformer.transform(shape); }
/** zoom the display in or out, depending on the direction of the mouse wheel motion. */ public void scale(VisualizationServer<?, ?> vv, float amount, Point2D from) { Point2D ivtfrom = vv.getRenderContext().getMultiLayerTransformer().inverseTransform(Layer.VIEW, from); MutableTransformer modelTransformer = vv.getRenderContext().getMultiLayerTransformer().getTransformer(Layer.LAYOUT); modelTransformer.scale(amount, amount, ivtfrom); vv.repaint(); } }
/** * zoom the display in or out, depending on the direction of the * mouse wheel motion. */ public void scale(VisualizationServer<?, ?> vv, float amount, Point2D from) { Point2D ivtfrom = vv.getRenderContext().getMultiLayerTransformer() .inverseTransform(Layer.VIEW, from); MutableTransformer modelTransformer = vv.getRenderContext().getMultiLayerTransformer() .getTransformer(Layer.LAYOUT); modelTransformer.scale(amount, amount, ivtfrom); vv.repaint(); } }
/** * 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. * * @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(E edge) { Predicate<N> nodeIncludePredicate = vv.getRenderContext().getNodeIncludePredicate(); Predicate<E> edgeIncludePredicate = vv.getRenderContext().getEdgeIncludePredicate(); Network<N, E> g = vv.getModel().getNetwork(); if (edgeIncludePredicate != null && !edgeIncludePredicate.test(edge)) { return false; } EndpointPair<N> endpoints = g.incidentNodes(edge); N v1 = endpoints.nodeU(); N v2 = endpoints.nodeV(); return nodeIncludePredicate == null || (nodeIncludePredicate.test(v1) && nodeIncludePredicate.test(v2)); }
public Collection<V> getVertices(Layout<V, E> layout, Shape rectangle) { Set<V> pickedVertices = new HashSet<V>(); while(true) { try { for(V v : getFilteredVertices(layout)) { Point2D p = layout.apply(v); if(p == null) continue; p = vv.getRenderContext().getMultiLayerTransformer().transform(p); if(rectangle.contains(p)) { pickedVertices.add(v); } } break; } catch(ConcurrentModificationException cme) {} } return pickedVertices; }
/** zoom the display in or out, depending on the direction of the mouse wheel motion. */ public void scale(VisualizationServer<?, ?> vv, float amount, Point2D from) { MutableTransformer viewTransformer = vv.getRenderContext().getMultiLayerTransformer().getTransformer(Layer.VIEW); viewTransformer.scale(amount, amount, from); vv.repaint(); } }
/** * zoom the display in or out, depending on the direction of the * mouse wheel motion. */ public void scale(VisualizationServer<?, ?> vv, float amount, Point2D from) { MutableTransformer viewTransformer = vv.getRenderContext().getMultiLayerTransformer().getTransformer(Layer.VIEW); viewTransformer.scale(amount, amount, from); vv.repaint(); } }
protected Collection<N> getFilteredNodes() { Set<N> nodes = vv.getModel().getNetwork().nodes(); return nodesAreFiltered() ? Sets.filter(nodes, vv.getRenderContext().getNodeIncludePredicate()::test) : nodes; }
protected Collection<E> getFilteredEdges() { Set<E> edges = vv.getModel().getNetwork().edges(); return edgesAreFiltered() ? Sets.filter(edges, vv.getRenderContext().getEdgeIncludePredicate()::test) : edges; }
private Spatial<E> createEdgeSpatial(VisualizationServer<N, E> visualizationServer) { switch (getEdgeSpatialSupportPreference()) { case RTREE: return new SpatialRTree.Edges<E, N>( visualizationServer.getModel(), new BoundingRectangleCollector.Edges<>( visualizationServer.getRenderContext(), visualizationServer.getModel()), SplitterContext.of(new QuadraticLeafSplitter(), new QuadraticSplitter())); case NONE: default: return new Spatial.NoOp.Edge<E, N>(visualizationServer.getModel()); } } }
private Spatial<N> createNodeSpatial(VisualizationServer<N, E> visualizationServer) { switch (getNodeSpatialSupportPreference()) { case RTREE: return new SpatialRTree.Nodes<>( visualizationServer.getModel(), new BoundingRectangleCollector.Nodes<>( visualizationServer.getRenderContext(), visualizationServer.getModel()), SplitterContext.of(new RStarLeafSplitter<>(), new RStarSplitter<>())); case GRID: return new SpatialGrid<>(visualizationServer.getModel().getLayoutModel()); case QUADTREE: return new SpatialQuadTree<>(visualizationServer.getModel().getLayoutModel()); case NONE: default: return new Spatial.NoOp.Node<N>(visualizationServer.getModel().getLayoutModel()); } }