summaryrefslogtreecommitdiffstats
path: root/src/jogl/classes/javax/media/opengl/awt
diff options
context:
space:
mode:
Diffstat (limited to 'src/jogl/classes/javax/media/opengl/awt')
-rw-r--r--src/jogl/classes/javax/media/opengl/awt/AWTPrintLifecycle.java63
1 files changed, 62 insertions, 1 deletions
diff --git a/src/jogl/classes/javax/media/opengl/awt/AWTPrintLifecycle.java b/src/jogl/classes/javax/media/opengl/awt/AWTPrintLifecycle.java
index 293bdb809..301e18722 100644
--- a/src/jogl/classes/javax/media/opengl/awt/AWTPrintLifecycle.java
+++ b/src/jogl/classes/javax/media/opengl/awt/AWTPrintLifecycle.java
@@ -38,11 +38,43 @@ import jogamp.nativewindow.awt.AWTMisc;
/**
* Interface describing print lifecycle to support AWT printing
* on AWT {@link GLAutoDrawable}s.
+ * <a name="impl"><h5>Implementations</h5></a>
+ * <p>
+ * Implementing {@link GLAutoDrawable} classes based on AWT
+ * supporting {@link Component#print(Graphics)} shall implement this interface.
+ * </p>
+ * <a name="usage"><h5>Usage</h5></a>
+ * <p>
+ * Users attempting to print an AWT {@link Container} containing {@link AWTPrintLifecycle} elements
+ * shall consider decorating the {@link Container#printAll(Graphics)} call with<br>
+ * {@link #setupPrint(Graphics2D, double, double) setupPrint(..)} and {@link #releasePrint()}
+ * on all {@link AWTPrintLifecycle} elements in the {@link Container}.<br>
+ * To minimize this burden, a user can use {@link Context#setupPrint(Container, Graphics2D, double, double) Context.setupPrint(..)}:
+ * <pre>
+ * Graphics2D g2d;
+ * Frame frame;
+ * double scaleGLMatXY = 72.0/glDPI;
+ * ...
+ final AWTPrintLifecycle.Context ctx = AWTPrintLifecycle.Context.setupPrint(frame, g2d, scaleGLMatXY, scaleGLMatXY);
+ try {
+ AWTEDTExecutor.singleton.invoke(true, new Runnable() {
+ public void run() {
+ frame.printAll(g2d);
+ } });
+ } finally {
+ ctx.releasePrint();
+ }
+ *
+ * </pre>
+ * </p>
*/
public interface AWTPrintLifecycle {
/**
* Shall be called before {@link Component#print(Graphics)}.
+ * <p>
+ * See <a href="#usage">Usage</a>.
+ * </p>
* @param g2d the {@link Graphics2D} instance, which will be used for printing.
* @param scaleMatX {@link Graphics2D} {@link Graphics2D#scale(double, double) scaling factor}, i.e. rendering 1/scaleMatX * width pixels
* @param scaleMatY {@link Graphics2D} {@link Graphics2D#scale(double, double) scaling factor}, i.e. rendering 1/scaleMatY * height pixels
@@ -51,20 +83,49 @@ public interface AWTPrintLifecycle {
/**
* Shall be called after very last {@link Component#print(Graphics)}.
+ * <p>
+ * See <a href="#usage">Usage</a>.
+ * </p>
*/
void releasePrint();
+ /**
+ * Convenient {@link AWTPrintLifecycle} context simplifying calling {@link AWTPrintLifecycle#setupPrint(Graphics2D, double, double) setupPrint(..)}
+ * and {@link AWTPrintLifecycle#releasePrint()} on all {@link AWTPrintLifecycle} elements of a {@link Container}.
+ * <p>
+ * See <a href="#usage">Usage</a>.
+ * </p>
+ */
public static class Context {
+ /**
+ * <p>
+ * See <a href="#usage">Usage</a>.
+ * </p>
+ *
+ * @param c container to be traversed through to perform {@link AWTPrintLifecycle#setupPrint(Graphics2D, double, double) setupPrint(..)} on all {@link AWTPrintLifecycle} elements.
+ * @param g2d the {@link Graphics2D} instance, which will be used for printing.
+ * @param scaleMatX {@link Graphics2D} {@link Graphics2D#scale(double, double) scaling factor}, i.e. rendering 1/scaleMatX * width pixels
+ * @param scaleMatY {@link Graphics2D} {@link Graphics2D#scale(double, double) scaling factor}, i.e. rendering 1/scaleMatY * height pixels
+ * @return the context
+ */
public static Context setupPrint(Container c, Graphics2D g2d, double scaleMatX, double scaleMatY) {
final Context t = new Context(c, g2d, scaleMatX, scaleMatY);
t.setupPrint(c);
return t;
}
+ /**
+ * <p>
+ * See <a href="#usage">Usage</a>.
+ * </p>
+ */
public void releasePrint() {
count = AWTMisc.performAction(cont, AWTPrintLifecycle.class, releaseAction);
}
-
+
+ /**
+ * @return count of performed actions of last {@link #setupPrint(Container, Graphics2D, double, double) setupPrint(..)} or {@link #releasePrint()}.
+ */
public int getCount() { return count; }
private final Container cont;