Search in sources :

Example 1 with GraphicElement

use of org.graphstream.ui.graphicGraph.GraphicElement in project gs-ui-javafx by graphstream.

the class FunctionInVoid method render.

/**
 * Main rendering method.
 *
 * This works in three phases:
 * - draw all "bulk" elements using renderElement()
 * - draw all "dynamic" elements using renderElement().
 * - draw all "event" elements using renderElement().
 *
 * Before drawing, the setupRenderingPass() and pushStyle() methods are called. The phase 1 is
 * run. Then for each dynamic element in phase 2, before calling renderElement, for each element
 * the pushDynStyle() method is called.
 * Then for each element modified by an event, in phase 3, the before drawing the element, the
 * event is enabled, then pushStyle() is called, then the element is drawn, and finally the
 * event is disabled.
 *
 * This rendering pass is made both for shadows and for regular drawing. The shadow and render
 * arguments allow to specify that we are rendering for shadow, and what element rendering
 * method to use (renderElement() or renderShadow()).
 */
public void render(Backend bck, DefaultCamera2D camera, boolean shadow, FunctionInVoid<Backend, DefaultCamera2D, GraphicElement> render) {
    setupRenderingPass(bck, camera, shadow);
    pushStyle(bck, camera, shadow);
    // var T1 = System.currentTimeMillis
    group.bulkElements().forEach(e -> {
        GraphicElement ge = (GraphicElement) e;
        if (camera.isVisible(ge))
            render.apply(bck, camera, ge);
        else
            elementInvisible(bck, camera, ge);
    });
    if (group.hasDynamicElements()) {
        group.dynamicElements().forEach(e -> {
            GraphicElement ge = (GraphicElement) e;
            if (camera.isVisible(ge)) {
                if (!group.elementHasEvents(ge)) {
                    pushDynStyle(bck, camera, ge);
                    render.apply(bck, camera, ge);
                }
            } else {
                elementInvisible(bck, camera, ge);
            }
        });
    }
    if (group.hasEventElements()) {
        group.elementsEvents().forEach(event -> {
            GraphicElement ge = (GraphicElement) event.getElement();
            if (camera.isVisible(ge)) {
                event.activate();
                pushStyle(bck, camera, shadow);
                render.apply(bck, camera, ge);
                event.deactivate();
            } else {
                elementInvisible(bck, camera, ge);
            }
        });
        hadEvents = true;
    } else {
        hadEvents = false;
    }
    endRenderingPass(bck, camera, shadow);
}
Also used : GraphicElement(org.graphstream.ui.graphicGraph.GraphicElement)

Example 2 with GraphicElement

use of org.graphstream.ui.graphicGraph.GraphicElement in project gs-ui-javafx by graphstream.

the class DefaultCamera method allGraphicElementsIn.

@Override
public Collection<GraphicElement> allGraphicElementsIn(GraphicGraph graph, EnumSet<InteractiveElement> types, double x1, double y1, double x2, double y2) {
    List<GraphicElement> elts = new ArrayList<GraphicElement>();
    Stream nodeStream = null;
    Stream edgeStream = null;
    Stream spriteStream = null;
    if (types.contains(InteractiveElement.NODE)) {
        nodeStream = graph.nodes().filter(n -> isNodeIn((GraphicNode) n, x1, y1, x2, y2));
    } else {
        nodeStream = Stream.empty();
    }
    if (types.contains(InteractiveElement.EDGE)) {
        edgeStream = graph.edges().filter(e -> isEdgeIn((GraphicEdge) e, x1, y1, x2, y2));
    } else {
        edgeStream = Stream.empty();
    }
    if (types.contains(InteractiveElement.SPRITE)) {
        spriteStream = graph.sprites().filter(e -> isSpriteIn((GraphicSprite) e, x1, y1, x2, y2));
    } else {
        spriteStream = Stream.empty();
    }
    Stream<GraphicElement> s = Stream.concat(nodeStream, Stream.concat(edgeStream, spriteStream));
    return s.collect(Collectors.toList());
}
Also used : Arrays(java.util.Arrays) Affine(javafx.scene.transform.Affine) Point2(org.graphstream.ui.geom.Point2) Point3(org.graphstream.ui.geom.Point3) GraphicElement(org.graphstream.ui.graphicGraph.GraphicElement) Camera(org.graphstream.ui.view.camera.Camera) NonInvertibleTransformException(javafx.scene.transform.NonInvertibleTransformException) ArrayList(java.util.ArrayList) Level(java.util.logging.Level) HashSet(java.util.HashSet) GraphMetrics(org.graphstream.ui.view.util.GraphMetrics) InteractiveElement(org.graphstream.ui.view.util.InteractiveElement) Point2D(javafx.geometry.Point2D) EnumSet(java.util.EnumSet) GraphicGraph(org.graphstream.ui.graphicGraph.GraphicGraph) GraphicNode(org.graphstream.ui.graphicGraph.GraphicNode) Units(org.graphstream.ui.graphicGraph.stylesheet.StyleConstants.Units) GraphicEdge(org.graphstream.ui.graphicGraph.GraphicEdge) Edge(org.graphstream.graph.Edge) Node(org.graphstream.graph.Node) GraphicsContext(javafx.scene.canvas.GraphicsContext) Collection(java.util.Collection) Logger(java.util.logging.Logger) Collectors(java.util.stream.Collectors) StyleConstants(org.graphstream.ui.graphicGraph.stylesheet.StyleConstants) List(java.util.List) GraphicSprite(org.graphstream.ui.graphicGraph.GraphicSprite) Values(org.graphstream.ui.graphicGraph.stylesheet.Values) Stream(java.util.stream.Stream) Vector2(org.graphstream.ui.geom.Vector2) Optional(java.util.Optional) Selector(org.graphstream.ui.graphicGraph.stylesheet.Selector) Style(org.graphstream.ui.graphicGraph.stylesheet.Style) GraphicElement(org.graphstream.ui.graphicGraph.GraphicElement) ArrayList(java.util.ArrayList) Stream(java.util.stream.Stream)

Aggregations

GraphicElement (org.graphstream.ui.graphicGraph.GraphicElement)2 ArrayList (java.util.ArrayList)1 Arrays (java.util.Arrays)1 Collection (java.util.Collection)1 EnumSet (java.util.EnumSet)1 HashSet (java.util.HashSet)1 List (java.util.List)1 Optional (java.util.Optional)1 Level (java.util.logging.Level)1 Logger (java.util.logging.Logger)1 Collectors (java.util.stream.Collectors)1 Stream (java.util.stream.Stream)1 Point2D (javafx.geometry.Point2D)1 GraphicsContext (javafx.scene.canvas.GraphicsContext)1 Affine (javafx.scene.transform.Affine)1 NonInvertibleTransformException (javafx.scene.transform.NonInvertibleTransformException)1 Edge (org.graphstream.graph.Edge)1 Node (org.graphstream.graph.Node)1 Point2 (org.graphstream.ui.geom.Point2)1 Point3 (org.graphstream.ui.geom.Point3)1