public E getEdge(Layout<V, E> layout, double x, double y) { Point2D ip = ((MutableTransformerDecorator)vv.getRenderContext().getMultiLayerTransformer().getTransformer(Layer.VIEW)).getDelegate().inverseTransform(new Point2D.Double(x,y)); x = ip.getX(); y = ip.getY();
protected boolean vertexHit(RenderContext<V,E> rc, Shape s) { JComponent vv = rc.getScreenDevice(); Rectangle deviceRectangle = null; 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 MutableTransformerDecorator) { vt = ((MutableTransformerDecorator)vt).getDelegate(); } return vt.transform(s).intersects(deviceRectangle); }
rectangle = ((MutableTransformerDecorator)vv.getRenderContext().getMultiLayerTransformer().getTransformer(Layer.VIEW)).getDelegate().inverseTransform(rectangle);
Point2D ip = ((MutableTransformerDecorator)vv.getRenderContext().getMultiLayerTransformer().getTransformer(Layer.VIEW)).getDelegate().inverseTransform(new Point2D.Double(x,y)); x = ip.getX(); y = ip.getY();
shapeChanger.getLens().setLensShape(lensTransformer.getLens().getLensShape()); MutableTransformer layoutDelegate = ((MutableTransformerDecorator) layoutTransformer).getDelegate(); shape = shapeChanger.transform(layoutDelegate.transform(shape)); } else {
public void paint(Graphics g) { g.setColor(Color.gray); Graphics2D g2d = (Graphics2D) g; Point center = radialLayoutAlgorithm.getCenter(layoutModel); Ellipse2D ellipse = new Ellipse2D.Double(); for (double d : depths) { ellipse.setFrameFromDiagonal(center.x - d, center.y - d, center.x + d, center.y + d); Shape shape = ellipse; MultiLayerTransformer multiLayerTransformer = vv.getRenderContext().getMultiLayerTransformer(); MutableTransformer viewTransformer = multiLayerTransformer.getTransformer(Layer.VIEW); MutableTransformer layoutTransformer = multiLayerTransformer.getTransformer(Layer.LAYOUT); if (viewTransformer instanceof MutableTransformerDecorator) { shape = multiLayerTransformer.transform(shape); } else if (layoutTransformer instanceof LensTransformer) { LayoutModel<String> layoutModel = vv.getModel().getLayoutModel(); Dimension dimension = new Dimension(layoutModel.getWidth(), layoutModel.getHeight()); HyperbolicShapeTransformer shapeChanger = new HyperbolicShapeTransformer(dimension, viewTransformer); LensTransformer lensTransformer = (LensTransformer) layoutTransformer; shapeChanger.getLens().setLensShape(lensTransformer.getLens().getLensShape()); MutableTransformer layoutDelegate = ((MutableTransformerDecorator) layoutTransformer).getDelegate(); shape = shapeChanger.transform(layoutDelegate.transform(shape)); } else { shape = vv.getRenderContext().getMultiLayerTransformer().transform(Layer.LAYOUT, shape); } g2d.draw(shape); } }
public Shape transform(VisualizationServer<N, E> vv, Shape shape) { MultiLayerTransformer multiLayerTransformer = vv.getRenderContext().getMultiLayerTransformer(); MutableTransformer viewTransformer = multiLayerTransformer.getTransformer(Layer.VIEW); MutableTransformer layoutTransformer = multiLayerTransformer.getTransformer(Layer.LAYOUT); VisualizationModel<N, E> model = vv.getModel(); if (viewTransformer instanceof LensTransformer) { shape = multiLayerTransformer.transform(shape); } else if (layoutTransformer instanceof LensTransformer) { LayoutModel<N> layoutModel = model.getLayoutModel(); Dimension d = new Dimension(layoutModel.getWidth(), layoutModel.getHeight()); HyperbolicShapeTransformer shapeChanger = new HyperbolicShapeTransformer(d, viewTransformer); LensTransformer lensTransformer = (LensTransformer) layoutTransformer; shapeChanger.getLens().setLensShape(lensTransformer.getLens().getLensShape()); MutableTransformer layoutDelegate = ((MutableTransformerDecorator) layoutTransformer).getDelegate(); shape = shapeChanger.transform(layoutDelegate.transform(shape)); } else { shape = multiLayerTransformer.transform(Layer.LAYOUT, shape); } return shape; }
public Point2D transform(VisualizationServer<N, E> vv, Point2D p) { MultiLayerTransformer multiLayerTransformer = vv.getRenderContext().getMultiLayerTransformer(); MutableTransformer viewTransformer = multiLayerTransformer.getTransformer(Layer.VIEW); MutableTransformer layoutTransformer = multiLayerTransformer.getTransformer(Layer.LAYOUT); VisualizationModel<N, E> model = vv.getModel(); if (viewTransformer instanceof LensTransformer) { // use all layers p = multiLayerTransformer.transform(p); } else if (layoutTransformer instanceof LensTransformer) { // apply the shape changer LayoutModel<N> layoutModel = model.getLayoutModel(); Dimension d = new Dimension(layoutModel.getWidth(), layoutModel.getHeight()); HyperbolicShapeTransformer shapeChanger = new HyperbolicShapeTransformer(d, viewTransformer); LensTransformer lensTransformer = (LensTransformer) layoutTransformer; shapeChanger.getLens().setLensShape(lensTransformer.getLens().getLensShape()); MutableTransformer layoutDelegate = ((MutableTransformerDecorator) layoutTransformer).getDelegate(); p = shapeChanger.transform(layoutDelegate.transform(p)); } else { // use the default p = multiLayerTransformer.transform(Layer.LAYOUT, p); } return p; }
/** * Overriden to perform lens effects when inverse transforming from view to layout. * * @param vv * @param shape * @return */ @Override public Shape inverseTransform(VisualizationServer<N, E> vv, Shape shape) { MultiLayerTransformer multiLayerTransformer = vv.getRenderContext().getMultiLayerTransformer(); MutableTransformer viewTransformer = multiLayerTransformer.getTransformer(Layer.VIEW); MutableTransformer layoutTransformer = multiLayerTransformer.getTransformer(Layer.LAYOUT); if (layoutTransformer instanceof LensTransformer) { // apply the shape changer LayoutModel<N> layoutModel = vv.getModel().getLayoutModel(); Dimension d = new Dimension(layoutModel.getWidth(), layoutModel.getHeight()); HyperbolicShapeTransformer shapeChanger = new HyperbolicShapeTransformer(d, viewTransformer); LensTransformer lensTransformer = (LensTransformer) layoutTransformer; shapeChanger.getLens().setLensShape(lensTransformer.getLens().getLensShape()); MutableTransformer layoutDelegate = ((MutableTransformerDecorator) layoutTransformer).getDelegate(); shape = layoutDelegate.inverseTransform(shapeChanger.inverseTransform(shape)); } else { // if the viewTransformer is either a LensTransformer or the default shape = multiLayerTransformer.inverseTransform(shape); } return shape; } }