public Point2D inverseTransform(Point2D p) { return delegate.inverseTransform(p); }
public Shape inverseTransform(Shape shape) { return delegate.inverseTransform(shape); }
protected Shape inverseLayoutTransform(Shape shape) { return layoutTransformer.inverseTransform(shape); }
protected Point2D inverseViewTransform(Point2D p) { return viewTransformer.inverseTransform(p); }
public Shape inverseTransform(Shape shape) { return delegate.inverseTransform(shape); }
protected Point2D inverseLayoutTransform(Point2D p) { return layoutTransformer.inverseTransform(p); }
public Point2D inverseTransform(Point2D p) { return delegate.inverseTransform(p); }
protected Point2D inverseViewTransform(Point2D p) { return viewTransformer.inverseTransform(p); }
protected Point2D inverseLayoutTransform(Point2D p) { return layoutTransformer.inverseTransform(p); }
protected Shape inverseViewTransform(Shape shape) { return viewTransformer.inverseTransform(shape); }
protected Shape inverseLayoutTransform(Shape shape) { return layoutTransformer.inverseTransform(shape); }
protected Shape inverseViewTransform(Shape shape) { return viewTransformer.inverseTransform(shape); }
/** * override base class to un-project the fisheye effect */ public Point2D inverseTransform(Point2D viewPoint) { Point2D viewCenter = getViewCenter(); double viewRadius = getViewRadius(); double ratio = getRatio(); double dx = viewPoint.getX() - viewCenter.getX(); double dy = viewPoint.getY() - viewCenter.getY(); // factor out ellipse dx *= ratio; Point2D pointFromCenter = new Point2D.Double(dx, dy); PolarPoint polar = PolarPoint.cartesianToPolar(pointFromCenter); double radius = polar.getRadius(); if(radius > viewRadius) return delegate.inverseTransform(viewPoint); double mag = magnification; radius /= mag; polar.setRadius(radius); Point2D projectedPoint = PolarPoint.polarToCartesian(polar); projectedPoint.setLocation(projectedPoint.getX()/ratio, projectedPoint.getY()); Point2D translatedBack = new Point2D.Double(projectedPoint.getX()+viewCenter.getX(), projectedPoint.getY()+viewCenter.getY()); return delegate.inverseTransform(translatedBack); }
/** * chack the modifiers. If accepted, translate the graph according to the dragging of the mouse * pointer * * @param e the event */ public void mouseDragged(MouseEvent e) { VisualizationViewer<?, ?> vv = (VisualizationViewer<?, ?>) e.getSource(); boolean accepted = checkModifiers(e); if (accepted) { MutableTransformer viewTransformer = vv.getRenderContext().getMultiLayerTransformer().getTransformer(Layer.VIEW); vv.setCursor(cursor); try { Point2D q = viewTransformer.inverseTransform(down); Point2D p = viewTransformer.inverseTransform(e.getPoint()); float dx = (float) (p.getX() - q.getX()); float dy = (float) (p.getY() - q.getY()); viewTransformer.translate(dx, dy); down.x = e.getX(); down.y = e.getY(); } catch (RuntimeException ex) { System.err.println("down = " + down + ", e = " + e); throw ex; } e.consume(); } }
/** * chack the modifiers. If accepted, translate the graph according * to the dragging of the mouse pointer * @param e the event */ public void mouseDragged(MouseEvent e) { VisualizationViewer<?,?> vv = (VisualizationViewer<?,?>)e.getSource(); boolean accepted = checkModifiers(e); if(accepted) { MutableTransformer viewTransformer = vv.getRenderContext().getMultiLayerTransformer().getTransformer(Layer.VIEW); vv.setCursor(cursor); try { Point2D q = viewTransformer.inverseTransform(down); Point2D p = viewTransformer.inverseTransform(e.getPoint()); float dx = (float) (p.getX()-q.getX()); float dy = (float) (p.getY()-q.getY()); viewTransformer.translate(dx, dy); down.x = e.getX(); down.y = e.getY(); } catch(RuntimeException ex) { System.err.println("down = "+down+", e = "+e); throw ex; } e.consume(); } }
/** * override base class to un-project the fisheye effect */ private Point2D _inverseTransform(Point2D viewPoint) { viewPoint = delegate.inverseTransform(viewPoint); Point2D viewCenter = getViewCenter(); double viewRadius = getViewRadius(); double ratio = getRatio(); double dx = viewPoint.getX() - viewCenter.getX(); double dy = viewPoint.getY() - viewCenter.getY(); // factor out ellipse dx *= ratio; Point2D pointFromCenter = new Point2D.Double(dx, dy); PolarPoint polar = PolarPoint.cartesianToPolar(pointFromCenter); double radius = polar.getRadius(); if(radius > viewRadius) return viewPoint; double mag = magnification; radius /= mag; polar.setRadius(radius); Point2D projectedPoint = PolarPoint.polarToCartesian(polar); projectedPoint.setLocation(projectedPoint.getX()/ratio, projectedPoint.getY()); Point2D translatedBack = new Point2D.Double(projectedPoint.getX()+viewCenter.getX(), projectedPoint.getY()+viewCenter.getY()); return translatedBack; }
/** override base class to un-project the fisheye effect */ public Point2D inverseTransform(Point2D viewPoint) { Point2D viewCenter = lens.getCenter(); double viewRadius = lens.getRadius(); double ratio = lens.getRatio(); double dx = viewPoint.getX() - viewCenter.getX(); double dy = viewPoint.getY() - viewCenter.getY(); // factor out ellipse dx *= ratio; Point pointFromCenter = Point.of(dx, dy); PolarPoint polar = PolarPoint.cartesianToPolar(pointFromCenter); double radius = polar.radius; if (radius > viewRadius) { return delegate.inverseTransform(viewPoint); } double mag = lens.getMagnification(); radius /= mag; polar = polar.newRadius(radius); Point projectedPoint = PolarPoint.polarToCartesian(polar); projectedPoint = Point.of(projectedPoint.x / ratio, projectedPoint.y); Point2D translatedBack = new Point2D.Double( projectedPoint.x + viewCenter.getX(), projectedPoint.y + viewCenter.getY()); return delegate.inverseTransform(translatedBack); }
/** override base class to un-project the fisheye effect */ private Point2D _inverseTransform(Point2D viewPoint) { viewPoint = delegate.inverseTransform(viewPoint); Point2D viewCenter = lens.getCenter(); double viewRadius = lens.getRadius(); double ratio = lens.getRatio(); double dx = viewPoint.getX() - viewCenter.getX(); double dy = viewPoint.getY() - viewCenter.getY(); // factor out ellipse dx *= ratio; Point pointFromCenter = Point.of(dx, dy); PolarPoint polar = PolarPoint.cartesianToPolar(pointFromCenter); double radius = polar.radius; if (radius > viewRadius) { return viewPoint; } double mag = lens.getMagnification(); radius /= mag; polar = polar.newRadius(radius); Point projectedPoint = PolarPoint.polarToCartesian(polar); projectedPoint = Point.of(projectedPoint.x / ratio, projectedPoint.y); Point2D translatedBack = new Point2D.Double( projectedPoint.x + viewCenter.getX(), projectedPoint.y + viewCenter.getY()); return translatedBack; }
/** * Check the event modifiers. Set the 'down' point for later * use. If this event satisfies the modifiers, change the cursor * to the system 'move cursor' * @param e the event */ public void mousePressed(MouseEvent e) { VisualizationViewer<?, ?> vv = (VisualizationViewer<?, ?>)e.getSource(); MutableTransformer vt = vv.getRenderContext().getMultiLayerTransformer().getTransformer(Layer.VIEW); if(vt instanceof LensTransformer) { vt = ((LensTransformer)vt).getDelegate(); } Point2D p = vt.inverseTransform(e.getPoint()); boolean accepted = checkModifiers(e); if(accepted) { vv.setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR)); testViewCenter(vv.getRenderContext().getMultiLayerTransformer().getTransformer(Layer.LAYOUT), p); testViewCenter(vv.getRenderContext().getMultiLayerTransformer().getTransformer(Layer.VIEW), p); vv.repaint(); } super.mousePressed(e); }
/** * 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; } }