/** * @(#) gearsFullScreen.java * @(#) author: Brian Paul (converted to Java by Ron Cemer and Sven Goethel) * * This version is equal to Brian Paul's version 1.2 1999/10/21 */ import java.applet.*; import java.awt.*; import java.awt.event.*; import java.lang.*; import java.util.*; import java.io.*; import gl4java.*; import gl4java.drawable.*; import gl4java.awt.GLAnimCanvas; import gl4java.applet.SimpleGLAnimApplet1; public class gearsFullScreen extends SimpleGLAnimApplet1 implements MouseListener { /* Initialize the applet */ public void init() { init(false); } public void init(boolean showGL) { super.init(); Dimension d = getSize(); GLCapabilities caps = new GLCapabilities(); canvas = GLDrawableFactory.getFactory().createGLAnimCanvas(caps, d.width, d.height); gearRenderer gear = new gearRenderer(showGL); canvas.addGLEventListener(gear); add("Center", canvas); addMouseListener(this); } public void destroy() { removeMouseListener(this); super.destroy(); } public static void main(String args[]) { int i = 0; String gljLib = null; String glLib = null; String gluLib = null; boolean perftest=false; GLContext.gljNativeDebug = false; GLContext.gljClassDebug = false; GLContext.gljThreadDebug = false; while(args.length > i) { if(args[i].equals("-perftest")) { perftest=true; } else if(args[i].equals("-gljLib")) { i++; if(args.length>i) gljLib=args[i]; } else if(args[i].equals("-glLib")) { i++; if(args.length>i) glLib=args[i]; } else if(args[i].equals("-gluLib")) { i++; if(args.length>i) gluLib=args[i]; } else { System.out.println("illegal arg "+i+": "+args[i]); } i++; } if(perftest) { GLContext.gljNativeDebug = false; GLContext.gljThreadDebug = false; GLContext.gljClassDebug = false; } if(perftest) GLContext.gljClassDebug=true; GLContext.doLoadNativeLibraries(gljLib, glLib, gluLib); if(perftest) GLContext.gljClassDebug=false; GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment(); final GraphicsDevice device = env.getDefaultScreenDevice(); Frame mainFrame = null; final DisplayMode origMode = device.getDisplayMode(); DisplayMode newMode = null; int initWidth = 400; int initHeight = 300; System.out.println("isFullScreenSupported: " + device.isFullScreenSupported()); if (device.isFullScreenSupported()) { newMode = ScreenResSelector.showSelectionDialog(); if (newMode != null) { initWidth = newMode.getWidth(); initHeight = newMode.getHeight(); } } try { mainFrame = new Frame(); gearsFullScreen applet = new gearsFullScreen(); mainFrame.add(applet); if (device.isFullScreenSupported()) { mainFrame.setUndecorated(true); } applet.init(); if(perftest) { applet.canvas.setUseFpsSleep(false); applet.canvas.setUseRepaint(false); applet.canvas.setUseYield(false); System.out.println("useFpsSleep: "+ applet.canvas.getUseFpsSleep()); System.out.println("useRepaint: "+ applet.canvas.getUseRepaint()); System.out.println("useFpsSleep: "+ applet.canvas.getUseFpsSleep()); } mainFrame.setSize(initWidth, initHeight); mainFrame.show(); mainFrame.setLocation(0, 0); if (device.isFullScreenSupported()) { device.setFullScreenWindow(mainFrame); if (device.isDisplayChangeSupported()) { device.setDisplayMode(newMode); } else { newMode = null; } final DisplayMode tmpMode = newMode; Runtime.getRuntime().addShutdownHook(new Thread() { public void run() { if (tmpMode != null) { try { device.setDisplayMode(origMode); } catch (Exception e) { } } device.setFullScreenWindow(null); } }); } applet.start(); } catch (Exception e) { e.printStackTrace(); } finally { device.setFullScreenWindow(null); } } // Methods required for the implementation of MouseListener public void mouseEntered( MouseEvent evt ) { //System.out.println("mouse entered: "); super.mouseEntered(evt); } public void mouseExited( MouseEvent evt ) { //System.out.println("mouse exit: "); super.mouseExited(evt); } public void mousePressed( MouseEvent evt ) { //System.out.println("mouse pressed: "); super.mousePressed(evt); } public void mouseReleased( MouseEvent evt ) { //System.out.println("mouse released: "); super.mouseReleased(evt); } public void mouseClicked( MouseEvent evt ) { //System.out.println("mouse clicked: "); super.mouseClicked(evt); if ((evt.getModifiers() & evt.BUTTON2_MASK) != 0) { System.out.println("stopping applet now .. (after 1s, restart)"); stop(); try { Thread.sleep(1000); } catch (Exception e) { System.out.println("oops, somebody woke us up .."); } System.out.println("restarting applet now .. "); canvas.setVisible(true); start(); } } }