public AnnotationPaintable(RenderContext<?,?> rc, AnnotationRenderer annotationRenderer) { this.rc = rc; this.annotationRenderer = annotationRenderer; MutableTransformer mt = rc.getMultiLayerTransformer().getTransformer(Layer.LAYOUT); if(mt instanceof AffineTransformer) { transformer = (AffineTransformer)mt; } else if(mt instanceof LensTransformer) { transformer = (AffineTransformer)((LensTransformer)mt).getDelegate(); } }
public LensControls(LensTransformer lensTransformer) { this.lensShape = lensTransformer.getLens().getLensShape(); }
public Lens(LensTransformer lensTransformer) { this.lensTransformer = lensTransformer; this.lensShape = lensTransformer.getLensShape(); }
/** * called to change the radius of the lens * @param Function * @param point */ private void setViewRadius(MutableTransformer transformer, Point2D point) { if(transformer instanceof LensTransformer) { LensTransformer ht = (LensTransformer)transformer; double distanceFromCenter = ht.getDistanceFromCenter(point); ht.setViewRadius(distanceFromCenter+edgeOffset); } }
private void changeMagnification(MutableTransformer transformer, float delta) { if(transformer instanceof LensTransformer) { LensTransformer ht = (LensTransformer)transformer; float magnification = ht.getMagnification() + delta; magnification = Math.max(floor, magnification); magnification = Math.min(magnification, ceiling); ht.setMagnification(magnification); } } /**
/** * called to set up translating the lens center or changing the size * @param Function * @param point */ private void testViewCenter(MutableTransformer transformer, Point2D point) { if(transformer instanceof LensTransformer) { LensTransformer ht = (LensTransformer)transformer; double distanceFromCenter = ht.getDistanceFromCenter(point); if(distanceFromCenter < 10) { ht.setViewCenter(point); dragOnLens = true; } else if(Math.abs(distanceFromCenter - ht.getViewRadius()) < 10) { edgeOffset = ht.getViewRadius() - distanceFromCenter; ht.setViewRadius(distanceFromCenter+edgeOffset); dragOnEdge = true; } } }
if (viewTransformer instanceof LensTransformer) { p = ((LensTransformer) viewTransformer).getDelegate().inverseTransform(p); } else { p = viewTransformer.inverseTransform(p); vv.setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR)); if (layoutTransformer instanceof LensTransformer) { Lens lens = ((LensTransformer) layoutTransformer).getLens(); testViewCenter(lens, p); Lens lens = ((LensTransformer) viewTransformer).getLens(); testViewCenter(lens, p);
public void activate() { lensTransformer.setDelegate( vv.getRenderContext().getMultiLayerTransformer().getTransformer(Layer.VIEW)); if (lensPaintable == null) { lensPaintable = new LensPaintable(lensTransformer); } if (lensControls == null) { lensControls = new LensControls(lensTransformer); } lensTransformer.setDelegate( vv.getRenderContext().getMultiLayerTransformer().getTransformer(Layer.VIEW)); vv.getRenderContext().getMultiLayerTransformer().setTransformer(Layer.VIEW, lensTransformer); this.renderContext.setGraphicsContext(lensGraphicsDecorator); vv.addPreRenderPaintable(lensPaintable); vv.addPostRenderPaintable(lensControls); vv.setGraphMouse(lensGraphMouse); vv.setToolTipText(instructions); vv.setTransformSupport(new LensTransformSupport<>()); vv.repaint(); }
if(transformer instanceof LensTransformer) { LensTransformer ht = (LensTransformer)transformer; RectangularShape lensShape = ht.getLensShape(); if(lensShape.contains(x1,y1) || lensShape.contains(x2,y2)) { flatness = .05f; vt = ((LensTransformer)vt).getDelegate();
/** * Create an instance with the specified parameters. * * @param vv the visualization viewer used for rendering * @param lensTransformer the lens transformer to use * @param lensGraphMouse the lens input handler */ public LayoutLensSupport(VisualizationViewer<V,E> vv, LensTransformer lensTransformer, ModalGraphMouse lensGraphMouse) { super(vv, lensGraphMouse); this.lensTransformer = lensTransformer; this.pickSupport = vv.getPickSupport(); Dimension d = vv.getSize(); if(d.width <= 0 || d.height <= 0) { d = vv.getPreferredSize(); } lensTransformer.setViewRadius(d.width/5); }
vv.getRenderContext().getMultiLayerTransformer().getTransformer(Layer.LAYOUT)), new ModalLensGraphMouse(new LensMagnificationGraphMousePlugin(1.f, 6.f, .2f))); hyperbolicLayoutSupport.getLensTransformer().setLensShape(hyperbolicViewSupport.getLensTransformer().getLensShape()); magnifyViewSupport.getLensTransformer().setLensShape(hyperbolicLayoutSupport.getLensTransformer().getLensShape()); magnifyLayoutSupport.getLensTransformer().setLensShape(magnifyViewSupport.getLensTransformer().getLensShape());
public double getDistanceFromCenter(Point2D p) { double dx = lensShape.getCenterX()-p.getX(); double dy = lensShape.getCenterY()-p.getY(); dx *= getRatio(); return Math.sqrt(dx*dx + dy*dy); }
public Point2D inverseTransform(double x, double y) { return inverseTransform(new Point2D.Double(x, y)); } }
Lens lens = (layoutTransformer instanceof LensTransformer) ? ((LensTransformer) layoutTransformer).getLens() : (viewTransformer instanceof LensTransformer) ? ((LensTransformer) viewTransformer).getLens() : null; if (lens != null) { Point2D p = e.getPoint(); if (viewTransformer instanceof LensTransformer) { p = ((LensTransformer) viewTransformer).getDelegate().inverseTransform(p); } else { p = viewTransformer.inverseTransform(p);
public void activate() { lensTransformer.setDelegate(vv.getRenderContext().getMultiLayerTransformer().getTransformer(Layer.VIEW)); if(lens == null) { lens = new Lens(lensTransformer); } if(lensControls == null) { lensControls = new LensControls(lensTransformer); } renderContext.setPickSupport(new ViewLensShapePickSupport<V,E>(vv)); lensTransformer.setDelegate(vv.getRenderContext().getMultiLayerTransformer().getTransformer(Layer.VIEW)); vv.getRenderContext().getMultiLayerTransformer().setTransformer(Layer.VIEW, lensTransformer); this.renderContext.setGraphicsContext(lensGraphicsDecorator); vv.getRenderer().setEdgeRenderer(reshapingEdgeRenderer); vv.addPreRenderPaintable(lens); vv.addPostRenderPaintable(lensControls); vv.setGraphMouse(lensGraphMouse); vv.setToolTipText(instructions); vv.repaint(); }
public ViewLensSupport(VisualizationViewer<V,E> vv, LensTransformer lensTransformer, ModalGraphMouse lensGraphMouse) { super(vv, lensGraphMouse); this.renderContext = vv.getRenderContext(); this.pickSupport = renderContext.getPickSupport(); this.savedGraphicsDecorator = renderContext.getGraphicsContext(); this.lensTransformer = lensTransformer; Dimension d = vv.getSize(); lensTransformer.setViewRadius(d.width/5); this.lensGraphicsDecorator = new TransformingFlatnessGraphics(lensTransformer); this.savedEdgeRenderer = vv.getRenderer().getEdgeRenderer(); this.reshapingEdgeRenderer = new ReshapingEdgeRenderer<V,E>(); this.reshapingEdgeRenderer.setEdgeArrowRenderingSupport(savedEdgeRenderer.getEdgeArrowRenderingSupport()); } public void activate() {
public void setViewRadius(double viewRadius) { double x = lensShape.getCenterX(); double y = lensShape.getCenterY(); double viewRatio = getRatio(); lensShape.setFrame(x-viewRadius/viewRatio, y-viewRadius, 2*viewRadius/viewRatio, 2*viewRadius); }
/** * Returns the supplied shape, translated to the coordinates * that result from calling inverseTransform on its center. */ public Shape inverseTransform(Shape shape) { Rectangle2D bounds = shape.getBounds2D(); Point2D center = new Point2D.Double(bounds.getCenterX(),bounds.getCenterY()); Point2D newCenter = inverseTransform(center); double dx = newCenter.getX()-center.getX(); double dy = newCenter.getY()-center.getY(); AffineTransform at = AffineTransform.getTranslateInstance(dx,dy); return at.createTransformedShape(shape); }
public AnnotationPaintable(RenderContext<?, ?> rc, AnnotationRenderer annotationRenderer) { this.rc = rc; this.annotationRenderer = annotationRenderer; MutableTransformer mt = rc.getMultiLayerTransformer().getTransformer(Layer.LAYOUT); if (mt instanceof AffineTransformer) { transformer = (AffineTransformer) mt; } else if (mt instanceof LensTransformer) { transformer = (AffineTransformer) ((LensTransformer) mt).getDelegate(); } }
public LensPaintable(LensTransformer lensTransformer) { this.lensShape = lensTransformer.getLens().getLensShape(); }