edu.uci.ics.jung.algorithms.layout.Layout.apply()方法的使用及代码示例

x33g5p2x  于2022-01-24 转载在 其他  
字(11.0k)|赞(0)|评价(0)|浏览(109)

本文整理了Java中edu.uci.ics.jung.algorithms.layout.Layout.apply()方法的一些代码示例,展示了Layout.apply()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Layout.apply()方法的具体详情如下:
包路径:edu.uci.ics.jung.algorithms.layout.Layout
类名称:Layout
方法名:apply

Layout.apply介绍

暂无

代码示例

代码示例来源:origin: net.sf.jung/jung-visualization

public Point2D apply(V arg0) {
  return layout.apply(arg0);
}

代码示例来源:origin: net.sf.jung/jung-algorithms

public Point2D transform(V v) {
  return delegate.apply(v);
}

代码示例来源:origin: net.sf.jung/jung-visualization

public void step() {
    Graph<V,E> g = transitionLayout.getGraph();
    for(V v : g.getVertices()) {
      Point2D tp = transitionLayout.apply(v);
      Point2D fp = endLayout.apply(v);
      double dx = (fp.getX()-tp.getX())/(count-counter);
      double dy = (fp.getY()-tp.getY())/(count-counter);
      transitionLayout.setLocation(v, 
          new Point2D.Double(tp.getX()+dx,tp.getY()+dy));
    }
    counter++;
    if(counter >= count) {
      done = true;
      vv.setGraphLayout(endLayout);
    }
    vv.repaint();
  }
}

代码示例来源:origin: net.sf.jung/jung-algorithms

/**
 * Returns the location of the vertex.  The location is specified first
 * by the sublayouts, and then by the base layout if no sublayouts operate
 * on this vertex.
 * @return the location of the vertex
 */
public Point2D apply(V v) {
  boolean wasInSublayout = false;
  for(Layout<V,E> layout : layouts.keySet()) {
    if(layout.getGraph().getVertices().contains(v)) {
      wasInSublayout = true;
      Point2D center = layouts.get(layout);
      // transform by the layout itself, but offset to the
      // center of the sublayout
      Dimension d = layout.getSize();
      AffineTransform at = 
        AffineTransform.getTranslateInstance(center.getX()-d.width/2,
            center.getY()-d.height/2);
      return at.transform(layout.apply(v),null);
    }
  }
  if(wasInSublayout == false) {
    return delegate.apply(v);
  }
  return null;

}

代码示例来源:origin: net.sf.jung/jung-visualization

/**
 * This method calls <tt>initialize_local_vertex</tt> for each vertex, and
 * also adds initial coordinate information for each vertex. (The vertex's
 * initial location is set by calling <tt>initializeLocation</tt>.
 */
protected void initializeLocations() {
  for(V v : getGraph().getVertices()) {
    Point2D coord = delegate.apply(v);
    if (!dontmove.contains(v))
      initializeLocation(v, coord);
  }
}

代码示例来源:origin: net.sf.jung/jung-algorithms

public Collection<V> getVertices(Layout<V,E> layout, Shape rectangle) {
  Set<V> pickedVertices = new HashSet<V>();
  while(true) {
    try {
      for(V v : layout.getGraph().getVertices()) {
        Point2D p = layout.apply(v);
        if(rectangle.contains(p)) {
          pickedVertices.add(v);
        }
      }
      break;
    } catch(ConcurrentModificationException cme) {}
  }
  return pickedVertices;
}

代码示例来源:origin: net.sf.jung/jung-visualization

/**
 * Returns the vertex shape in view coordinates.
 * @param rc the render context used for rendering the vertex
 * @param v the vertex whose shape is to be returned
 * @param layout the layout algorithm that provides coordinates for the vertex
 * @param coords the x and y view coordinates
 * @return the vertex shape in view coordinates
 */
protected Shape prepareFinalVertexShape(RenderContext<V,E> rc, V v, 
    Layout<V,E> layout, int[] coords) {
  // get the shape to be rendered
  Shape shape = rc.getVertexShapeTransformer().apply(v);
  Point2D p = layout.apply(v);
  p = rc.getMultiLayerTransformer().transform(Layer.LAYOUT, p);
  float x = (float)p.getX();
  float y = (float)p.getY();
  coords[0] = (int)x;
  coords[1] = (int)y;
  // create a transform that translates to the location of
  // the vertex to be rendered
  AffineTransform xform = AffineTransform.getTranslateInstance(x,y);
  // transform the vertex shape with xtransform
  shape = xform.createTransformedShape(shape);
  return shape;
}

代码示例来源:origin: net.sf.jung/jung-visualization

private void checkVertex(V v) {
  // get the shape to be rendered
  Shape shape = rc.getVertexShapeTransformer().apply(v);
  Point2D p = layout.apply(v);
  p = rc.getMultiLayerTransformer().transform(Layer.LAYOUT, p);
  float x = (float)p.getX();
  float y = (float)p.getY();
  // create a transform that translates to the location of
  // the vertex to be rendered
  AffineTransform xform = AffineTransform.getTranslateInstance(x,y);
  // transform the vertex shape with xtransform
  shape = xform.createTransformedShape(shape);
  for(Rectangle2D r : bounds) {
    if(shape.intersects(r)) {
      vertices.add(v);
    }
  }
}

代码示例来源:origin: net.sf.jung/jung-algorithms

for(V v : layout.getGraph().getVertices()) {
  Point2D p = layout.apply(v);
  double dx = p.getX() - x;
  double dy = p.getY() - y;

代码示例来源:origin: net.sf.jung/jung-visualization

Point2D q = layout.apply(vertex);
Point2D lvc = 
  vvMaster.getRenderContext().getMultiLayerTransformer().inverseTransform(Layer.LAYOUT, vvMaster.getCenter());

代码示例来源:origin: net.sf.jung/jung-visualization

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;
}

代码示例来源:origin: net.sf.jung/jung-visualization

public void paintVertex(RenderContext<V,E> rc, Layout<V,E> layout, V v) {
  Graph<V,E> graph = layout.getGraph();
  if (rc.getVertexIncludePredicate().apply(Context.<Graph<V,E>,V>getInstance(graph,v))) {
    boolean vertexHit = true;
    // get the shape to be rendered
    Shape shape = rc.getVertexShapeTransformer().apply(v);
    
    Point2D p = layout.apply(v);
    p = rc.getMultiLayerTransformer().transform(Layer.LAYOUT, p);
    float x = (float)p.getX();
    float y = (float)p.getY();
    // create a transform that translates to the location of
    // the vertex to be rendered
    AffineTransform xform = AffineTransform.getTranslateInstance(x,y);
    // transform the vertex shape with xtransform
    shape = xform.createTransformedShape(shape);
    
    vertexHit = vertexHit(rc, shape);
      //rc.getViewTransformer().transform(shape).intersects(deviceRectangle);
    if (vertexHit) {
      paintShapeForVertex(rc, v, shape);
    }
  }
}

代码示例来源:origin: net.sf.jung/jung-visualization

@SuppressWarnings({ "unchecked", "rawtypes" })
public void collapse(Layout layout, Forest tree, Object subRoot) throws InstantiationException, IllegalAccessException {
  
  // get a sub tree from subRoot
  Forest subTree = TreeUtils.getSubTree(tree, subRoot);
  Object parent = null;
  Object edge = null;
  if(tree.getPredecessorCount(subRoot) > 0) {
    parent = tree.getPredecessors(subRoot).iterator().next();
    edge = tree.getInEdges(subRoot).iterator().next();
  }    
  tree.removeVertex(subRoot);
  if(parent != null) {
    tree.addEdge(edge, parent, subTree);
  } else {
    tree.addVertex(subTree);
  }
  
  layout.setLocation(subTree, (Point2D)layout.apply(subRoot));
}

代码示例来源:origin: net.sf.jung/jung-visualization

public Paint apply(E e)
{
  Layout<V, E> layout = vv.getGraphLayout();
  Pair<V> p = layout.getGraph().getEndpoints(e);
  V b = p.getFirst();
  V f = p.getSecond();
  Point2D pb = transformer.transform(layout.apply(b));
  Point2D pf = transformer.transform(layout.apply(f));
  float xB = (float) pb.getX();
  float yB = (float) pb.getY();
  float xF = (float) pf.getX();
  float yF = (float) pf.getY();
  if ((layout.getGraph().getEdgeType(e)) == EdgeType.UNDIRECTED)  {
    xF = (xF + xB) / 2;
    yF = (yF + yB) / 2;
  } 
  if(selfLoop.apply(Context.<Graph<V,E>,E>getInstance(layout.getGraph(), e))) {
    yF += 50;
    xF += 50;
  }
  return new GradientPaint(xB, yB, getColor1(e), xF, yF, getColor2(e), true);
}

代码示例来源:origin: net.sf.jung/jung-visualization

try {
  for(V v : getFilteredVertices(layout)) {
    Point2D p = layout.apply(v);
    if(p == null) continue;

代码示例来源:origin: net.sf.jung/jung-visualization

/**
 * Labels the specified vertex with the specified label.  
 * Uses the font specified by this instance's 
 * <code>VertexFontFunction</code>.  (If the font is unspecified, the existing
 * font for the graphics context is used.)  If vertex label centering
 * is active, the label is centered on the position of the vertex; otherwise
 * the label is offset slightly.
 */
public void labelVertex(RenderContext<V,E> rc, Layout<V,E> layout, V v, String label) {
  Graph<V,E> graph = layout.getGraph();
  if (rc.getVertexIncludePredicate().apply(Context.<Graph<V,E>,V>getInstance(graph,v)) == false) {
    return;
  }
  GraphicsDecorator g = rc.getGraphicsContext();
  Component component = prepareRenderer(rc, rc.getVertexLabelRenderer(), label,
      rc.getPickedVertexState().isPicked(v), v);
  Dimension d = component.getPreferredSize();
  
  int h_offset = -d.width / 2;
  int v_offset = -d.height / 2;
  
  Point2D p = layout.apply(v);
  p = rc.getMultiLayerTransformer().transform(Layer.LAYOUT, p);
  int x = (int)p.getX();
  int y = (int)p.getY();
  g.draw(component, rc.getRendererPane(), x+h_offset, y+v_offset, d.width, d.height, true);
  Dimension size = component.getPreferredSize();
  Rectangle bounds = new Rectangle(-size.width/2 -2, -size.height/2 -2, size.width+4, size.height);
  shapes.put(v, bounds);
}

代码示例来源:origin: net.sf.jung/jung-samples

public void actionPerformed(ActionEvent e) {
  Collection picked = new HashSet(vv.getPickedVertexState().getPicked());
  if(picked.size() > 1) {
    Graph inGraph = layout.getGraph();
    Graph clusterGraph = collapser.getClusterGraph(inGraph, picked);
    Graph g = collapser.collapse(layout.getGraph(), clusterGraph);
    collapsedGraph = g;
    double sumx = 0;
    double sumy = 0;
    for(Object v : picked) {
      Point2D p = (Point2D)layout.apply(v);
      sumx += p.getX();
      sumy += p.getY();
    }
    Point2D cp = new Point2D.Double(sumx/picked.size(), sumy/picked.size());
    vv.getRenderContext().getParallelEdgeIndexFunction().reset();
    layout.setGraph(g);
    layout.setLocation(clusterGraph, cp);
    vv.getPickedVertexState().clear();
    vv.repaint();
  }
}});

代码示例来源:origin: net.sf.jung/jung-samples

public void actionPerformed(ActionEvent e) {
  Collection picked = new HashSet(vv.getPickedVertexState().getPicked());
  if(picked.size() > 1) {
    Graph inGraph = layout.getGraph();
    Graph clusterGraph = collapser.getClusterGraph(inGraph, picked);
    Graph g = collapser.collapse(layout.getGraph(), clusterGraph);
    double sumx = 0;
    double sumy = 0;
    for(Object v : picked) {
      Point2D p = (Point2D)layout.apply(v);
      sumx += p.getX();
      sumy += p.getY();
    }
    Point2D cp = new Point2D.Double(sumx/picked.size(), sumy/picked.size());
    vv.getRenderContext().getParallelEdgeIndexFunction().reset();
    layout.setGraph(g);
    layout.setLocation(clusterGraph, cp);
    vv.getPickedVertexState().clear();
    vv.repaint();
  }
}});

代码示例来源:origin: net.sf.jung/jung-visualization

/**
 * Returns the vertices whose layout coordinates are contained in 
 * <code>Shape</code>.
 * The shape is in screen coordinates, and the graph vertices
 * are transformed to screen coordinates before they are tested
 * for inclusion.
 * @return the <code>Collection</code> of vertices whose <code>layout</code>
 * coordinates are contained in <code>shape</code>.
 */
public Collection<V> getVertices(Layout<V, E> layout, Shape shape) {
  Set<V> pickedVertices = new HashSet<V>();
  
  // remove the view transform from the rectangle
  shape = vv.getRenderContext().getMultiLayerTransformer().inverseTransform(Layer.VIEW, shape);
  while(true) {
    try {
      for(V v : getFilteredVertices(layout)) {
        Point2D p = layout.apply(v);
        if(p == null) continue;
        p = vv.getRenderContext().getMultiLayerTransformer().transform(Layer.LAYOUT, p);
        if(shape.contains(p)) {
          pickedVertices.add(v);
        }
      }
      break;
    } catch(ConcurrentModificationException cme) {}
  }
  return pickedVertices;
}

代码示例来源:origin: net.sf.jung/jung-samples

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);
      }
    }
  }
});

相关文章