From cad4b16ee12423b06d4c9fb8619089c3c9a29654 Mon Sep 17 00:00:00 2001 From: Mathieu Bastian Date: Wed, 2 Mar 2022 21:47:47 +0100 Subject: [PATCH] Implement #1490 add postProcess() to Preview's Renderer --- .../java/org/gephi/preview/PreviewControllerImpl.java | 10 +++++++++- .../src/main/java/org/gephi/preview/spi/Renderer.java | 11 +++++++++++ .../gephi/preview/plugin/renderers/ArrowRenderer.java | 4 ++++ .../preview/plugin/renderers/EdgeLabelRenderer.java | 4 ++++ .../gephi/preview/plugin/renderers/EdgeRenderer.java | 4 ++++ .../preview/plugin/renderers/NodeLabelRenderer.java | 4 ++++ .../gephi/preview/plugin/renderers/NodeRenderer.java | 4 ++++ src/main/javadoc/overview.html | 8 ++++++-- 8 files changed, 46 insertions(+), 3 deletions(-) diff --git a/modules/PreviewAPI/src/main/java/org/gephi/preview/PreviewControllerImpl.java b/modules/PreviewAPI/src/main/java/org/gephi/preview/PreviewControllerImpl.java index de4a5927a..3edcec6c8 100644 --- a/modules/PreviewAPI/src/main/java/org/gephi/preview/PreviewControllerImpl.java +++ b/modules/PreviewAPI/src/main/java/org/gephi/preview/PreviewControllerImpl.java @@ -191,7 +191,7 @@ public class PreviewControllerImpl implements PreviewController { } } - //Destrow view + //Destroy view if (previewModel.getProperties().getFloatValue(PreviewProperty.VISIBILITY_RATIO) < 1f) { graphModel.destroyView(graph.getView()); } @@ -245,6 +245,7 @@ public class PreviewControllerImpl implements PreviewController { int tasks = 0; for (Renderer r : renderers) { if (!mousePressed || r instanceof MouseResponsiveRenderer) { + tasks++; for (String type : previewModel.getItemTypes()) { for (Item item : previewModel.getItems(type)) { if (r.isRendererForitem(item, properties)) { @@ -269,14 +270,21 @@ public class PreviewControllerImpl implements PreviewController { Progress.progress(progressTicket); if (target instanceof AbstractRenderTarget) { if (((AbstractRenderTarget) target).isCancelled()) { + Progress.finish(progressTicket); return; } } } } } + + // Call post-process + r.postProcess(previewModel, target, properties); + Progress.progress(progressTicket); } } + + Progress.finish(progressTicket); } } diff --git a/modules/PreviewAPI/src/main/java/org/gephi/preview/spi/Renderer.java b/modules/PreviewAPI/src/main/java/org/gephi/preview/spi/Renderer.java index 8a5db8a3a..1195119d9 100644 --- a/modules/PreviewAPI/src/main/java/org/gephi/preview/spi/Renderer.java +++ b/modules/PreviewAPI/src/main/java/org/gephi/preview/spi/Renderer.java @@ -148,6 +148,17 @@ public interface Renderer { */ void render(Item item, RenderTarget target, PreviewProperties properties); + /** + * This method is called after rendering all items to perform post-processing. + *

+ * This method has access to the model but also to the target and properties. + * + * @param previewModel the model to get items from + * @param target the target to render the item on + * @param properties the central properties + */ + void postProcess(PreviewModel previewModel, RenderTarget target, PreviewProperties properties); + /** * Returns all associated properties for this renderer. Properties can be built * using static PreviewProperty.createProperty() methods. diff --git a/modules/PreviewPlugin/src/main/java/org/gephi/preview/plugin/renderers/ArrowRenderer.java b/modules/PreviewPlugin/src/main/java/org/gephi/preview/plugin/renderers/ArrowRenderer.java index cdf73ae4c..09bb6593e 100644 --- a/modules/PreviewPlugin/src/main/java/org/gephi/preview/plugin/renderers/ArrowRenderer.java +++ b/modules/PreviewPlugin/src/main/java/org/gephi/preview/plugin/renderers/ArrowRenderer.java @@ -139,6 +139,10 @@ public class ArrowRenderer implements Renderer { } } + @Override + public void postProcess(PreviewModel previewModel, RenderTarget renderTarget, PreviewProperties properties) { + } + @Override public CanvasSize getCanvasSize( final Item item, diff --git a/modules/PreviewPlugin/src/main/java/org/gephi/preview/plugin/renderers/EdgeLabelRenderer.java b/modules/PreviewPlugin/src/main/java/org/gephi/preview/plugin/renderers/EdgeLabelRenderer.java index eaf2d887a..8fd7cad2c 100644 --- a/modules/PreviewPlugin/src/main/java/org/gephi/preview/plugin/renderers/EdgeLabelRenderer.java +++ b/modules/PreviewPlugin/src/main/java/org/gephi/preview/plugin/renderers/EdgeLabelRenderer.java @@ -232,6 +232,10 @@ public class EdgeLabelRenderer implements Renderer { } } + @Override + public void postProcess(PreviewModel previewModel, RenderTarget renderTarget, PreviewProperties properties) { + } + @Override public CanvasSize getCanvasSize( final Item item, diff --git a/modules/PreviewPlugin/src/main/java/org/gephi/preview/plugin/renderers/EdgeRenderer.java b/modules/PreviewPlugin/src/main/java/org/gephi/preview/plugin/renderers/EdgeRenderer.java index e53960833..4584d987f 100644 --- a/modules/PreviewPlugin/src/main/java/org/gephi/preview/plugin/renderers/EdgeRenderer.java +++ b/modules/PreviewPlugin/src/main/java/org/gephi/preview/plugin/renderers/EdgeRenderer.java @@ -296,6 +296,10 @@ public class EdgeRenderer implements Renderer { } } + @Override + public void postProcess(PreviewModel previewModel, RenderTarget renderTarget, PreviewProperties properties) { + } + @Override public CanvasSize getCanvasSize(Item item, PreviewProperties properties) { if (isSelfLoopEdge(item)) { diff --git a/modules/PreviewPlugin/src/main/java/org/gephi/preview/plugin/renderers/NodeLabelRenderer.java b/modules/PreviewPlugin/src/main/java/org/gephi/preview/plugin/renderers/NodeLabelRenderer.java index 0ddc5cfd1..24fbd2ddb 100644 --- a/modules/PreviewPlugin/src/main/java/org/gephi/preview/plugin/renderers/NodeLabelRenderer.java +++ b/modules/PreviewPlugin/src/main/java/org/gephi/preview/plugin/renderers/NodeLabelRenderer.java @@ -212,6 +212,10 @@ public class NodeLabelRenderer implements Renderer { } } + @Override + public void postProcess(PreviewModel previewModel, RenderTarget renderTarget, PreviewProperties properties) { + } + @Override public CanvasSize getCanvasSize( final Item item, diff --git a/modules/PreviewPlugin/src/main/java/org/gephi/preview/plugin/renderers/NodeRenderer.java b/modules/PreviewPlugin/src/main/java/org/gephi/preview/plugin/renderers/NodeRenderer.java index 6aa259829..204c29b39 100644 --- a/modules/PreviewPlugin/src/main/java/org/gephi/preview/plugin/renderers/NodeRenderer.java +++ b/modules/PreviewPlugin/src/main/java/org/gephi/preview/plugin/renderers/NodeRenderer.java @@ -94,6 +94,10 @@ public class NodeRenderer implements Renderer { } } + @Override + public void postProcess(PreviewModel previewModel, RenderTarget renderTarget, PreviewProperties properties) { + } + @Override public CanvasSize getCanvasSize( final Item item, diff --git a/src/main/javadoc/overview.html b/src/main/javadoc/overview.html index bf5674bd4..40f0d4432 100644 --- a/src/main/javadoc/overview.html +++ b/src/main/javadoc/overview.html @@ -16,7 +16,7 @@


API Changes

0.9.3

-

Graph API (stable)

+

Graph API

-

Appearance API (unstable)

+

Appearance API (under development)

+

Preview API

+

Archive