package com.jogamp.newt.util.applet3; import com.jogamp.plugin.applet.Applet3; import com.jogamp.plugin.applet.Applet3Context; import com.jogamp.plugin.ui.NativeWindowDownstream; import com.jogamp.plugin.ui.NativeWindowUpstream; import java.util.List; import java.util.Locale; import com.jogamp.opengl.GLProfile; import com.jogamp.opengl.GL; import com.jogamp.opengl.GLAutoDrawable; import com.jogamp.opengl.GLCapabilities; import com.jogamp.opengl.GLCapabilitiesImmutable; import com.jogamp.opengl.GLDrawableFactory; import com.jogamp.opengl.GLEventListener; import com.jogamp.common.GlueGenVersion; import com.jogamp.common.util.VersionUtil; import com.jogamp.newt.NewtFactory; import com.jogamp.newt.Window; import com.jogamp.newt.opengl.GLWindow; import com.jogamp.opengl.JoglVersion; public class VersionApplet3 implements Applet3 { public static void main(final String[] args) { final VersionApplet3 va = new VersionApplet3(); final NativeWindowDownstream nwc = va.createNativeWindow(null, new NativeWindowUpstream() { @Override public long getWindowHandle() { return 0; } @Override public int getWidth() { return 64; } @Override public int getHeight() { return 64; } @Override public String getDisplayConnection() { return null; // default } @Override public int getScreenIndex() { return 0; // default } @Override public void notifySurfaceUpdated(final NativeWindowDownstream swappedWin) { // NOP } @Override public int getX() { return 0; } @Override public int getY() { return 0; } }); va.init(null); va.start(); va.stop(); va.destroy(); nwc.destroy(); } GLWindow canvas; @Override public NativeWindowDownstream createNativeWindow(final Applet3Context ctx, final NativeWindowUpstream parentWin) { final GLCapabilities caps = new GLCapabilities(GLProfile.getDefault()); final Window w = NewtFactory.createWindow(parentWin.getDisplayConnection(), parentWin.getScreenIndex(), parentWin.getWindowHandle(), caps); canvas = GLWindow.create(w); canvas.setSize(parentWin.getWidth(), parentWin.getHeight()); return new NativeWindowDownstream() { @Override public void setVisible(final boolean v) { if( null != canvas ) { canvas.setVisible(v); } } @Override public void setSize(final int width, final int height) { if( null != canvas ) { canvas.setSize(width, height); } } @Override public void requestFocus() { if( null != canvas ) { canvas.requestFocus(); } } @Override public void destroy() { if( null != canvas ) { canvas.destroy(); } } @Override public NativeWindowUpstream getParent() { return parentWin; } @Override public long getWindowHandle() { if( null != canvas ) { return canvas.getWindowHandle(); } else { return 0; } } @Override public void display() { if( null != canvas ) { canvas.display(); } } @Override public void notifyPositionChanged(final NativeWindowUpstream nw) { if( null != canvas ) { canvas.setPosition(nw.getX(), nw.getY()); } } }; } @Override public void init(final Applet3Context ctx) { System.err.println("VersionApplet: init() - begin"); canvas.addGLEventListener(new GLInfo()); System.err.println("VersionApplet: init() - end"); } @Override public void start() { System.err.println("VersionApplet: start() - begin"); String s; s = VersionUtil.getPlatformInfo().toString(); System.err.println(s); s = GlueGenVersion.getInstance().toString(); System.err.println(s); /* s = NativeWindowVersion.getInstance().toString(); System.err.println(s); */ s = JoglVersion.getInstance().toString(); System.err.println(s); final GLDrawableFactory factory = GLDrawableFactory.getFactory(canvas.getGLProfile()); final List<GLCapabilitiesImmutable> availCaps = factory.getAvailableCapabilities(null); for(int i=0; i<availCaps.size(); i++) { s = availCaps.get(i).toString(); System.err.println(s); } canvas.display(); System.err.println("VersionApplet: start() - end"); } @Override public void stop() { System.err.println("VersionApplet: stop() - begin"); canvas.setVisible(false); System.err.println("VersionApplet: stop() - end"); } @Override public void destroy() { System.err.println("VersionApplet: destroy() - start"); if(null!=canvas) { canvas.destroy(); canvas = null; } System.err.println("VersionApplet: destroy() - end"); } @Override public String getAppletInfo() { return null; } @Override public Locale getLocale() { return null; } @Override public String[][] getParameterInfo() { return null; } static class GLInfo implements GLEventListener { @Override public void init(final GLAutoDrawable drawable) { final GL gl = drawable.getGL(); final String s = JoglVersion.getGLInfo(gl, null).toString(); System.err.println(s); } @Override public void reshape(final GLAutoDrawable drawable, final int x, final int y, final int width, final int height) { } @Override public void display(final GLAutoDrawable drawable) { } @Override public void dispose(final GLAutoDrawable drawable) { } } }