From e70e3a9a7e94673ba20d7accc7990cae5df6dd55 Mon Sep 17 00:00:00 2001 From: Eduardo Ramos Date: Wed, 12 Jun 2024 14:15:28 +0200 Subject: [PATCH] Correction to only show the visible graph --- .../viz/engine/structure/GraphIndex.java | 4 +- .../viz/engine/structure/GraphIndexImpl.java | 67 ++++++++++--------- .../pipeline/arrays/ArrayDrawEdgeData.java | 2 +- .../pipeline/instanced/InstancedEdgeData.java | 2 +- pom.xml | 2 +- 5 files changed, 39 insertions(+), 38 deletions(-) diff --git a/modules/engine-core/src/main/java/org/gephi/viz/engine/structure/GraphIndex.java b/modules/engine-core/src/main/java/org/gephi/viz/engine/structure/GraphIndex.java index b3ff199..c4c010a 100644 --- a/modules/engine-core/src/main/java/org/gephi/viz/engine/structure/GraphIndex.java +++ b/modules/engine-core/src/main/java/org/gephi/viz/engine/structure/GraphIndex.java @@ -9,8 +9,8 @@ * @author Eduardo Ramos */ public interface GraphIndex { - - Graph getGraph(); + + Graph getVisibleGraph(); int getNodeCount(); diff --git a/modules/engine-core/src/main/java/org/gephi/viz/engine/structure/GraphIndexImpl.java b/modules/engine-core/src/main/java/org/gephi/viz/engine/structure/GraphIndexImpl.java index 19a1627..df3ffb5 100644 --- a/modules/engine-core/src/main/java/org/gephi/viz/engine/structure/GraphIndexImpl.java +++ b/modules/engine-core/src/main/java/org/gephi/viz/engine/structure/GraphIndexImpl.java @@ -26,25 +26,22 @@ public GraphIndexImpl(VizEngine engine) { //Graph private GraphModel graphModel; - private Graph graph; private float edgesMinWeight = 1; private float edgesMaxWeight = 1; private void init() { graphModel = engine.getGraphModel(); - graph = graphModel.getGraphVisible(); } private void ensureInitialized() { - if (graph == null) { + if (graphModel == null) { init(); } } - @Override - public Graph getGraph() { + public Graph getVisibleGraph() { ensureInitialized(); - return graph; + return graphModel.getGraphVisible(); } public void indexNodes() { @@ -54,28 +51,29 @@ public void indexNodes() { public void indexEdges() { ensureInitialized(); - if (graph.getEdgeCount() > 0) { - final Column weightColumn = graph.getModel().getEdgeTable().getColumn(GraphStoreConfiguration.EDGE_WEIGHT_INDEX); + final Graph visibleGraph = getVisibleGraph(); + if (visibleGraph.getEdgeCount() > 0) { + final Column weightColumn = visibleGraph.getModel().getEdgeTable().getColumn(GraphStoreConfiguration.EDGE_WEIGHT_INDEX); if (weightColumn.isIndexed() && AttributeUtils.isSimpleType(weightColumn.getTypeClass())) { - graph.readLock(); + visibleGraph.readLock(); try { - edgesMinWeight = graph.getModel().getEdgeIndex().getMinValue(weightColumn).floatValue(); - edgesMaxWeight = graph.getModel().getEdgeIndex().getMaxValue(weightColumn).floatValue(); + edgesMinWeight = visibleGraph.getModel().getEdgeIndex().getMinValue(weightColumn).floatValue(); + edgesMaxWeight = visibleGraph.getModel().getEdgeIndex().getMaxValue(weightColumn).floatValue(); } finally { - graph.readUnlockAll(); + visibleGraph.readUnlockAll(); } } else { - graph.readLock(); + visibleGraph.readLock(); try { - final GraphView graphView = graph.getView(); + final GraphView graphView = visibleGraph.getView(); final boolean isView = !graphView.isMainView(); if (!isView) { float minWeight = Float.MAX_VALUE; float maxWeight = Float.MIN_VALUE; - for (Edge edge : graph.getEdges()) { + for (Edge edge : visibleGraph.getEdges()) { float weight = (float) edge.getWeight(graphView); minWeight = weight <= minWeight ? weight : minWeight; maxWeight = weight >= maxWeight ? weight : maxWeight; @@ -85,7 +83,7 @@ public void indexEdges() { edgesMaxWeight = maxWeight; } } finally { - graph.readUnlockAll(); + visibleGraph.readUnlockAll(); } } } else { @@ -97,14 +95,14 @@ public void indexEdges() { public int getNodeCount() { ensureInitialized(); - return graph.getNodeCount(); + return getVisibleGraph().getNodeCount(); } @Override public int getEdgeCount() { ensureInitialized(); - return graph.getEdgeCount(); + return getVisibleGraph().getEdgeCount(); } @Override @@ -121,16 +119,17 @@ public float getEdgesMaxWeight() { public NodeIterable getVisibleNodes() { ensureInitialized(); - return graphModel.getSpatialIndex().getNodesInArea(engine.getViewBoundaries()); + return getVisibleGraph().getSpatialIndex().getNodesInArea(engine.getViewBoundaries()); } @Override public void getVisibleNodes(ElementsCallback callback) { ensureInitialized(); - callback.start(graph); + final Graph visibleGraph = getVisibleGraph(); + callback.start(visibleGraph); - final NodeIterable nodeIterable = graphModel.getSpatialIndex().getNodesInArea(engine.getViewBoundaries()); + final NodeIterable nodeIterable = visibleGraph.getSpatialIndex().getNodesInArea(engine.getViewBoundaries()); try { for (Node node : nodeIterable) { callback.accept(node); @@ -139,22 +138,23 @@ public void getVisibleNodes(ElementsCallback callback) { nodeIterable.doBreak(); } - callback.end(graph); + callback.end(visibleGraph); } @Override public EdgeIterable getVisibleEdges() { ensureInitialized(); - return graphModel.getSpatialIndex().getEdgesInArea(engine.getViewBoundaries()); + return getVisibleGraph().getSpatialIndex().getEdgesInArea(engine.getViewBoundaries()); } @Override public void getVisibleEdges(ElementsCallback callback) { ensureInitialized(); - callback.start(graph); - final EdgeIterable edgeIterable = graphModel.getSpatialIndex().getEdgesInArea(engine.getViewBoundaries()); + final Graph visibleGraph = getVisibleGraph(); + callback.start(visibleGraph); + final EdgeIterable edgeIterable = visibleGraph.getSpatialIndex().getEdgesInArea(engine.getViewBoundaries()); try { for (Edge edge : edgeIterable) { callback.accept(edge); @@ -163,14 +163,14 @@ public void getVisibleEdges(ElementsCallback callback) { edgeIterable.doBreak(); } - callback.end(graph); + callback.end(visibleGraph); } @Override public NodeIterable getNodesUnderPosition(float x, float y) { ensureInitialized(); - return filterNodeIterable(graphModel.getSpatialIndex().getNodesInArea(getCircleRect2D(x, y, 0)), node -> { + return filterNodeIterable(getVisibleGraph().getSpatialIndex().getNodesInArea(getCircleRect2D(x, y, 0)), node -> { final float size = node.size(); return Intersectionf.testPointCircle(x, y, node.x(), node.y(), size * size); @@ -181,7 +181,7 @@ public NodeIterable getNodesUnderPosition(float x, float y) { public NodeIterable getNodesInsideCircle(float centerX, float centerY, float radius) { ensureInitialized(); - return filterNodeIterable(graphModel.getSpatialIndex().getNodesInArea(getCircleRect2D(centerX, centerY, radius)), node -> { + return filterNodeIterable(getVisibleGraph().getSpatialIndex().getNodesInArea(getCircleRect2D(centerX, centerY, radius)), node -> { return Intersectionf.testCircleCircle(centerX, centerY, radius, node.x(), node.y(), node.size()); }); } @@ -190,7 +190,7 @@ public NodeIterable getNodesInsideCircle(float centerX, float centerY, float rad public NodeIterable getNodesInsideRectangle(Rect2D rect) { ensureInitialized(); - return filterNodeIterable(graphModel.getSpatialIndex().getNodesInArea(rect), node -> { + return filterNodeIterable(getVisibleGraph().getSpatialIndex().getNodesInArea(rect), node -> { final float size = node.size(); return Intersectionf.testAarCircle(rect.minX, rect.minY, rect.maxX, rect.maxY, node.x(), node.y(), size * size); @@ -201,7 +201,7 @@ public NodeIterable getNodesInsideRectangle(Rect2D rect) { public EdgeIterable getEdgesInsideRectangle(Rect2D rect) { ensureInitialized(); - return filterEdgeIterable(graphModel.getSpatialIndex().getEdgesInArea(rect), edge -> { + return filterEdgeIterable(getVisibleGraph().getSpatialIndex().getEdgesInArea(rect), edge -> { final Node source = edge.getSource(); final Node target = edge.getTarget(); @@ -214,7 +214,7 @@ public EdgeIterable getEdgesInsideRectangle(Rect2D rect) { public EdgeIterable getEdgesInsideCircle(float centerX, float centerY, float radius) { ensureInitialized(); - return filterEdgeIterable(graphModel.getSpatialIndex().getEdgesInArea(getCircleRect2D(centerX, centerY, radius)), edge -> { + return filterEdgeIterable(getVisibleGraph().getSpatialIndex().getEdgesInArea(getCircleRect2D(centerX, centerY, radius)), edge -> { final Node source = edge.getSource(); final Node target = edge.getTarget(); @@ -232,13 +232,14 @@ public EdgeIterable getEdgesInsideCircle(float centerX, float centerY, float rad public Rect2D getGraphBoundaries() { ensureInitialized(); - if (graph.getNodeCount() > 0) { + final Graph visibleGraph = getVisibleGraph(); + if (visibleGraph.getNodeCount() > 0) { float minX = Float.MAX_VALUE; float maxX = Float.MIN_VALUE; float minY = Float.MAX_VALUE; float maxY = Float.MIN_VALUE; - for (Node node : graph.getNodes()) { + for (Node node : visibleGraph.getNodes()) { final float x = node.x(); final float y = node.y(); final float size = node.size(); diff --git a/modules/opengl-jogl/src/main/java/org/gephi/viz/engine/jogl/pipeline/arrays/ArrayDrawEdgeData.java b/modules/opengl-jogl/src/main/java/org/gephi/viz/engine/jogl/pipeline/arrays/ArrayDrawEdgeData.java index 61530fb..9876df3 100644 --- a/modules/opengl-jogl/src/main/java/org/gephi/viz/engine/jogl/pipeline/arrays/ArrayDrawEdgeData.java +++ b/modules/opengl-jogl/src/main/java/org/gephi/viz/engine/jogl/pipeline/arrays/ArrayDrawEdgeData.java @@ -240,7 +240,7 @@ private void updateData(final GraphIndexImpl graphIndex, final GraphRenderingOpt final Edge[] visibleEdgesArray = edgesCallback.getEdgesArray(); final int visibleEdgesCount = edgesCallback.getCount(); - final Graph graph = graphIndex.getGraph(); + final Graph graph = graphIndex.getVisibleGraph(); int attribsIndex = 0; attribsIndex = updateUndirectedData( diff --git a/modules/opengl-jogl/src/main/java/org/gephi/viz/engine/jogl/pipeline/instanced/InstancedEdgeData.java b/modules/opengl-jogl/src/main/java/org/gephi/viz/engine/jogl/pipeline/instanced/InstancedEdgeData.java index d8838a9..1d7f068 100644 --- a/modules/opengl-jogl/src/main/java/org/gephi/viz/engine/jogl/pipeline/instanced/InstancedEdgeData.java +++ b/modules/opengl-jogl/src/main/java/org/gephi/viz/engine/jogl/pipeline/instanced/InstancedEdgeData.java @@ -179,7 +179,7 @@ private void updateData(final GraphIndexImpl graphIndex, final GraphRenderingOpt final Edge[] visibleEdgesArray = edgesCallback.getEdgesArray(); final int visibleEdgesCount = edgesCallback.getCount(); - final Graph graph = graphIndex.getGraph(); + final Graph graph = graphIndex.getVisibleGraph(); updateUndirectedData( graph, diff --git a/pom.xml b/pom.xml index d0f3e0f..8bc82cb 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ 1.8 7.1.2 - 0.7.1 + 0.7.2-SNAPSHOT 0.11.0-SNAPSHOT 2.5.0