Skip to content

Commit a49bd78

Browse files
committed
Export image. Fixes #5
1 parent 1f6e831 commit a49bd78

File tree

2 files changed

+21
-3
lines changed

2 files changed

+21
-3
lines changed

Cy3D/src/main/java/org/baderlab/cy3d/internal/Cy3DRenderingEngine.java

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.awt.BorderLayout;
44
import java.awt.Container;
55
import java.awt.Dimension;
6+
import java.awt.Graphics;
67
import java.awt.Image;
78
import java.awt.image.BufferedImage;
89
import java.awt.print.Printable;
@@ -27,6 +28,9 @@
2728
import org.cytoscape.view.presentation.RenderingEngine;
2829
import org.cytoscape.work.swing.DialogTaskManager;
2930

31+
import com.jogamp.common.util.awt.AWTEDTExecutor;
32+
import com.jogamp.nativewindow.awt.AWTPrintLifecycle;
33+
3034
/**
3135
* This class represents a Cy3DRenderingEngine, responsible for
3236
* creating a rendering of a {@link CyNetwork}.
@@ -37,6 +41,7 @@ class Cy3DRenderingEngine implements RenderingEngine<CyNetwork> {
3741
private final VisualLexicon visualLexicon;
3842

3943
private GLJPanel panel;
44+
private Properties props;
4045

4146

4247
public Cy3DRenderingEngine(
@@ -51,6 +56,7 @@ public Cy3DRenderingEngine(
5156

5257
this.networkView = viewModel;
5358
this.visualLexicon = visualLexicon;
59+
this.props = new Properties();
5460

5561
setUpCanvas(component, inputComponent, configuration, eventBusProvider, taskFactoryListener, taskManager);
5662
}
@@ -108,7 +114,7 @@ public VisualLexicon getVisualLexicon() {
108114

109115
@Override
110116
public Properties getProperties() {
111-
return null;
117+
return props; // can't return null or (File > Print) won't work
112118
}
113119

114120
@Override
@@ -135,7 +141,20 @@ public <V> Icon createIcon(VisualProperty<V> vp, V value, int width, int height)
135141
}
136142

137143
@Override
138-
public void printCanvas(java.awt.Graphics printCanvas) {
144+
public void printCanvas(final Graphics printCanvas) {
145+
double scaleX = (double)panel.getWidth() / (double)panel.getSurfaceWidth();
146+
double scaleY = (double)panel.getHeight() / (double)panel.getSurfaceHeight();
147+
148+
AWTPrintLifecycle.Context ctx = AWTPrintLifecycle.Context.setupPrint(panel, scaleX, scaleY, 0, -1, -1);
149+
try {
150+
AWTEDTExecutor.singleton.invoke(true, new Runnable() {
151+
public void run() {
152+
panel.print(printCanvas);
153+
}
154+
});
155+
} finally {
156+
ctx.releasePrint();
157+
}
139158
}
140159

141160
@Override

Cy3D/src/main/java/org/baderlab/cy3d/internal/Cy3DRenderingEngineFactory.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ public RenderingEngine<CyNetwork> createRenderingEngine(Object container, View<C
7272
Cy3DRenderingEngine engine = new Cy3DRenderingEngine(component, inputComponent, cy3dViewModel, visualLexicon, eventBusProvider,
7373
configuration, taskFactoryListener, taskManager);
7474

75-
renderingEngineManager.addRenderingEngine(engine);
7675
return engine;
7776
}
7877

0 commit comments

Comments
 (0)