@Override public void paintIconForNode( RenderContext<N, E> renderContext, VisualizationModel<N, E> model, N v) { Point p = model.getLayoutModel().apply(v); Point2D p2d = renderContext .getMultiLayerTransformer() .transform(Layer.LAYOUT, new Point2D.Double(p.x, p.y)); float x = (float) p2d.getX(); float y = (float) p2d.getY(); GraphicsDecorator g = renderContext.getGraphicsContext(); boolean outlineImages = false; Function<N, Icon> nodeIconFunction = renderContext.getNodeIconFunction(); if (nodeIconFunction instanceof DemoNodeIconTransformer) { outlineImages = ((DemoNodeIconTransformer<N>) nodeIconFunction).isOutlineImages(); } Icon icon = nodeIconFunction.apply(v); if (icon == null || outlineImages) { Shape s = AffineTransform.getTranslateInstance(x, y) .createTransformedShape(renderContext.getNodeShapeFunction().apply(v)); paintShapeForNode(renderContext, model, v, s); } if (icon != null) { int xLoc = (int) (x - icon.getIconWidth() / 2); int yLoc = (int) (y - icon.getIconHeight() / 2); icon.paintIcon(renderContext.getScreenDevice(), g.getDelegate(), xLoc, yLoc); } } }
/** * Paint <code>v</code>'s icon on <code>g</code> at <code>(x,y)</code>. */ protected void paintIconForVertex(RenderContext<V,E> rc, V v, Layout<V,E> layout) { GraphicsDecorator g = rc.getGraphicsContext(); boolean vertexHit = true; int[] coords = new int[2]; Shape shape = vertexShapeMap.get(v); if(shape == null || dirtyVertices.contains(v)) { shape = prepareFinalVertexShape(rc, v, layout, coords); vertexShapeMap.put(v, shape); dirtyVertices.remove(v); } vertexHit = vertexHit(rc, shape); if (vertexHit) { if(rc.getVertexIconTransformer() != null) { Icon icon = rc.getVertexIconTransformer().apply(v); if(icon != null) { g.draw(icon, rc.getScreenDevice(), shape, coords[0], coords[1]); } else { paintShapeForVertex(rc, v, shape); } } else { paintShapeForVertex(rc, v, shape); } } }
/** * 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); }
@Override public void paintEdge( RenderContext<N, E> renderContext, VisualizationModel<N, E> visualizationModel, E e) { GraphicsDecorator g2d = renderContext.getGraphicsContext(); if (!renderContext.getEdgeIncludePredicate().test(e)) { return; } // don't draw edge if either incident node is not drawn EndpointPair<N> endpoints = visualizationModel.getNetwork().incidentNodes(e); N u = endpoints.nodeU(); N v = endpoints.nodeV(); Predicate<N> nodeIncludePredicate = renderContext.getNodeIncludePredicate(); if (!nodeIncludePredicate.test(u) || !nodeIncludePredicate.test(v)) { return; } Stroke new_stroke = renderContext.edgeStrokeFunction().apply(e); Stroke old_stroke = g2d.getStroke(); if (new_stroke != null) { g2d.setStroke(new_stroke); } drawSimpleEdge(renderContext, visualizationModel, e); // restore paint and stroke if (new_stroke != null) { g2d.setStroke(old_stroke); } }
/** * Paint <code>v</code>'s icon on <code>g</code> at <code>(x,y)</code>. * * @param v the node to be painted */ protected void paintIconForNode( RenderContext<N, E> renderContext, VisualizationModel<N, E> visualizationModel, N v) { GraphicsDecorator g = renderContext.getGraphicsContext(); int[] coords = new int[2]; Shape shape = prepareFinalNodeShape(renderContext, visualizationModel, v, coords); if (renderContext.getNodeIconFunction() != null) { Icon icon = renderContext.getNodeIconFunction().apply(v); if (icon != null) { g.draw(icon, renderContext.getScreenDevice(), shape, coords[0], coords[1]); } else { paintShapeForNode(renderContext, visualizationModel, v, shape); } } else { paintShapeForNode(renderContext, visualizationModel, v, shape); } }
public void paintEdge(RenderContext<V,E> rc, Layout<V, E> layout, E e) { GraphicsDecorator g2d = rc.getGraphicsContext(); Graph<V,E> graph = layout.getGraph(); if (!rc.getEdgeIncludePredicate().apply(Context.<Graph<V,E>,E>getInstance(graph,e))) return; // don't draw edge if either incident vertex is not drawn Pair<V> endpoints = graph.getEndpoints(e); V v1 = endpoints.getFirst(); V v2 = endpoints.getSecond(); if (!rc.getVertexIncludePredicate().apply(Context.<Graph<V,E>,V>getInstance(graph,v1)) || !rc.getVertexIncludePredicate().apply(Context.<Graph<V,E>,V>getInstance(graph,v2))) return; Stroke new_stroke = rc.getEdgeStrokeTransformer().apply(e); Stroke old_stroke = g2d.getStroke(); if (new_stroke != null) g2d.setStroke(new_stroke); drawSimpleEdge(rc, layout, e); // restore paint and stroke if (new_stroke != null) g2d.setStroke(old_stroke); }
protected void paintShapeForVertex(RenderContext<V,E> rc, V v, Shape shape) { GraphicsDecorator g = rc.getGraphicsContext(); Paint oldPaint = g.getPaint(); Paint fillPaint = rc.getVertexFillPaintTransformer().apply(v); if(fillPaint != null) { g.setPaint(fillPaint); g.fill(shape); g.setPaint(oldPaint); } Paint drawPaint = rc.getVertexDrawPaintTransformer().apply(v); if(drawPaint != null) { g.setPaint(drawPaint); Stroke oldStroke = g.getStroke(); Stroke stroke = rc.getVertexStrokeTransformer().apply(v); if(stroke != null) { g.setStroke(stroke); } g.draw(shape); g.setPaint(oldPaint); g.setStroke(oldStroke); } } }
public void labelVertex(final RenderContext<ElementName, Dependency> rc, final Layout<ElementName, Dependency> layout, final ElementName v, final String label) { final Graph<ElementName, Dependency> graph = layout.getGraph(); if (rc.getVertexIncludePredicate().evaluate( Context.<Graph<ElementName, Dependency>, ElementName> getInstance( graph, v)) == false) { return; } final GraphicsDecorator g = rc.getGraphicsContext(); final Component component = prepareRenderer(rc, rc.getVertexLabelRenderer(), label, rc.getPickedVertexState().isPicked(v), v); final Dimension d = component.getPreferredSize(); final int h_offset = -d.width / 2; final int v_offset = -d.height / 2; Point2D p = layout.transform(v); p = rc.getMultiLayerTransformer().transform(Layer.LAYOUT, p); final int x = (int) p.getX(); final int y = (int) p.getY(); g.draw(component, rc.getRendererPane(), x + h_offset, y + v_offset, d.width, d.height, true); }
public void labelVertex(final RenderContext<ElementName, Dependency> rc, final Layout<ElementName, Dependency> layout, final ElementName v, final String label) { final Graph<ElementName, Dependency> graph = layout.getGraph(); if (rc.getVertexIncludePredicate().evaluate( Context.<Graph<ElementName, Dependency>, ElementName> getInstance( graph, v)) == false) { return; } final GraphicsDecorator g = rc.getGraphicsContext(); final Component component = prepareRenderer(rc, rc.getVertexLabelRenderer(), label, rc.getPickedVertexState().isPicked(v), v); final Dimension d = component.getPreferredSize(); final int h_offset = -d.width / 2; final int v_offset = -d.height / 2; Point2D p = layout.transform(v); p = rc.getMultiLayerTransformer().transform(Layer.LAYOUT, p); final int x = (int) p.getX(); final int y = (int) p.getY(); g.draw(component, rc.getRendererPane(), x + h_offset, y + v_offset, d.width, d.height, true); }
final Point2D p2 = rc.getMultiLayerTransformer().transform(Layer.LAYOUT, layout.transform(v2)); final GraphicsDecorator g = rc.getGraphicsContext(); final Component component = prepareRenderer(rc, rc.getEdgeLabelRenderer(), label, rc.getPickedEdgeState().isPicked(e), e); final Dimension d = component.getPreferredSize();
public MagnifyImageLensSupport( VisualizationViewer<N, E> vv, LensTransformer lensTransformer, ModalGraphMouse lensGraphMouse) { super(vv, lensGraphMouse); this.renderContext = vv.getRenderContext(); this.pickSupport = renderContext.getPickSupport(); this.renderer = vv.getRenderer(); this.transformingRenderer = new BasicRenderer<>(); this.savedGraphicsDecorator = renderContext.getGraphicsContext(); this.lensTransformer = lensTransformer; Dimension d = vv.getSize(); if (d.width == 0 || d.height == 0) { d = vv.getPreferredSize(); } this.lensGraphicsDecorator = new MagnifyIconGraphics(lensTransformer); }
/** * Paint <code>v</code>'s icon on <code>g</code> at <code>(x,y)</code>. * * @param rc the render context used for rendering the vertex * @param v the vertex to be painted * @param layout the layout algorithm that provides coordinates for the vertex */ protected void paintIconForVertex(RenderContext<V,E> rc, V v, Layout<V,E> layout) { GraphicsDecorator g = rc.getGraphicsContext(); boolean vertexHit = true; int[] coords = new int[2]; Shape shape = prepareFinalVertexShape(rc, v, layout, coords); vertexHit = vertexHit(rc, shape); if (vertexHit) { if(rc.getVertexIconTransformer() != null) { Icon icon = rc.getVertexIconTransformer().apply(v); if(icon != null) { g.draw(icon, rc.getScreenDevice(), shape, coords[0], coords[1]); } else { paintShapeForVertex(rc, v, shape); } } else { paintShapeForVertex(rc, v, shape); } } }
public void labelVertex(final RenderContext<ElementName, Dependency> rc, final Layout<ElementName, Dependency> layout, final ElementName v, final String label) { final Graph<ElementName, Dependency> graph = layout.getGraph(); if (rc.getVertexIncludePredicate().evaluate( Context.<Graph<ElementName, Dependency>, ElementName> getInstance( graph, v)) == false) { return; } final GraphicsDecorator g = rc.getGraphicsContext(); final Component component = prepareRenderer(rc, rc.getVertexLabelRenderer(), label, rc.getPickedVertexState().isPicked(v), v); final Dimension d = component.getPreferredSize(); final int h_offset = -d.width / 2; final int v_offset = -d.height / 2; Point2D p = layout.transform(v); p = rc.getMultiLayerTransformer().transform(Layer.LAYOUT, p); final int x = (int) p.getX(); final int y = (int) p.getY(); g.draw(component, rc.getRendererPane(), x + h_offset, y + v_offset, d.width, d.height, true); }
public ViewLensSupport( VisualizationViewer<N, E> vv, LensTransformer lensTransformer, ModalGraphMouse lensGraphMouse) { super(vv, lensGraphMouse); this.renderContext = vv.getRenderContext(); this.pickSupport = renderContext.getPickSupport(); this.savedGraphicsDecorator = renderContext.getGraphicsContext(); this.lensTransformer = lensTransformer; LayoutModel layoutModel = vv.getModel().getLayoutModel(); Dimension d = new Dimension(layoutModel.getWidth(), layoutModel.getHeight()); lensTransformer.getLens().setSize(d); this.lensGraphicsDecorator = new TransformingFlatnessGraphics(lensTransformer); this.savedEdgeRenderer = vv.getRenderer().getEdgeRenderer(); }
protected void paintShapeForNode( RenderContext<N, E> renderContext, VisualizationModel<N, E> visualizationModel, N v, Shape shape) { GraphicsDecorator g = renderContext.getGraphicsContext(); Paint oldPaint = g.getPaint(); Paint fillPaint = renderContext.getNodeFillPaintFunction().apply(v); if (fillPaint != null) { g.setPaint(fillPaint); g.fill(shape); g.setPaint(oldPaint); } Paint drawPaint = renderContext.getNodeDrawPaintFunction().apply(v); if (drawPaint != null) { g.setPaint(drawPaint); Stroke oldStroke = g.getStroke(); Stroke stroke = renderContext.getNodeStrokeFunction().apply(v); if (stroke != null) { g.setStroke(stroke); } g.draw(shape); g.setPaint(oldPaint); g.setStroke(oldStroke); } } }
public PerspectiveViewTransformSupport(VisualizationViewer<V,E> vv) { super(vv); this.renderer = vv.getRenderer(); this.renderContext = vv.getRenderContext(); this.pickSupport = renderContext.getPickSupport(); this.perspectiveTransformer = new PerspectiveShapeTransformer(new PerspectiveTransform(), vv.getRenderContext().getMultiLayerTransformer().getTransformer(Layer.VIEW)); this.savedGraphicsDecorator = renderContext.getGraphicsContext(); this.lensGraphicsDecorator = new TransformingGraphics(perspectiveTransformer); }
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() {
/** * @param vv the VisualizationViewer to work on */ public PerspectiveImageLensSupport(VisualizationViewer<V,E> vv) { super(vv); this.renderContext = vv.getRenderContext(); this.pickSupport = renderContext.getPickSupport(); this.renderer = vv.getRenderer(); this.transformingRenderer = new BasicRenderer<V,E>(); this.perspectiveTransformer = new PerspectiveShapeTransformer(new PerspectiveTransform(), vv.getRenderContext().getMultiLayerTransformer().getTransformer(Layer.VIEW)); this.transformingRenderer.setVertexRenderer(new TransformingImageVertexIconRenderer<V,E>()); this.lensGraphicsDecorator = new TransformingGraphics(perspectiveTransformer); this.savedGraphicsDecorator = renderContext.getGraphicsContext(); this.renderer = vv.getRenderer(); }
public MagnifyImageLensSupport(VisualizationViewer<V,E> vv, LensTransformer lensTransformer, ModalGraphMouse lensGraphMouse) { super(vv, lensGraphMouse); this.renderContext = vv.getRenderContext(); this.pickSupport = renderContext.getPickSupport(); this.renderer = vv.getRenderer(); this.transformingRenderer = new BasicRenderer<V,E>(); this.savedGraphicsDecorator = renderContext.getGraphicsContext(); this.lensTransformer = lensTransformer; this.savedEdgeRenderer = vv.getRenderer().getEdgeRenderer(); this.reshapingEdgeRenderer = new ReshapingEdgeRenderer<V,E>(); this.reshapingEdgeRenderer.setEdgeArrowRenderingSupport(savedEdgeRenderer.getEdgeArrowRenderingSupport()); Dimension d = vv.getSize(); if(d.width == 0 || d.height == 0) { d = vv.getPreferredSize(); } lensTransformer.setViewRadius(d.width/5); this.lensGraphicsDecorator = new MagnifyIconGraphics(lensTransformer); }
/** * create the base class, setting common members and creating * a custom GraphMouse * @param vv the VisualizationViewer to work on */ public HyperbolicImageLensSupport(VisualizationViewer<V,E> vv, LensTransformer lensTransformer, ModalGraphMouse lensGraphMouse) { super(vv, lensGraphMouse); this.renderContext = vv.getRenderContext(); this.pickSupport = renderContext.getPickSupport(); this.renderer = vv.getRenderer(); this.transformingRenderer = new BasicRenderer<V,E>(); this.transformingRenderer.setVertexRenderer(new TransformingImageVertexIconRenderer<V,E>()); this.savedGraphicsDecorator = renderContext.getGraphicsContext(); this.lensTransformer = lensTransformer; this.savedEdgeRenderer = vv.getRenderer().getEdgeRenderer(); this.reshapingEdgeRenderer = new ReshapingEdgeRenderer<V,E>(); this.reshapingEdgeRenderer.setEdgeArrowRenderingSupport(savedEdgeRenderer.getEdgeArrowRenderingSupport()); Dimension d = vv.getSize(); // if(d.width == 0 || d.height == 0) { // d = vv.getPreferredSize(); // } lensTransformer.setViewRadius(d.width/5); this.lensGraphicsDecorator = new TransformingFlatnessGraphics(lensTransformer); }