Search in sources :

Example 1 with VisualManager

use of au.gov.asd.tac.constellation.utilities.visual.VisualManager in project constellation by constellation-app.

the class RecentGraphScreenshotUtilities method takeScreenshot.

/**
 * Take a screenshot of the graph and save it to the screenshots directory
 * so that it can be used by the Welcome View.
 *
 * @param filename The filename of the graph
 */
public static void takeScreenshot(final String filename) {
    final String imageFile = getScreenshotsDir() + File.separator + filename + FileExtensionConstants.PNG;
    final Path source = Paths.get(imageFile);
    final GraphNode graphNode = GraphNode.getGraphNode(GraphManager.getDefault().getActiveGraph());
    final VisualManager visualManager = graphNode.getVisualManager();
    final BufferedImage[] originalImage = new BufferedImage[1];
    originalImage[0] = new BufferedImage(IMAGE_SIZE, IMAGE_SIZE, BufferedImage.TYPE_INT_ARGB);
    if (visualManager != null) {
        final Semaphore waiter = new Semaphore(0);
        visualManager.exportToBufferedImage(originalImage, waiter);
        waiter.acquireUninterruptibly();
    }
    try {
        // resizeAndSave the buffered image in memory and write the image to disk
        resizeAndSave(originalImage[0], source, IMAGE_SIZE, IMAGE_SIZE);
        refreshScreenshotsDir();
    } catch (final IOException ex) {
        LOGGER.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
    }
}
Also used : Path(java.nio.file.Path) VisualManager(au.gov.asd.tac.constellation.utilities.visual.VisualManager) GraphNode(au.gov.asd.tac.constellation.graph.node.GraphNode) Semaphore(java.util.concurrent.Semaphore) IOException(java.io.IOException) BufferedImage(java.awt.image.BufferedImage)

Example 2 with VisualManager

use of au.gov.asd.tac.constellation.utilities.visual.VisualManager in project constellation by constellation-app.

the class GetGraphImage method callService.

@Override
public void callService(final PluginParameters parameters, final InputStream in, final OutputStream out) throws IOException {
    final Graph graph = GraphManager.getDefault().getActiveGraph();
    if (graph == null) {
        throw new RestServiceException(HTTP_UNPROCESSABLE_ENTITY, "No graph is opened in Constellation");
    }
    // This is asynchronous, so we need a Semaphore.
    // 
    final GraphNode graphNode = GraphNode.getGraphNode(graph);
    final VisualManager visualManager = graphNode.getVisualManager();
    final BufferedImage[] img1 = new BufferedImage[1];
    if (visualManager != null) {
        final Semaphore waiter = new Semaphore(0);
        visualManager.exportToBufferedImage(img1, waiter);
        waiter.acquireUninterruptibly();
        ImageIO.write(img1[0], "png", out);
    } else {
        throw new IOException("Graph image unavailable");
    }
}
Also used : RestServiceException(au.gov.asd.tac.constellation.webserver.restapi.RestServiceException) VisualManager(au.gov.asd.tac.constellation.utilities.visual.VisualManager) Graph(au.gov.asd.tac.constellation.graph.Graph) GraphNode(au.gov.asd.tac.constellation.graph.node.GraphNode) Semaphore(java.util.concurrent.Semaphore) IOException(java.io.IOException) BufferedImage(java.awt.image.BufferedImage)

Example 3 with VisualManager

use of au.gov.asd.tac.constellation.utilities.visual.VisualManager in project constellation by constellation-app.

the class GLInteractiveVisualManagerFactory method constructVisualManager.

@Override
public VisualManager constructVisualManager(Graph graph) {
    final GraphVisualAccess access = new GraphVisualAccess(graph);
    try (final ReadableGraph rg = graph.getReadableGraph()) {
        access.updateModCounts(rg);
    }
    final Preferences prefs = NbPreferences.forModule(DeveloperPreferenceKeys.class);
    final InteractiveGLVisualProcessor processor = new InteractiveGLVisualProcessor(prefs.getBoolean(DeveloperPreferenceKeys.DEBUG_GL, DeveloperPreferenceKeys.DEBUG_GL_DEFAULT), prefs.getBoolean(DeveloperPreferenceKeys.PRINT_GL_CAPABILITIES, DeveloperPreferenceKeys.PRINT_GL_CAPABILITIES_DEFAULT));
    final VisualManager manager = new VisualManager(access, processor);
    final GraphChangeListener changeDetector = event -> manager.updateFromIndigenousChanges();
    final DefaultInteractionEventHandler eventHandler = new DefaultInteractionEventHandler(graph, manager, processor, processor);
    processor.addDropTargetToCanvas(new GraphRendererDropTarget(graph, manager, processor));
    graph.addGraphChangeListener(changeDetector);
    changeDetector.graphChanged(null);
    processor.startVisualising(manager);
    processor.setEventHandler(eventHandler);
    return manager;
}
Also used : Graph(au.gov.asd.tac.constellation.graph.Graph) GraphChangeListener(au.gov.asd.tac.constellation.graph.monitor.GraphChangeListener) GraphVisualManagerFactory(au.gov.asd.tac.constellation.graph.interaction.framework.GraphVisualManagerFactory) DeveloperPreferenceKeys(au.gov.asd.tac.constellation.preferences.DeveloperPreferenceKeys) ReadableGraph(au.gov.asd.tac.constellation.graph.ReadableGraph) ServiceProvider(org.openide.util.lookup.ServiceProvider) VisualManager(au.gov.asd.tac.constellation.utilities.visual.VisualManager) NbPreferences(org.openide.util.NbPreferences) GraphVisualAccess(au.gov.asd.tac.constellation.graph.visual.framework.GraphVisualAccess) Preferences(java.util.prefs.Preferences) ReadableGraph(au.gov.asd.tac.constellation.graph.ReadableGraph) VisualManager(au.gov.asd.tac.constellation.utilities.visual.VisualManager) GraphVisualAccess(au.gov.asd.tac.constellation.graph.visual.framework.GraphVisualAccess) GraphChangeListener(au.gov.asd.tac.constellation.graph.monitor.GraphChangeListener) NbPreferences(org.openide.util.NbPreferences) Preferences(java.util.prefs.Preferences)

Example 4 with VisualManager

use of au.gov.asd.tac.constellation.utilities.visual.VisualManager in project constellation by constellation-app.

the class GLVisualProcessorGraphTester method main.

public static void main(String[] args) {
    final GLVisualProcessorDemo demo = new GLVisualProcessorDemo();
    final StoreGraph graph = createGraph();
    final Graph dualGraph = new DualGraph(graph, false);
    final GraphVisualAccess access = new GraphVisualAccess(dualGraph);
    final GLVisualProcessor processor = new GLVisualProcessor();
    final VisualManager visualManager = new VisualManager(access, processor);
    processor.startVisualising(visualManager);
    demo.runDemo(processor, visualManager);
    final GraphChangeListener gct = (event) -> visualManager.updateFromIndigenousChanges();
    gct.graphChanged(null);
    try {
        Thread.sleep(3000);
    } catch (InterruptedException ex) {
    }
    try {
        WritableGraph wg = dualGraph.getWritableGraph("linkmode", false);
        try {
            final int connectionModeAttr = VisualConcept.GraphAttribute.CONNECTION_MODE.ensure(wg);
            wg.setObjectValue(connectionModeAttr, 0, ConnectionMode.LINK);
        } finally {
            wg.commit();
        }
    } catch (InterruptedException ex) {
    }
    gct.graphChanged(null);
    try {
        Thread.sleep(2000);
    } catch (InterruptedException ex) {
    }
    try {
        WritableGraph wg = dualGraph.getWritableGraph("transmode", false);
        try {
            final int connectionModeAttr = VisualConcept.GraphAttribute.CONNECTION_MODE.ensure(wg);
            wg.setObjectValue(connectionModeAttr, 0, ConnectionMode.TRANSACTION);
        } finally {
            wg.commit();
        }
    } catch (InterruptedException ex) {
    }
    gct.graphChanged(null);
    try {
        Thread.sleep(2000);
    } catch (InterruptedException ex) {
    }
    final int[] changed = new int[] { 0, 1 };
    try {
        WritableGraph wg = dualGraph.getWritableGraph("blazin", false);
        try {
            final int blazeAttr = VisualConcept.VertexAttribute.BLAZE.ensure(wg);
            for (int i = 0; i < 10000; i++) {
                try {
                    Thread.sleep(1);
                } catch (InterruptedException ex) {
                }
                wg.setObjectValue(blazeAttr, 0, new Blaze(((Blaze) wg.getObjectValue(blazeAttr, 0)).getAngle() + 1, ConstellationColor.BLUE));
                wg = wg.flush(false);
                visualManager.addSingleChangeOperation(new VisualChangeBuilder(VisualProperty.VERTEX_BLAZE_ANGLE).forItems(changed).build());
            }
        } finally {
            wg.commit();
        }
    } catch (InterruptedException ex) {
    }
}
Also used : WritableGraph(au.gov.asd.tac.constellation.graph.WritableGraph) Frame(java.awt.Frame) GLVisualProcessor(au.gov.asd.tac.constellation.visual.opengl.renderer.GLVisualProcessor) Blaze(au.gov.asd.tac.constellation.graph.schema.visual.attribute.objects.Blaze) ConstellationColor(au.gov.asd.tac.constellation.utilities.color.ConstellationColor) DefaultIconProvider(au.gov.asd.tac.constellation.utilities.icon.DefaultIconProvider) GraphElementType(au.gov.asd.tac.constellation.graph.GraphElementType) StoreGraph(au.gov.asd.tac.constellation.graph.StoreGraph) WindowAdapter(java.awt.event.WindowAdapter) JFXPanel(javafx.embed.swing.JFXPanel) VisualConcept(au.gov.asd.tac.constellation.graph.schema.visual.concept.VisualConcept) Component(java.awt.Component) WindowEvent(java.awt.event.WindowEvent) VisualProcessor(au.gov.asd.tac.constellation.utilities.visual.VisualProcessor) VisualProperty(au.gov.asd.tac.constellation.utilities.visual.VisualProperty) Graph(au.gov.asd.tac.constellation.graph.Graph) DualGraph(au.gov.asd.tac.constellation.graph.locking.DualGraph) GraphChangeListener(au.gov.asd.tac.constellation.graph.monitor.GraphChangeListener) Camera(au.gov.asd.tac.constellation.utilities.camera.Camera) VisualChangeBuilder(au.gov.asd.tac.constellation.utilities.visual.VisualChangeBuilder) VisualManager(au.gov.asd.tac.constellation.utilities.visual.VisualManager) ConnectionMode(au.gov.asd.tac.constellation.graph.schema.visual.attribute.objects.ConnectionMode) GraphVisualAccess(au.gov.asd.tac.constellation.graph.visual.framework.GraphVisualAccess) VisualChangeBuilder(au.gov.asd.tac.constellation.utilities.visual.VisualChangeBuilder) GraphVisualAccess(au.gov.asd.tac.constellation.graph.visual.framework.GraphVisualAccess) DualGraph(au.gov.asd.tac.constellation.graph.locking.DualGraph) VisualManager(au.gov.asd.tac.constellation.utilities.visual.VisualManager) WritableGraph(au.gov.asd.tac.constellation.graph.WritableGraph) StoreGraph(au.gov.asd.tac.constellation.graph.StoreGraph) Graph(au.gov.asd.tac.constellation.graph.Graph) DualGraph(au.gov.asd.tac.constellation.graph.locking.DualGraph) GLVisualProcessor(au.gov.asd.tac.constellation.visual.opengl.renderer.GLVisualProcessor) GraphChangeListener(au.gov.asd.tac.constellation.graph.monitor.GraphChangeListener) Blaze(au.gov.asd.tac.constellation.graph.schema.visual.attribute.objects.Blaze) WritableGraph(au.gov.asd.tac.constellation.graph.WritableGraph) StoreGraph(au.gov.asd.tac.constellation.graph.StoreGraph)

Example 5 with VisualManager

use of au.gov.asd.tac.constellation.utilities.visual.VisualManager in project constellation by constellation-app.

the class ExportToImagePlugin method execute.

@Override
protected void execute(final PluginGraphs graphs, final PluginInteraction interaction, final PluginParameters parameters) throws InterruptedException, PluginException {
    final String fnam = parameters.getParameters().get(FILE_NAME_PARAMETER_ID).getStringValue();
    final File imageFile = new File(fnam);
    final GraphNode graphNode = GraphNode.getGraphNode(graphs.getGraph());
    final VisualManager visualManager = graphNode.getVisualManager();
    if (visualManager != null) {
        visualManager.exportToImage(imageFile);
        final ReadableGraph rg = graphs.getGraph().getReadableGraph();
        try {
            ConstellationLoggerHelper.exportPropertyBuilder(this, GraphRecordStoreUtilities.getVertices(rg, false, false, false).getAll(GraphRecordStoreUtilities.SOURCE + VisualConcept.VertexAttribute.LABEL), new File(fnam), ConstellationLoggerHelper.SUCCESS);
        } finally {
            rg.release();
        }
    }
}
Also used : VisualManager(au.gov.asd.tac.constellation.utilities.visual.VisualManager) ReadableGraph(au.gov.asd.tac.constellation.graph.ReadableGraph) GraphNode(au.gov.asd.tac.constellation.graph.node.GraphNode) File(java.io.File)

Aggregations

VisualManager (au.gov.asd.tac.constellation.utilities.visual.VisualManager)7 Graph (au.gov.asd.tac.constellation.graph.Graph)3 GraphNode (au.gov.asd.tac.constellation.graph.node.GraphNode)3 ReadableGraph (au.gov.asd.tac.constellation.graph.ReadableGraph)2 WritableGraph (au.gov.asd.tac.constellation.graph.WritableGraph)2 GraphChangeListener (au.gov.asd.tac.constellation.graph.monitor.GraphChangeListener)2 GraphVisualAccess (au.gov.asd.tac.constellation.graph.visual.framework.GraphVisualAccess)2 VisualChangeBuilder (au.gov.asd.tac.constellation.utilities.visual.VisualChangeBuilder)2 GLVisualProcessor (au.gov.asd.tac.constellation.visual.opengl.renderer.GLVisualProcessor)2 BufferedImage (java.awt.image.BufferedImage)2 IOException (java.io.IOException)2 Semaphore (java.util.concurrent.Semaphore)2 GraphElementType (au.gov.asd.tac.constellation.graph.GraphElementType)1 StoreGraph (au.gov.asd.tac.constellation.graph.StoreGraph)1 GraphVisualManagerFactory (au.gov.asd.tac.constellation.graph.interaction.framework.GraphVisualManagerFactory)1 DualGraph (au.gov.asd.tac.constellation.graph.locking.DualGraph)1 Blaze (au.gov.asd.tac.constellation.graph.schema.visual.attribute.objects.Blaze)1 ConnectionMode (au.gov.asd.tac.constellation.graph.schema.visual.attribute.objects.ConnectionMode)1 VisualConcept (au.gov.asd.tac.constellation.graph.schema.visual.concept.VisualConcept)1 DeveloperPreferenceKeys (au.gov.asd.tac.constellation.preferences.DeveloperPreferenceKeys)1